lunes, 23 de julio de 2012

Buildpacks: Heroku para todos y todas

Buildpacks

Heroku, una de las plataformas como servicio (PaaS) más exitosas e innovadoras, es desde hace tiempo una plataforma políglota, soportando oficialmente Ruby (el lenguaje con que se inició), pero también Node.js, Clojure, Java, Python y Scala.

Pero en realidad eso no es todo. Actualmente soportan una variedad enorme de lenguajes, a través del mecanismo que generaron para soportar cualquiera, llamado Buildpacks. Aunque Heroku desarrolla activamente los buildpacks mencionados más arriba, la comunidad puede (y de hecho lo ha hecho) desarrollar otros para soportar todo tipo de lenguajes o entornos, como puede verse en este listado, que incluye algunos como Common Lisp, Emacs, Erlang, Go, Jekyll, JRuby, Lua, Perl, PhantomJS y otros.

¿Cómo funcionan los buildpacks? La última versión de la plataforma base de Heroku (llamada Cedar) provee un entorno de ejecución virtualizado que básicamente es una abstracción de los servidores, con los servicios de red, el sistema de administración y monitoreo, y claro, GIT. Sobre esto, para soportar cualquier lenguaje, debe haber un buildpack que utiliza GIT hooks para dispararse al recibir actualizaciones sobre un repositorio, como muestra el siguiente diagrama de ejemplo:

Heroku Buildpacks

Así, al hacer git push heroku master, se puede notar que después de recibir la actualización completa del repositorio, se dispara el buildpack correspondiente a la aplicación, según se indicó al ejecutar el comando heroku create, o posteriormente con la variable de entorno BUILDPACK_URL.

Construir buildpacks no es demasiado complejo. Se pueden incluir en ellos binarios u otras dependencias necesarias por sobre la plataforma, y para comenzar basta con crear un fork del ejemplo Hello Buildpack (no podía llamarse de otra manera), leer la documentación del API, y eventualmente participar en el foro junto a otros colegas.

Finalmente, los buildpacks pueden utilizarse fuera de Heroku, como en el caso de otros proveedores que ya los soportan, o utilizando Mason, en cualquier tipo de entorno.

jueves, 19 de julio de 2012

32 Minutos: el podcast sobre desarrollo en Español (+ video)

32 minutos

Cada tanto uno descubre este tipo de recursos maravillosos que genera la dedicación de nuestra comunidad de programadores alrededor del mundo, y se sorprende de no haberse enterado antes, como si nos despertásemos en el tren y nos diéramos cuenta que nos hemos pasado varias estaciones...

Esto me ocurrió al ver un Tweet del colega David Vilchez mencionando una conversación con otros amigos como Matias Woloski y José Romaniello (luego se suma Hernán García), charlando sobre Node.js.

Al buscar la grabación descubro que David tiene este podcast llamado 32 minutos ¡desde hace más de 4 años! Es cierto que no tiene una regularidad muy grande, pero el material es excelente. Recorriendo el sitio descubro que David comenzó el proyecto con Hadi Hariri (otro reconocido colega, frecuente miembro de Alt.NET Hispano y actualmente trabajando para JetBrains). Hoy David es acompañado en sus andanzas por Andrea Magnorsky (aka roundcrisis).

El material es muy bueno, y haciendo gala de orgullo nerd, catalogado por temporadas, como si fuese una serie de TV (con nomenclatura BitTorrent).

Les dejo aquí la lista compilada de las tres primeras temporadas (quedando a la espera de muchas más), y para quienes usen algún administrador y reproductor de podcasts (yo uso Listen en Android) dejo también el feed RSS para suscribirse. Otra manera de mantenerse al tanto de nuevos episodios es siguiéndolos en Twitter. Aunque la lista tiene los directos a los mp3, les recomiendo volver al sitio del podcast donde encontrarán links a muchos de los recursos mencionados en el programa.

1era temporada

01x01 Sharepoint con Gustavo Vélez

02x01 Scrum con Xavi Albaladejo y José Manuel Beas

03x01 Azure con David Salgado

