miércoles, 5 de septiembre de 2012

PragPub de septiembre: revista gratuita y en varios formatos

PragPub

Comenté sobre PragPub hace un par de años, pero para quienes no estaban por ahí todavía, vuelvo a recomendarla.

Se trata de una revista publicada mensualmente por The Pragmatic Programmers, la editorial de Andy Hunt y Dave Thomas, autores, entre otros, de éste clásico libro que todo programador debería haber leído.

La revista en si tiene unas 60 páginas (en su edición PDF) y cubre temas generales (en inglés) de programación y sobre el perfil profesional de los desarrolladores de software. Se edita mensualmente y en formato HTML (para leer en el navegador), PDF, epub y mobi (estos últimos para lectores electrónicos como Sony Reader y Kindle, respectivamente).

 Los temas de este mes son:

  • Thinking Functionally with Haskell, por Paul Callaghan. Una exploración al sistema de tipos de Haskel y sus consecuencias en la validación de aplicaciones.
  • Tales from the Ops Side, por Michael Nygard. Aquí el author del libro "Release it!" cuenta algunas escenas comunes en un escenario de operaciones.
  • US Visa: My First iPhone App, por Alexander Demin. Cuenta la experiencia de construir la primer aplicación para iOS, incluyendo código.
  • Threads, por Michael Swaine. Es una nota donde el editor de la revista cuenta la historia de Chris Espinosa, miembro del equipo de desarrollo de Apple desde la primer etapa de la compañía.
Y como siempre incluye las seccione Up Front (la editorial), Choice Bits (el ranking de los libros más vendidos de la editorial), Calendar (conferencia, charlas interesantes en varias partes del mundo, y otros eventos) y Shady Illuminations (la columna de opinión de John Shade).
 
En el caso de la revista, que es gratuita, tal vez no llaman tanto la atención la variedad de formatos y el hecho de que los archivos estén libres de toda protección, pero es interesante que lo mismo sucede con los libros de la editorial, que publica muchos títulos de nicho como Deploying Rails, Programming Your Home, The Cucumber Book y otros que los programadores difícilmente consigamos en otro lado, con el agregado de que en general el nivel es muy bueno, tanto o más que en las principales editoriales técnicas.

miércoles, 29 de agosto de 2012

Libros gratuitos sobre Python

Libros de Python

A principios de este mes comenté sobre un sitio en GitHub con libros gratuitos de JavaScript, que en el ínterin creció de 11 a 25 títulos (cubriendo también más HTML5).

La misma gente de Revolunet (una compañía francesa de diseño web) amplió ahora la idea a una lista similar con libros gratuitos de Python.

Hay libros de nivel inicial, intermedio y avanzado, incluyendo varios iniciales para aprender a programar en general, basados en Python, que siempre me pareció una excelente opción de primer lenguaje, sobre todo para niños y adolescentes, porque es simple y directo en el arranque pero no tiene techo.

Los libros intermedios son en general para programadores Python que quieren entrar en detalles del lenguaje o frameworks, y los títulos avanzados son interesantes porque entran en temas complejos, basándose en Python para resolverlos, como Computer Vision, procesamiento de lenguaje natural, sistemas complejos, o probabilidad y estadística.

Casi todos los libros están en inglés, excepto (por ahora) un par en francés. 

También, varios de los libros son proyectos colaborativos y abiertos, algunos incluso publicados y actualizados como blogs, a lo largo de mucho tiempo (como en el caso de Python Module of the Week) con lo que quizá encuentren traducciones disponibles que a mi se me escaparon, o pueden colaborar en ese espacio.

Entre los libros hay dos que me gustan mucho, volviendo al tema de enseñar a chicos:

Snake Wrangling for Kids, justamente orientado a enseñar a programar a chicos, y que usa bastante los gráficos de tortuga provenientes del Logo, otro gran lenguaje. El libro es una guía de la que uno puede salirse, pero hay muchas ideas buenas. El libro está disponible para Python 3 o 2.7, y para Linux, OS X y Windows, con lo que incluso se puede reunir un grupo de jóvenes multi-plataforma (como mis dos hijas y yo).

Making Games with Python and PyGame es una buena continuación porque requiere un mínimo de conocimiento de programación y Python, pero rápidamente se mete en algo que los chicos amamos: programar juegos.

Espero que aprovechen todo este material, aprendan mucho, y sobre todo, enseñen nuestro arte a la próxima generación.

miércoles, 15 de agosto de 2012

Libros gratuitos sobre Arquitectura de Aplicaciones Open Source

Arcquitectura Open Source

La arquitectura de software es un terreno interesantísimo que más allá de que uno pretenda o no ser Arquitecto como perfil profesional, es importante para todo desarrollador, porque tiene que ver con la estructura de lo que construimos y con cómo tomamos las decisiones respecto a ella. Como en el caso del diseño de un producto, no es algo que se pueda evitar, cuando uno no dedica tiempo a la arquitectura, el producto final tendrá muy probablemente una estructura deficiente o endeble, pero no dejará de tenerla.

De todas maneras, este es un terreno que siempre pareció de cierta sofisticación, y que por lo tanto no ha generado mucho material libre y gratuito, salvo últimamente, de la mano de sitios web como InfoQ ó High Scalability, que publican informes detallados o algunos libros breves.

En este caso se trata de un esfuerzo conjunto, coordinado por Amy Brown y Greg Wilson como editores, y una larga lista de colaboradores, que compila, en dos volúmenes, reseñas de la arquitectura de aplicaciones de código abierto, explicadas por expertos en el tema, a veces coautores o parte del equipo del proyecto. En algunos casos se cubren familias o ecosistemas de aplicaciones, en lugar de productos individuales.

Todo el material está disponible de manera gratuita en el sitio web, bajo licencia Creative Commons Attribution 3.0 Unported, pero para quienes prefieran leerlo en Kindle u otro dispositivo electrónico, está disponible una versión paga cuyos derechos se donan íntegramente a Anmesty International.

Los dos tomos están en inglés, y cubren unas 25 aplicaciones populares cada uno.

Algunos ejemplos del Volumen I son: Asterisk (la plataforma de telefonía), Audacity (el editor de audio), Eclipse, el file system distribuido de Hadoop, mecanismos de integración continua, el ecosistema LLVM, Mercurial, Python Packaging, Selenium WebDriver y otros.

Algunos ejemplos del Volumen II son: Arquitectura Web Escalable y Sistemas Distribuidos, Ingeniería de Actualizaciones de Firefox, el compilador Glasgow Haskell, Git, el Dynamic Language Runtime y la familia de lenguajes Iron (IronPython, IronRuby, etc), MediaWiki, Moodle, nginx, PyPy, Twisted, ZeroMQ y otros.

La cantidad de material es impresionante y los temas están muy bien cubiertos, a gran nivel de detalle técnico.

martes, 14 de agosto de 2012

¿Podrá Ward hacerlo de nuevo? Conozcan el Smallest Federated Wiki (+videos)

Ward Cunningham

Ward Cunningham es una especie de leyenda viviente. Es uno de los pioneros de los patrones de diseño, miembro prominente de la comunidad Smalltalk, colaborador de Kent Beck en la definición de Extreme Programming (XP), firmante del Manifiesto Ágil, co-inventor de las tarjetas CRC (clase-responsabilidad-colaboración) e inventor de FIT y fundamentalmente, la wiki.

Así es, Ward inventó muchas cosas que están dentro del ámbito de nuestra profesión, el desarrollo de software, pero la wiki, que fue pensada inicialmente para construir documentación de manera colaborativa entre desarrolladores, llegó mucho más allá, y es uno de los hitos que ha transformado nuestra cultura, a partir del impacto de Wikipedia, siendo en gran parte responsable de todo el movimiento crowdsourcing.

