jueves, 27 de octubre de 2011

Pragmatic Programmers: Aprovechando el poder de la web (+video)

The Pragmatic Programmer

Los lectores o conocidos desde hace tiempo ya saben que tengo mucho respeto y admiración por Andy Hunt y Dave Thomas, los Pragmatic Programmers. Su primer gran éxito en conjunto fue el libro que le dio título a su emprendimiento editorial: The Pragmatic Programmer: From Journeyman to Master, de 1999.

En este libro Andy y Dave destilaron una enorme cantidad de sabiduría aplicada a las labores, prácticas y actitudes básicas de la programación, justo antes de que algunas de ellas se convirtieran en parte del Manifiesto Agile poco tiempo después (siendo Dave uno de los firmantes iniciales).

En el libro apuntan a las premisas básicas del uso de editores, depuradores, control de versiones, generación de código, pruebas unitarias, meta-programación, cuestiones de diseño, refactorización, manejo de requerimientos, y muchísimo más.

Pero después del éxito de este libro, que es uno de los más populares de todos los tiempos en nuestra profesión (para mi, junto al decano The Mythical Man MonthCode Complete y los más recientes Clean Code y The Clean Coder), Andy y Dave fundaron una editorial bastante particular, The Pragmatic Bookshelf dedicada a publicar libros dedicados al desarrollo de software a costos realmente económicos y cubriendo una variedad de temas a los que las editoriales grandes generalmente no llegan por ser demasiado específicos.

Así llevan más de 120 títulos publicados, y además de editarlos en papel se pueden comprar en ediciones electrónicas, sin mecanismos de protección. Esto me parece destacable. A pesar de ser una editorial muy pequeña, ellos tienen un negocio que sobrevive y con altísima calidad y nivel de servicio, sin necesidad de "molestar" al usuario por temas de propiedad intelectual. De hecho, el único mecanismo que utilizan es un código de confianza: cuando uno compra un libro electrónico puede descargarlo en formato PDF, Mobi (para el Kindle) o EPub (para iOS, Android, etc). Lo único que ellos hacen es generar una copia personalizada con el nombre del cliente en los pies de página. Así, si alguien desparrama copias, al menos se hace responsable personal.

Otra cosa que les permite este modelo de negocio es permitir leer versiones preliminares de los libros mientras el autor todavía está escribiéndolo, a un precio reducido y con opción de recibir la edición impresa final o no, y por supuesto con posibilidad de ir comentando el avance con el autor y colaborar con él.

Pero toda esta publicidad gratuita (la hago sólo porque soy un cliente felíz) surgió por otro servicio sorpresa que agregaron esta semana y me comunicaron por email: ahora permiten sincronizar las sucesivas versiones de los libros con una cuenta personal de Dropbox, un servicio pionero en sincronización de archivos en la nube. Dropbox tiene la característica de ser el más exitoso de los múltiples competidores en ese área, basándose en la premisa de mantener el servicio sencillo en cuanto a características, pero siempre extremadamente funcional.

Si, también soy un cliente feliz de Dropbox, cuyo servicio básico y gratuito alcanza y sobra para uso personal y me ha permitido moverme y mantener sincronizados ambientes entre Windows, Mac OS X y móviles, y me liberó de la obsesión por los backups. Pero Dropbox también es un caso interesante para la comunidad Python, ya que usan este lenguaje para cubrir múltiples plataformas cliente, y también del lado del servidor.

Dejo para el final un video (en inglés) Rian Hunter, uno de los ingenieros de Dropbox contando detalles de la implementación en la PyCon 2011.

Ahora, volviendo al tema principal, lo que PragProg agregó a sus servicios es la integración con Dropbox, de manera que cada vez que hay una nueva versión disponible de uno de los libros que tengo comprados (ya sea una nueva versión preliminar o una nueva edición de uno ya publicado con agregados o correcciones).

Lo que me llamó la atención al recibir la noticia fue la experiencia completa como usuario de este mecanismo, que comenzó al recibir el mail con novedades de la editorial y esta noticia en particular:

Integrate DropBox

