junio 27, 2011

Azure Bootcamp en Buenos Aires

Azure Bootcamp

En abril de este año se corrió otra edición del Windows Azure Bootcamp en Buenos Aires.

Este es un evento organizado directamente por Microsoft que se presenta en ciudades de todo el mundo, con oradores de la compañía o especialistas externos.

A lo largo de dos días se recorre la plataforma completa, incluyendo los diversos roles, mecanismos de almacenamiento, SQL Azure, y todo lo demás.

Hay muchas sesiones por temas, cubriendo la parte teórica y práctica, y usualmente los asistentes se quedan con una cuenta de prueba (que dura un tiempo) además de realizar varios ejercicios durante el evento.

Ya participé en varias ediciones de este evento y me quedó como un clásico el tema de Diagnóstico y Monitoreo, que no es de lo más divertido, pero si es importante a la hora de armar aplicaciones complejas o que requieran escalar considerablemente.

Esta vez tuve la suerte de que me acompañara mi colega en Southworks, Carlos Páez, que tiene mucho tiempo trabajado sobre Azure, y colaboró en la actualización de los Training Kits de la plataforma.

Otra novedad en esta última edición es que se grabaron todas las sesiones, así que los interesados pueden consumirlas a demanda. Los videos está disponibles en la página de materiales del evento, para poder ser descargados.

Para facilitar un poco el consumo de nuestra sesión, por lo menos, dejamos el video subido a Vimeo, de manera de poder compartirlo más fácilmente, directamente en este post.

 

marzo 15, 2011

Run WebCamp 2011 en Buenos Aires

Run WebCamp

Hoy participé en el Run WebCamp organizado por Microsoft de Argentina, en el barrio de Palermo, Buenos Aires.

Dani Laco

Dentro de esta conferencia dedicada a desarrollo web en la plataforma Microsoft, me tocó presentar Entity Framework junto a mi viejo amigo Daniel Laco, con quien a pesar de los años que llevamos en la comunidad de desarrollo, nunca habíamos hecho un dueto.

La verdad es que más allá del resultado final, que el público juzgará, fue un placer dar una sesión con Dani y logramos completar todo el temario, que era bastante exigente, en 45 minutos exactos, con buen timing y sin pisarnos.

Como prometimos durante la charla, quedan aquí los links para descargar la presentación (recortada solo con el material importante y referencias), y los ejemplos, una solución completa con muchos ejemplos en detalle (cortesía de Dani), y una solución mínima mostrando lo básico de Code First (culpa mía).

 

Me siento halagado de haber participado con otros oradores muy buenos y muchos amigos, como Edu Mangarelli y Miguel Sáez, Phil Haack y Drew Robbins, Rodo Finochietti y Pablo Zaiden, y por supuesto, mis compañeros de ruta Johnny Halife y Mati Woloski.

El evento se emitió en vivo a través de UStream y espero que pronto quede disponible para verlo en video, idealmente con las charlas por separado.

 

enero 04, 2011

MVP 2011 y objetivos para este año

Most Valuable Professional

Otra vez, como desde hace años ya, arranco el año con la agradable noticia de que Microsoft me ha premiado como Most Valuable Professional. Siempre es un honor la distinción, aunque sigo sin saber muy bien qué es lo que consideran tan valioso en mi.

Nuevamente me premian en la categoría "C#", que por lo visto es algo así como un comodín para actividades mas bien ligadas a los lenguajes.

Como sea, es bueno sentirse reconocido, y un honor cuando uno queda cerca de la categoría de gente a la que admira. Y estas cosas refuerzan esta idea organizativa de fijarse objetivos para el año. Es cierto que es un plazo matemáticamente arbitrario, pero útil a nivel de planificación. Es como un relajado backlog personal que uno puede auto-imponerse para tratar de planificar después el corto plazo, semana tras semana o mes tras mes.

Pero hacer pública una lista de objetivos es una manera de dejar un compromiso más alto que simplemente proponerse algo. Uno sueña con un lector hipotético que algún día vendrá a reclamar si no se cumple nada de lo planeado.

