miércoles, 15 de agosto de 2012

Libros gratuitos sobre Arquitectura de Aplicaciones Open Source

Arcquitectura Open Source

La arquitectura de software es un terreno interesantísimo que más allá de que uno pretenda o no ser Arquitecto como perfil profesional, es importante para todo desarrollador, porque tiene que ver con la estructura de lo que construimos y con cómo tomamos las decisiones respecto a ella. Como en el caso del diseño de un producto, no es algo que se pueda evitar, cuando uno no dedica tiempo a la arquitectura, el producto final tendrá muy probablemente una estructura deficiente o endeble, pero no dejará de tenerla.

De todas maneras, este es un terreno que siempre pareció de cierta sofisticación, y que por lo tanto no ha generado mucho material libre y gratuito, salvo últimamente, de la mano de sitios web como InfoQ ó High Scalability, que publican informes detallados o algunos libros breves.

En este caso se trata de un esfuerzo conjunto, coordinado por Amy Brown y Greg Wilson como editores, y una larga lista de colaboradores, que compila, en dos volúmenes, reseñas de la arquitectura de aplicaciones de código abierto, explicadas por expertos en el tema, a veces coautores o parte del equipo del proyecto. En algunos casos se cubren familias o ecosistemas de aplicaciones, en lugar de productos individuales.

Todo el material está disponible de manera gratuita en el sitio web, bajo licencia Creative Commons Attribution 3.0 Unported, pero para quienes prefieran leerlo en Kindle u otro dispositivo electrónico, está disponible una versión paga cuyos derechos se donan íntegramente a Anmesty International.

Los dos tomos están en inglés, y cubren unas 25 aplicaciones populares cada uno.

Algunos ejemplos del Volumen I son: Asterisk (la plataforma de telefonía), Audacity (el editor de audio), Eclipse, el file system distribuido de Hadoop, mecanismos de integración continua, el ecosistema LLVM, Mercurial, Python Packaging, Selenium WebDriver y otros.

Algunos ejemplos del Volumen II son: Arquitectura Web Escalable y Sistemas Distribuidos, Ingeniería de Actualizaciones de Firefox, el compilador Glasgow Haskell, Git, el Dynamic Language Runtime y la familia de lenguajes Iron (IronPython, IronRuby, etc), MediaWiki, Moodle, nginx, PyPy, Twisted, ZeroMQ y otros.

La cantidad de material es impresionante y los temas están muy bien cubiertos, a gran nivel de detalle técnico.

martes, 14 de agosto de 2012

¿Podrá Ward hacerlo de nuevo? Conozcan el Smallest Federated Wiki (+videos)

Ward Cunningham

Ward Cunningham es una especie de leyenda viviente. Es uno de los pioneros de los patrones de diseño, miembro prominente de la comunidad Smalltalk, colaborador de Kent Beck en la definición de Extreme Programming (XP), firmante del Manifiesto Ágil, co-inventor de las tarjetas CRC (clase-responsabilidad-colaboración) e inventor de FIT y fundamentalmente, la wiki.

Así es, Ward inventó muchas cosas que están dentro del ámbito de nuestra profesión, el desarrollo de software, pero la wiki, que fue pensada inicialmente para construir documentación de manera colaborativa entre desarrolladores, llegó mucho más allá, y es uno de los hitos que ha transformado nuestra cultura, a partir del impacto de Wikipedia, siendo en gran parte responsable de todo el movimiento crowdsourcing.

Pero Ward no se queda quieto y sigue permanentemente experimentando y buscando formas mejores de hacer las cosas. Su último proyecto vuelve sobre los pasos de la wiki, causalmente, y se llama Smallest Federated Wiki (la más pequeña wiki federada).

Como verán, en su página personal de GitHub hay una larga serie de videos explicando el concepto, que pone foco en hacer que la wiki sea aún más sencilla de editar, aprovechando capacidades de los navegadores modernos y HTML5 como drag & drop, uso de JSON como soporte, etc, para permitir una edición más fluida, pero también la "federación" de contenido. Esto significa que se puede tomar contenido de una wiki y ponerlo en otra, pero no es solamente una forma de réplica, sino más bien algo similar a los "forks" de GitHub, donde cada copia es libre de crecer de manera independiente, sin afectar a su fuente original, pero pudiendo contribuir cambios seleccionados, si la fuente los acepta.

La mejora manera de entender el modelo, que tiene un lado servidor que se encarga del almacenamiento de las páginas y la colaboración entre servidores similares, y un lado cliente, que permite editar y modificar el estado, y federar el contenido de manera visual.

La documentación para usuarios finales de cómo utilizar el lado cliente está disponible -por supuesto- como un wiki federado.

Por supuesto todo el código es abierto y está en GitHub. La implementación de referencia del servidor (hay algunas otras en marcha) está escrita en Ruby utilizando Sinatra, mientras que la parte cliente está escrita en CoffeeScript.