Pero Ward no se queda quieto y sigue permanentemente experimentando y buscando formas mejores de hacer las cosas. Su último proyecto vuelve sobre los pasos de la wiki, causalmente, y se llama Smallest Federated Wiki (la más pequeña wiki federada).

Como verán, en su página personal de GitHub hay una larga serie de videos explicando el concepto, que pone foco en hacer que la wiki sea aún más sencilla de editar, aprovechando capacidades de los navegadores modernos y HTML5 como drag & drop, uso de JSON como soporte, etc, para permitir una edición más fluida, pero también la "federación" de contenido. Esto significa que se puede tomar contenido de una wiki y ponerlo en otra, pero no es solamente una forma de réplica, sino más bien algo similar a los "forks" de GitHub, donde cada copia es libre de crecer de manera independiente, sin afectar a su fuente original, pero pudiendo contribuir cambios seleccionados, si la fuente los acepta.

La mejora manera de entender el modelo, que tiene un lado servidor que se encarga del almacenamiento de las páginas y la colaboración entre servidores similares, y un lado cliente, que permite editar y modificar el estado, y federar el contenido de manera visual.

La documentación para usuarios finales de cómo utilizar el lado cliente está disponible -por supuesto- como un wiki federado.

Por supuesto todo el código es abierto y está en GitHub. La implementación de referencia del servidor (hay algunas otras en marcha) está escrita en Ruby utilizando Sinatra, mientras que la parte cliente está escrita en CoffeeScript.

A continuación, el primero de los vídeos para despertar su curiosidad (en inglés; ~2 minutos). Recomiendo ver el resto de la serie, que sigue aumentando con el tiempo.

viernes, 10 de agosto de 2012

Próxima reunión de Ágiles@Buenos Aires

Carlos Peix

El grupo Ágiles Argentina anunció la próxima reunión mensual de Buenos Aires para el próximo miércoles 15 de agosto (la semana próxima) de 18:30 a 20:30.

Como siempre, la registración a este evento gratuito es a través de Meetup, y el evento es esta vez en el auditorio del MUGRivadavia 1479 1er Piso.

El tema de esta sesión se llama "¿Cómo escribirías tu código si debe funcionar al primer intento?", y estará facilitado por mi amigo y colega de Kleer, Carlos Peix.

Carlos describe su propuesta así:

Ya pocos discuten las ventajas de diseñar nuestro código basándonos en ejemplos (pruebas). TDD ha llegado a nuestra profesión para quedarse. También muchos de ustedes conocerán los coding dojos, ya sea por comentarios, ya sea por referencias.

En esta ocasión me gustaría invitarlos a un coding dojo en el cual intentaremos movernos fuera de la zona de confort para un desarrollador que utiliza TDD: diseñar y escribir nuestro código sin ejecutar un solo test. Para hacerlo más interesante, agregaremos otra condición: el código debe ejecutar correctamente en el primer intento.

No hay trampas, lo lograremos, aunque parezca difícil. Una vez que conozcamos el otro extremo de TDD, nuestro panorama cambiará, o al menos, el mio cambió.

Esta idea tomo forma mientras leia este post, lo que haremos es muy similar pero con la kata Wincofon, inventada con el gran @MartinSalias hace unos cuantos años. 

Como verán, soy un poco pig en esta sesión, aunque no podré asistir por otros compromisos. 

Si quieren ver a Carlos en acción, pueden ver este video con el que inauguramos la serie de programación de a pares en este blog, que espero retomar en breve.

miércoles, 8 de agosto de 2012

FertnetJS: comunidad de JavaScript en español

FernetJS

Me encontré recientemente con este sitio que imagino creado por argentinos aficionados a JavaScript y al fernet (bebida patria, sobre todo en Córdoba).

Se trata de un blo de artículos técnicos sobre JS, Node y temas similares, con muy buena información generada por los autores, más alguna que otra redifusión de vídeos o noticias. Todo el contenido es en español y admiten contribuciones, aunque mantienen la moderación.

Algunos de los colaboradores más activos son @MatiasArriola, @pnovas@dzajdband, y @Peesstt

En el sitio hay una foto donde se ve al grupo fundador:

Equipo de fernetJS

Algunos de los últimos post,para que se den una idea de temas, son:

  • Tuneando las Dev Tools de Google Chrome
  • Usando distintas versiones de jode
  • NodeJS en la nube con Nodejitsu y Nodester
  • Pateando Google Analytics desde NodeJS
  • Fernet Volador: detrás de escena
  •  Es un Array o no?
  • Del ofuscador al konami code

Buen recurso para los fanáticos de JS. ¡Gracias al equipo!

martes, 7 de agosto de 2012

Video: creando una aplicación desde cero con TDD

Alt.NET Hispano

TDD es una técnica de diseño sobre la que se habla bastante (pueden ver varios post sobre el tema aquí mismo) y que realmente hace una diferencia en la calidad del código que generamos, y nos permite encarar cambios más profundos, incluso a nivel de la arquitectura ce la aplicación, con mucha más confianza.

A pesar de que hay muchos tutoriales sobre el tema, no es tan frecuente conseguir recursos que vayan más allá de ejemplos sencillos, generalmente con poca funcionalidad, mínimas dependencias, etc.

En esta VAN (reunión virtual) de ALT.Net Hispano, el Maestro Angel "Java" López deja de lado por un rato la física cuántica y dedica poco más de dos horas a crear una aplicación desde cero con TDD, basándose en ASP.NET MVC 3. Pero más allá de Visual Studio o C#, la manera en que el Maestro avanza en el desarrollo de la aplicación puede servir para entender el proceso a cualquier programador, en cualquier lenguaje: pasos mínimos, refactorización, foco en el modelo, etc.

La sesión es larga, pero sumamente recomendable. Incluso para quienes ya practican TDD, permite apreciar un estilo definido de construcción que seguramente tenga influencia en el nuestro, aunque no lo adoptemos completamente, o nos haga replantear parte de la manera en que avanzamos con algunos pasos. Personalmente creo que para todo desarrollado (y mejor aún si se lo ve en equipo) estas son horas extremadamente valiosas para invertir, que ahorran semanas a futuro.

Recuerden también que hay casi 90 sesiones de este estilo en el portal de ALT.NET Hispano (cientos de horas de entrenamiento gratuito).

A continuación el video, en español, de 144 minutos de duración:

Unable to display content. Adobe Flash is required.

lunes, 6 de agosto de 2012

Libros: aprendiendo JavaScript con recursos gratuitos (+video)

Libros de JavaScript

JavaScript es el lenguaje ubicuo que todos tuvimos que aprender en algún momento, y que en los últimos años mejoró en cuanto a implementaciones, frameworks y técnicas generales de programación, a la vez que se posición fuertemente también del lado del servidor, evolucionando de un lenguaje que la mayoría evitaba a algo que la comunidad aprecia cada vez más.

Sin embargo para muchos todavía queda muchísimo por aprender, y a pesar de que hay una cantidad importante de recursos, suelen estar desparramados por la web. Reconociendo este tema, la gente de Revolunet (una compañía francesa de diseño web) decidió compilar esta lista creciente de libros (algunos PDF, otros en línea) sobre JS, Node, CoffeeScript y otras variantes que están disponibles gratuitamente. Por ahora los títulos están en inglés, pero la lista, que está alojada en GitHub, seguramente siga creciendo y aparezcan traducciones o títulos en otros idiomas.

Actualmente hay disponibles 11 títulos:

Libros Gratuitos de JavaScript 

De postre les dejo un video (en inglés; 25 minutos aprox) de Addy Osmani (una autoridad en JS, autor de dos de los recursos mencionados) hablando sobre cómo estructurar aplicaciones JS pequeñas, medianas y grandes (algo que es una consulta usual para los que se adentran en este terreno).

