martes, 21 de junio de 2011

Se aproxima otro Alt.NET Buenos Aires (y video de una VAN)

Alt.NET Hispano

Cada tanto la comunidad Alt.NET se pone de acuerdo para realizar un Open Space en Buenos Aires, como en muchas otras partes del mundo. Ya he cubierto ediciones anteriores en este blog, y ahora me toca informar sobre la organización de una nueva reunión.

Como suele ocurrir, hay mucha gente que está interesada pero aún no se ha acordado la fecha definitiva, aunque hay consenso en hacerla durante el mes de julio. Para votar por la fecha que prefieran los interesados, estamos utilizando este mecanismo:

http://whenisgood.net/p5734be

¡No sean tímidos! Todo el que esté realmente interesado en participar puede elegir qué sábado le queda mejor. Tengan en cuenta que usualmente s desde las 9 de la mañana hasta las 6 de la tarde, con la interrupción del almuerzo que se hace in-situ. Es probable que el lugar sea Microsoft de Argentina, en Bouchard 710, 4to piso, Ciudad de Buenos Aires.

Para quienes nunca estuvieron en un Open Space, dejo esta descripción en castellano del grupo Agile Spain.

Y como siempre, aprovecho para recordar que además de estas reuniones presenciales que se organizan esporádicamente en distintas ciudades, el grupo Alt.NET Hispano organiza reuniones virtuales en forma semanal (a veces más de una por semana), que se anuncian en la lista de distribución y en el calendario de reuniones del sitio.

Estas reuniones quedan grabadas y pueden verse a demanda una semana o dos después de su ejecución, y el grupo ya lleva (a hoy) 73 reuniones que pueden verse en línea o descargarse desde el histórico de reuniones.

Como muestra, dejo el video de la reciente sesión sobre REST Services y WCF Web Api, presentada por Pablo Cibraro, Gustavo Machado y José Romaniello, de Tellago.

Unable to display content. Adobe Flash is required.

 

jueves, 16 de junio de 2011

Rubinius 2.0 - versión preliminar para desarrolladores

Rubinius

Rubinius es una implementación de Ruby que tiene la característica principal de estar escrito mayormente en Ruby.

La máquina virtual está escrita en C++ y utiliza LLVM para convertir el bytecode en el código nativo del procesador destino, pero el compilador de los bytecodes y la gran mayoría de las bibliotecas están escritas en Ruby. Este nucleo utiliza un recolector de basura muy optimizado y permite extensibilidad en C que soporta las mismas extensiones en este lenguaje que utiliza el intérprete estándar de Matz (conocido como MRI).

El siguiente diagrama muestra la distribución de componentes de Rubinius:

Componentes

Uno de los desafíos de Rubinius siempre fue medir el nivel de compatibilidad contra la implementación de Matz, por lo que tempranamente empezaron a trabajar en RubySpec, una serie de pruebas que funcionan como la especificación del lenguaje, ya que éste no tenía una originalmente y por sus propias características de meta-programación, es especialmente complejo de validar.

Básicamente, Rubinius, hasta su última versión estable, soporta Rails, Rake, RSpec, Nokogiri, Mongrel y prácticamente todas las bibliotecas y frameworks hasta Ruby 1.8.x.

La novedad es que el equipo acaba de liberar la versión preliminar 2.0, que fundamentalmente soporta Ruby 1.8.7 y 1.9.2, y funciona bajo Windows, pero además utiliza un nuevo mecanismo de threading realista que aprovecha los múltiples núcleos de los procesadores modernos.

Adicionalmente, el equipo migró el repositorio a GitHub. Para los interesados en el desarrollo de lenguajes, vale la pena al menos pegarle una mirada.

 

 

martes, 14 de junio de 2011

Raros lenguajes nuevos: Nemerle

Nemerle

Uno de los principios de diseño del framework .NET, o más específicamente del CLI (Common Language Infrastructure) es, como su nombre lo indica, permitir implementar fácilmente una variedad importante de lenguajes.

El CLI es una pieza estandarizada ante ECMA como un estándar abierto, y es lo que ha permitido la creación de implementaciones abiertas de .NET como Rotor y Mono.

Pero también ha permitido la implementación de muchos lenguages (más allá de Microsoft) que comparten todo el ecosistema de herramientas y bibliotecas disponibles.

Nemerle es uno de estos casos. Desarrollado en la Universidad de Wroclaw, Polonia, se trata de un lenguaje de tipos estáticos, casi un superset de C#, que soporta estilos de programación funcional y orientada a objetos, metaprogramación, lenguajes específicos de dominio y mucho más. Al estar basado en el CLI genéricamente, funciona en .NET y en Mono por igual.