Al hacer click en esta parte del mensaje, mi navegador me llevó al sitio web, a una página a con todo el detalle, donde me explicaba cómo configurar esta opción en mi perfil:

DropBox options

Y en esta parte de mi perfil pude seleccionar qué formatos me interesan personalmente, lo que es muy prolijo. A continuación me redireccionó al sitio de DropBox utilizando (me di cuenta porque conozco el mecanismo) oAuth. De esta forma llegué al sitio de DropBox, donde me identifiqué con mis credenciales de ese servicio (que nunca llegaron al de la editorial), y el sitio de DropBox, que soporta este protocolo, me informó que PragProg.com deseaba establecer un vínculo, compartiendo mi identidad (mi nombre de usuario de DropBox y ningún otro dato).

Lo que me sorprendió gratamente es ver cómo dos servicios muy buenos permiten potenciar sus características utilizando protocolos estándares, brindando algo novedoso, seguro y práctico. Me pareció bueno compartirlo como un buen ejemplo de aprovechamiento de la infraestructura web actual para lograr productos de software más potentes.

 

 

martes, 25 de octubre de 2011

Jornada de Arquitectura de Software en Buenos Aires (gratuita)

Grupo de Usuarios MicrosoftEl próximo viernes 28 de octubre, en la UADE (Lima 717, puerta M, Ciudad de Buenos Aires) el Grupo de Usuarios Microsoft de Argentina organiza una jornada dedicada a Arquitectura de Software.

La arquitectura de software es un área sumamente interesante para todos los que llevamos un tiempo en la industria, aunque también está plagada de planteos grandilocuentes y excesos.

En esta jornada que he tenido el placer de coordinar, y en la que voy a realizar una breve apertura, he tenido especial cuidado en convocar a personalidades que conjugan un amplio marco teórico con una extensa carrera práctica y un estilo pragmático y realista a la hora de encarar la labor de arquitectura, lejos de las torres de marfil y muy cerca de los problemas reales de los clientes, y trabajando codo a codo con los equipos de desarrollo, de los que son un miembro más.

La jornada es gratuita pero requiere inscripción previa.

El programa comprende:

11:30 Acreditación y café 
12:00 Apertura: De vuelta a la sencillez - Martin Salias
12:30 Lenguajes dinámicos y su impacto en ambientes meta-circulares - Hernán Wilkinson
13:30 Web Oriented Architecture - Diego Gonzalez
14:30 Coffee break
15:00 Ecosistemas sociotécnicos: Idilios y desencuentros entre arquitecturas y organizaciones - Diego Fontdevila
16:00 ¿Dónde quedó SOA? Nuevos modelos corporativos - Roberto Schatz
17:00 Virando el modelo de negocio de SaaS a PaaS - Andrés Vettori
18:00 Cierre

Creo que va a ser un evento muy interesante y disparador de muchísimas ideas. Si alguno de los asistentes lee este blog, me encantaría conocerlos. ¡Nos vemos!

viernes, 7 de octubre de 2011

¡Agiles 2011 la próxima semana!

Ágiles 2011Finalmente llega el evento que viene organizándose desde el cierre de Agiles 2010 en Lima, Perú.

Nuevamente en Buenos Aires, en la Universidad de Palermo (Mario Bravo 1050, esquina Córdoba), y desde el martes 11 al jueves 13 de octubre, llega 4ta edición de la conferencia latinoamericana de metodologías ágiles.

Este año serán dos días con más de 50 presentaciones y talleres, más un día completo de Open Space.

Pueden ver el programa completo del día 11, el día 12, y el esquema de tiempo del 13, aunque recuerden que el Open Space no tiene programa porque las actividades se proponen y diagraman en el momento, por la audiencia misma.

La conferencia contará con keynotes plenarias los tres días a cargo de personalidades destacadas como:

Jeff PattonJeff Patton (el día 11 a las 9:30)

Jeff se especializa en la aplicación de técnicas de diseño centradas en el usuario para mejorar los requerimientos, planificación y productos. Algunos de sus escritos más recientes en la materia pueden encontrarse en www.AgileProductDesign.com y en el libro de Alistair Cockburn “Crystal Clear”.