A continuación, el primero de los vídeos para despertar su curiosidad (en inglés; ~2 minutos). Recomiendo ver el resto de la serie, que sigue aumentando con el tiempo.

viernes, 10 de agosto de 2012

Próxima reunión de Ágiles@Buenos Aires

Carlos Peix

El grupo Ágiles Argentina anunció la próxima reunión mensual de Buenos Aires para el próximo miércoles 15 de agosto (la semana próxima) de 18:30 a 20:30.

Como siempre, la registración a este evento gratuito es a través de Meetup, y el evento es esta vez en el auditorio del MUGRivadavia 1479 1er Piso.

El tema de esta sesión se llama "¿Cómo escribirías tu código si debe funcionar al primer intento?", y estará facilitado por mi amigo y colega de Kleer, Carlos Peix.

Carlos describe su propuesta así:

Ya pocos discuten las ventajas de diseñar nuestro código basándonos en ejemplos (pruebas). TDD ha llegado a nuestra profesión para quedarse. También muchos de ustedes conocerán los coding dojos, ya sea por comentarios, ya sea por referencias.

En esta ocasión me gustaría invitarlos a un coding dojo en el cual intentaremos movernos fuera de la zona de confort para un desarrollador que utiliza TDD: diseñar y escribir nuestro código sin ejecutar un solo test. Para hacerlo más interesante, agregaremos otra condición: el código debe ejecutar correctamente en el primer intento.

No hay trampas, lo lograremos, aunque parezca difícil. Una vez que conozcamos el otro extremo de TDD, nuestro panorama cambiará, o al menos, el mio cambió.

Esta idea tomo forma mientras leia este post, lo que haremos es muy similar pero con la kata Wincofon, inventada con el gran @MartinSalias hace unos cuantos años. 

Como verán, soy un poco pig en esta sesión, aunque no podré asistir por otros compromisos. 

Si quieren ver a Carlos en acción, pueden ver este video con el que inauguramos la serie de programación de a pares en este blog, que espero retomar en breve.

miércoles, 8 de agosto de 2012

FertnetJS: comunidad de JavaScript en español

FernetJS

Me encontré recientemente con este sitio que imagino creado por argentinos aficionados a JavaScript y al fernet (bebida patria, sobre todo en Córdoba).

Se trata de un blo de artículos técnicos sobre JS, Node y temas similares, con muy buena información generada por los autores, más alguna que otra redifusión de vídeos o noticias. Todo el contenido es en español y admiten contribuciones, aunque mantienen la moderación.

Algunos de los colaboradores más activos son @MatiasArriola, @pnovas@dzajdband, y @Peesstt

En el sitio hay una foto donde se ve al grupo fundador:

Equipo de fernetJS

Algunos de los últimos post,para que se den una idea de temas, son:

  • Tuneando las Dev Tools de Google Chrome
  • Usando distintas versiones de jode
  • NodeJS en la nube con Nodejitsu y Nodester
  • Pateando Google Analytics desde NodeJS
  • Fernet Volador: detrás de escena
  •  Es un Array o no?
  • Del ofuscador al konami code

Buen recurso para los fanáticos de JS. ¡Gracias al equipo!

martes, 7 de agosto de 2012

Video: creando una aplicación desde cero con TDD

Alt.NET Hispano

TDD es una técnica de diseño sobre la que se habla bastante (pueden ver varios post sobre el tema aquí mismo) y que realmente hace una diferencia en la calidad del código que generamos, y nos permite encarar cambios más profundos, incluso a nivel de la arquitectura ce la aplicación, con mucha más confianza.

A pesar de que hay muchos tutoriales sobre el tema, no es tan frecuente conseguir recursos que vayan más allá de ejemplos sencillos, generalmente con poca funcionalidad, mínimas dependencias, etc.

En esta VAN (reunión virtual) de ALT.Net Hispano, el Maestro Angel "Java" López deja de lado por un rato la física cuántica y dedica poco más de dos horas a crear una aplicación desde cero con TDD, basándose en ASP.NET MVC 3. Pero más allá de Visual Studio o C#, la manera en que el Maestro avanza en el desarrollo de la aplicación puede servir para entender el proceso a cualquier programador, en cualquier lenguaje: pasos mínimos, refactorización, foco en el modelo, etc.

La sesión es larga, pero sumamente recomendable. Incluso para quienes ya practican TDD, permite apreciar un estilo definido de construcción que seguramente tenga influencia en el nuestro, aunque no lo adoptemos completamente, o nos haga replantear parte de la manera en que avanzamos con algunos pasos. Personalmente creo que para todo desarrollado (y mejor aún si se lo ve en equipo) estas son horas extremadamente valiosas para invertir, que ahorran semanas a futuro.

Recuerden también que hay casi 90 sesiones de este estilo en el portal de ALT.NET Hispano (cientos de horas de entrenamiento gratuito).

A continuación el video, en español, de 144 minutos de duración:

Unable to display content. Adobe Flash is required.