2009-05-24
Problemas de super-lentitud con la Beta 1 de Visual Studio 2010?
2009-05-17
MTGDeck Version 0.5
2009-05-13
Pirata Informático
2009-05-12
Primera reunion de ALT.NET Argentina
Tratando de mantener la vida del blog y siguiendo lo comentado en la lista de mails ALT.NET Argentina, vamos a hablar un poco de lo que fue la primera reunión del grupo
(para quien no sepa de que trata esto, puede darse una vuelta por: http://altdotnet.org/ y/o http://altnet-argentina.pbworks.com/ )
Pese a la no-tan-feliz combinación de día/horario para el inicio de esta reunión (sábado a las 9 de la mañana!) el ambiente era muy bueno: muchas caras conocidas - bastante mas dormidas que de costumbre - y muchas ganas por empezar las sesiones pensadas para el día.
A eso de las 10.00, nos fuimos presentando en ronda (no pude evitar tirar un chiste) y pasamos a contar que temas habían propuestos para las sesiones del día y arreglar entre todos los horarios y las salas de cada uno.
Independientemente del tema a tratar en cada una, se utilizó la modalidad de "open space", donde cada uno es libre de opinar y plantear su punto de vista cuando le parezca - siempre y cuando se haga de forma ordenada - y no las clásicas charlas con un orador y muchos escuchas.
Durante el día hubieron 4 franjas donde se llevaron a cabo sesiones simultáneas. En particular, voy a hacer una pequeña reseña sobre las cuatro donde yo participé:
(no recuerdo los nombres concretos, pero con el título de fantasía que puse se entiende)
1. SOA: ¿Vivo o muerto? ¿Cáncer o salvación?
En esta charla hubieron 4 a 6 sillas adelante, dándole al usuario de las mismas el derecho a hablar, siguiendo estas reglas:
- Siempre debe haber una silla vacía
- Si alguien quiere hablar, debe sentarse en una de esas sillas
- Si quedan todas las sillas ocupadas, deberá retirarse quien esté hace mas tiempo (o quien considere que ya no está aportando a la conversación, pero esto queda a criterio de cada uno)
La misma empezó comentando la experiencia de distintas personas que llevaron (o intentaron llevar a cabo) proyectos con arquitecturas que implementaban el patrón SOA y a raíz de esto, muchos - me incluyo - comentamos donde nos parecía que estaban las falencias usuales en este tipo de emprendimientos, cuales eran los beneficios, que costos se pagaban por intentar hacer SOA "porque es la palabra de moda" y cuando valía la pena realmente tener componentes de un proyecto que siguieran este patrón.
2. Microsoft... ¿Está innovando?
Este es un tema que propuso Miguel Angel Saez y, pese a que no mucha gente se prendió, me pareció un tópico sumamente interesante para tratar.
Acá charlamos sobre las alternativas a distintos problemas, viendo la forma - o formas - en que lo encaran Microsoft, otras empresas como Sun, Oracle, Amazon, Google, etc. y por último "la comunidad open source".
Para cada uno hablamos sobre cuanto de "inspiración" y cuanto de creatividad hubo en su creación y hacia donde veíamos el rumbo de evolución de cada una de estas tecnologías o productos.
Hacia el final de la sesión estuvimos hablando sobre Windows 7, su comparación con OS X (o inspiración en...) y cual grande - o pequeño - era el salto desde Windows Vista.
-- Pizza Break --
El almuerzo fue una gran sesión en si misma: todos hablando con todos sobre lo discutido en las sesiones anteriores, tratando de ver que nos perdimos y contando - mordisco de muzzarella de por medio - lo que aprendimos de los demás en las charlas que estuvimos.
Y sigue la tarde con...
3. YARF: Yet-Another-Rodo-Framework, o ¿Cuándo debo meter qué cosa?
Esta vez, pese a ser unos cuantos usamos la vieja y querida ronda para hablarnos entre todos y no tuvimos ningún problema.
Acá se charlo sobre para que tipos de desarrollo pensábamos que era mejor utilizar tal o cual framework o tecnología, o si - como algunos preferimos - hacernos el nuestro propio framework a media.
Hablamos de ventajas y desventajas de pensar necesidades a futuro, cuándo conviene reutilizar y cuándo conviene tirar lo que tenía y volver a pensar desde cero una mejor solución. Tocamos temas como la sobreingeniería de las soluciones planteadas, problemas con la división en capas (ya sea por defecto o por exceso) y varias cosas mas.
4. .NET hace monerías
La idea de esta charla fue hablar sobre las experiencias que hayamos tenido utilizando Mono (implementación Open Source de .NET) en distintas plataformas y poder contarles a los que nunca habían escuchado de este proyecto, o no lo habían probado, cual era el estado del mismo y que se podía o no hacer en comparación a .NET.
Durante la charla se mostró un poco de Mono en acción desde una maquina con Linux y mi Mac. Mostramos el REPL de csharp que viene incluido con Mono, explotando el hecho de que el compilador es provisto como "una librería mas". También vimos el plugin de Moonlight - implementación de Mono de Silverlight - corriendo dentro de Firefox en Linux y un pequeño vistazo a la IDE multiplataforma Monodevelop.
Bueno, con esto cierro el post de hoy. Si alguien quiere, pregunte sobre algún tema mas en particular de las sesiones y, de acordarme, con gusto responderé.
Saludos y hasta la próxima (donde pienso que subiré la primer versión beta del MTGDeck)!
Z
2009-05-10
Usando el MTGDeck para intentar devolverle la vida al blog
La idea de este proyectito era poder jugar al juego de trading cards Magic: The Gathering, sin la necesidad de tener las cartas (probar mazos, combinaciones, etc...).
Como implementar las 192381092381290 reglas que hay para cada carta de Magic era algo impensable, se me ocurró que la funcionalidad del juego sería únicamente la de suplantar las cartas (y mesa) del juego. Con esto quiero decir que el seguimiento de las vidas, cumplimiento de reglas, fases del juego, etc... seguirían a cargo de los jugadores.
Para permitir jugadas de mas de 2 jugadores, encaré el desarrollo de esta aplicación directamente como client-server, donde el server guardaría el estado de las manos y cartas jugadas de cada uno de los jugadores y el cliente simplemente le enviaría cuales son los cambios hecho en la mano propia.
Para desarrollarlo decidí - y no por casualidad - empezar por el server (ya que carece de ese cáncer que mucho conocemos como la interfaz gráfica).
No mucho tiempo después ya tenía listo el servidor... y ahí es cuando las cosas se pusieron feas: al empezar a desarrollar el cliente pude hacer un repositorio de cartas que se encargaba de traer la imagen de cada carta, un prototipo de lo que sería la mano de cada jugador... y perdí el interés.
Siempre lo mismo... en el momento que hay que hacer la UI mis proyectos caen a velocidades estrepitosas.
Sin embargo, hace unas semanas decidí que era hora de terminar lo que alguna vez empecé y pese a su no-del-todo-hermosa interfaz gráfica, el juego parece estar andando.
Actualmente, el proyecto está en las últimas fases del alpha-testing (gracias Krako!) y será liberado en breve a las masas!
Para que se vayan dando una idea, toda la comunicación esta manejada con WCF (actualmente usando BasicHttp), pero por las dudas también hice un conector basado en remoting, hecho a la old school.
La interfaz de usuario está hecha en Winforms, pero la idea es que, eventualmente, pueda ser portada a otras cosas (GTK#, WPF, Web... iPhone?) ya que los servicios que expone el server pueden ser consumidos desde todos los anteriormente nombrados.
Bueno, con esto cierro. Supongo que durante esta semana estaré poniendo la primer beta y veremos si tiene tanto éxito en Taringa como lo tuvo mi RapidshareDownloader (nota al pie: si alguien lo sigue usando, le recomiendo pasar a JDownloader que es mucho mas potente)
Saludos!
Z
2009-01-21
Material de la conferencia sobre C# 4
2008-11-15
Chiche nuevo: iPod touch (2da gen)
El bicho esta muy bueno. Yo pensaba que escribir con el tecladito iba a ser molesto, pero el autocorrector que tiene es tan bueno que escribir este post desde el ipod es casi mas fácil ue desde la mac!
Lo único de malo que tiene esta version es que (todavía) no se puede hacer el jailbreak, por lo que estoy limitado a las apps disponibles en el app store de apple, que no son pocas, pero bueno... Yo quería usar mono acá!
Hasta el prox post!
Z
2008-10-06
Charla de Voice Recognition y Synthesis con .NET 3.x
La presentación la pueden bajar de aca.
Durante la charla, estuvimos mostrando el proyecto de KeySimulator - VoiceCommander, el cual ya estuve comentando en el blog. Pueden obtener el código desde Codeplex.

Saludos!
Z
2008-09-26
Aplicacion recomendada: Facebook Exporter for iPhoto
Dentro de unos dias voy a tratar de ponerme a ver que APIs expone facebook para ver que nueva aplicacion puedo agregar a la gran seccion de "Cool and Useless"
Saludos!!
Z
2008-09-24
Error spawning rc.exe - C++ - Visual Studio 2008
Al intentar compilar proyectos de C++, tiraba el error:
Error spawning rc.exe
Aparentemente, el problema es que este se instala al elegir el paquete de c++ tools (o algo asi) dentro de la instalación de Visual Studio. Por lo tanto, de no instalarlo no van a poder compilar nada.
Saludos!
Z
Problemas desinstalando Visual Studio 2008
El problema (va, otro de los problemas) fue que al intentar hacerlo, apareció el siguiente error:
A problem has been encountered while loading the setup components. Canceling Setup.
Despues de mucho (realmente mucho) dar vueltas por internet buscando una solución, encontré que el problema era que el hotfix KB952241 (bajado por Windows Update) trajo un bug en el instalador, resultando en el error encontrado.
Habiendolo desinstalado, todo volvió a la normalidad.
Si a alguien mas le pasa, espero que por leer esto no tenga que pasar tanto tiempo buscando soluciones como yo.
Un saludo!
Z
2008-09-22
Rapidshare Downloader y CodeCamp
Después de algunos meses volví para postear aca.
Para (re)comenzar, voy a dejar una aplicación que hice hace unos meses la cual, dada una lista de links de Rapidshare, los baja automaticamente.
Debo decir que no es el código mas bonito del mundo, pero cumple con su funcion mas que bien.
Originalmente, la aplicación funcionaba tanto en Windows como en Linux y OS X con Mono, pero aparentemente desde la beta 1 de Mono 2.0 se rompió algo relacionado con los web requests y no estan saliendo bien los requests hechos por POST, necesarios para esta aplicación, asi que por ahora solo funcionará en Windows (tal vez en Linux tambien, aunque lo dudo mucho).
Programa y Fuentes
Próximamente voy a estar publicando una aplicación que estamos armando con Giga para jugar al Magic PC a PC usando remoting o WCF para conectarse.
Por otro lado, quiero avisar que el día 4 de Octubre desde las 10.00 hasta las 19.00 se realizará el evento Microsoft CodeCamp, en el cual estaré dando una conferencia con RodoF sobre el uso del motor de Voice Recognition y Voice Synthesis desde .NET 3.x. No se lo pierdan!
Saludos!!
Z
2008-06-10
zPod Reloaded: Vuelta al blog, desde el otro lado de La Fuerza!
La verdad es que intenté postear algo, pero no se me ocurrió nada piola...
Ahora estoy oficialmente del lado de la luz: tengo una MacBook :) Por lo que mis problemas configurando y tuneando drivers locos hechos por gente loca de internet se acabaron (por lo menos por un tiempo... mi viejo quiere probar ponerse OS X en su notebook!)
2008-04-06
Monitor dual en OS X
Z
2008-03-24
Frase célebre
Computer science education cannot make anybody an expert programmer any more than studying brushes and pigment can make somebody an expert painter
Eric Raymond
Z
2008-03-03
El eslabón que faltaba entre el .NET Framework y los browsers: Volta
Microsoft Volta es un proyecto (todavía en estado alpha o, a lo sumo, pre-beta) de Microsoft Live Labs para poder desarrollar aplicaciones web multicapa sin tener que preocuparse por aprender nuevos lenguajes, lidiar con problemas para hacer javascript cross-browser y varias otras cosas.
En cierta manera se puede ver como la respuesta de Microsoft al Google Web Toolkit, aunque todavía bastante menos maduro y obviamente, usando .NET en vez de Java.
Un ejemplo de lo que nos permite hacer Volta es hacer el diseño en HTML de una página, codificar todo su comportamiento desde cualquier lenguaje que trabaje con el .NET Framework y finalmente, el compilador de Volta generará todo el código y las assemblies necesarias para correr todo lo que se quiera correr desde el cliente, y las clases que deban ser ejecutadas desde el servidor serán llamadas de forma transparente, sin tener que agregar nada aparte de un atributo en la clase, indicándolo.
Nota antes de intentar usar esto: para poder crear nuevos proyectos de Volta, es necesario tener instalado Visual Studio 2008 y el Tecnology Preview de Volta. Tener en cuenta que es una de las primeras versiones que salen fuera de Microsoft como preview y aún contiene varios bugs y limitaciones.
Nota sin mucho sentido: como todavía no hay version del Copy Source as HTML para Visual Studio 2008, los ejemplos que voy a mostrar los voy a pegar como imágenes. Perdón por eso, pero hacer que se vea bien el codigo posteado en blogger es una tarea bastante ardua y no tengo muchas ganas de perder tiempo en esto :D
A continuación les muestro una aplicación de ejmplo que hice, la cual consiste en un simple Chat:
Mi idea era la siguiente: hacer una página que tenga 2 textboxes, uno para el nick y otro para el mensaje a escribir, un boton para enviar el mensaje y un div donde se vaya escribiendo el texto del chat.
Para empezar, creé el html de la página:
Una vez hecho esto, codifiqué la clase que representa esta página y obtuve los controles desde código manejado para poder usarlos:
En el evento Click del boton de la página hice que se llame al método _btnSend_Click, el cual se encarga de llamar al metodo AddMessage de la clase ChatState, la cual es la encargada de mantener el estado del chat, y luego agrega el nuevo texto al div donde se muestra la conversación:
Para poder mostrar también lo que el resto de la gente escribía en el chat, necesitaba poder pedirle al servidor que me actualice el contenido del div, por lo que creé un Time que se de dispare cada 5 segudos y llame al metodo UpdateChatBox, el cual se encarga de pedir las nuevas lineas agregadas al chat usando el método GetResponse de la clase ChatState y mostrarlas:
Como se habrán dado cuenta, la gran mayoría de todo este código debería correr en el cliente, excepto tal vez por la clase ChatState, la cual debería ejecutar en el servidor, conservando el estado de la conversación. Para hacer esto lo único que hay que hacer es ir a la clase ChatState, hacer click derecho sobre el nombre, ir a Refactor y hacer click en Tire-split to run at origin. Haciendo esto, se le agregará el atributo RunAtOrigin, lo que le indica a Volta que ese código debe ser ejecutado en el servidor y no en el cliente:
Finalmente, tocando F5 se dispara el browser elegido para debug (se puede usar IE o Firefox) y... listo! Estamos debuggeando nuestra aplicación volta!
Aca muestro un ejemplo de la aplicación funcionando:
Código del ejemplo: aca.
Hasta aca llega el post de hoy. Cuando haga algo mas veo de postearlo.
Z
2008-02-24
Me tomo en whisky y empiezo a nombrar especies?
Se me ocurren dos posibles conversaciones:
Cientifico A: ... estás loco. Nadie va a ser tan boludo. Esta bien que la mayoría de la gente es bastante ignorante. Pero supongo que de esta si se darán cuenta.
Científico B: Vos haceme caso. La gente del populacho son un grupo de ovejas decerebradas. Vos decile que este bicho inerte es un caballo y lo van a comprar como billete del gordo de navidad...
O bien, la otra posibilidad:
Luego de haberse tomado 2 ginebras, 5 fernet y 4 whiskys...
Cientifico A: Che, encontré un animal de 15cm de largo, con caparazón ocificado, cabeza tupular, carente de dientes y ninguna extremidad...
Cientifico B: Un caballo!
Basado en una reflexión original de Luis Piedrahita
Hasta la próxima!
Z
2008-02-21
Somos el único animal suficientemente idiota...
Ayer confirme mi humana estupidez.
Hace ya unos meses había tratado de utilizar la salida VGA de la notebook desde OS X sin mucho éxito. En el camino, casi destruyo la instalacion de mi máquina ya que me quedó lockeada una resolucion fea y no se veía nada en la máquina. Finalmente pude zafarla y volver a hacerlo andar.
Ayer volví a hacer lo mismo esperando tener éxito esta vez (iluso...). Obviamente, volví a destruir la configuración de la resolución de la maquina. El problema es que esta vez de tantas cosas que toque, dejé al sistema imposible de bootear. Por suerte pude levantar la particion desde el DVD de instalacion de OS X, guardar todos los datos importantes en un Pendrive y finalmente... reinstalar :(
Conclusión: me terminé durmiendo a las 3.30 de la mañana mientras reinstalaba todo.... por boludo.
Hasta la próxima!
Z
2008-02-07
Un pequeño paso para el hombre, un gran salto para el desarrollo .NET en OS X: La nueva version de Mono incluye el MonoDevelop para Mac!
2008-01-20
Intellisense de bolsillo (y multiplataforma): ZSense!
Desde que instalé OS X en la laptop estoy queriendo desarrollar aplicaciones .NET usando el port de Mono que hay para OS X. El gran problema que tengo es que al no haber port de MonoDevelop (o al menos, no hay sin tener que recompilar medio universo y bajar nosecuantas librerías extra...) termino levantando una VM con Windows XP y el Visual Studio. No pido tener un IDE que se integre con el debugger ni mucho menos, sino que pido algun editor que tenga IntelliSense para no tener que estar programando con la ayuda abierta constantemente.
Aqui es donde aparece la idea que me vino el día de hoy: lo que hay que hacer es tener el IntelliSense dentro de una aplicacion hecha en .Net, asi, cuando quiera desarrollar, la puedo usar como referencia.
Sin mas presentación, les entrego a... ZSense!
Este es un proyectito bastante chico que hice hoy (pero planeo seguir mejorando con el tiempo) que recibe una linea de código con tipos de .Net y va mostrando en una lista las opciones disponibles para seguir escribiendo la linea.
Esta primera versión tiene algunos detalles ásperos: el tipo inicial debe estar escrito entre comillas dobles. Por ej, una linea válida sería: "System.Int32".GetHashCode().CompareTo(System.Int32)