Así, aquí van mis objetivos para el año, que iré atacando, por supuesto, de manera iterativa:

  • Lenguaje del año: como todos los años, en el 2011 trataré de aprender y comprender un lenguaje nuevo. Para mi comprender un lenguaje de programación significa conocer bastante su idiosincracia, el paradigma con el que está diseñado, sus puntos sobresalientes y problemáticos, y acercarme a la manera en que funciona la comunidad y el ecosistema detrás. Eso implica aprender, hacer katas, programar en ese lenguaje proyectos lo más reales posibles, y tratar de compartir todo lo posible lo aprendido, sobre todo haciendo algunas presentaciones en vivo o en video. Explicando a los demás, como dice el Maestro, es como más fácilmente nos "cae la ficha" y afianzamos nuestros conceptos.

    El 2010 lo dediqué a Ruby (aunque personalmente no profundicé tanto como me hubiese gustado), después de zambullirme en F#, volver a Python (para quedarme -hoy lo uso cotidianamente e incluso tengo un shell de Python siempre a mano, dentro de Chrome), jugar con Boo, meterme en C# desde Generics hasta el IL generado, tratar de avanzar con Eiffel, debatirme entre Haskell y ML (sin lograr mucho con ellos por mis propias limitaciones).

    A la hora de elegir un lenguaje para este año que inicia, prefiero terminar lo que empecé, y voy a dedicarme más a Ruby, pero esta vez específicamente a Rails y Sinatra, donde no hice tanto hincapié. Mi mayor avance con Ruby el año pasado fue entender el lenguaje mismo y usarlo para todas mis tareas principales de scripting y algunas aplicaciones desktop que necesitaba (si, es raro ver aplicaciones desktop en Ruby, pero se puede). Esta decisión tiene impacto directo en algunos de los siguientes objetivos, como se verá.

  • Me quedó pendiente, por varios motivos, dar un taller sobre Ruby, que quiero encarar este año. El principal problema fue que las veces que lo propuse lo hice junto a otras alternativas que sonaron más interesantes. Pero como es algo que personalmente quiero hacer, voy a ponerme en campaña por mi lado, y terminaré con alguna serie de videos en mi otro blog, Code & Beyond, y probablemente lo de presencialmente en el MUG o algun otro lado.
  • Hace tiempo tengo pendiente reconstruir mi sitio personal, que es una recopilación de servicios, links a trabajos, mis libros, películas, etc. Todo eso está armado con un antiquísimo script en Python que genera páginas estáticas ASP. En su momento no fueron HTML plano para poder incluir un par de cosas, pero en realidad son básicamente eso. No hay una base de datos detrás, nada dinámico. Los datos son fuentes diversas en mi máquina que se procesa(ba)n para generar las páginas. Y hace tiempo que no se refresca esa información, salvo lo que proviene de servicios como delicious.

    Así que tengo un buen ejercicio a mano: rediseñar el sitio, pensándolo mejor (aunque el objetivo básico seguirá siendo tener consolidada una cantidad de información que está dispersa en la web) y usarlo como una práctica de Rails y también de actualizar mi conocimiento en HTML/CSS, que está algo vetusto.
  • Otro objetivo, a cumplir en el corto plazo, es actualizar mi hardware. Seguiré con una Mac, pero estoy cambiándola en breve por una de las nuevas MacBook Air, que ya tendrá su propia reseña.

    Y en consecuencia con el cambio, también quiero aprender este año Applescript. Hasta ahora todas mis tareas en la Mac las automaticé entre un poco de bash y Ruby, pero hay muchas cosas en las que el scripting nativo de la Mac va ayudarme con seguridad. Además, la gente de Apress me regaló el libro "Learn AppleScript: The Comprehensive Guide to Scripting and Automation on Mac OS X, Third Edition", así que ¡no me quedan excusas!

  • Finalmente, como todos los años, sigo rumiando los bocetos de un libro (técnico), pero no quiero auto-imponerme una fecha límite para eso, porque  todavía no tengo el temario final cerrado en mi cabeza. De alguna manera, Code & Beyond es una especie de lista de notas que me llevan en ese camino.

No es una lista tan grande. Espero llegar con todo terminado bastante antes de fin del año próximo, así que corto aquí y me pongo a trabajar.

 

diciembre 01, 2010

Video: Virtual Alt.NET Meeting sobre Cloud Computing

Hace unas semanas participé en otra reunión virtual de Alt.NET Hispano, hablando un poco sobre Cloud Computing.

Gracias como siempre a Jorge Gamba y el resto del equipo de voluntarios, ya está publicado el video, que dejo embebido aquí abajo, pero recuerden que pueden ver cualquiera de los videos de la reuniones anteriores.

Unable to display content. Adobe Flash is required.

noviembre 08, 2010

Arquitectura de Software en el Ciclo de Vida Agil

Durante el mes de octubre tuvimos nuevamente la oportunidad de facilitar nuestro auditorio en Southworks para otro desayuno de arquitectos de los que organiza Microsoft.

Esta vez, a diferencia de los últimos, en que sólo me tocó oficiar de anfitrión, Guada me pidió que presentara, ya que el tema elegido por el grupo tenía que ver con documentación y validación de arquitectura, algo sobre lo que vengo trabajando bastante fuerte, incluyendo el artículo que publicamos al respecto con Diego Fontdevila en el número 23 del Architecture Journal.

Casualmente, la sesión estuvo basada en la que presentamos con Diego en Agiles 2010, un par de semanas antes, en Lima, adaptada ligeramente a este público que tiene un perfil diferente.

Gracias a Julián Scopinaro, la sesión quedó capturada en video, que comparto aquí abajo.

