viernes, 4 de febrero de 2011

Agiles @ Buenos Aires: Coding Dojo

Coding DojoEl grupo Agiles.org organiza actividades de varios tipos en muchos puntos de América Latina.

Esta comunidad surgió fuertemente tras la primera edición de la conferencia latinoamericana Agiles 2008, y a partir de ahí el grupo en Argentina quedó consolidado, realizando muchas actividades por todo el país (anunciadas en la página Agiles Argentina).

Específicamente en Buenos Aires, se efectúan reuniones todos los meses, que se anuncian en la página Agiles@BsAs.

La próxima reunión es el martes que viene, 8 de febrero, en las oficinas de Southworks (Perú 375, 1er piso).  [disclaimer: es donde yo trabajo]

Lo interesante de esta próxima reunión en particular es que va a ser un Coding Dojo (estilo Randori), facilitado por Adrián Eidelman.

En palabras del propio Adrián:

"Un coding dojo es una sesión de codificación centrada alrededor de un desafío de programación. El desafío es sumamente pequeño en alcance y -en la versión Randori de un coding dojo- la totalidad de la audiencia participa para completarlo. Básicamente la solución se construye utilizando una única computadora y un proyector, en donde los desarrolladores van rotando de a pares cada una cantidad fija y acotada de tiempo, dejando lugar a que otras personas de la audiencia continúen. El objetivo es aprender, enseñar y mejorar nuestras habilidades de programación compartiendo con otros desarrolladores de software en un ambiente relajado."

La actividad como siempre es totalmente abierta y gratuita pero requiere inscripción previa, y vale la pena decidirse rápido porque el espacio no es infinito.

Espero ver a muchos de ustedes la semana que viene, codeando, y espero poder capturar en video todo lo que se pueda de la actividad, para compartir con quienes no puedan asistir.

 

jueves, 3 de febrero de 2011

Programando en Windows Azure con el Maestro Angel "Java" López

@ajlopez

En la última reunión VAN (Virtual Alt.Net) de Alt.Net Hispano, el Maestro presentó una profunda sesión sobre programación en la plataforma de cloud computing de Microsoft. Para quienes quieran saber más sobre este grupo, pueden leer este post previo.

En esta sesión, como siempre, registrada en video (disponible más abajo), el Maestro @ajlopez recorre los conceptos básicos de Windows Azure, el SDK correspondiente para poder programar aplicaciones para esa plataforma, las opciones de computación (roles web y roles de trabajo), y las alternativas de almacenamiento (tablas, blobs y colas).

Pero lo más jugoso es ver en acción la manera de programar, sobre todo a través de los ejemplos e ideas del Maestro, que sabe mantener el interés con buen nivel de detalles y muy buen humor.

Tras las sesión, hubo en la lista de Alt.Net hispano un mensaje de Eugenio Pace, Sr. Program Manager en Microsoft patterns & practices, que desde Redmond mandó felicitaciones por la sesión y aprovechó para puntualizar algunos detalles que Angel dejó planteados, para beneficio de los asistentes.

Antes de dejarles el video, aviso para todos los que estén interesados en profundizar en el tema y estén alrededor de Buenos Aires, que Angel va a dar un seminario gratuito de dos días sobre Azure, el 15 y 17 de febrero, en el Grupo de Usuarios Microsoft de Argentina.

Que lo disfruten:

Unable to display content. Adobe Flash is required.

miércoles, 2 de febrero de 2011

Leisure Suit Larry en HTML5

En la puerta de Lefty's

La aparición de nuevas librerías para gráficos y animación en HTML5 / JavaScript han posibilitado una avalancha de regresos a juegos clásicos que se adaptan bien a ser ejecutados en el browser.

Y aunque ya se pueden encarar estilos más ambiciosos, los clásicos siguen volviendo. Esta vez encontré una versión sumamente fiel de un clásico de los 80: Leisure Suit Larry. Para quienes lo jugaron en aquella época o m's tarde, ya que su popularidad lo mantuvo vivo bastante tiempo, he aquí una oportunidad de revivir esos momentos sin tener que recurrir a la virtualización.

Algo interesante de este juego y otros clásicos disponibles en el mismo sitio, es que están autorizados por las compañías que mantienen los derechos de los juegos originales, Activision y CodeMasters.

Pero además están construidos sobre un par de componentes  para juegos licenciado bajo GPL o MIT, y disponibles en Google Code:

  • El intérprete Sarien.Net, que es una implementación sobre el browser del motor original usado por Sierra On-Line para los juegos originales Space Quest, Police Quest y el de Larry.

  • El motor multiplayer Q42 es una plataforma multi-usuario sumamente liviana para juegos basados en el browser, siempre por puerto 80. El API cliente son 5K de JavaScript, y el servidor es una clase en C# que puede embeberse o referenciarse como una DLL externa (imagino que probablemente pueda correr en Mono, pero habría que probarlo).

    El motor implementa básicamente un mecanismo de chat con salas separadas, escalamiento automático, liberación de salas vacías, propiedades por usuario como nombre y posición (x,y), mensajería y soporte para múltiples usuarios por sesión, lo que permite mantener usuarios distintos en tabas separados del mismo browser, por ejemplo.

Espero que alguno se divierta con esto, jugando o programando.

martes, 1 de febrero de 2011

Meditación programática: Koans

