jueves, 4 de agosto de 2011

Programa de Agiles 2011 (y se acaba el descuento a fin de mes)

Ágiles 2011Como ya comenté antes, este año la conferencia latinoamericana de metodologías ágiles, Ágiles 2011 se realiza nuevamente en Buenos Aires, como en su primera edición del 2008.

Finalizada recientemente la llamada a ponencias, ya está disponible la primera versión del programa, donde pueden verse las sesiones aceptadas y distribuidas para los dos primeros días.

Pueden ver directamente las sesiones del día 11 de octubre y las del día 12 de octubre. El día 13 de octubre será dedicado exclusivamente al formato Open Space. El programa puede cambiar en cuanto a horarios, pero ya se pueden ver las propuestas aceptadas para los 7 tracks en paralelo, con contenidos en español, inglés y portugués.

El evento será del 11 al 13 de octubre en la Universidad de Palermo, Mario Bravo 1050 de la Ciudad de Buenos Aires. La registración está abierta desde hace tiempo y hasta el 31 de agosto hay un importante descuento.

Las figuras principales del evento serán los Keynote y Guest Speakers. Las keynotes (sesiones principales de los tres días) estarán a cargo de:

Jeff Patton
Jeff Patton
Agile Product Design

James Shore
James Shore
The Art of Agile Development

Juan Gabardini
Juan Gabardini
Agiles.orgIEEE CS

y los invitados especiales:

¡Espero encontrar muchos lectores de este blog en el evento!

miércoles, 3 de agosto de 2011

JavaScript dentro de .NET

Siguiendo con sus planes de dominar el mundo, JavaScript tiene desde hace un tiempo un interesante motor construido en .NET que permite ser embebido en cualquier aplicación: Jint

El proyecto es de código abierto y fue iniciado por Sébastien Ros y colaboradores antes de ingresar a Microsoft, donde trabaja en el equipo del proyecto Orchard.

A diferencia de otros proyectos que intentan emitir código IL a partir de JavaScript, lo que es problemático por el problema de no poder descargar los ensamblados generados, o de otros proyectos basados en el Dynamic Language Runtime, Jint es un intérprete completo basado en ANTLR.

Jint permite utilizar JS como lenguaje para extender aplicaciones dinámicamente, algo que en .NET muchos hicimos previamente utilizando IronPython o IronRuby. Pero JavaScript es bastante más amplio en su uso, y esta clase de recursos siempre es muy valioso, sobre todo en este caso en que el soporte es muy completo, cubriendo la especificación completa de ECMAScript 3.0, y soportando en el último release muchos elementos del estándar 5.0.

Dejo el ejemplo más básico de uso desde C# (obviamente puede ser embebido en cualquier lenguaje .NET):

script= @"
function square(x) {
return x * x;
};

return square(number);
";

var result = new JintEngine()
.SetParameter("number", 3)
.Run(script));

Assert.AreEqual(9, result);

martes, 26 de julio de 2011

Patrones de Diseño en JavaScript, por Addy Osmani

imageAddy Osmani es un reconocido diseñador y desarrollador web, experto en jQuery y colaborador del equipo de documentación de ese proyecto.

Recientemente Addy publicó el primer volumen de su libro en línea “Essential JavaScript Design Patterns For Beginners” (en inglés) que me parece un gran trabajo sobre patrones de diseño, cubriendo la definición conceptual de éstos, sus categorizaciones típicas, y finalmente recorre varios de ellos en JavaScript, no como una simple traslación de los patrones originales del GoF, sino apuntando a aquellos que muestran particularidades de JavaScript, y agregando otros muy específicos de este entorno.

Los patrones recorridos para JavaScript son: Creational, Constructor, Singleton, Module, Revealing Module, Observer,
Prototype (que en JavaScript es central), Command, DRY, Façade, Factory, Mixin y Decorator.

Pero Addy no podía dejar de lado jQuery, por lo que cubre también los siguientes patrones de diseño en jQuery (verán algunos repetidos, porque analiza el patrón en el contexto de la biblioteca, no en sí mismo): Module, Lazy Initialisation, Composite, Wrapper, Façade, Observer, Iterator, Strategy, Proxy, Builder, Prototype, Flyweight.

