martes, 1 de marzo de 2011

Mono 2.10 y las últimas novedades de la monada

Mono

Por si alguno de los lectores de este blog aún no lo sabe, Mono es la implementación abierta de .NET para Unix, Mac OS X y Windows.

El increíble equipo de Mono nunca se detiene, siempre acompañado por su líder Miguel de Icaza.

La última versión liberada es la 2.10 (en realidad la 2.10.1) mientras continúa el rumbo hacia el próximo gran lanzamiento, que será Mono 3.0.

Pero esta versión ya tiene grandes avances, como:

  • Soporte para el Google Native Client
    Esta es una tecnología que permite ejecutar código nativo dentro del browser de manera segura, y que ahora incluye no sólo la posibilidad de ejecutar código compilado previamente, sino también realizar compilación a demanda (JIT), lo que permite que Mono soporte Reflection.Emit o los lenguajes dinámicos, por ejemplo.
  • Nuevo motor de Profiling
    Este nuevo motor está optimizado para trabajar en entornos de múltiples hilos y es muy eficiente en todo sentido.
  • Implementación mejorada de Sockets
  • Mejoras en el Parallel Framework y en SGen, el nuevo recolector de basura (una increíble pieza de ingeniería)
  • Se unificó el runtime de soporte para MonoTouch y MonoDroid (versiones de Mono para IOs y Android respectivamente)
  • Cecil/Light es una versión mejorada de Cecil, la librería que permite generación e inspección de código en tiempo de ejecución, y que muchos utilizan incluso en .NET, donde no tiene un equivalente directo.
  • Nuevo mecanismo del compilador de C# y enormes mejoras en el shell interactivo
    Mientras Microsoft lleva más de dos años preparando su compilador como servicio, Mono lo tiene disponible desde entonces, incluyendo una consola que ahora permite no sólo la ejecución de expresiones sino de programas completos. El servicio de compilación además dejó de ser estático, con lo que se pueden crear diferentes instancias del compilador con contextos separados.
  • Compilador de VB que permite compilar a los perfiles de VB 2.0 al 4.0
  • Soporte completo para ASP.NET MVC 3 incluyendo Razor y WebPages. Mono 2.10.1 agregó algunos detalles que permiten ejecutar el CMS de código abierto Orchard de Microsoft, que de esta manera puede ejecutarse también en Linux.
  • Implementación de WebMatrix.Data, una librería de Microsoft que permite acceso a datos aprovechando los nuevos tipos dinámicos.
  • Muchísimas optimizaciones para Mono en OS X, que aprovechan más los servicios particulares del sistema operativo de Apple.
  • Compilador de F# e intérpretes de IronPython y IronRuby completamente integrados en los paquetes para Linux y Mac.
  • Gendarme 2.10, el analizador estático de Mono, también es mucho más rápido y tiene 33 reglas nuevas.

Como ven, nadie puede decir que Mono no avanza.

Para más detalles, se pueden ver las notas de los releases 2.10 y 2.10.1 en el sitio de Mono.

O pueden ir directamente a la página de descarga, donde encontrarán paquetes de instalación para Virtual PC, VMWare, LiveCD, openSUSE, SLES/SLED, Windows, Mac OS, CentOS, Solaris u otras distros de Linux.

lunes, 28 de febrero de 2011

Run Web Camp en Buenos Aires

Run Web Camp

El 15 y 16 de marzo la gente de Microsoft Argentina estará presentando este evento que es parte de una gira internacional sobre desarrollo web dentro de su plataforma.

Es una pena que el sitio del evento parezca estar hecho por gente que no sabe mucho del tema en si, e insiste en publicar el programa como una imagen, haciendo la página muy poco accesible. Para beneficio de quienes no puedan leer una imagen y quieran enterarse de qué temas se presentarán, les dejo un resumen del temario.

Lo mejor del evento para mi es que participan muchos amigos. No se asusten por verme como orador, Daniel Laco que presentará conmigo se va a encargar de levantar el nivel de la charla.

Dia 1 (martes 15 de marzo) - Palais Rouge, Jerónimo Salguero 1441

09:00 Desayuno y Registración

09:30 Bienvenida (Eduardo Mangarelli - Director Regional de Nuevas Tecnologías de Microsoft)

09:45 Keynote: ASP.NET MVC (Phil Haack - Program Manager de ASP.NET MVC)

10:45 Presentando WebMatrix (Miguel Sáez, Programa Desarrolladores de Microsoft)

11:30 break

11:45 Acceso a Datos y Modelado con Entity Framework (Daniel Laco y quien escribe)

12:30 Un cambio de Vista en MVC: Razor Syntax (Drew Robbins)

13:15 almuerzo

14:15 Internet Explorer 9 y HTML 5 (Matias Woloski y Johnny Halife)

15:00 Aplicaciones AJAX con MVC (Rodo Finochietti y Pablo Zaiden)

15:45 break

16:00 Funciones avanzadas con MVC 3.0 (Daniel Cazzulino y Julián Domínguez)

16:45 Administrando paquetes con NuGet (Phil Haack)

Día 2 (miércoles 16 de marzo) - Microsoft de Argentina, Bouchard 710, 4to piso

Nótese que este segundo día es de prácticas con instructor, y es importante llevar notebook.

09:00 Desayuno y Bienvenida

09:30 Apertura: Sesión conjunta

10:00 Sesión Asistida de Desarrollo (parte 1)

