viernes 9 de abril de 2010

Un modelo de ramas exitoso en Git

En días pasados Sergio me paso la liga a este excelente artículo, que creo que es una lectura obligada para todos aquellos que usamos DVCS's para llevar el control de versiones de nuestros proyectos.

En el artículo se describe como llevarlo con Git, sin embargo puede ser usado con cualquier DVCS, en mi caso con Mercurial.
A successful Git branching model: "In this post I present the development model that I’ve introduced for all of my projects (both at work and private) about a year ago, and which has turned out to be very successful. I’ve been meaning to write about it for a while now, but I’ve never really found the time to do so thoroughly, until now. I won’t talk about any of the projects’ details, merely about the branching strategy and release management."
El modelo que se describe se ajusta muy bien a mi visión de como llevar un modelo de ramas con un DVCS y creo que es muy fácil de implementar, claro está con disciplina y comunicación entre los miembros del equipo.

jueves 10 de septiembre de 2009

Comet

Actualmente estoy trabajando en un proyecto que entre muchos requerimientos tecnológicos está el de refrescar la pantalla del browser sin interacción del usuario, esto se puede obtener de manera mas o menos sencilla con una técnica llamada Comet, este termino lo acuño Alex Russell quién es creador del Dojo Toolkit, también es conocida como Reverse Ajax, HTTP Server Push, entre otros nombres.

Esta técnica se basa en una mezcla de tecnologías y estándares tales como JavaScript, JSON y Java Servlets. La idea general es abrir una sesión y suscribirse a un Servlet manteniendo de alguna manera suspendida esa conexión esperando que suceda algún evento en el servidor y avisar al browser de dicho evento, como se puede observar en el siguiente diagrama, el cuál es una versión minimalista del que se muestra en el artículo original de Alex Russell:

Comet hosted by Ember


Existen en la red diferentes implementaciones que soportan este modelo tales como CometD que es un proyecto de la Dojo Foundation, DWR, que es una de las implementaciones con mas tiempo en el mercado, los famosos continuations de Jetty y los Future Response Servlet y Abstract Asynchronous Servlet de Oracle Web Logic.

Mucha de estas son implementaciones que están acopladas a los servidores para los que fueron desarrolladas o a un a las librerías de JavaScript propias

También existe una implementación de Jean Francois Arcand, uno de los principales desarrolladores de Grizzly llamada Atmosphere, que pretende ser una implementación cross-application-server, la cual al parecer es bastante sencilla de aplicar a proyectos legacy como nuevos.

Cabe destacar que todos estos frameworks pueden ser parcial o totalmente reemplazados por el suspendable request que es parte de la especificación Servlet 3.0, ya que esta será la manera estándar de llevar a cabo el modelo Comet.

Sin embargo tomando en cuenta que falta algún tiempo para que esta especificación salga a la luz y se generalice su uso, mientras esto sucede podemos hacer uso de los frameworks mencionados anteriormente.

Una de las preguntas que viene de inmediato a nuestras cabezas es: ¿Cuál es el mejor framework?, la respuesta correcta no existe, todos tienen ventajas y desventajas, sin embargo tenemos que evaluar cual se adecua mejor a nuestras necesidades, por ahora para mi las implementaciones de Oracle y Atmosphere son las mas se ajustan al proyecto antes mencionado, por lo cual son en las que estaré profundizando un poco mas en artículos posteriores ;).

Temporalmente

Debido a algunos no-acuerdos financieros con mi anterior hosting, tomé la decisión de no contratar nuevamente el servicio.

Temporalmente estaré usando mi cuenta de MobileMe para hostear a The Geek Inside, aunque probablemente pasará lo que en la mayoría de los sistemas que son temporales: Se queden en producción por largo tiempo.

Y como no se quedó en producción el hosting temporal, después de una "ardua" labor de evaluación The Geek Inside usará Blogger como plataforma de blogging ya que es un servicio que me brinda muchos beneficios y además está respaldado por Google.

Los artículos publicados anteriormente los migraré de manera paulatina, por lo que agradezco su comprensión y apoyo para esta transición.

miércoles 6 de mayo de 2009

Adiós Bazaar, Bienvenido Mercurial

Uno de mis IM's favoritos es Adium y me gusta contar con la versión de desarrollo mas reciente para estudiarla y aprender ya que a mi parecer es uno de los proyectos que pone mayor énfasis en la calidad de su código, además me da la oportunidad de hacer uno que otro cambio para que se ajuste a mis necesidades o simplemente para experimentar.

En días pasados me disponía como cada semana actualizar mi working copy de Adium para compilarla y actualizar mi versión, sin embargo me di cuenta que no bajaba ningún cambio del repositorio de Subversion, lo cual se me hizo extraño ya que este proyecto es uno de los que tienen mayor actividad en su desarrollo, entonces pensé: "Ha de ser uno de esos días en que ningún desarrollador tocó el código", entonces esperé al día siguiente.

Lo intenté como lo había previsto el siguiente día obteniendo el mismo resultado: Sin cambios, eso ya no se me hizo congruente y entré al sitio de Adium en la zona de desarrollo y cual va siendo mi sorpresa que el proyecto había migrado desde Subversion a Mercurial (Hg) :-O, por lo que el repositorio de Subversion ya no estaba actualizado.