Siendo un superset, es posible compilar (con un par de toques en el archivo .csproj) fuentes C# en Nemerle.

Dos de las características más distintivas de Nemerle son la inferencia de tipos y el uso de macros.

Veamos algunos ejemplos de código, con inferencia de tipos:

def d = Dictionary ();
d.Add ("Code and Beyond", 42);
foreach (s in args) {
  ...
}

Notese que no hace falta inicializar los tipos del diccionario, que son declarados y chequeados a partir del primer uso.

En el caso de las macros, pueden escribirse cosas como:

ExecuteReaderLoop ("SELECT nombre, apellido FROM personas WHERE nombre = $miNombre", dbcon,
{
  System.Console.WriteLine ("Persona: {0} {1}", nombre, apellido) 
});

que enmascaran la creación del SqlCommand y el SqlReader, la clásica iteración y la obtención de las strings para los dos campos leídos, pero es importante ver que es mucho más que una función de una biblioteca, ya que en este caso se está interpretando la string conteniendo la sentencia SQL y generando el código chequeado correspondiente.

Nemerle también tiene interpolación de strings más eficiente que en C#, ya que se ejecuta en tiempo de compilación, como en:

$"Me llamo $Nombre y tengo $Edad años."

donde las variables reemplazadas son chequeadas por el compilador, a diferencia de utilizar String.Format, donde se realizan en tiempo de ejecución.

Es muy interesante además la sencillez para definir Macros, que no tienen nada que ver con las de C, y son descendientes directas de las macros de LISP. Veamos este caso que define un bucle hacia atrás:

macro ReverseFor (i, begin, body) 
syntax ("atras", "(", i, ";", begin, ")", body)
{
  <[ for ($i = $begin; $i >= 0; $i--) $body ]>
}

que se usaría de esta manera:

atras (i ; n) print (i);

Más información sobre Nemerle en la wiki del lenguaje, y los más interesados pueden encontrar el repositorio en Google Code.

jueves, 9 de junio de 2011

Video: Sesión NO presentada en Run WebCamp Chaco

Run WebCamp

Hoy tenía previsto estar en Resistencia, Chaco, participando en la edición local del Run WebCamp que está recorriendo el país, dando la sesión sobre Entity Framework que presentamos previamente en Buenos Aires con Daniel Laco.

Actualicé la presentación con algunos cambios en los poquísimos slides y mejoré un poco mi parte de los ejemplos, centrándome más en Code First que es la parte que me interesa más.

Pero no tuve mucha suerte: esta semana entró en erupción el volcán Pehueye en Chile, provocando bastantes problemas allá primero y en Argentina también, sobre todo en Bariloche, pero llegando a provocar demoras o cancelaciones de vuelos en toda la región.

Así que me quedé sin asistir, pero decidí grabar la sesión en video y compartirla. No llegué a tiempo con el procesamiento y la subida del video, me parece, pero espero que mis colegas y amigos de Chaco hayan podido compartir el link con el público de allá. Por mi parte, lo comparto aquí con todos los demás.

Duración aproximada: 55 minutos.

miércoles, 8 de junio de 2011

Recursos sobre HTML5

HTML5 logo

A medida que el tiempo avanza este lenguaje de marcado y su ecosistema se hacen temas cada vez más centrales en el desarrollo de software en general.

El reciente anuncio de Microsoft de que Windows 8 soportará HTML y JavaScript como una posibilidad para desarrollar aplicaciones de escritorio sigue en la línea de muchos otros jugadores del mercado que apuntan fuertemente a estos estándares.

Les dejo a continuación una serie de recursos para prender más sobre HTML5.

En Español

En inglés

Como siempre hay más recursos en inglés, y este tipo de información técnica es muy consumible para los programadores, incluso si no están duchos en ese idioma.

  • Dive into HTML5 es un libro completo en línea que además está escrito usando este estilo de marcado. Desde el comienzo se nota el uso de Web Fonts (noten que si bien la tipografía del título parece un gráfico, el texto es seleccionable).

  • Los blogs de SitePoint (que también ofrecen algunos libros pagos pero económicos) tienen muy buena infomación en sus blogs, categorizados por contenido sobre HTML5 y CSS3.

  • W3Schools tiene un Tutorial que además sirve como una buena referencia en línea para buscar información sobre forms, tags, atributos y eventos.