13:00 almuerzo

14:00 Sesión Asistida de Desarrollo (parte 2)

17:00 Elección de proyecto

18:00 Cierre

Instructores: Phil Haack, Drew Robbins, Diego Gonzalez, Angel "Java" López

Espero que nos veamos por allá.

Mejorando aplicaciones web con Chrome Developer Tools (video)

Google Chrome

Una de las características que el navegador de Google tuvo desde el inicio fue la integración de un buen juego de herramientas para desarrolladores.

Y estas herramientas siguen progresando a lo largo del tiempo, ayudándonos en el desarrollo web (por supuesto sin importar qué navegador usen los usuarios finales). Para quienes quieran aprovechar las últimas características, es recomendable utilizar la versión disponible en el Chrome Beta Channel.

Algunas de las funciones principales incluyen:

  • Edición en vivo del DOM y las plantillas CSS (ideal para retocar sobre el navegador y experimentar hasta ajustar las páginas)
  • Depuración de JavaScript utilizando un depurador gráfico y pudiendo marcar breakpoints, o incluso editar scripts sobre la marcha, agregando sobre el navegador datos de depuración o ayudas.
  • Analizar el tiempo de ejecución de cada función para optimizar el rendimiento.
  • Seguir el flujo y proceso de pintado de las páginas mientras cargan.
  • Explorar el almacenamiento en bases de datos locales de HTML5.

Es interesante saber que estas herramientas están escritas por completo usando JavaScript y CSS, y cualquiera puede revisar el código fuente e incluso postularse para contribuir al proyecto.

Dejo un video corto (4 minutos y medio) en el que un ingeniero de Google demuestra cómo usar estas herramientas. El video está en inglés, pero la explicación es muy clara y ver las herramientas en acción seguramente les permita descubrir algún recurso que todavía no aprovechaban.

viernes, 25 de febrero de 2011

Brunch: aplicaciones HTML5 desde los hombros de gigantes

Brunch

"Parado sobre los hombros de gigantes" es una frase típica de la cultura anglosajona, famosamente usada por Isaac Newton, que refiere a construir sobre el trabajo de quienes nos han precedido.

Esta idea es la base de Brunch, un framework compuesto de varias partes preexistentes para facilitar la construcción de aplicaciones web modernas.

Incluso si uno no va a usarlo directamente, es bueno recorrer y entrar en contacto con algunos de sus componentes, todos ellos de código abierto, no todos tan conocidos. Veamos cuáles son:

  • CoffeeScript
    Es un lenguaje que compila a Javascript, simplificando mucho la sintaxis, como se puede leer en este post previo.
  • Backbone.js
    Es una librería para aplicaciones JavaScript que brinda estructura para utilizar modelos y vistas con eventos de uso declarativo, un API para colecciones con mucha funcionalidad, y capacidades de conexión utilizando JSON con interfaces REST. Pueden ver un ejemplo en línea con el código completamente documentado a un link de distancia.
  • Underscore.js
    Es otra librería, que Backbone utiliza, y que provee más funciones para manejo de estructuras de datos a mas bajo nivel, incluyendo colecciones, arrays,  extensión sobre funciones (como memorización, diferimiento, composición, etc), objetos, utilidades y cadenas.
  • Eco
    Es un motor de plantillas que permite embeber CoffeScript dentro del markup de una página, como si fuese EJS o ERB.
  • Stylus
    Es un lenguaje de declaración de hojas de estilo en cascada (CSS) con una sintaxis simplificada, como CoffeScript hace con JavaScript. Es básicamente CSS sin llaves ni otros signos de puntuación, mucho más legible.
  • Docco
    Genera documentación de código en formato HTML, soportando Markdown y colorero de sintaxis. Unos cuantos de los proyectos anteriores utilizan Docco en su documentación.
  • jQueryZepto.js
    jQuery no requiere presentación para los lectores de este blog, pero Zepto es un framework minimalista compatible con jQuery y orientado a navegadores de dispositivos móbiles basados en WebKit.

En suma, más allá de Brunch mismo, puede verse un ecosistema creciente de librerías que trabajan en conjunto y con buen nivel de compatibilidad.

 

jueves, 24 de febrero de 2011

Festejando los 20 años de Python con la versión 3.2

Pyton

La mejor imagen de la celebración es el tweet de hace unos días del creador de Python, Guido van Rossum:

Guido Tweet

En nuestra industria 20 años parecen dos o tres generaciones de lenguajes, y Python sigue demostrando su relevancia y popularidad.

Mientras que la versión 2.7 será probablemente la última importante de la línea 2.x, la rama 3.x empieza a tomar más impulso.

Siguiendo la PEP 3003, que declaró una moratoria para los cambios en el lenguaje, no hay cambios sintácticos en esta versión tampoco, y las mejoras se concentran en librerías y portabilidad desde 2.x.

Algunas de las principales novedades son:

  • mejoras en el módulo unittest (varias provenientes del amigo Michael Foord)
  • una nueva librería para programación concurrente
  • un GIL mejorado que reduce la contención (uno de los temas más problemáticos de Python en su historia)
  • manejo extendido de mails
  • mejor soporte para SSL incluyendo contextos y comparación de certificados
  • un módulo para acceder a información de configuración
  • mejoras al depurador pdb

Pueden leer (en inglés) el detalle completo de la versión, o la lista detallada de las novedades.