jueves, 23 de diciembre de 2010

Resultados de la Reunión Alt.Net en Buenos Aires

Alt.Net Hispano

Hace un par de fines de semana, el sábado 11 de diciembre, se realizó una nueva reunión del movimiento Alt.Net en Buenos Aires, en las remodeladas oficinas de Microsoft de Argentina, que duró todo el día.

Por las características de la reunión, más alguna dificultad con la conectividad, se hizo imposible capturar video, pero afortunadamente nos quedó este excelente resumen que publicó el amigo Pedro Wood, quien se vino para esta reunión desde Bariloche, nada menos. Pueden leer ahí un buen compendio de las sesiones en las que él participó y comentarios generales.

Dejo un par de fotos que tomé en los momentos de descanso del evento:

5285547260_787225a0fc.jpg

5285547018_9c3b7e4528.jpg

El set completo (son solo cuatro fotos) está disponible en Flickr.

martes, 21 de diciembre de 2010

Lenguajes esotéricos

Esoterismo

Para quienes somos aficionados a los lenguajes de programación, todo paradigma alternativo o detalle de implementación novedoso tiene un atractivo especial, ya que sin importar el hecho de que sean prácticos o relevantes como lenguajes, todos dejan alguna lección que puede ser útil en algún momento.

De hecho, hay muchos lenguajes que ni siquiera intentan ser útiles, sino que son ejercicios intelectuales, de la misma forma en que años atrás en Europa el taller de literatura potencial Oullipo producía sus obra alrededor de desafíos como escribir una novela sin la letra e, poemas usando palabras de largo ascendente en cada verso, o utilizando palíndromos.

Siguiendo esa tradición de experimentar con lo absurdo, en el terreno de los lenguajes de programación se han generado muchos que están basados en ideas locas, pero cuya implementación plantea un desafío real y un buen ejercicio.

David Morgan, también conocido como Danger Mouse, tiene una sección entera de su sitio dedicada a este tipo de lenguajes, entre los que encontramos algunos como:

Chef: en el que los programas parecen recetas de cocina

Este ejemplo es un programa que imprime los primeros 100 números de la serie de Fibonacci.

Ingredients.
100 g flour
250 g butter
1 egg

Method.
Sift the flour. Put flour into mixing bowl. Serve with caramel sauce.
Stir for 2 minutes. Remove egg. Rub the flour until sifted.
Stir for 2 minutes. Fold the butter into the mixing bowl.
Pour contents of the mixing bowl into the baking dish.

Recuerden que esto no es sólo una idea, existe un intérprete (escrito en Perl) para este lenguaje.

Piet: en en que los programas parecen arte abstracto

No confundirse con Mondrian (ambos refieren al artista Piet Mondrian), que es un lenguaje de scripting que si existe y se utiliza bastante.

Piet se basa en bloques de colores llamados Codels (pueden pensarse como pixels, pero frecuentemente se amplían a más de un pixel por codel para ver los programas con más claridad).

El lenguaje está basado en stacks y tiene una cantidad de operaciones usuales como push y pop, operaciones como add, substract y multiply, comparaciones, punteros, etc. Pero en lugar de expresarse en forma textual, se expresan como cambios entre un set de 20 colores.

Va aquí un ejemplo con el mismo ejercicio de imprimir los primeros 100 números de la serie de Fibonacci:

Fibonacci escrito en Piet

Esta imagen está magnificada y muestra con fechas el sentido de flujo del programa. Nuevamente, este lenguaje cuenta con varios intérpretes e incluso herramientas de desarrollo, incluyendo alguna IDE.

 

Esta sección del sitio de Morgan es parte de una red de sitios (unidos bajo este antiguo concepto de las primeras épocas de la web) conocido como The Esoteric Programming Languages Ring.

viernes, 17 de diciembre de 2010

LiveReload: Mejorando la productividad, tecla por tecla

Acabo de encontrarme con una herramienta asombrosamente trivial pero increíblemente útil y adictiva: LiveReload.

