Vagrant y Puppet

Hay mucha gente que tiene que trabajar a diario con más de un ordenador. En ocasiones, tienen cientos. Las máquinas se estropean y hay que reemplazarlas, así que se pierde mucho tiempo en reinstalar el sistema. Incluso si sólo tienes una máquina, siempre se te olvida instalar algo que necesitarás cuando no tengas red.

Una solución es clonar discos, pero eso es poco flexible. Resulta complejo cambiar la versión de un programa en todas las máquinas.

¿Qué sería lo ideal? Pues poder tener la configuración de tu PC en un repositorio Git o Mercurial. Y poder probar la configuración en una máquina virtual.

Python curses

Python no deja de sorprenderme cada día. Y es increíble la cantidad de cosas que trae “de serie”. A veces me da la sensación de que le saco muy poco provecho.

Hace relativamente poco que me puse a pensar: Si casi todo lo que hago lo hago en consola, ¿por qué no hacerlo más bonito con curses? Pero no me decidía. El otro día decidí ponerme a ello, y he terminado con un sabor agridulce. Por un lado, he descubierto que se pueden hacer muchas cosas. Por otro, casi todas hay que hacerlas a mano.

Pero para que decidas por ti mismo, aquí tienes unos pasos básicos.

Programar sin condicionales

Desde el momento en el que comenzamos a programar, nos enseñan a utilizar el IF. Eso es porque utilizar condiciones es fácil.

Lo difícil es no usarlas.

Y eso es lo que quiero ver aquí.

NOTA: Voy a utilizar Python, pero podría utilizarse cualquier lenguaje. No es necesario tener conocimientos previos de Python.

Actualización 2012-05-12: Transformo referencias en links y añado el apartado de “reflexiones”.

Colorit

El otro día, mi amigo Javi me dijo que es increíble la cantidad de comandos de shell que hay y que pasan desapercibidos. No puedo estar más de acuerdo, para empezar, porque acababa de descubrir este comando: colorit.

Viene con el paquete dict, lo que le hace aún más difícil de encontrar. ¿Y su misión? Pues colorear nuestra salida estándar :D

No lo llames 'util', llámalo 'helper

Cuando estamos programando, es muy fácil encontrar situaciones en las que necesitamos una pequeña función que vamos a utilizar en muchas partes. Esta función no encaja en nungún sitio y encaja en todos, así que no sabemos muy bien dónde dejarla.

Este tipo de situaciones suele terminar con un método estático en algún fichero con otras funciones similares, aunque no tengan mucho que ver entre ellas.

Me gustaría analizar este tipo de situaciones.