Dado a esto bajé la última versión de Mercurial para poder descargar el código fuente de Adium, descargué la versión mas reciente de el código, con todo y su historia ya que Mercurial es un DVCS y cada branch es un repositorio completo en menos de 2 minutos en mi Mac, wow! ese performance me gustó ya que había ocasiones en que bajaba una actualización de código fuente desde el repositorio de Subversion y llegaba a tardar poco menos del tiempo antes mencionado.

Todo esto despertó mi curiosidad por probar de nuevo este DVCS, esto ya lo había hecho un par de años antes, pero la verdad no recuerdo porque me decidí por darcs en ese entonces, sin embargo me dije: "Creo que es un buen tiempo para darle una nueva oportunidad".

Así que entre de nuevo al sitio oficial de Mercurial y en las noticias mas recientes me entero de lo siguiente:
Me puse a investigar un poco mas y me entéro que Bruce Eckel uno de los mayores promotores de Python y autor de varios libros, también migró el repositorio del código fuente de su libro Python 3 Patterns & Idioms de Bazaar a Mercurial.

Después de haber visto estas noticias me di a la tarea de revisar la documentación, la cual esta bastante completa ademas de tener acceso al libro Mercurial: The Definitive Guide, de manera gratuita.

Comencé a leer el libro y poner en práctica los ejemplos y ejercicios que vienen descritos en el y me fue gustando un poco mas cada vez la filosofía pragmática y sencilla para el uso de Mercurial.

También comencé a experimentar por mi cuenta con Mercurial, transformando repositorios enteros de Subversion, Git y Bazaar sin ningún problema y conservando la historia de mis proyectos.

Por otro lado también encuentro Bitbucket que es un repositorio de código fuente basado en Mercurial, que te permite tener proyectos públicos como privados, este tiene diferentes planes desde un gratuito hasta algunos con rentas bastante aceptables, dependiendo el plan que se escoja se tendrá derecho a tener mas o menos repositorios privados.

Es decir Bitbucket es para Mercurial lo que GitHub es para Git, o Launchpad es para Bazaar, aunque en está ultima comparación no es tan certera ya que Launchpad hasta el día de hoy sólo puedes tener proyectos que cumplan con una licencia Open Source, esto es no existen repositorios privados.

Pues bien al final de una extenuante evaluación pienso que Mercurial es el equilibrio de performance y alta eficiencia de Git y la facilidad de aprendizaje, uso y extensibilidad de Bazaar, por lo que después de algunos meses de haber usado Bazaar como mi DVCS de preferencia he decidido cambiarme a Mercurial, aunque los dos tienen características similares como:
  • Extensibles
  • Excelente documentación
  • Pyhoneers
  • Facilidad de uso
Personalmente veo las siguientes ventajas en Mercurial:
  • Performance
  • Baterías incluidas (extensiones)
  • Soporte de glob y regex en la configuración del archivo .hgignore
  • Fácil conversión de repositorios
  • Bitbucket
  • Mercurial Queues
Sin embargo habrá algunas cosas que extrañaré de Bazaar:
  • Los comandos mas suggar-syntax
  • Los repositorios compartidos

jueves 26 de febrero de 2009

Presentación de Bazzar

Como había mencionado en el artículo "Charla en SpringHispano", les comparto la presentación que se di en esa ocasión.


lunes 26 de enero de 2009

Manifesto Peresozo: Hacer Menos. Entonces, Hacer Mucho Menos

Un excelente artículo de Leo Babauta, acerca de porque no es malo, incluso es bueno ser peresozo.

Yo estoy muy de acuerdo con él acerca de que entre mas peresozos seamos buscaremos y encontraremos la forma de hacer menos, sin embargo lo que hagamos tendrá mayor valor.

The Lazy Manifesto: Do Less. Then, Do Even Less. | Zen Habits:
"How many of us don’t get lazy every now and then? Of course, some of us get lazy more than others — my mom (always a hard worker) once told me she gets lazy, but then she just does the work anyway. I replied, ‘Mom, that’s not lazy! That’s the opposite of lazy!’
Lazy is often seen as a bad thing, but I disagree. Lazy is an amazing thing."
(Via Zen Habits.)

domingo 25 de enero de 2009

Charla en SpringHispano

Ayer tuve la oportunidad de dar una charla acerca de Bazaar con la comunidad de SpringHispano y JavaMexico.

Fue una experiencia muy agradable por muchas razones:
  • La gente que asistió era bastante participativa y agradable.
  • Me tocó exponer con Sergio que es uno de mis colegas que merece todos mis respetos.
  • Fui invitado por Domix, otro de mis colegas que realmente admiro por su impulso al movimiento Open Source en México.
La reunión duró aproximadamente 5 hrs. sin embargo pareció que había pasado poco tiempo pues la gente seguía participando, preguntando, debatiendo, en fin me gustó mucho.

Espero al inicio de la siguiente semana publicar la presentación que di, si tienen comentarios acera de esta, por favor ponganse en contacto conmigo.