Esta herramienta es para Mac OS X y soporta por ahora Safari y Chrome, pero imagino que pronto veremos clones para otras plataformas y browsers. El concepto es tan básico que parece increíble que nadie lo haya hecho antes.

Básicamente LiveReload se configura para monitorear una carpeta, de la que pueden incluirse o excluirse algunas extensiones en particular, etc.

A partir de el inicio del servicio (y teniendo la extensión correspondiente instalada y habilitada en alguno de los browsers), cualquier cambio que se graba en uno de esos archivos refresca automáticamente el contenido de la página (en gran parte de los casos ¡sin refrescar la página misma!) sin que tengamos que hacer nada en el browser.

Como siempre, un video vale más que 1024 palabras, así que dejo debajo uno grabado por Gregg Pollack para que vean la magia en acción.

Por supuesto, esto no es tan fácil de lograr tan eficientemente en entornos con compilación de por medio, pero solamente la magia de tocar hojas de estilo o scripts y verlos variar instantáneamente puede transformar nuestra forma de trabajo.

jueves, 16 de diciembre de 2010

Video: Windmill trae una alternativa al testing web

Windmill

La mayoría del testing automatizado sobre aplicaciones web se hace hoy día utilizando Selenium, que se ganó su predominancia por haber sido el primer framework completo para este objetivo.

Sin embargo, quienes lo utilizan bastante empiezan a notar algunos problemas estructurales que no le restan valor, pero complican el pasar de cierto nivel de aseguramiento. Como siempre, una buena respuesta a lo límites de una herramienta suele ser utilizar otras complementarias, sacando provecho de la diversidad.

Windmill es otro framework open source,  para efectuar este tipo de pruebas que tiene algunas características prometedoras y está siendo cada vez más apreciado en la comunidad. El producto corre en Python pero sirve para probar cualquier tipo de interfaz web, soportando múltiples browsers (incluso, con algunos cuidados, el problemático IE6).

Algunas de sus características principales:

  • Múltiples browsers
  • Grabación, Edición y Ejecución de pruebas
  • Shell interactivo, basado en Python, que permite scripts para extender los casos
  • API de Proxy que permite interceptar y modificar el contexto de ejecución para contemplar situaciones posibles en distintos browsers y escenarios cliente
  • Las pruebas pueden escribirse también en Javascript, incluyendo las funciones de JSUnit
  • Controller API que permite ejecutar programáticamente cualquier tipo de acción interactiva como cliquear, escribir, esperar, arrastrar y soltar, hacer clic derecho, etc.

Pero como nada es mejor que ver algo en acción, aquí comparto un video demostrando rápidamente el framework en acción:

miércoles, 15 de diciembre de 2010

Cartilla de ayuda para vi/vim

Vim

vi es una herramienta clásica del mundo Unix que mucha gente encuentra arcaica y obscura, mientras otros son fanáticos de su simpleza y flexibilidad.

Se trata de un editor de textos escrito por Bill Joy en el 76, años antes de la fundación de Sun, famoso por sus modos de operación (insert o normal) y su capacidad para interactuar con el sistema operativo subyacente.

Uno de sus derivados más populares es Vim, creado originalmente en 1991 para las computadoras Atari Amiga y portado con el tiempo a prácticamente todas las plataformas modernas, aunque su mayor popularidad sigue estando en la comunidad Linux/Unix.

La particularidad de ambos editores es que no utilizan menúes sino comandos de texto (estilo línea de comando) o teclas especiales. Es esta característica la que fanatiza a muchos usuarios de Vim: no hace falta tocar el mouse para usarlo.

El equipo de ViEmu, un plugin para Visual Studio, Word, Outlook y SQL Server Studio que agrega a estos entornos las capacidades de comandos, macros y secuencias de teclado tradicionales de Vi, ha publicado una cartilla visual (cheat sheet) que puede ayudarnos a aprender vi/vim o servirnos de referencia para los comandos menos usados. La reproduzco vinculada a la página original donde también hayuna serie cartillas en forma de lecciones para aprender el uso en orden.

Vim Cheat Sheet