Architects' Breakfast: Architecture in Agile Life Cycle - Part 1 from Southworks Showcase on Vimeo.

Architects' Breakfast: Architecture in Agile Life Cycle - Part 2 from Southworks Showcase on Vimeo.

noviembre 03, 2010

Code & Beyond: hablando muchos lenguajes, pero en español

Code & Beyond

Para quienes han sido fieles lectores de este blog algo abandonado, no podía dejar de invitarlos a seguir mi nueva iniciativa: Code & Beyond.

El objetivo de este blog (que pronto contará con videos además de noticias) es difundir contenido interesante sobre desarrollo de software en cualquier plataforma y lenguaje, inicialmente al menos, apuntando al mercado hispano-parlante.

La idea es algo que venía rondándome hace tiempo, y que se impulsó por una serie de posibilidades y también gracias al soporte y perseverancia de mi amigo Julián Scopinaro, con quien compartimos tareas de comunicación en Southworks.

Hay una breve introducción en el primer post, pero aprovecho este blog, más personal, para exponer porqué me parece importante cubrir el espectro "multi-plataforma":

Por un lado, buena parte de mi carrera la dediqué de una manera u otra a proyectos con problemática fuerte de interoperabilidad, y es una especialidad que me ha sido valiosa y me ha generado muchas oportunidades. Incluso a lo largo de 20 años de relación con Microsoft, ellos mismos me han elegido varias veces para ayudarlos en proyectos que involucraban piezas más allá de su plataforma, y a medida que pasa el tiempo, veo que es cada vez más raro que una solución se pueda diseñar para un entorno homogéneo.

Desde otro ángulo, creo que entender y apreciar otras plataformas nos hace más sólidos y aumenta nuestra capacidad de discernimiento sobre las que estamos usando principalmente en un momento u otro. Desde el punto de vista de la arquitectura de software, por definición no deberíamos permitirnos tomar decisiones con un sesgo específico. Por supuesto, esto no significa que al evaluar alternativas para una solución no consideremos el valor de una plataforma que está más afianzada en la organización, o el equipo domina más. El tema es evitar la decisión por temor o ignorancia (si es que no son al final la misma cosa).

Tal vez el ejercicio y la disciplina que me exige Code & Beyond me haga escribir más frecuentemente en éste y otros blogs. Éste en particular seguirá siendo un punto donde hablar desde una perspectiva más personal, o compartir material o contenido de actividades mías no relacionadas directamente con el otro.

mayo 14, 2010

Presentando Southworks Professional Improvement Program

Muchos de ustedes ya habrán leído sobre el proyecto Hogwarts en el blog del Maestro.

La motivación de este proyecto es aportar a la comunidad las prácticas de desarrollo de software que creemos fundamentales en Southworks,  y que consistentemente vemos ignoradas o utilizadas parcialmente.

Pruebas Unitarias

Esto cubre un abanico de metodologías, técnicas y espacios conceptuales bastante amplio, dentro de los cuales arrancamos con un primer curso cubriendo estos temas:

 

  • Test-Driven Development
  • Inversión de Control e Inyección de Dependencias
  • Mocking
  • Principios SOLID
  • Ejercicios generales utilizando todas la técnicas

Para cada uno de estos temas tenemos un conjunto de presentaciones, material de soporte para el instructor, proyectos de ejemplo con complejidad creciente y ejercicios de distinta dificultad incluyendo algunas soluciones de referencia.

También tenemos prevista la evaluación posterior a cada curso sobre los resultados de los ejercicios y una serie de preguntas para verificar los conceptos teóricos.

 

Nuestro plan inicial se enfocaba principalmente en generar todo este contenido para ejecutar clases presenciales, pero siempre pensamos en compartir en línea una buena parte para llegar a personas interesadas que no podemos alcanzar físicamente.

Sin embargo, la recepción que ha tenido lo que publicó Angel hasta ahora (por ejemplo el primer y segundo videos), nos impulsó a acelerar el avance de la faceta en línea del proyecto. El resultado es que estamos muy cerca de abrir a la comunidad el proyecto, basado en la plataforma de entrenamiento Moodle, funcionando por supuesto desde nuestra infraestructura en la nube.

Por supuesto, no descuidaremos la interacción cara a cara. La diferencia es que las sesiones presenciales serán complementarias al contenido en línea, para despejar dudas y realizar prácticas en conjunto. Y obviamente no sólo estarán a cargo y cerca nuestro. Esperamos que diversos grupos puedan replicarlas en forma local.

Interesados: permanecer atentos a este blog y el de Angel. La semana próxima deberíamos estar publicando el sitio final del proyecto. Hogwarts es el nombre de código del proyecto (otra práctica recomendable), pero el nombre oficial, que estamos presentando en sociedad es el del título:

Southworks Professional Improvement Program