Su libro de inminente lanzamiento dentro de la serie Agile Development de Addison-Wesley brinda consejos tácticos para quienes buscan entregar software útil, fácil de usar y valioso.

Su sesión plenaria (en inglés) se titula: “Us, them, and the problem with common agile practice”, y se enfoca en el establecimiento de un vocabulario y conceptos comunes sobre el valor de negocio que minimicen la distancia entre el equipo construyendo la solución y los clientes o usuarios que son destinatarios, facilitando el diálogo.

Jeff dictará también durante la conferencia un taller de 4 horas titulado “Product Discovery with User Story Mapping”.

James ShoreJames Shore (el día 12 a las 9:30)

James es uno de los líderes de la comunidad de desarrollo de software ágil.

Orador popular sobre estos temas y ha aparecido en muchas publicaciones de la industria incluyendo IEEE Software, SD Times, y Better Software. Su trabajo es referenciado frecuentemente en la prensa y su blog  Art of Agile está frecuentemente entre los primeros veinte recomendados en AgileDaily. También es co-autor de The Art Of Agile Development (O’Reilly, 2007).

Su sesión plenaria (en inglés) se titula “Agile, Past and Future” y se enfoca en los diez años transcurridos desde la firma del Manifiesto Ágil, y en base al pasado reflexiona sobre el estado actual de la práctica y los desafíos de las metodologías y la comunidad de aquí en adelante.

James dictará también durante la conferencia un taller de 4 horas titulado “Agile Product Management”.

Juan Gabardini (el día 13 a las 17:00)

Juan es uno de los iniciadores de la comunidad ágil local, y uno de los motores principales de las conferencias Ágiles y el Agile Open Tour de Argentina. Juan es Ingeniero Electrónico y Licenciado en Sistemas egresado de FIUBA, miembro del IEEE, SADIO, Scrum Alliance, Agile Alliance, Kleer Latinoamérica y Jefe de Trabajos Prácticos en FIUBA, con más de 10 años de docencia universitaria y más de 20 de experiencia en desarrollo de software, enseñanza y consultoría.

Su sesión plenaria será en español, previa al cierre del evento, y se titula “Equipos pequeños y comunidades de práctica”, y trata sobre los beneficios y desafíos que enfrentan los equipos pequeños con miembros que tienen poca experiencia, el manejo de la complejidad tecnológica, las dinámicas grupales, la innovación y las comunidades de práctica.

 

Este es un evento para no perderse, con figuras internacionales, locales, enormes oportunidades de contacto con la comunidad local, colegas, empresas y consultores, y abundante contenido en español, inglés y portugués.

Hay que apurarse ¡antes de que cierre el registro, o se acaben los lugares!

martes, 20 de septiembre de 2011

Video: Google Developer Day en Buenos Aires

Buenos Aires, ArgentinaAyer estuve brevemente en el arranque de Google Developer Day en Buenos Aires, que continúa hoy (ya que a pesar del nombre son dos días). Fue bueno, como siempre, encontrar amigos y compartir alguna novedades.

La charla de apertura se transmitió en vivo a través de YouTube y afortunadamente ya está disponible para que disfruten aquí mismo quienes no llegaron a tiempo.

La agenda completa incluye temas como Google TV, Android, Chrome, App Engine, HTML5, oAuth, OpenID, Google+, App Script, YouTube Live Streaming, y otros temas.

Espero que pronto estén disponible el resto de las sesiones y pueda compartirlas.

Les dejo el video de la apertura, de aproximadamente una hora y cuarto de duración. Pueden saltear los primeros minutos de la cuenta regresiva, y queda sólo una hora.

viernes, 16 de septiembre de 2011

¿Qué significan Windows 8 y su nuevo WinRT? (+videos)

imageEsta semana arrancó la conferencia //build/ (nuevo nombre del tradicional PDC de Microsoft) y el foco principal fue el lanzamiento (en versión preliminar para desarrolladores) de Windows 8 y su nuevo modelo de programación. Para quienes no las vieron, dejo debajo los videos de las charlas de apertura del día 1 (mayor foco en Windows 8) y el día 2 (mayor foco en desarrollo).