viernes, 3 de agosto de 2012

Smalltalks 2012 será en Puerto Madryn (+video 2011)

SmallTalks 2012

La conferencia internacional de Smalltalk que se realiza tradicionalmente en Argentina todos los años, organizada por FAST, será realizada este año en la ciudad austral de Puerto Madryn, en la provincia de Chubut.

Todos los que quieran practicar Smalltalk o galés pueden agendarse del 7 al 9 de noviembre de este año para ir a la Universidad Nacional de la Patagonia San Juan Bosco a disfrutar de este evento fabuloso, cerca de las ballenas. La registración ya está abierta.

Como siempre sucede, habrá invitados internacionales, pero aún no están anunciados, ya que la llamada a ponencias aún está abierta, como siempre, en dos modalidades:

Dejo como recuerdo un video corto de una de las sesiones del año pasado, en la Universidad de Quilmes, con Hernán Wilkinson y Fidel, de la UNQ, dramatizando una discusión entre OOP y Programación Funcional. El audio no es muy claro, pero quería compartir un poco el clima distendido del evento (no todas las sesiones son así, claro, pero es bueno poder divertirse).

martes, 31 de julio de 2012

Codecademy: aprendiendo a programar en sociedad

Medallas en Codecademy

Acabo de descubrir este interesante sitio llamado Codecademy que unifica varias tendencias recientes:

  • Intérpretes en línea (a la TryRuby o TryPython)
  • Web social (todo se enlaza con Facebook, Twitter o Google)
  • Ludificación de las actividades (a medida que se avanza en el proceso de aprendizaje se reciben "medallas" que pueden compartirse en las redes sociales)

Piensen en este sitio para aprender a programar diferentes lenguajes y plataformas, como JavaScript, Python, Web fundamentals, jQuery u otras técnicas más breves y puntuales (como utilizar paneles o menúes colapsables, efectos y plugins de jQuery, etc).

Otro tema interesante del sitio, que es totalmente gratuito, financiado por una serie de empresas de medios ligadas a la industria de software, es que además de ser una plataforma abierta para aprender, también lo es para enseñar, ya que ofrece la posibilidad de crear nuevos cursos para compartir conocimientos. Por ahora los cursos deben ser basados en JavaScript, Python, Ruby o Web (HTML/CSS), pero imagino que la oferta se irá incrementando con el tiempo.

Espero que la iniciativa crezca, ya que es un buen recurso para aprender a programar o para acercarse a nuevos lenguajes y técnicas, haciéndolo de manera divertida y con feedback permanente, que es lo que muchas veces hace difícil el hecho de mantener la disciplina en cuestiones de auto-capacitación.

Seguimiento del entrenamiento

Lo más sencillo para experimentar el sitio es entrar directamente a él y comenzar. Me gusta el diseño y la usabilidad, ya que se puede comenzar sin siquiera registrarse. Identificarse es necesario solamente para mantener un seguimiento del avance, y para ello se destaca preferentemente el usar autenticación a través de un proveedor externo (oAuth) como Facebook, Twitter o Google, lo que facilita el compartir los avances en las redes sociales, aunque no es un tema compulsivo y uno puede ser totalmente silencioso.

Para quienes quieran conocer más detalles, el equipo mantiene un blog y por supuesto, pueden seguirlos en Twitter.

lunes, 30 de julio de 2012

Agiles 2012: 24 al 26 de octubre en Córdoba, Argentina (+ fotos)

NewImage

Como todos los años desde la primer edición en 2008, se acerca la conferencia latinoamericana de metodologías ágiles.

Este año la cita es en la ciudad de Córdoba, más específicamente en la Universidad Tecnológica Nacional, del miércoles 24 al viernes 26 de octubre.

En esta 5ta edición, que se realiza por segundo año consecutivo en Argentina (las anteriores fueron 2008 en Buenos Aires; 2009 en Florianópolis, Brasil; 2010 en Lima, Perú; y 2011 nuevamente en Buenos Aires), se mantendrá la agenda mixta de sesiones, talleres y open space, y también vendrán visitantes de diferentes partes del mundo.

Para mi personalmente este año será especial ya que tendré el honor de dar una de las keynotes, compartiendo esa responsabilidad con David Hussman de DevJam.

El llamado a ponencias de la conferencia cerró hace poco, y estimo que en pocos días estará disponible la primer versión del programa, que como siempre va apareciendo como un proceso "iterativo e incremental".

Como no encontré vídeos de la conferencia del año pasado (seguiré buscando), les dejo un video-collage con imágenes de la edición de 2010 en Lima, para que se den idea del ambiente que se vive en estos encuentros.

miércoles, 25 de julio de 2012

Firefox OS: ¿hace falta otra plataforma para móviles? ¡Tal vez si!

Firfox OS

En julio del año pasado la fundación Mozilla anunció el arranque de un nuevo proyecto llamado "Boot to Gecko" (B2G), en referencia a la idea de un sistema operativo orientado a móviles que iniciara directamente Gecko, el motor visual detrás de Firefox.

Semejante idea, en un mundo de dispositivos dominado por iOS y Android, en el que aún a Microsoft le está costando entrar, parece disparatada, pero Mozilla no tiene como objetivo necesario ganar mercado, sino impulsar mayor adopción de estándares web en el terreno de mayor crecimiento actualmente, que son celulares y tablets.

La característica fundamental del nuevo sistema operativo, actualmente conocido como Firefox OS (aunque encontrarán más referencias aún a B2G) es que está basado en un kernel de Linux, una capa de abstracción para el hardware (llamada "Gonk") y por encima el motor del navegador Gecko, soportando HTML, CSS y JavaScript que es sobre lo que corren todas las aplicaciones. Y esto significa todas, como la aplicación principal del teléfono, la lista de contactos, portada, etc.

