domingo 18 de septiembre de 2011

Travesía en la compra de una tablet

Hacía ya tiempo que me estaba dando vueltas en la cabeza el obtener una tablet, luego al ver a @chochosmx en el SGCE2011 corriendo algunos ejemplos de Scala en su netbook me puse a pensar: - Que tal si mejor me compro una netbook? -.

En fin en eso estuvieron parte de mis pensamientos las últimas semanas y según yo ya me había decidido a adquirir una tableta con Android, entonces que mejor que la Motorola XOOM pues hasta donde tenía entendido era una de las mejores (y pocas) comercializadas en México.

Paso un poco de tiempo y me encontré que en una de las tiendas comerciales mas conocidas había una oferta en la que dicha tableta estaba un 25% por abajo de su precio, entnces me dije a mi mismo: - Esto es una señal - por lo que me dispuse a ir e intercambiarla por el precio solicitado, sin embargo cual fue mi sorpresa que al llegar a la antes mencionda tienda comercial con nombre de ciudad británica, la oferta ya había expirado... :-(

Dada la desilusión sufrida me puse a dar vueltas por la plaza comercial en la que me encontraba y me metí a otra tienda comercial que a mis ojos fué como un palacio pues ahí encontré una variedad mucho mayor de tabletas que en aquella otra que había roto mi corazón, encontré la tan esperada Galaxy Tab 10.1, la misma Motorola XOOM, un modelo de Toshiba y una mas de una marca que hasta ese momento desconocía: la Eee Pad Trasformer de Asus ...

Pues entonces me puse a comparar las opciones que tenía a la vista: capacidad de almacenamiento interno, soporte para almacenamiento externo, duración de pila, accesorios disponibles, soporte en México, versión del sistema operativo, materiales de elaboración y un montón de etcéteras.

Después de esa ardua investigación mi decisión fue: (fanfarrias por favor... :-D) la Eee Pad Trasformer de Asus, me convenció por varias razones que guardaré para un artículo posterior en el que haré un comparativo de las tabletas que evalué, por el momento sólo puedo decir que estoy bastante contento con mi decisión y que de hecho este artículo lo estoy escribiendo cómodamente desde el teclado incluido con la tablet así como la foto también fue tomada con la tablet.


viernes 26 de noviembre de 2010

shlCon

La semana pasada se llevó a cabo el shlCon, evento en el cual se conjuntaron varias ponencias con gente de mucha experiencia en sus áreas de especialidad, hubieron pláticas que cubrieron diversos temas, desde lenguajes de programación hasta resolución de conflictos en el trabajo.
Este evento fue organizado por Spring Hispano en conjunto con la Universidad Popular Autónoma del Estado de Puebla (UPAEP), desde principio a fin fuimos atendidos de manera excelente por los organizadores, haciendo que nos sintiéramos  como en casa :-).
Tuve la suerte de ser invitado al dicho evento para dar un par de pláticas, una de Introducción a Scala y otra de Complex Event Processing, la primera de ellas su objetivo principal es dar a conocer el lenguaje sus características principales y ayudar a dar los primeros pasos con este, la segunda se trata de dar a conocer una técnica que si bien no se basa en conceptos muy nuevos, nos ayuda a ver de manera diferente el tratamiento de eventos y como pueden conjuntarse para crear aplicaciones escalables y con bajo acoplamiento.
Me encontré con mucha gente ya conocida como: @MachinesAreUs@neodevelop@domix@JuanKaram@Ivanhoe y algunos que tuve el placer de conocerlos personalmente como a @juwe.
Al finalizar el primer día del evento tuvimos la oportunidad de convivir en uno de los centros de entretenimiento más concurridos de Cholula llamado "Los containers", un lugar atípico pero bastante agradable y por si fuera poco tenía lugares para todos los gustos :-D.
En fin, particularmente me la pasé muy bien y me gustaría agradecer a @neodevelop@domix y a todo el personal de la UPAEP el haberme invitado a este magnífico evento ;-).
Para aquellos que no pudieron asistir les comparto el material que presente, si tienen alguna duda comentario o mejora a éste les agradecería me contactaran ;-).


jueves 4 de noviembre de 2010

Scala-MUG vive!!!

Scala-MUG Logo

Hace un par de meses di una plática de Introducción a Scala en las  16a reunión de SpringHispano, gracias a una invitación que me hicieron @neodevelop y @domix.

En esa sesión comenté acerca de una idea que venia dándome vueltas desde hace tiempo: Crear una "Tribu" de Scala, que así es como son conocidas las comunidades en el mundo Scala.

Bueno pues después de exponer esta idea, varios de los asistentes entre ellos @MachinesAreUs a quien tuve el gusto de escuchar en su ponencia acerca de Modularización Efectiva y también @abaddon_gtz que fue de los mas entusiastas, les pareció una buena idea y me comentaron que con gusto participarían en la comunidad, entonces me comprometí a crear la Tribu en el corto plazo.

Este proyecto fue postergado por la excesiva carga de trabajo que tuve por esos días, sin embargo algo que me motivó para poner manos a la obra a pesar del trabajo fue la insistencia y apoyo de los colegas antes mencionados.

Entonces me di a la tarea de crear-configurar-idear el nombre, logo, grupo de discusión, canal de IRC, cuenta de twitter y sitio para albergar dicha comunidad.

Pues bien, hoy finalizo el inicio de la comunidad Scala-MUG (Scala Mexican Users Group), esperando que esta Tribu se extienda por todo el largo y ancho del país para incrementar-apoyar el uso de este extraordinario lenguaje llamado Scala.

Así que hoy... Scala-MUG vive!!!

 

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