¡Hola Malena!

La fecha original (esa que se calcula desde el principio del embarazo) para el nacimiento de Malena era por alrededor del veintipocos de Abril.

Más entrados en los meses del embarazo, y ya viendo que iba a cesárea por el tamaño que venía Male y el historial de alta presión de Moni, se fijó la fecha para el 5 de Abril.

Sin embargo, llegando a fin de Marzo, al ver que todo venía muy bien, decidimos pasar esa fecha una semanita más. Que sea el 12.

Este martes pasado, 9 de abril, Moni fue a un control y tenía alta presión, y le dijeron "te quedás". Yo cerré (operativamente) mil cosas de emergencia, y salí corriendo.

A las 18:51 nació Malena (por cesárea), pesando 3766g (150g más que Felipe) y midiendo 50cm (dos cm más larga que el hermano).

Malena

Yo estuve en el parto, como la otra vez, y fue todo más o menos igual, desde mi punto de vista. Todos los partos son distintos, sin embargo, para la madre.

Sí, también era una cesárea, pero era la segunda. Y los dolores son diferentes, las cositas que pasan son distintas, etc. Moni estuvo el primer día con mucho dolor y con un pico de alta presión por ese motivo, pero luego de alguna intervención especializada, todo volvió a su correcto cauce.

Male se prendió bastante bien a la teta (lo cual fueron excelentes noticias luego del baile que tuvimos con Felu por tener succión aplanada), y aunque las primeras 36h estuvo muy molesta por cólicos, se la nota algo pancha :)

Hablando de Felu... él se quedó con mi vieja estos días, y el primer día lo trajeron a que la conozca. Aunque siempre tuvo muy buena relación con "la panza", estábamos curiosos de cómo iba a resultar el "primer encuentro".

La verdad, estuvo genial. Entró preguntando por Male, y aunque paró un segundo para darle a la madre un ramo de rosas que le habían comprado, su atención fue para la hermana. Se sentó en la cama y la miraaaba, :).

Ya es hermano mayor :D

Y la tocaba, medio bruto porque obviamente todavía no sabe tocar a un bebé, pero la acariciaba y le hacía mimos. Y preguntaba... ¿por qué llora? ¿por qué abre y cierra los ojos? ¿por qué hace tal ruido? etc. O directamente daba órdenes: "mamá, dale la teta a Male que llora".

Lo importante es que estuvo muy cariñoso, nada celoso (vamos a ver cómo evoluciona esto cuando la vea "ocupar espacios" en casa), y se portó bien todo el tiempo. Incluso en el momento de irse, que se fue con sus abuelos sin problema (nosotros teníamos la preocupación de si iba a querer irse "sin Moni").

Volviendo a Male y estos días en la clínica... por suerte los grandes dolores del primer día pasaron rápido, el miércoles estuvo mucho mejor, y hoy jueves la verdad es que estuvimos bastante tranquilos, incluso con algunas visitas.

Male y Moni

Nos queda mañana viernes, y suponemos que el sábado a la mañana estaremos yendo a casa. Moni y Male están muy bien, así que mañana recibiremos más visitas y nos prepararemos para el gran segundo cambio en la dinámica de familia, estar los cuatro en casa :D

Comentarios Imprimir

Linux Containers

A nivel de máquinas virtuales de uso genérico (por lo tanto descartando ScummVM o cosas similares) siempre me manejé con VirtualBox. Aunque ahora es de Oracle y no lo miro con buenos ojos, siempre funcionó bastante bien (sin pedirles cosas demasiado locas) y es una buena manera de tener un Windor corriendo aunque uno esté todo el día en Linux (por ejemplo, para poder hacer facturas en la AFIP, la puta que los parió).

Incluso, cuando laburaba en Ericsson, que me obligaban a usar Windor, tenía un VMWare con un Ubuntu instalado (un Gutsy, o un Hardy, creo... cuanta agua bajo el puente!) que me servía para cuando tenía que hacer cosas serias a nivel de red, o para el caso cualquier cosa divertida.

