Archivos Mensuales: marzo 2011

Aprendiendo Git

Yo dawg, I heard you like clean commits
Pero por favor, ten cuidado si ya has publicado tus cambios

Por fin he empezado a practicar con Git después de proponérmelo hace más de un año. Por ahora sólo he hecho un puñado de commits, pero ya me ha servido para ir aprendiendo algunos trucos bastante útiles, sobretodo reescribiendo la historia de los commits (¡algo impensable en Subversion!).

En primer lugar, en Git es especialmente buena idea hacer commits pequeños (por ejemplo, que sólo arreglan un error de compilación), porque facilita mucho el resto de operaciones que se pueden hacer sobre el historial de commits.

En Git es posible reescribir la historia de los commits para hacer cosas como cambiar mensajes de commits, añadir cambios al último commit realizado o unificar varios commits en uno. Esto último es útil, por ejemplo, para unificar un commit que añade una nueva característica y otro commit que arregla un fallo tonto en esa misma característica en un sólo commit, haciendo creer al mundo que somos programadores perfectos que no cometemos fallos.

He aquí un pequeño resumen de algunos de los comandos que me han sido útiles:

  • git add -u: añade al índice (el paso intermedio entre la copia de trabajo y el commit) los ficheros que hayan cambiado desde la última vez
  • git commit –ammend: integra los cambios actuales en el último commit realizado
  • git rebase –interactive commit: (entre otras cosas) reescribe los mensajes de los commits posteriores a commit

Reescribir el mensaje del primer commit es un poco más complicado ya que no tiene padre:

  • git checkout `git rev-list HEAD | tail -1`: checkout de la raíz
  • git commit –amend: corregimos el mensaje
  • git rebase –onto HEAD HEAD master: hacemos que el resto de commits se basen en la raíz cambiada

Hace años git tenía fama de ser difícil de usar. Aunque algunos de estos comandos no son inmediatamente obvios para los que somos novatos, en general la ayuda de git es muy explicativa y sencilla de seguir. Incluso los propios comandos te dan pistas sobre cosas que querrías hacer (como git status). En internet hay además montones de recursos disponibles:

Por último, un pequeño gran detalle: trabajando con código Java (y me imagino que funcionará con muchos otros lenguajes), git diff te muestra la declaración de la clase que haya sido modificada en la cabecera del diff. Oh snap!

RIM no quiere regalar PlayBooks

Ruin the PlayBook, challenge accepted
El caso es tener un objetivo claro

…y se nota. RIM está a las puertas de lanzar su primer tablet, la BlackBerry PlayBook, y para darle un empujón a su necesitada tienda de aplicaciones, lleva varios meses con un programa para regalar tablets a cambio de aplicaciones. Desarrollas una aplicación para la PlayBook, te la aceptan antes del 31 de marzo y te mandan una cuando salga a la venta. Todo esto es en teoría por ahora, por supuesto.

Sin embargo, da la impresión de que RIM tiene aprensión por regalar cosas (especialmente si son caras), porque desarrollar una aplicación para la susodicha PlayBook es un completo infierno, desde la instalación de las herramientas hasta el envío a la tienda. Es algo que confirman todos con los que he hablado, y que ya dio que hablar en blogs.

Parece claro que, hoy en día, contar con un “ecosistema” de aplicaciones es una parte importante del éxito de una plataforma de móviles. Ya no basta con ofrecer la mejor calidad de llamada (que se lo digan a Nokia), y en algunos casos esto es incluso más que secundario, frente a las posibilidades que ofrece el tener un móvil conectado 24 horas al día a internet. RIM parece creerlo así, y de ahí el concurso de tablets. Hay que cuidar a los programadores, que son los que llenarán este espacio. Sin embargo, creo que no son ellos el único factor decisivo para el éxito de un ecosistema. Esto es una situación de “el huevo y la gallina”: desarrolladores/aplicaciones frente a usuarios. Apple fue la primera que dio el pelotazo con su AppStore cuando ya tenía una base de usuarios considerable. Android llegó a continuación, cuando el pescado parecía que estaba vendido, y sin embargo no ha parado de crecer, tanto en usuarios como en aplicaciones.

En mi opinión, aquí la clave está en que Apple es una y los fabricantes de Android son muchos. A Android le basta con ser lo suficientemente bueno (que sin duda lo es), que ya los fabricantes de móviles que hay detrás se ocuparán de hacerlo llegar a todo el mundo: desde teléfonos tope de gama hasta otros más modestos. El caso es que acabará llegando a todo el mundo, y será una base de usuarios que no se podrá ignorar, a pesar de que (según dicen los estudios) hay mayor cultura de pago en iPhone que en Android. Los grandes juegos de iPhone está empezando a llegar lenta pero inexorablemente a Android, y es sólo cuestión de tiempo el que se inviertan las tornas.

¿Qué pasará con BlackBerry? ¿Podrá crear un ecosistema para mantener a la gente en su plataforma? ¿O le pasará como a Nokia y su Ovi Store? No lo sé, pero me he quedado de un agusto soltando esto 😉

Una semana con KDE (II): primera mañana

I must go, my planet needs me...
BRB KTHXBAI

Hoy ha sido mi primer mañana de uso “real” con KDE, tras estar enredando ayer un poco. Lo de “real” viene porque al final he decidido volverme a Ubuntu, tras ver que estaba perdiendo demasiado tiempo intentando arreglar/documentar algunos problemas que me iba encontrado. Esta noche volveremos a intentarlo.