04x01 Buenas prácticas con Hadi Hariri y David Vílchez (y nadie más ;))

05x01 Revisión a los grupos de usuarios y entrevista desde la CodeCamp 2009

06x01 Nhibernate con Fabio Maulo

2da temporada

01x02 BDD con Jorge Gamba

02x02 Software Craftsmanship con Andrea Magnorsky (aka roundcrisis)

03x02 Mock, Stub, Spy y otras hierbas con Carlos Ble

04x02 [Screencast] CQRS con Andrea Magnorsky (aka roundcrisis)

3ra temporada

01x03 NOSQL con José F. Romaniello

02x03 node.js con José F. Romaniello, Matias Woloski y Hernan Garcia

Como verán, el último episodio de la 2da temporada es un Screencast el lugar de sólo audio, así que aprovecho para incluirlo aquí debajo (~50 minutos).

Muchísimas gracias a David y compañía por estos programas.

miércoles, 18 de julio de 2012

Hoy: Segundo día de AspConf en vivo

aspConf

Perdí ayer la oportunidad de avisar el primer día de la conferencia virtual sobre ASP.NET llamada AspConf.

Pero para los interesados, hoy pueden sumarse al segundo día, a partir de las 11 de la mañana (hora Argentina - 7 am horario del Pacífico).

Aunque todavía no vi disponibles los vídeos del primer día, estimo que todos quedarán en línea brevemente.

Este evento virtual es bastante grande, con 6 tracks en paralelo, y 5 slots de una hora y media cada uno, más charlas principales (keynotes) de una hora; la keynote de ayer estuvo a cargo de Scott Guthrie, la de hoy estará a cargo de Scott Hanselman.

 

Monkey Square: desarrollando el ecosistema Open Source en .NET

MonkeySquare.org

Un grupo conformado por algunos de los sospechosos de siempre en el ambiente .NET han formado esta organización sin fines de lucro para evangelizar y apoyar activamente el desarrollo de proyectos y plataforma de código abierto alrededor de .NET.

Hay algunos ex-Microsoft como Phil Haack (actualmente en GitHub), Joseph Hill, cofundador de Xamarin con Miguel de Icaza, Dale Ragan, cofundador de Moncaí (una Plataforma como Servicio basada en Mono), e incluso un empleado activo (hiper-activo, en realidad) de Microsoft como Scott Hanselman.

Entre otras cosas, esta organización es actualmente la responsable de la conferencia MonoSpace 2012, que se realizará del 17al 19 de octubre en el Microsoft NERD Center (no, el nombre no es chiste) de Cambridge, Massachusetts. Los interesados en la conferencia puede acceder a todas las presentaciones de la edición del año pasado en InfoQ.

No hay muchas más noticias por ahora, pero parece un movimiento interesante. 

martes, 17 de julio de 2012

El navegador que nos ayuda

Chrome

Hace poco mi colega Diego Marcet escribió un tweet que me hizo redescubrir, en toda su gloria, más características de Chrome que son geniales para los desarrolladores.

Tenía presentes algunas utilidades de Chrome como: chrome://net-internals/ (obviamente estos links sólo funcionan en Chrome), o chrome://dns/, pero Dieguito mencionaba que hay una URL genérica que muestra todos, y no conocía:

chrome://about/

Que muestra la siguiente lista:

List of Chrome URLs

For Debug

The following pages are for debugging purposes only. Because they crash or hang the renderer, they're not linked directly; you can type them into the address bar if you need them.

  • chrome://crash
  • chrome://kill
  • chrome://hang
  • chrome://shorthang
  • chrome://gpuclean
  • chrome://gpucrash
  • chrome://gpuhang

Todas estas herramientas son excelentes a la hora de diagnosticar y hacer pruebas en aplicaciones o servicios web, dándonos montones de detalles sobre el contenido de los mensajes HTTP, sino también sobre las interacciones, tiempos, efectos de cache, dns, pre-fetching, y muchísimas otras variables que afectan notablemente el tiempo de respuesta y hasta el funcionamiento de nuestros desarrollos.