Uno de los anuncios más polémicos o complejos fue el nuevo modelo para desarrollar aplicaciones Windows que puedan ser distribuidas a través del próximo Market, siguiendo el modelo popularizado por Apple y al que ya se ha sumado toda la industria, incluyendo Windows Phone.

El siguiente es el diagrama más visto en los últimos días mostrando cómo queda el stack de Windows, y debe tenerse en cuenta que es un diagrama aproximado, porque obviamente simplifica muchas cosas para servir como modelo introductorio:

Plataforma de Windows 8

Básicamente, la mayor novedad está en la sección verde del diagrama (aplicaciones estilo Metro). Este tipo de aplicaciones serán las que puedan distribuirse a través del Market, y su particularidad es que no pueden acceder al API completa de Win32, sino que dialogan contra el API de WinRT, la nueva estrella del mundo Microsoft.

En principio, WinRT es una buena idea. Lo que hace es proveer un contexto de ejecución seguro (similar al de un navegador) para aplicaciones Metro (insisto en que el modelo anterior existe, pero NO se puede distribuir por el Market). Lo que se logra con esto es que todas esas aplicaciones tienen acceso mediado y controlado a los recursos físicos del sistema, y son muchísimo más seguras, aun cuando pueden escribirse básicamente bajo tres paradigmas:

  • En .NET (utilizando el mismo CLR pero con un perfil especial que restringe el API disponible, similar a lo que sucede al escribir aplicaciones en Silverlight), utilizando XAML para el diseño de las interfaces.
  • En código nativo (C/C++) utilizando XAML también, pero sin acceso a Win32, sino a WinRT.
  • En JavaScript, utilizando HTML/CSS para el diseño de interfaces.

Otra característica importante de WinRT es que todas sus API tienen interfaces asincrónicas, salvo las que tienen tiempo de respuesta asegurado inferior a 50 milisegundos. El objetivo de esa decisión es mejorar la respuesta de Windows sobre todo en la interacción con el usuario. Todos sabemos que es normal en Windows tener demoras en el explorador o dentro de las aplicaciones, y mirar por unos segundos la famosa ruedita girando. Con el advenimiento de las interfaces táctiles (uno de los temas más fuertes en Windows 8) esos tiempos de respuesta no son viables. Por eso es importante volver a un modelo más similar al de programación en la web (con JavaScript) basado en operaciones que devuelven callbacks, que liberan el hilo de ejecución hasta que la operación termina.

La contra de este modelo en general es que el nivel de complejidad para manejar callbacks anidados y el control de errores se eleva considerablemente. No es casualidad entonces que tanto en .NET 4.5 como en JavaScript veamos crecer el uso de patrones asincrónicos (en C# 5 a través de las nuevas cláusulas await y async, heredadas de F#) y en JS con la creciente adopción de promesas (utilizando las abstracciones .then() y .when() ) en bibliotecas como jQuery, Dojo y otras derivadas de CommonJS.

Entre otros temores surgidos a partir de las presentaciones del nuevo modelo, está la confusión sobre si .NET ha perdido importancia. Personalmente creo que no, pero Microsoft ha vuelto a las fuentes en algunos sentidos, volviendo a poner énfasis en el código nativo para aplicaciones de alto rendimiento. Los lenguajes manejados dan mayor productividad en general, pero sólo en C/C++ se pueden crear aplicaciones de muy alto rendimiento en velocidad, consumo de recursos e incluso consumo de energía. Estos tres factores no eran tan importantes hasta hace un par de años porque pensábamos nuestra aplicaciones para correr en computadoras de escritorio o servidores, pero el desarrollo de los dispositivos móviles (teléfonos, tabletas, y otros) ponen de nuevo foco en ellos. Y en el otro extremo, aplicaciones del lado del servidor que ahora tenemos que pensar para miles de usuarios concurrentes hacen que tengamos que el ahorro de recursos en alta escala financie con creces el tiempo extra de desarrollo.

En fin, quedan muchos temas disparados que espero seguir tratando más adelante. Cualquier comentario o pregunta son bienvenidos. Les dejo los videos para que se diviertan.

Apertura del día 1 - Windows 8

Apertura del día 2 - Desarrollo y Operaciones