Pero nunca había encontrado una forma piola de tener máquinas virtuales de Linux bajo Linux. Y con "piola" me refiero a que funcione bien y que sea relativamente fácil de armar.

Y acá entra LXC.

Linux container

Aunque LXC no es propiamente dicho una "máquina virtual" (es más bien un "entorno virtual"), igual permite la ejecución de un linux que no se mezcla a nivel de configuraciones ni de paquetes instalados ni de lo que uno puede romper del sistema con la máquina que uno tiene.

¿Para qué se puede usar? En mi caso lo uso mucho en el laburo, ya que mi máquina de desarrollo es un Ubuntu Quantal, pero los sistemas que corren en los servers son bajo Precise o Lucid (entonces tengo un container para cada uno). Y también los tengo pensado usar para probar instalaciones desde cero (por ejemplo, al armar un .deb por primera vez, probar de instalarlo en una máquina limpia).

¿Cómo se arma y usa un contenedor? Luego de instalar los paquetes necesarios (sudo apt-get install lxc libvirt-bin), la creación de un contenedor es bastaaaaante simple (de acá en adelante reemplazar en todos lados el "mi-lxc" por el nombre que ustedes quieran para el contenedor):

sudo lxc-create -t ubuntu -n mi-lxc -- -r precise -a i386 -b $USER

Desmenucemos. El -t es el template a tomar, y el -n es para el nombre que le vamos a dar. A partir de ahí vemos un --, lo que significa que el resto son opciones para el template propiamente dicho. En este caso, que use el release Precise, la arquitectura i386, y mi mismo usuario.

Lo maravilloso de esto es que el container, adentro, tiene mi usuario, porque el home es compartido! Y con esto todas las configuraciones de bash, vim, ssh, gnupg, etc, con lo cual "hacer cosas" adentro del lxc es directo, no hay que configurar todo (pero, al mismo tiempo, podemos "romper" el home desde adentro del container, ojo al piojo).

Para arrancar el container podemos hacer:

sudo lxc-start -n mi-lxc

Y esto nos va a dejar con el prompt listo para loguear, y acá alcanza con usar los propios usuario y password. Una vez adentro, usamos el container como si fuera una máquina nuevita.

Todo muy lindo, pero igual me gustan hacerle algunas configuraciones que hacen el uso aún más directo y sencillo. Y estas configuraciones, a nivel de sistema, son básicamente para que podamos entrar al container más fácil, y usar desde adentro aplicaciones gráficas.

Para entrar más fácil, tenemos que tener Avahi configurado. Más allá de instalarlo (sudo apt-get update; sudo apt-get install avahi-daemon), hay un detalle a toquetear. Adentro del lxc, abrir el archivo /etc/avahi/avahi-daemon.conf y aumentar bastante el rlimit-nproc (por ejemplo, de 3 a 300).

Con esto ya estamos listos para entrar fácil al container. Lo podemos probar en otra terminal; hacer:

ssh mi-lxc.local

Lindo, ¿no?. Pero también está bueno poder forwardear los eventos de X, así podemos levantar aplicaciones gráficas. Para eso tenemos que tocar lo siguiente en el host (o sea, no en el container sino en la máquina "real"): editar /var/lib/lxc/mi-lxc/fstab y agregarle la linea:

/tmp/.X11-unix tmp/.X11-unix none bind

En el container, tenemos que estar seguros que /tmp/.X11-unix exista, y reiniciarlo luego de estas configuraciones.

También necesitamos setear DISPLAY. Esto yo lo mezclé en el .bashrc, poniendo algo también para que cuando entro por ssh me cambie el color del prompt (incluso, poniendo distintos colores a distintos containers). Lo que estoy usando es:

if [ `hostname` = "mi-lxc" ]; then
    export PS1='\[\e[1;34m\]\[email protected]\h:\w${text}$\[\e[m\] ';
    export DISPLAY=:0
fi

Para terminar, entonces, les dejo los tres comandos que más uso en el día a día con los containers, más allá de la instalación en sí: levantar el container (fíjense el -d, que lo levanta como un demonio, total nos conectamos por ssh); conectarnos (fíjense el -A, para que forwardee la conexión del agente de autenticación); y finalmente apagar el container:

sudo lxc-start -n mi-lxc -d
ssh -A mi-lxc.local
sudo lxc-stop -n mi-lxc

Que lo disfruten.

Comentarios Imprimir

Palabras que sustentan

Me encantó este pedacito de la editorial de Eduardo Aliverti para su programa Marca de Radio (que pueden escuchar ahí en la web, o leer acá en Página 12, se las recomiendo).

Ojo que, como él mismo dice, estas palabras son de Julio Rudman....

Dice un poco antes haber recordado que los nombres son sustantivos; es decir, palabras que sustentan. Y dice un poco después que pensó en Evita, el Che, Fidel, Cristina, Evo, Rafael, Lula, Dilma, Hugo o Comandante, Pepe, Néstor. (...) Nadie nombra al presidente Sebastián o Juan Manuel. "¿Alguien recordará al presidente Fernando, o Arturo, o Eduardo, o (...)"? Imposible frenarse y no agregar si la historia nombrará a Mauricio, o a George, o a Mariano, o a Angela, o a Silvio. "La cuestión –termina Rudman– es que estos pueblos del sur del sur han hecho propios los nombres propios de sus dirigentes; los han comunizado (...)."
Comentarios Imprimir

El tutorial de Python 3 en español

Finalmente terminé de armar todo para liberar al mundo la versión traducida al español del tutorial de Python 3.

Realmente había terminado de traducirlo hace un par de semanas. Pero (aunque la generación del HTML fue bastante directo), generar el PDF me trajo bastante problemas.

Por un lado, el PDF generado por inkscape para los headers bonitos que tenemos es incorrecto en algunos detalles, así que tuve que meter un hack en el proyecto pdfrw para evitar que explote con ese problema. Luego habían problemas con páginas en blanco al final de capítulos que tuvieran footnotes, así que metí un workaround en rst2pdf para que reportlab no la cague al generar el PDF. Y dos o tres detalles más, pero menores (gracias Roberto Alsina por toda la ayuda en este bardo). Todos los parches (para poder reproducir la generación de algo copado) están en el README del proyecto.

También tuve que renovar el cómo presentábamos el tutorial, porque ahora tenemos el mismo para las versiones 2 y 3 de Python. Entonces ahora puse que la URL principal del tutorial apunte a un HTML muy bonito (gracias Rodrigo Bistolfi) que te deja elegir si querés ir qué versión del tutorial, tanto en Python 2 o 3, como en su formato: HTML o PDF. También reformulé la página del tutorial dentro del sitio de PyAr.

En fin. Disfruten y pásenlo.

Comentarios Imprimir

El árbol fluorescente

En otra edición de "cosas que hice hace tiempo y me resultaron útiles ahora", les presento un proyecto que nació hace cinco años y medio de una charla de PyAr.

Como explico en este post, para jugar un rato con un amigo hice un árbol Trie, que luego de algunas optimizaciones degeneró en algo que llamé "Fucked Trie".

Este árbol para guardar palabras y buscarlas por prefijo de forma muy muy rápida resultó ser lo que necesitaba en el laburo un par de semanas atrás, pero con un cambio: ahora cada palabra tenía que guardar cierta metadata (que luego se obtendría al buscar).

Entonces, agarré el código original, lo modifiqué un poco, y armé este proyecto nuevo que se llama Fluorescent Trie (porque Fucked quedaba muy fuerte para un proyecto, vissste).

Fluorescent trie

Características de este árbol:

  • Está pensando para mantenerlo en memoria: ocupa poco, y carga rápido
  • Las búsquedas son por prefijo: O sea, entrando con "foo" encuentra "foo" y todo lo que empieza por "foo". No encuentra "grafoo".
  • Las búsquedas son extremadamente rápidas (en el orden de los 10⁻⁴ segundos).
  • Cada palabra tiene un payload que puede ser cualquier cosa.

Si lo necesitan para algo, aprovechen.

Comentarios Imprimir