El entorno de ejecución sobre el que corren las aplicaciones se llama Gaia, y para los que quieran probarlo, pueden obtenerse los builds nocturnos de Gaia clonando la cuenta de GitHub (git://github.com/mozilla-b2g/gaia; los builds corren en Mac OS, Linux y Windows). Hay un guía completa sobre el tema, llamada Gaia Hacking, en la Wiki de Mozilla.

Básicamente Gaia ofrece a los desarrolladores la posibilidad de producir aplicaciones web con el stock estándar de HTML5, más un API JavaScript que les da acceso a características especiales del dispositivo.

El otro factor importante es qué nivel de adopción se pueda esperar de esta plataforma, y en ese sentido es alentador ver que el sistema (inicialmente apuntando a hardware muy económico basado en Snapdragon) está siendo adoptado para próximas ofertas de varias operadoras europeas como Deutsche Telekom, Etisalat, Smart, Sprint, Telecom Italia, Telefónica y Telenor. De hecho, en una conferencia de febrero de este año en España, Telefónica y Mozilla mostraron una versión preliminar del sistema corriendo en dispositivos Galaxy II de Samsung, que vienen nativamente con Android. Otras organizaciones soportando directamente el proyecto son Adobe y Qualcomm (más información en esta gacetilla de prensa).

Como es recurrente en todo proyecto de Mozilla, absolutamente toda la plataforma es abierta, permitiendo a los operadores o fabricantes implementar una capa mínima que provee acceso a sus recursos propietarios. Más allá de eso, todo el diseño del sistema está alineado a respetar los mismos estándares web que se impulsan en los navegadores de escritorio, unificándolos aún más, y con un claro objetivo de que otros jugadores de la industria como Apple, Google o Microsoft sigan adoptando ese camino.

martes, 24 de julio de 2012

Videos: 17 sesiones de ASP.NET al precio de una

aspConf

La semana pasada avisé (el segundo día) sobre el evento en línea aspConf, que se extendió por dos días y varios tracks simultáneos.

Como era de esperar, las sesiones ya están disponibles. Hay 17; no se si son todas.

Uno de los principales problemas de este evento, en su edición en línea, fue seguir utilizando Live Meeting, que a mi juicio es una plataforma obsoleta y con muchos problemas, que va en contra de la apertura que Microsoft muestra en otros aspectos. Para empezar, no funciona bien en Mac o en cualquier cosa que no sea Windows, y tuve varios problemas para ver alguna sesión incluso en Windows 8.

A esta altura, uno espera de un evento en línea el llegar a una página y verlo, sin mucho más requerimientos ni tener que bajar ninguna plataforma cliente. Irónicamente, se dieron cuenta de algunas de las limitaciones de Live Meeting porque en paralelo con ese mecanismo, había un chat abierto a través de la web para la interacción con el público.

Pero dejemos de lado las críticas y vamos al contenido, que es lo que cuenta. Las sesiones ya está disponibles para ver directamente en el navegador (o descargarlas, incluso disponibles en múltiples formatos) en la página del evento en Channel 9.

Dejo de regalo las dos keynotes, a cargo de los Scotts: Guthrie y Hanselman.

Windows Azure

One ASP.NET

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.

lunes, 16 de julio de 2012

Agile Open Buenos Aires - Educando y Aprendiendo

NewImage

Ágiles Argentina organiza este evento de difusión e intercambio de experiencias sobre el proceso de Educación y Aprendizaje.

Es parte del continuo Agile Open Tour que la comunidad local organiza desde hace hace años, recorriendo el país.

Como todos los Agile Open, este evento tiene formato Open Space, y en esta ocasión se unirán algunas técnicas nuevas como Training from the Back of the Room, actividades disparadoras y facilitadoras del aprendizaje, experiencias en la planificación de contenido auto-organizada, educación a distancia, y lo que proponga el público.

Como en todo los casos, el evento es gratuito pero requiere inscripción previa, y se realizará el sábado 4 de agosto, de 9 a 18 horas en la UNTREF, Sede Centro Cultural Borges, Viamonte esq. San Martín piso 3. Hay más información y una agenda preliminar de espacios.

Tomado directamente de la página de difusión del evento:

Los eventos Agile Open se originan en Bélgica en el 2005 pero se realizan en todo el mundo. El primero en Latinoamérica se realizó en Buenos Aires en marzo del 2009. En el país ya se han realizado cerca de 25 eventos en 8 ciudades (Buenos Aires, Córdoba, Tandil, La Plata, Bahía Blanca, Mar del Plata, Rosario y Paraná) con temas tales com Educación, Organizaciones Flexibles, Seguridad, Software Libre, Calidad y Arquitectura. Los eventos Agile Open se organizan y realizan usando Open Space Technology.

Open Space Technology

Esta forma de organización de eventos permite con relativamente poca preparación previa realizar eventos de alta calidad en forma auto-organizada. Funciona para reuniones desde 5 personas hasta reuniones de varios miles de personas.
Es particularmente apto para encuentros en los que se discuten temas que son relevantes, complejos y que los asistentes tienen interés y pasión por tratar.
El interés y la pasión se logra por un proceso de autoselección en la registración: ya que una vez definido el Tema de la conferencia, los asistentes a los que les interesa el tema se anotarán, y al ser en un día no laboral, no dependen tanto del interés de las empresas en las que trabajan como en su deseo personal de participar. A su vez, los temas a tratar en cada sesión son propuestos y votados por los asistentes.

La dinámica durante el evento es:

Se explica el formato y sus pocas reglas
Los asistentes proponen sesiones (presentaciones, paneles, workshops, ...)
Votación de sesiones (todos los asistentes votan)
Armado de agenda (se asignan las sesiones votadas a los horarios y aulas)
Se realizan las sesiones.
Cierre

Auspician el Tour: Kleer (quienes sortean 16 lugares para curso de un día: "Introducción a Scrum" o "Estimación y Planificación con Scrum") e Inicia.

viernes, 13 de julio de 2012

Aprendiendo y enseñando: Principios SOLID (+video)

NewImageLos amigos de Kleer siguen impulsando actividades gratuitas de todo tipo, como sus ya tradicionales Yoseki Coding Dojo, a los que ahora se suman estas sesiones que llaman "Aprendiendo y enseñando", en las que el "pago" simbólico de los asistentes es enseñar a otros lo aprendido en el grupo.

La idea es que cada uno multiplique el conocimiento adquirido en su empresa, grupo de usuarios, blog, vídeos, etc, siguiendo técnicas surgidas del libro "Training from the back of the room", según Fernando Claverino comentaba en este post.

De la primer sesión que efectuaron el mes pasado (espero poder avisar a tiempo de la próxima), sobre principios SOLID algunos de los participantes se conjuraron para publicar ejemplos en sus blogs.

Al menos han cumplido hasta ahora Nelo Pauselli y Fernando (uno de los organizadores de la sesión junto al amigo Carlos Peix). La sesión inicial estuvo basada en ejemplos publicados en http://solidexamples.codeplex.com/, y posteriormente Nelo y Fernando publicaron sus ejercicios de cómo resolver un ejemplo que viola el Principio de Responsabilidad Unica (Single Responsibility Principle).

Para quienes quieran más detalles sobre SOLID, pueden ven una Virtual Alt.NET Meeting de Carlos Peix sobre el tema, o leer sobre estos directamente de la fuente, Uncle Bob Martin.

 

Finalmente, pueden ver los pasos que aplicó Fer en su blog, y les dejo debajo el video con Nelo refactorizando el ejemplo en vivo, pero pueden leer más detalles en su post.

 

Unable to display content. Adobe Flash is required.

Video: BrowserID - otro mecanismo de Identidad en la web

NewImage

Mozilla Persona es la implementación en en FireFox de BrowserID, un nuevo Identity Provider impulsado por Mozilla Identity misma junto a otros interesados.

Como en otros casos, este es otro mecanismo de Single-Sign-On para la web, y aunque todos lo plantean como el mecanismo único para identificarse, en la práctica sigue habiendo mucha fragmentación porque no todos los sitios (o navegadores) soportan todos los protocolos, que sin embargo, son generalmente interoperables (en esta interoperabilidad, casualmente, se basan las herramientas que genera en este espacio la nueva empresa de mi amigo Mati Woloski, Auth10; a quien menciono por ser de las personas que más saben de este tema sobre la Tierra).

 Lo cierto es que Mozilla agrega a este nuevo protocolo, basado en certificar la identidad utilizando una cuenta cualquiera de email, el soporte dentro del navegador, para poder brindar una experiencia de usuario mejorada. Como siempre, los desafíos son que otros navegadores adopten el modelo (cosa en la que no tengo enormes esperanzas), y que muchos sitios comiencen a soportar el mecanismo (o más probablemente, que productos como Auth10 o Janrain Engage) agreguen soporte para este nuevo proveedor.

Para los interesados en el tema, hay documentación para desarrolladores y un completo post de Lloyd Hilaiel, del equipo de BrowserID, explicando todo el mecanismo.

NewImage 

Y finalmente les dejo un video corto demostrando como funciona:

viernes, 6 de julio de 2012

Try GitHub - Aprender GIT en 10 minutos

NewImage

En estos días me crucé con este notable recurso para aprender GIT y GitHub, creado por la gente de Code School (tal vez los recuerden de éxitos anteriores como Rails for Zombies).

Se trata de un simulador en línea de una consola y una ventana estilo Finder de Mac OS donde se puede ver el contenido de un directorio, y 25 pasos muy breves en los que se crea un repositorio, se hacen diferentes commits, se ven diferencias, se abren y mezclan branches, etc.

No agrego mucha más información en este post porque lo más práctico es ir al sitio y probarlo. Para cualquiera que ya utilice GIT frecuentemente no hay novedades, pero es una buena herramienta para familiarizar a nuevos miembros de un equipo o para evangelizar a algún amigo que todavía sufre usando Source Safe o Clear Case.

jueves, 5 de julio de 2012

Video: Desarrollando en Node.js desde Mac OS y desplegando en Azure Web Sites

Desde hace años vengo trabajando con Windows Azure, la plataforma de cloud computing de Microsoft. Hasta ahora, más allá de haber logrado algunos proyectos interesantes, la plataforma no me entusiasmaba demasiado por varios motivos:

  • Estaba muy orientada a un modelo de desarrollo específico (Platform as a Service)
  • Estaba muy orientada a .NET (había maneras de utilizar otras plataformas, pero siempre complejas)
  • El mecanismo de despliegue y actualización era muy poco eficiente

En las últimas semanas finalmente se liberaron nuevas características que me parecen mucho más interesantes. Dos en particular (que están aún en preview, pero utilizables dentro de la prueba gratuita por tres meses) son:

Azure Virtual Machines

Este servicio finalmente abre los data centers de Azure por completo. Desde el panel de control se pueden generar imágenes pre-configuradas de varias distribuciones de Linux, además de Windows, obviamente. Vean las opciones disponibles hoy:

Imagenes disponibles 

Azure Web sites

Es un servicio de hosting de aplicaciones web genérico, soportando múltiples lenguajes y con más flexibilidad que un host tradicional. Además de cubrir (por ahora) ASP.NET, ASP, Node.js, Java, PHP, Python y C++, el mecanismo de despliegue es todo un avance con respecto al anterior: se puede subir directamente desde el portal, por FTP, GIT o TFS. En cuanto la aplicación llega a Azure, prácticamente en forma inmediata queda disponible en línea.

Además de los diferentes lenguajes, otro cambio impresionante viniendo de Microsoft es que los SDK y las herramientas de consola son todas abiertas (admitiendo contribuciones; todas en GitHub) están disponibles para Windows, Mac OS y Linux, con lo que nuestra plataforma de desarrollo puede ser cualquiera.

Algunas cosas en mi lista de deseos hacia adelante:

  • Mejorar la usabilidad del portal exigiendo menos Login (ahora insiste varias veces ante distintas operaciones)
  • Soporte para autenticación por certificados en GIT (ahora hay que usar la password en cada push)
  • Soporte para Ruby (creo que el problema principal por ahora son las gemas que requieren compilación nativa)

Como ejemplo de todo esto, les dejo este cortísimo video (~6 minutos, en inglés) en el que Glenn Block, alguien a quien respecto mucho y que siempre impulsó las plataformas y paradigmas abiertos dentro de Microsoft (¡presten atención a su camiseta!), muestra como desplegar una aplicación Node.js (usando Express) desde Mac OS. Microsoft aún no puede sustraerse a sus carteles publicitarios al inicio y fin del video, pero el resto es recomendable.

martes, 3 de julio de 2012

Video: BDD, por Jorge Gamba, desde el Campus Party Colombia

NewImage

Campus Party es un enorme evento de tecnología que se realiza en diversas partes del mundo, cubriendo muchas facetas de la vida digital, incluyendo desarrollo de software.

La semana pasada se realizó la quinta edición de este evento en Colombia, en la ciudad de Bogotá, y nuestro amigo Jorge Gamba, incansable organizador de las actividades de Alt.NET Hispano, estuvo allí haciendo una presentación excelente sobre Behavior Driven Development, uno de sus temas predilectos.

Dejo para ustedes el video debajo (~56 minutos, en español) para que lo disfruten, y pueden leer muchos más detalles en su propio post sobre la sesión. Debajo del video dejo también sus slides para quienes quieran verlos en más detalle (en el video se aprecian bastante bien, de todas maneras).

Slides:

lunes, 2 de julio de 2012

ASP.NET MVC ya es completamente Open Source (+ video)

Open Web Stack

Este post debería haber salido hace bastante tiempo atrás, durante el lapso en que este blog estuvo silencioso, pero -nobleza obliga- hay gente conocida que trabajó mucho por esto y vale la pena comunicarlo para los que todavía no estaban al tanto.

El equipo de ASP.NET MVC avanzó un paso muy grande en su impulso hacia el código abierto a fin de marzo pasado al publicar el stack completo de MVC 4, incluyendo Web API, Web Pages (o Razor, el motor de rendering de vistas) con contribuciones externas, bajo licencia Apache 2.0.

Como detalle interesante, el código del stack completo está alojado en GIT dentro de CodePlex (que hace tiempo soporta GIT y Mercurial además de TFS y SVN). Esto implica que los curiosos sólo necesitan hacer un:

git clone https://git01.codeplex.com/aspnetwebstack.git

Desde el anuncio, Microsoft avanzó hasta la publicación en junio de las "release candidates" de MVC 4 (incluyendo ya un montón de contribuciones de la comunidad) y Visual Studio 2012. MVC 4 también incluye otros paquetes abiertos como jQuery,  jQuery Mobile,  jQuery UI, Modernizr, Knockout y JSON.NET.

Otro detalle interesante es que MVC no está atado a Visual Studio ni a .NET, y también corre en Mono. Casualmente, Miguel de Icaza (líder del proyecto Mono) fue el primero en contribuir con un pull request.

Dejo para el final un video (en 6 partes, ~80 minutos, en inglés) de Scott Guthrie presentando MVC 4. El video tiene un tiempo, pero es de lo mejor que encontré, presentado por la persona que está directamente detrás del proyecto, y uno de los mayores impulsores del código abierto dentro de Microsoft. No por casualidad, ahora que Scott está a cargo de la experiencia de desarrollo de Azure, todos los SDK y herramientas son también abiertas.

viernes, 29 de junio de 2012

JetBrains + Nemerle = una dupla poderosa (+ video)

La gente de JetBrains, los cerebros a propulsión detrás de IntelliJ IDEA, ReSharper y toda una familia de IDEs especializadas, anunció recientemente la contratación del núcleo del equipo de desarrollo de Nemerle, uno de esos "raros lenguajes nuevos", completamente abierto, que revisé en este blog un año atrás.

Como explican en el anuncio, la incorporación se decidió en reconocimiento al increíble trabajo de Nemerle en la implementación del lenguaje y sus características de meta-programación, inferencia de tipos, etc. El foco del equipo estará por o tanto en el proyecto N2, un framework para desarrollo de lenguajes, un área a la que JetBrains se dedica muy especialmente y con evidente éxito.

Para que se den una idea sobre lo que genera esta gente, les dejo un video fresquito de una sesión sobre este lenguaje presentada por Igor Tkachev, del equipo de desarrollo, durante la reciente Norwegian Developers Conference en Oslo, a principios de junio (dura menos de media hora y está en inglés).

Da la impresión que el contacto y la posibilidad de fusión surgió a partir de esta época, así que puede ser un video para la historia (al menos para el equipo de Nemerle y JetBrains).

jueves, 28 de junio de 2012

Se viene la próxima RubyConf Argentina, y siguen los Ruby Meetups en Buenos Aires (+ video)

NewImage

El incansable grupo organizador de la RubyConf Argentina ya está encarando desde hace tiempo la edición de este año, y creo que es el momento de difundirlo porque ya está confirmada la sede del evento, que será el Paseo La Plaza en Buenos Aires.

Como el año pasado, habrá invitados del exterior y oradores locales, y estoy seguro que aunque la primer edición fue asombrosa, ésta segunda será aún mejor.

Como siempre ocurre en la comunidad Ruby, hay mucha creatividad y poca corrección política alrededor de todo esto, y es uno de los grandes atractivos, más allá del contenido técnico que siempre es interesante. Como muestra, vaya el control de selección de lenguaje en el sitio oficial de la conferencia, que me parece una joyita:

NewImage

Como si fuese poco, la actividad de Ruby Argentina no para, y vuelven al parecer con frecuencia mensual los Ruby Meetups. Pueden inscribirse y proponer temas (recuerden que el formato de las reuniones es abierto, y los asistentes terminan de decidir la agenda en el momento, en base a las propuestas). Más detalles y comentarios sobre estas meetups en el blog del Maestro Angel "Java" López, que probablemente presente alguna de sus katas en la próxima.

 

Dejo para el final un video de la RubyConf del año pasado (~35 minutos, en español a pesar del título), pero pueden ver todos los demás en la página de Vimeo de  Ruby Argentina.

lunes, 25 de junio de 2012

Se vienen PyCamp y PyCon Argentina (+ video)

La infatigable comunidad Python de Argentina está organizando dos de sus eventos más populares.

PyCamp 2010

PyCamp 2012, el cyber-campamento más entretenido que se pueda imaginar, será del 6 al 9 de julio (aprovechando el fin de semana largo) en la localidad bonaerense Verónica.

El PyCamp, como su nombre lo indica, se hace en el contexto de un campamento, y todos los participantes deciden al empezar una disposición de espacios en los que la gente puede presentar, plantear un debate, proponer una actividad de desarrollo conjunto, etc.

También hay amplio espacio para charlar, comer asado, jugar un picadillo y tomar mate. El evento es totalmente relajado, en compañía de otros programadores de profesión y corazón.

Si quieren saber quienes van, pueden ver la lista de interesados, que incluye una columna indicando si ya depositó la plata ($500 por la estadía completa). También se pueden ver algunos de los temas propuestos de antemano (que igual se votan al llegar), y por supuesto, la lista de recomendaciones de cosas para llevar.

NewImage

Y para quienes tienen alergia a los mosquitos o le molestan los ruidos de los grillos, más tarde llega la PyCon Argentina 2012, que será en Quilmes, la capital argentina de la cerveza y las conferencias geek (los quilmeños están comprometidos a hospedar anualmente una conferencia de este tipo, y ya empezaron el año pasado con Smalltalks 2011).

La PyCon será del 12 al 17 de noviembre en la Universidad Nacional de Quilmes. En este caso la entrada es libre y gratuita, pero hay que registrarse, ya que los cupos son limitados.

Como siempre, asistirán invitados del exterior como:

 Habrá varias actividades como los Sprints/Hackatón (Lunes 12 al miércoles 14), Tutoriales y Talleres (el jueves 15), Charlas y Eje Científico (del viernes 16 al sábado 17).

Lamento llegar un poco tarde con el aviso, pero el llamado a propuestas vence el 30 de junio (el próximo sábado).

Les dejo como cierre el video promocional que la comunidad produjo para promocionar sus actividades, donde pueden ver mucho de lo que hacen, desde los camps hasta la conferencia nacional (~4 minutos y medio que valen la pena).

viernes, 16 de marzo de 2012

Nueva edición del RUN Buenos Aires

RUN BA

El próximo viernes 23 de marzo, en la Universidad Católica Argentina (Alicia Moreau de Justo 1300) el grupo de Nuevas Tecnologías de Microsoft Argentina y Uruguay realizará una nueva edición del evento donde se anuncian las nuevas oleadas tecnológicas.

Pude encontrar una agenda del evento directamente en el sitio de registro:

Por la mañana hay sesiones generales:

  • Acreditación y Bienvenida
  • Bienvenida Rodrigo (¿quién será Rodrigo?)
  • Keynote: Un mundo de dispositivos conectados
  • Desarrollá tu potencial con Microsoft

Por la tarde hay espacios separados para gente de TI y desarrolladores. Las sesiones para nosotros son:

  • Servicios en la Nube con Windows Azure
  • El futuro con HTML5
  • Aplicaciones al alcance de tu mano: Windows Phone
  • Desarrollo Estilo Metro en Windows 8

Casualmente en esta última sesión participaré para mostrar un ejemplo de desarrollo en Windows 8, dentro del espacio de aplicaciones Metro (el nuevo estilo gráfico orientado a dispositivos táctiles) utilizando C++. Si tengo tiempo, trataré de cubrir brevemente algunas de las novedades de C++ 11 (el estándar) y un poco de las novedades en Visual Studio 11 en cuanto al soporte para este lenguaje, pero el centro de la sesión será mostrar cómo interactuar con el flamante Windows Runtime, y cómo aprovechar las características asincrónicas de C++ 11 para lograr aplicaciones sumamente fluidas, que reaccionan apropiadamente a la manipulación natural de los nuevos dispositivos.

Algo más de información sobre el evento, en Puerta de Enlace.

 

viernes, 9 de marzo de 2012

Lindo proyecto para despuntar el vicio

Markdown

En las últimas semanas un grupo de colegas y amigos, liderados por Matias Woloski y Lito Damiani e incluyendo a unos cuantos compañeros de Southworks, lanzaron un proyecto de código abierto muy interesante, que es a la vez una herramienta muy útil y una gran idea para practicar JavaScript, Node y varios temas interesantes de programación en un entorno compartido.

El proyecto se llama MarkdownR y esta es la descripción (en mi traducción rápida al español, con links agregados):

MarkdownR es un editor colaborativo de markdown construido sobre share.js y corriendo en Node.js sobre Windows Azure que permite...

  • editar un archivo markdown en colaboración y ver los cambios que hacen los demás en tiempo real
  • abrir y guardar sobre el almacenamiento de blobs de Windows Azure
  • abrir y guardar en GitHub utilizando su API y OAuth
  • copiar y pegar imagenes desde el portapapeles que se guardan automáticamente en el almacenamiento de blobs (sólo funciona en Chrome por ahora)

MarkdownR surgió de programadores de Southworks durante su tiempo libre entre proyectos y se plantea también como una herramienta de aprendizaje. La calidad del código es la de una prueba de concepto. No hay pruebas (todavía), tiene defectos, no funciona en IE9 y no hace limpieza del HTML (así que si alguien agrega tags de script y rompe todo, que no se enoje).

El proyecto es completamente abierto (las contribuciones se aceptan como pull requests) y está alojado en GitHub, listo para clonar y jugar.

 

miércoles, 22 de febrero de 2012

Video: Agiles @ Buenos Aires - Caso de éxito ágil, por Pablo Francavilla

Agiles

En la última reunión mensual de Agiles Buenos Aires, organizada por la comunidad local aproximadamente los segundos martes de cada mes, Pablo Francavilla vino a contarnos los detalles de un caso de éxito para su compañía, GetSense, pero fundamentalmente una experiencia enriquecedora desde el punto de vista de las técnicas que utilizaron.

Una de las claves en este caso, para Pablo, fue la utilización de Story Mapping, una técnica para la definición del producto de manera colaborativa, utilizando un esquema visual con post-it de colores en una pared o mesa, entre todos los participantes: clientes, equipo y cualquiera de importancia en el contexto del proyecto.

Pablo destacó que aprendieron lo básico sobre esta técnica en una reunión prevía de Agiles @ Buenos Aires, lo que también es una referencia interesante en si misma.

La sesión completa, como siempre, llevó casi 120 minutos, y está dividida en 7 partes de unos 17 minutos cada una. Queda a continuación el primer video embebido, y los enlaces a los siguientes debajo. Sepan disculpar mis movimientos un tanto torpes como camarógrafo en los primeros minutos, pero el movimiento del público hacia un lado de la sala al iniciar la sesión me tomó por sorpresa.

Parte 2 de 7

Parte 3 de 7

Parte 4 de 7

Parte 5 de 7

Parte 6 de 7

Parte 7 de 7

viernes, 17 de febrero de 2012

Se liberó la Beta de ASP.NET MVC 4 (+ video)

Para los lectores interesados en .NET, esta es una muy buena noticia. La nueva versión de ASP.NET MVC ya está en Beta, y al parecer bastante estable, siguiendo el estilo de este equipo, que se diferencia de otros de Microsoft en su ciclo de producto sumamente iterativo y muy basado en pruebas.

Otra particularidad de este equipo es que termina liberando (ya que no arrancan así durante el desarrollo, lamentablemente) el producto como código abierto. Scott Guthrie, padre de ASP.NET MVC y buena parte del viejo ASP.NET, confirmó que esta versión también será licenciada como código abierto (la actual tiene licencia Apache 2.0), ante la pregunta de Miguel de Icaza en Twitter, lo que implica que podrá utilizarse con Mono próximamente.

The Gu le contesta a Miguel

La versión Beta, que ya está disponible para descarga y puede usarse en paralelo con MVC 3, tiene las siguientes mejoras principales:

  • ASP.NET Web API - la versión final del modelo para servicios REST, evolución de la WCF Web API.
  • Plantillas de proyecto nuevas y mejoradas, con código HTML mucho más cuidado, código más prolijo del lado del servidor, y uso de rendering adaptativo para que se vea correctamente en múltiples dispositivos.
  • Nueva plantilla para sitios móviles - aunque la plantilla básica se adapta bien a teléfonos, esta nueva está específicamente pensada para ese escenario, incluyendo de entrada jQuery Mobile para mejorar la experiencia táctil.
  • Modos de Display es la característica que permite cubrir el escenario mixto en que la misma aplicación debe tener vistas especializadas para diferentes dispositivos, con el mismo código servidor y mínimos cambios en el código cliente, pero que implican una gran diferencia en la experiencia del usuario.
  • Recetas para generación de código - facilitan a los autores de paquetes NuGet utilizar generación para alterar la generación ante los comandos de agregado de vistas, controladores, etc.
  • Soporte para Tasks (tareas asincrónicas) en los controladores.

Probablemente una de las novedades más importantes es la inclusión de la Web API, que permite generar servicios que pueden exponerse incluso fuera de IIS, y mejora mucho las capacidades para construir aplicaciones RESTful. Dejo un video (en inglés, 70 minutos) de Daniel Roth, del equipo de MVC, demostrando sus capacidades principales.

miércoles, 15 de febrero de 2012

Bootstrap 2.0: de Twitter para el mundo

Twitter

El equipo de la interfaz web de Twitter publicó ya hace tiempo como código abierto y gratuito Bootstrap, un conjunto de herramientas para trabajar interfaces web de manera consistente y basada en los nuevos estándares.

Bootstrap está basado en HTML5, incluye hojas de estilo en cascada (CSS) y componentes en JavaScript que brindan muchísimas flexibilidad y consistencia para lograr páginas limpias y sencillas, que a primera vista resultan familiares y fáciles de usar, como este ejemplo (sumamente básico, pero ilustrativo):

Ejemplo de Bootstrap

Hace unos días los responsables de Bootstrap, que está alojado en GitHub y es uno de los proyectos más exitosos en el sitio, que recibe además múltiples aportes de la comunidad, liberaron la versión 2.0, que agrega un esquema de trabajo sobre una grilla de 12 columnas que facilita la ubicación de elementos que pueden reacomodarse en diferentes formatos de dispositivo, y permite crear elementos anidados, relativos, etc.

Otra novedad es que todo el manejo de hojas de estilo ahora está basado en LESS, un lenguaje dinámico que extiende y mejora CSS a través de manipulación en JS.

Un último detalle que me parece muy bueno es la posibilidad de configurar el conjunto de herramientas necesarias para un proyecto en particular y poder descargar el paquete mínimo necesario, pero con todas las dependencias y configuración perfectamente resueltas. Así se puede optar por incluir o no cualquiera de estas múltiples características:

Componentes

  • Scaffolding
    • Normalize and reset
    • Body type and links
    • Grid system
    • Layouts
  • Base CSS
    • Headings, body, etc
    • Code and pre
    • Labels
    • Tables
    • Forms
    • Buttons
    • Icons
  • Components
    • Button groups and dropdowns
    • Navs, tabs, and pills
    • Navbar
    • Breadcrumbs
    • Pagination
    • Pager
    • Thumbnails
    • Alerts
    • Progress bars
    • Hero unit
  • JS Components
    • Tooltips
    • Popovers
    • Modals
    • Dropdowns
    • Collapse
    • Carousel
  • Miscellaneous
    • Wells
    • Close icon
    • Utilities
    • Component animations
    • Responsive
    • Responsive layouts

Y también se pueden seleccionar los plugins de jQuery, como transiciones, modal dialogs, dropdowns, tooltips y muchísimas cosas más.

Finalmente también se pueden personalizar los valores básicos de una serie de variables de LESS que se toman como base inicial.

La mejor manera de conocer y valorar Bootstrap es mirar un poco el sitio y descargarlo para probar.

viernes, 10 de febrero de 2012

Video: Bjarne Stroustrup presenta el estilo de C++11 en Going Native 2012

Como comenté hace unas semanas, en los primeros días de febrero se llevó a cabo la conferencia Going Native 2012, dedicada a los desarrolladores C++, y enfocada en el flamante estándar 11 del lenguaje, que está llegando a todos los nuevos compiladores de cada plataforma, desde Unix a Windows.

En la conferencia participaron Stroustrup (el creador de C++) y los principales impulsores del lenguaje en Google, Facebook, HP y Microsoft (anfitrión del evento, que se realizó en uno de sus auditorios).

Este post es principalmente para informar que ya están disponibles en video todas las sesiones, y dejarles a mano la apertura, que arranca con la dedicatoria del evento al recientemente fallecido Dennis Ritchie, creador del lenguaje C y co-creador del sistema operativo Unix, muy emotiva para cualquier geek de corazón.

Queda debajo entonces el video (~90 minutos), y recuerden que en la página principal del evento están los enlaces a todas las demás sesiones.

jueves, 9 de febrero de 2012

¿MacBook con teclado en inglés?

Argento Layout

Los lenguajes de programación, no importa de qué origen, están pensados para escribir con un teclado en inglés. Es cierto que se puede escribir código con cualquiera, pero siempre es más complicado al alejarse del clásico "US Layout". Por eso siempre busco computadoras con teclas en inglés, como en el caso de mi MacBook.

Pero claro, también tengo que escribir frecuentemente en español, como en este blog. Mac OS X tiene una serie de secuencias de teclas por omisión para ingresar vocales con tilde, diéresis, etc, pero la mayoría de nosotros estamos acostumbrados a teclear la tilde primero y después la vocal, etc. Como no encontré un esquema de teclado con las combinaciones que me gustaban, construí uno, y para ahorrarle tiempo a quien venga detrás, lo comparto con ustedes.

Argento Layout es un esquema de teclado (Keyboard Layout) para Mac OS X, pensado para computadoras con teclado en inglés (US) de fábrica, que facilita escribir en español.

Las combinaciones de tecla habilitadas son las vocales acentuadas (minúsculas y mayúsculas) que se logran pulsando la tilde (debe estar entre las teclas ";" y "return"), y adicionalmente pulsando la tilde y luego la "n" (mayúscula o minúscula) se obtiene la "ñ".

Como también escribo frecuentemente en inglés, mantuve un detalle importante: si se escribe algo diferente de vocal o "n" luego de la tilde, el caracter resultante es una comilla simple, no una tilde, lo que evita que un texto en inglés quede como:

I'm a coder (correcto)

...en lugar de:

I′m a coder (incorrecto - en inglés el caracter correcto para las contracciones es un comilla recta, no unan tilde)

Los interesados solamente deben copiar el archivo "Argento.keylayout" descargado dentro de la carpeta "~/Library/Keyboard Layouts" (~ indica su carpeta de usuario) si quieren tener el esquema disponible solamente para su perfil. Si quieren que esté disponible para todos, copien el archivo en "/Library/Keyboard Layouts" desde el directorio raíz.

Para poder usarlo hay que hacer "Logout" y "Login" nuevamente. Si quieren poder cambiar el modo de teclado, pueden modificarlo en las Preferencias de Teclado, y pueden dejar el icono disponible en la barra de menú para poder alternarlos fácilmente (como se ven en la imagen más arriba).

Espero que a alguno de ustedes le resulte útil.

 

miércoles, 8 de febrero de 2012

Aprendiendo Vim en un rato (+ video)

Vim

(post dedicado a los programadores anticuados como yo, y a los que me miran raro cuando me ven usar una Mac desde la línea de comandos)

Vim es uno de los editores más minimalistas, sólo superado por su antecesor Vi.

Una descripción rápida en español, provista por el sitio oficial dice:

¿Qué es Vim?

(Una explicación en seis kilobytes - versión completa en español en el sitio oficial)

Vim ("VI IMproved") es un "clon de VI", es decir, un programa similar al editor de textos "VI".

Vim no solo trabaja en modo de texto en cualquier terminal, sino que también tiene un interfaz gráfica para el usuario, es decir, menús y soporte para el ratón.

Disponibilidad: Vim está disponible para muchas plataformas y tiene muchas características añadidas en comparación con VI (véase http://www.vim.org/viusers.php). Vim es compatible con casi todos los comandos de VI - excepto con los errores(bugs) en VI. ;-)

Sistemas Operativos: Vim está disponible para muchos sistemas: AmigaOS, Atari MiNT, BeOS,DOS, MacOS, NextStep, OS/2, OSF, RiscOS, SGI, UNIX, VMS, Win16 + Win32(Windows95/98/00/NT) - y especialmente FreeBSD y Linux.

Copyright: El copyright está en las manos del autor principal y mantenedor, Bram Moolenaar.  Vim es un "programa-de-caridad" ("charity-ware"), es decir que se sugiere que hagas una donación a los huérfanos en Uganda(véase ":help Uganda ").

Fuentes: Vim es OpenSource y todos son bienvenidos para ayudar a mejorarlo!

En la mayoría de las distribuciones de Unix/Linux, incluyendo Mac OS X, Vim ya está instalado y disponible. En Windows hay que descargarlo, al igual que si uno quiere estar seguro de tener la última versión en cualquier otra plataforma.

La forma más sencilla de empezar a usar Vim es escribiendo desde la línea de comandos:

vimtutor

Este comando en realidad carga Vim con un tutorial (en inglés) ya abierto. En realidad es una copia temporal del archivo del tutoríal, de manera de poder editar y practicar sin perder nada. El tutorial lleva unos 20~30 minutos, y para quienes lo encaren, espero que no se asusten cuando comienza explicando cómo moverse por el archivo utilizando las teclas HJKL. A no desesperar: las flechas también funcionan, pero sobre todo para quienes son buenos tipeando (no es mi caso), poder moverse sin tener que quitar las manos de la parte principal del teclado termina siendo sumamente útil.

Para quienes quieran aprender un poco más y darle una chance a Vim, que seguirá estando cuando las interfaces estilo Minority Report pasen de moda, tienen más información en Vim University. Dejo debajo un video (en inglés; menos de 6 minutos en total) donde se explica cómo crear macros.

Como Vim está centrado en el teclado, presten atención a la esquina inferior derecha del video, donde se van mostrando las teclas que el autor pulsa (ya que la mayoría son comandos que no se ven en el editor). Espero que les de una idea de la relación simplicidad/flexibilidad de este editor.

martes, 31 de enero de 2012

Video: HTML 5 para los no iniciados y curiosos, por Cristian Prieto (y más de Alt.NET Hispano)

Alt.NET Hispano

Los amigos de Alt.NET Hispano, coordinados por el infatigable Jorge Gamba, han publicado el video de otra reunión VAN (Virtual Alt.NET).

La sesión que menciono en en título, e incluyo debajo, es una de las últimas, pero aprovecho para hacer una actualización sobre la actividad del grupo, que sigue manteniendo un espectro de intereses bastante amplio, con centro en .NET y su ecosistema, pero llegando a montones de otros entornos, como Ruby, JavaScript o HTML5, como en este caso.

Como mencioné en un viejo post, Alt.Net Hispano realiza sesiones en vivo (utilizando Live Meeting) de entre 60 y 120 minutos con frecuencia semanal, a veces más de una por semana, que quedan disponibles en video posteriormente, sobre multitud de temas, siempre en español.

Com complemento a aquel viejo post, dejo una lista de las sesiones publicadas desde diciembre de 2010 hasta ahora (en total el grupo lleva publicadas ¡81 sesiones!).

Fecha Tipo Título Presentador
Duración
81 2012/01/28 VAN Introducción a fubuMVC Francisco Ruiz 1:56
80 2011/12/17 VAN HTML 5 para los no iniciados y curiosos Cristian Prieto 2:04
79 2011/10/08 VAN vNext, ASP.NET 4.5, Webmatrix 2 y MVC4... (Parte 2) Cristian Prieto 1:52
78 2011/09/24 VAN vNext, ASP.NET 4.5, Webmatrix 2 y MVC4... (Parte 1) Cristian Prieto 1:48
77 2011/08/06 VAN Node.js Hernán García 1:52
76 2011/07/23 VAN Conceptos de HTTP y Fiddler web debugger Leonardo Micheloni 2:13
75 2011/06/18 VAN Identity Providers, oAuth y Autenticaciones on-line Carlos Peix 
Nelo Pauselli 
2:16
74 2011/06/11 VAN Generación de código, con Essential Pedro Molina 2:35
73 2011/05/28 VAN Pex, Moles y Code Contract Esteban Gringerg 2:11
72 2011/05/27 VAN REST Services y WCF's Web Api Pablo Cibraro 
Gustavo Machado
José Romaniello
1:50
71 2011/05/21 VAN Reescribiendo ensamblados con Mono.Cecil José Romaniello 2:17
70 2011/05/13 ALT.NET Café Web Frameworks 1:34
69 2011/03/05 VAN Conform - Parte 2 Fabio Maulo 2:14
68 2011/02/26 VAN Audit (parallel model) con NHibernate 3 Fabio Maulo 2:04
67 2011/02/19 VAN CQRS Andrea Magnorsky 2:09
66 2011/02/12 VAN Estrategias para el manejo de sesión de NHibernate Parte II Nelo Pauselli
José Romaniello
2:09
65 2011/02/04 ALT.NET Café La Inmortalidad de la Medusa - Arquitectura 1:25
64 2011/01/29 VAN Programando con Windows Azure Angel "Java" López 2:10
63 2010/12/04 VAN Estrategias para el manejo de sesión de NHibernate Nelo Pauselli 2:16
62 2010/11/27 VAN ASP.NET MVC 3 & NuGet Cristian Prieto 1:59
61 2010/11/26 VAN Code Smells & Refactoring Martín Salías 2:02
60 2010/11/20 VAN Ruby on Rails Mario Chávez 1:54
59
2010/11/17
VAN
Entity Framework
Jorge Fioranelli
2:31
58 2010/11/16 VAN Cloud Computing Martín Salías 2:27

Hay muchísimo material para disfrutar, y les dejo el video de Cristian para abrir el apetito.

Unable to display content. Adobe Flash is required.