Lo primero decir que he actualizado a la última versión de KDE disponible en Kubuntu (la 4.6.1) y las cosas han mejorado bastante. Sigo usando los drivers libres de ATI (al igual que en Ubuntu), pero ahora los efectos gráficos están funcionando a máxima potencia. Algunos fallitos gráficos han desaparecido, pero otros siguen (Rekonq, plasmoides varios). En general, además, noto demasiada lentitud y renqueo en el interfaz gráfico a la hora de responder.

A continuación he dejado Rekonq por Chromium. Aunque la idea de Rekonq no es mala (básicamente, replicar la sencillez del propio Chromium), la implementación todavía deja que desear, con renderizaciones no del todo finas, ralentizaciones, fallos gráficos en la ventana, errores en el manejo de la entrada, etc. Queda todavía mucho por pulir. Aún así las fuentes en el propio Chromium no se ven tan bien como en Ubuntu, y probablemente sea culpa de la configuración global de fuentes.

Sigo notando que le falta un pulido al entorno. Por ejemplo, más de un programa se ha abierto con ventanas de tamaño/disposición poco adecuadas (Amarok, la ayuda). De nuevo, en esto puede tener su parte de culpa Kubuntu. El caso de Amarok es especialmente sangrante, con una disposición en la que ni siquiera aparecía la barra con los controles de reproducción. También me he encontrado muchos fallitos o descuidos. Por ejemplo, fallos a la hora de presentar las listas en el lanzador de aplicaciones, o que no se pueda confirmar la edición de una actividad pulsando intro.

A mitad de la mañana he vuelto a Ubuntu. Demasiadas cosas en Kubuntu no estaban funcionando del todo bien: sonido, ventanas, ¡hasta el propio Chromium! Esta noche intentaré solucionar estos problemas, pero ahora hay que trabajar y no puedo perder más tiempo.

Una semana con KDE (I): primeras impresiones

Recién instalado Kubuntu en una partición del disco duro de mi portátil, paso a enumerar algunas de las primeras impresiones que he tenido.

Actualmente estoy usando un modem 3G para conectarme a Internet. Para usarlo en Windows XP, tuve que instalar el software que el propio modem incluía en una pequeña partición de datos. En Ubuntu el modem ya estaba detectado, y sólo tuve que elegir tres opciones (país, operadora y tarifa de datos) en un pequeño asistente. En Kubuntu en cambio, a pesar de usar también NetworkManager y estar detectado el modem, la configuración es completamente manual: tuve que volver a Ubuntu para poder copiar los valores necesarios (por cierto, ¿dónde guarda NetworkManager esta configuración?).

Una vez superado este primer escollo y completada la actualización (incluyendo un particionado dolorosamente lento), reinicio y de cabeza a probar KDE. Usuario, contraseña y…

Options, options everywhere
Nada escapa al ojo de KDE

Oh, ¡está lleno de opciones! Una de las cosas que se le suele echar en cara a KDE (sobre todo si se compara con GNOME) es la sobreabundancia de opciones para controlar hasta el más mínimo detalle.

Una solución parcial para el uso de tantas opciones es tener unos valores por defectos lo suficientemente sensatos como para que las ganas de adentrarse en los diálogos de configuración no sean muy grandes para los usuarios noveles. Sin embargo, encuentro que cuestionable la elección de algunos de estos valores por defecto (y a partir de aquí no voy a ser capaz de distinguir entre KDE a secas o Kubuntu, lo siento). Por ejemplo, Kopete (el cliente de mensajería instantánea) notifica no sólo los mensajes recibidos, si no también cuando alguien empieza a escribirte (antes de haber enviado el mensaje). No sólo cuando iniciaría una nueva conversación con esa persona, si no durante toda la conversación, como se te ocurra quitarle el foco. Por supuesto, podemos contar con la certeza de que habrá una opción para desactivar este molesto comportamiento 😉

Y he aquí un hallazgo positivo en KDE: el menú “configuración”. En general, las aplicaciones de KDE tienen un menú de configuración desde donde se accede a varias opciones: desde el diálogo de configuración típico, a la configuración de las barras de herramientas o los atajos de teclado. Más que el hecho de que haya tantas opciones disponibles, lo que me gustan es que estén bajo un menú en el que su nombre indica tan claramente lo que hay dentro.

En contrase, en las aplicaciones de GNOME se ha tendido a añadir la entrada a las preferencias dentro del menú “editar”. “Editar preferencias” es una frase que suena bien por si sóla, pero el propósito del menú “editar” es bien distinto y no me parece un buen para esta entrada. Intentaré buscar alguna discusión para este (y otros) temas de diseño de interfaces. También podría ser mucho peor, como en el caso de Eclipse, que tiene entradas para buscar actualizaciones e instalar complementos dentro del menú “ayuda”…

No voy a enrollarme mucho más. Algunas cosas más que he notado por el camino: bastantes fallos gráficos en el gestor de ventanas (tengo que comprobar los drivers), navegador Rekonq interesante pero también me está fallando (he hecho un ctrl+W y me ha cerrado la pestaña que no era)… Procuparé reportar los fallos que me vaya encontrando, aunque primero tengo que actualizarme a la última versión.

En próximos posts seguiré hablando de la “usabilidad” (palabrorl) y el aspecto de KDE y sus aplicaciones, pero sobretodo quiero explorar sus características más publicitadas, como Plasma y las actividades. ¡Buenas noches!