Zen (http://www.flickr.com/photos/josefeliciano/3849557951)

Los Köan (pronunciación japonesa del chino 公案) o Koan, son ejercicios mentales de la meditación Zen, consistentes en diálogos o preguntas que plantean un problema que muchas veces no tiene respuesta directa. El objetivo de un Koan es el aprendizaje durante el proceso de elaboración de la respuesta, más que la respuesta en sí.

Un ejemplo clásico es la pregunta: "Cuando dos manos aplauden hay un sonido. ¿Cuál es el sonido de una sola mano?".

Tomando esta idea como base, de manera similar a la idea de los Code Katas que comentaba en un post reciente, diferentes personas empezaron a generar Code Koans para diferentes lenguajes. Como siempre, la adaptación es libre y no sigue exactamente los mismos principios, sino que e inspira en la idea motora.

Los Koans dentro del campo de la programación parten del objetivo de comenzar con conceptos sumamente básicos y realizar ejercicios generalmente abiertos, pero que frecuentemente llevan a la necesidad de experimentar o investigar un poco más allá del alcance mismo del planteo.

Hay colecciones de Koans para varios lenguajes, entre ellos Ruby Koans (Jim Weirich y Joe O'Brien), JavaScript Koans (Liam McLennan), .NET Koans (Cory Foy) y los Clojure Koans (Aaron Bedra).

La mayoría de estos proyectos están inspirados en el primero, los Ruby Koans, de los que incluyo algunos ejemplos para que se entienda el concepto general.

Los Koan suelen estar agrupados por temas, por ejemplo en los de Ruby, hay series para arrays, blocks, clases, excepciones, módulos, strings, y muchas más.

Los Koans se basan siempre en la práctica de Test-Driven Development (curso gratuito en español disponible), donde las "preguntas" están formuladas como tests, que el aprendiz debe implementar y pasar. La diferencia con TDD tradicional es que el test principal ya está escrito (lo que no significa que no podamos agregar más).

Lo primero a ejecutar en los Ruby Koans es (desde la línea de comandos):

$ ruby path_to_enlightenment.rb

y el resultado es algo como:

AboutAsserts#test_assert_truth has damaged your karma.

The Master says:
  You have not yet reached enlightenment.
  Do not lose hope.

The answers you seek...
  Failed assertion, no message given.

Please meditate on the following code:
  /Users/ . . . /koans/about_asserts.rb:10:in `test_assert_truth'

mountains are merely mountains
your path thus far [X_________________________________________________] 0/274

El mensaje juega con el estereotipo del Maestro Zen y el estilo de los consejos, pero más allá de eso, nos da un indicio: nos dice que meditemos en el método test_assert_truth dentro del archivo about_asserts.rb. Si abrimos este archivo y lo miramos, encontramos este test donde el motivo de la falla es más que obvio:

  # We shall contemplate truth by testing reality, via asserts.
  def test_assert_truth
    assert false                # This should be true
  end

Al cambiar a assert true y ejecutar de nuevo, obtenemos un mensaje similar sobre el siguiente test que falla, y otra frase Zen diferente para inspirarnos. Por supuesto, a medida que avanzamos la respuesta es menos evidente que cambiar un false a true. El primer ejercicio solamente sirve para que entendamos el procedimiento.

En varios casos, la manera de resolver el test no es evidente y tenemos que buscar más información en libros o en la web, pero esto es lo que buscan los Koans: forzarnos a aprender algo, pero siguiendo baby steps.

lunes, 31 de enero de 2011

Microsoft Web Platform Installer

Web Platform Installer

Una de las quejas recurrentes al trabajar con el stack web de Microsoft era siempre la dificulta de instalar los componentes necesarios, no solamente en el puesto de desarrollo, donde con un poco de tiempo y paciencia se logra, sino en el servidor de producción, donde generalmente el tiempo y la disponibilidad no es tan abundante.

Para solucionar este tema, desde hace tiempo se liberó esta herramienta: el Web Platform Installer, conocido familiarmente como Web PI, que actualmente ya se encuentra en su versión 3.0.

Como Microsoft promociona en el sitio principal, este instalador tiene varias características interesantes:

  • Es gratuito
  • Es pequeño (2 MB)
  • Es inteligente (bueno, al menos entiende algunas dependencias)
  • Está actualizado (siempre propone las últimas versiones de los componentes)
  • Está disponible en 9 lenguajes (incluido español, por supuesto)
  • Instala muchísimas aplicaciones de diversos orígenes (incluyendo IIS, SQL Express, .NET, pero también aplicaciones PHP como Umbraco, Drupal, o mi amigo Moodle). Hay disponible una galería de aplicaciones.

Además de componentes de infraestructura, Web PI también permite instalar herramientas de desarrollo como Visual Studio Express y frameworks como ASP.NET MVC y otros.

Una novedad interesante, e imprescindible desde mi punto de vista, es que ahora toda la funcionalidad se puede acceder por línea de comando, incluyendo cierto control de comportamientos algo molestos de la plataforma Windows que al menos se minimizan un poco con esto: aprobación de acuerdos de licencia y necesidad de booteos.

Que quede claro: hace falta seguir aprobando la licencia pero podemos indicar en el script que la acepte automáticamente, y hay muchos componentes que siguen requiriendo re-bootear la máquina, pero al menos podemos forzar a que no lo haga en cada producto, o no lo haga en todo el proceso. La instalación final se completará en el siguiente boot (sea manual o por script) y Web PI se encarga de resolver este tema solo.