Como valor agregado de este post, les dejo debajo esta presentación de Addy sobre trucos de rendimiento de jQuery:

lunes, 25 de julio de 2011

Google App Engine completó el soporte para Go

La semana pasada el equipo de Google App Engine, la plataforma como servicio para ejecutar aplicaciones en la nube, anunció soporte para Go, uno de esos raros lenguajes nuevos, en este caso generado por el mismo Google, en lugar de surgir del ambiente académico o la comunidad de código abierto.

Esto hace que Go, diseñado para ser un lenguaje de sistema de un nivel apenas superior a C++, eliminando los típicos problemas de manejo de memoria y aportando características específicas para situaciones de alta concurrencia y paralelismo.

Go es un lenguaje “de llaves”, en la tradición familiar de C, pero sin necesidad de puntos y comas, al menos (las lleva pero el compilador se encarga de ponerlas solo). Veamos el clásico Hola, Mundo:

package main

import "fmt"

func main() {
fmt.Println("Hello, 世界")
}

Una de las características más interesantes de Go, y una de las que lo hace especialmente interesante para aplicaciones en la nube, es su implementación de co-rutinas, o funciones que pueden ejecutarse en paralelo, utilizando, casualmente, la sentencia “go”, pero además permite definir “canales” para mantener la comunicación entre procesos. Para los interesados que aún no lo hayan hecho, hay un buen tutorial de Go con muchos ejemplos.


Quienes quieran probar Go en Google App Engine, pueden comenzar con las instrucciones en Google Code.

miércoles, 20 de julio de 2011

Grandes noticias sobre MonoTouch y Mono for Android

MonoTouch y Mono for AndroidEsta semana Novell / SUSE anunció que firmó un amplio acuerdo de colaboración con Xamarin, la compañía formada por el equipo que trabajaba para ellos en el desarrollo de estos productos, liderada técnicamente por el infatigable Miguel de Icaza y comercialmente por su socio de años, Nat Friedman.

El acuerdo incluye transferencia a perpetuidad a Xamarin de todos los derechos de propiedad intelectual de todos los productos de la familia Mono (incluyendo MonoTouch, Mono for Android and Mono for Visual Studio) y el control de todas las propiedades relativas al proyecto Mono, como MonoDevelop y la organización Mono en GitHub, y a cambio se compromete a brindar soporte a todos los clientes de SUSE utilizando la plataforma, lo que es un factor importante para grandes cuentas de Novell utilizando las ediciones Enterprise de Mono.

Básicamente, desde mi punto de vista, es una acuerdo de colaboración basado en el hecho de que Novell no puede hacer mucho con esos productos sin el equipo detrás, pero necesita seguir dando respaldo a muchos clientes que los están utilizando. Como menciona el gerente general de SUSE en el anuncio oficial, con este acuerdo ganan las tres partes: Novell, Xamarin y los clientes de ambos.

Inmediatamente después de sellado el trato, Xamarin puso nuevamente disponibles los productos en su tienda en línea, y en el anuncio de Miguel se entiende que gran parte del esfuerzo que Xamarin inició para construir estos productos desde cero (mientras negociaban este acuerdo) va a aplicarse directamente como correcciones e implementación de nuevas características en los productos existentes.

La noticia es muy buena también para la comunidad de código abierto, ya que aunque estos productos que permiten programar en C# en plataformas móviles son pagos, son también la fuente de financiamiento que la empresa necesita para continuar liderando el desarrollo del proyecto Mono, MonoDevelop y los demás componentes abiertos y gratuitos, que nunca se detuvieron.

Prueba de que todos estos cambios nunca afectaron demasiado a la comunidad es que este sábado 23, y hasta el lunes 25 se llevará a cabo la conferencia MonoSpace 2011, dedicada a la plataforma abierta, y alojada en el NERD Center de Microsoft en Boston. La conferencia se empezó a organizar antes de que el equipo de Mono fuera despedido de Novell, y la organización nunca se detuvo a pesar de todas las idas y vueltas que felizmente han concluido en este acuerdo que deja en completo control al equipo original.