Born to be geek!

lunes, mayo 09, 2005

Cambio de blog

Este blog ha cambiado de ubicación. La nueva ubicación es http://herraiz.org/blog. En este nuevo blog he puesto dos categorías, una de ellas con los temas geek y otra con el resto de temas.

En este blog no pondré más entradas, pero lo dejaré tal y como está. Seguiré recibiendo una notificación cada vez que alguien ponga un comentario, así que puedes poner los que quieras ;-)

miércoles, mayo 04, 2005

Cómo leer la salida estándar de un comando usando Python

Muchas veces necesito leer la salida estándar de un comando, que he ejecutado desde Python. Suelo usar Python para hacer scripts para administrar el sistema, o para ejecutar tareas repetitivas, y hasta hace poco no sabía cómo podía capturar la salida estándar del comando.

Si lo ejecutamos usando os.system(comando), lo que obtenemos es el código de salida del comando (0 si no hay errores).

Para capturar la salida estándar, tenemos que escribir (habiendo previamente importado el módulo os con import os):

comando = 'ls'
tuberia = os.popen(comando)
salida_estandar = tuberia.readlines()
tuberia.close()
for linea in salida_estandar:
    print linea # O haz lo que quieras ;-)

Cómo descomprimir todos los tar que hay en un directorio

Pues con este comando


ls *.tar.gz | xargs -n 1 tar xzvf


Lo pongo aquí para que no se me olvide ;-)

miércoles, abril 20, 2005

Mi primera vez

Esto lo escribí en el autobús de camino a Algeciras. Como el viaje dura 8 horas, me dio tiempo para contar con todo lujo de detalles...

Mi primera vez



Este es el relato de mi primera vez. Bueno, casi es la historia de mi vida desde que descubrí el software libre. Si alguien llega hasta el final, pasando por todo el texto que hay entre el inicio y el final, obtendrá un premio ;-)

Mi primer contacto con el software libre fue sin saberlo. Fue allá por el año 1997. Por aquel entonces comencé Ingeniería Técnica en Química Industrial, en la Escuela Politécnica Superior (entonces Escuela Universitaria Politécnica) de Algeciras. En el primer curso había una asignatura de 6 créditos denominada Fundamentos de Informática. La mayor parte de esa asignatura era programación en C.

El entorno que se empleaba era DJGPP, distribuido bajo la licencia GPL. El compilador empleado era GCC. Yo por aquel entonces no sabía nada acerca del software libre, y fue años después cuando me di cuenta que aquél fue mi primer contacto con el software libre.

Aquel año tuve también mi primer contacto con Unix. Los terminales de la biblioteca se conectaban mediante telnet a la máquina que tenía el catálogo, y allí se ejecutaba una aplicación para consultar el catálogo. Aquella máquina ejecutaba alguno de los sabores de Unix, aunque nunca he sabido cuál.

En la asignatura que he comentado también se realizaron prácticas en Unix, conectándose a la máquina de la biblioteca, y comprobando algunos conceptos básicos. Todavía recuerdo lo extraño que me pareció que para listar un directorio se usara el comando ls, y que el comando cls no funcionara ;-)

Después de aquello, no tuve más contactos con el software libre hasta el año 2000, cuando conseguí reunir dinero suficiente para comprar un ordenador. En realidad yo ya tenía dos ordenadores: un viejo Spectrum +2 (modelo inglés) y un PCW 8256 (sin disco duro, y con un intérprete de BASIC, otro de LOGO, y el flamante sistema operativo CP/M 3, que ¡no soportaba directorios!). Así que se puede decir que aquél fue mi primer ordenador (por lo menos sí que fue el primero con arquitectura x86).

Casi al mismo tiempo que compré el ordenador, compré un libro de C++, titulado 'C++ Cómo programar', escrito por Deitel y Deitel (padre e hijo).

Para seguir aquel libro, y dado que usaba Windows 98, obtuve el entorno de desarrollo Dev-C++, que se distribuía bajo la GPL, y venía con la distribución Mingw del compilador GCC. Yo por aquel entonces no era consciente de que aquello era software libre. Para mí era simplemente software gratuito.

Tenía intención de desarrollar una aplicación para el análisis de reactores químicos, así que busqué una biblioteca para la interfaz gráfica de usuario de la aplicación. Por casualidad dí con wxWindows (hoy wxWidgets), y entre febrero y junio de aquel año anduve jugando con estas herramientas.

Creo que fue en el número de marzo de la revista PC Actual, cuando regalaron un CD con la distribución de Linux Esware 1.0. Recuerdo que me sorprendió mucho, porque en el CD venía impreso y bien resaltado "Sistema operativo completo". ¿Regalan un sistema operativo?, pensé. Acostumbrado a entrar por la puerta de atrás a la tienda de informática para que me instalaran el Windows 98, me resultó bastante extraño.

Comencé a leer el tutorial que incluía la revista, y me dispuse a instalar ese sorprendente sistema operativo. Mi disco duro tenía 13 GB, y según decía el tutorial, podía instalar el sistema en 1 GB y tendría espacio de sobra. Como según mi Windows, tenía 4 GB libres, pensé que podía "sacrificar" uno para probar aquello.

Metí el CD en la unidad de CD-ROM, reinicié, cambié la secuencia de arranque, y aquello funcionaba. Al poco tiempo ya estaba en el sistema de instalación. Pero claro, llegó el momento clave de las particiones. El programa me preguntó dónde quería instalar el sistema operativo, y me daba una única opción: /dev/hda1. Recuerdo que pensé dos cosas: vaya pregunta más tonta, yo lo quiero instalar en el disco duro; y qué demonios es eso de /dev/hda. Así que simplemente le dí al INTRO. Y no se instaló, obtuve un mensaje que decia "No tiene usted espacio suficiente para instalar el sistema en ese disco duro" ¿Pero cómo que no? Si tengo 4 GB libres. Bah, vaya m**** que es eso de Linux. Y el CD acabó en un cajón.

Un par de meses más tarde ya había terminado mi proyecto fin de carrera, y la verdad, me aburría un poco. Así que fui a la tienda de informática donde había comprado el ordenador, a preguntarles qué era eso de Linux, y cómo se instalaba. El dependiente de la tienda me dijo que aquello era de juguete, que era muy complicado de instalar, que iba a anular la garantía si lo instalaba, que me iba a matar al perro, violar a mi hermana y quemar la casa (o algo así, no lo recuerdo exactamente).

Yo, que soy un poco cabezón, no le hice mucho caso, y le pregunté a los gurús de mis amigos (los mismos que me enseñaron a manejar un ratón en 1997, mientras yo les enseñaba a programar en C ;-). Me explicaron el concepto de particiones, que si no hacía una partición no se iba a poder instalar, etc, etc. Uno de ellos me aseguró que llevaba meses "intentando partir el disco duro" (él lo dijo así). Jolín, pues sí que es esto complicado.

Un poco defraudado me pusé a jugar con el CD de instalación en Windows, y leí toda la documentación que había en él. Resulta que incluía una utilidad llamada FIPS, para redimensionar sin pérdida de información particiones FAT32. La documentación también advertía que si redimensionaba mi partición, podría perder los datos, el FIPS mataría a mi perro, violaría a mi hermana y quemaría mi casa (o algo así, no lo recuerdo exactamente).

Así que me armé de valor, desfragmenté la partición, reinicié con el disquete del FIPS, y me dispuse a convertir mi partición de 13 GB en una de 10 GB. Con el corazón en un puño, veía como el indicador del porcentaje del FIPS se acercaba cada vez más al 100%, y no salía ningún mensaje de error. Casi recé para que no se fuera la luz en ese preciso momento. Cuando terminó su trabajo, reinicié el ordenador, et voilà, ahora tenía un disco de 10 GB. Casi pegaba botes en mi habitación. Sin esperar un momento más, metí el CD de instalación, reinicié, y empecé a instalarlo.

Allí estaba, delante mía, el paso para decidir dónde instalar el sistema operativo. Era él o yo. Aquella habitación era demasiado pequeña para los dos. Pulsé Intro. Me salió una información que no recuerdo bien. Sólo sé que dos o tres Intros más tarde, el sistema se estaba instalando. ¡Ole!

Más o menos una hora más tarde allí estaba el kdm esperando a que introdujera los datos de mi usuario. ¡Qué bonito era! ¡Y más bonito aún el hecho de que mi ordenador estuviera funcionando con otro sistema operativo! Metí los datos, y KDE 1.nomeacuerdo comenzó a iniciarse.

Me quedé con la boca abierta. Entonces ya sabía algo más acerca del software libre, y me sorprendía muchísimo que aquello fuera algo que la gente había construido en sus ratos libres, y "por amor al arte".

La instalación por defecto contenía un montón de juegos de escritorio, y un entorno que me cautivó: el KDevelop. 20 minutos más tarde (en realidad, 20 minutos más tarde de las tres horas que pasé jugando ;-) estaba siguiendo los tutoriales de TrollTech y haciendo una pequeña aplicación con Qt.

Días más tarde descubrí que wxWidgets también estaba disponible para Linux. Y además, mi perro seguía vivo, mi hermana era virgen (o eso aseguraba) y mi casa no se había quemado. ¡El mundo era maravilloso!

Todavía recuerdo las sensaciones de aquella época. Era una utopía hecha realidad. Obtuve algunos libros de la biblioteca de la Universidad, y al final me empapé el "Linux: Installation, Configuration and Use" de Michael Kofler. También descrubí el "Linux: Instalación y primeros pasos" de Matt Welsh, que unos locos de un grupo llamado Lucas habían traducido al español, y la excelente revista Sólo Linux, hoy desparecida y con la que aprendí montones de cosas (como LaTeX, por ejemplo).

Aquel año 2000 tenía la sensación de haber aprendido más cosas que en el resto de mi vida. E iba intentando convencer a todos mis conocidos para que emplearan software libre.

En 2001 terminé la Ingeniería Técnica, presentando la herramienta que había programado. Todavía hoy me llegan correos de universidades de todo el mundo que lo emplean. Tras terminar la carrera, decidir continuar estudiando, y me matriculé en Ingeniería Industrial.

Mi pasión por el software libre fue creciendo. Conocí la distribución Mandrake gracias a la revista Sólo Linux, y más tarde Debian. Incluso escribí una ponencia para las II Jornadas Andaluzas de Software Libre, acerca de wxWidgets (cómo no ;-).

Además, obtuve una plaza de becario en el "Centro Integrado de Tecnologías de la Información" (CITI) de la Universidad de Cádiz, que me posibilitó el acceso a muchos recursos para seguir involucrándome más en el software libre. Era una gozada bajarse las ISOs de Mandrake desde RedIris usando la red de la Universidad. Incluso les enseñaba a mis amigos las tasas de transferencia, aunque ellos (aquellos gurús del ratón de 1997) parecían interesarse más por obtener la última película de la Angelina Jolie que en conseguir la última versión de Mandrake. Bueno, no es tan raro, sobre todo teniendo en cuenta que fueron los que me enseñaron por primera vez Internet, introduciendo "Supermodels" en Yahoo y enseñándome las fotos que salían.

En 2003 me compré mi primer portátil. Afortunadamente no tuve que comprar una licencia de Windows con él. Le instalé Mandrake 9.Mis compañeros en el CITI, informáticos todos ellos (allí era yo el intruso), no apostaban un duro por mí: "Pero hombre, que al final verás que vas a necesitar Windows para cualquier cosa, que con Linux no vas a poder hacer los trabajos, etc, etc". Meses más tarde, cuando tuve que dejar la beca, todos las aulas de mi Escuela ya tenían Guadalinex instalado, y estaban siendo mantenidas por mis compañeros, aquellos que me daban ánimos. Parece que al final el intruso tenía razón :-P

Durante mi estancia en el CITI, me pasé a Debian, primero testing y después unstable, y descubrí Python. Aquella fue la época de la fiebre pythoniana: prácticamente para cualquier asignatura hacía un trabajo en el que estuviera involucrado el Python (o por lo menos el software libre). A más de uno logré convencer (y más de uno no, todo hay que decirlo): por ejemplo, un profesor del Departamento de Física Aplicada, maravillado con una biblioteca para realizar cálculos atmosféricos, y que generaba unas estupendas gráficas con GnuPlot. La filosofía del software libre le resultó muy atractiva, y comenzó a aprender algo más.

A finales de 2003, dos amigos y yo fundamos la asociación sin ánimo de lucro "Campogibraltareños Entusiastas del Software Libre" (CAGESOL), y empezamos a organizar eventos para difundir el software libre. Contamos con la ayuda incondicional de la Oficina de Software Libre de la Universidad de Cádiz. Nuestro primer evento, el Día de Linux, fue todo un éxito, y más recientemente organizamos las IV Jornadas Andaluzas de Software Libre.

Usando Debian escribí mi siguiente proyecto fin de carrera, y lo puse a disposición de todo el mundo bajo licencia libre. Durante la defensa, recibí muchas críticas por haber tomado esa decisión. La verdad es que denominarlo defensa es todo un acierto: durante el turno de preguntas, blandiendo mi espada y mi escudo, más de una vez tuve que explicar en que consistía el software libre, y explicar que no era lo mismo que software gratuito.

Después de aquello empecé a estar un poco cansado de Debian. Mi portátil no se llevaba bien con el kernel 2.6, y allí estaba yo, con el kernel 2.4, sin poder actualizar completamente el sistema y sin poder suspender mi portátil. Dos de los socios de CAGESOL, vigilantes de seguridad y fanáticos de los *BSD (esto para aquellos que argumentan que el software libre es el ombligo de los informáticos y los geeks, sobre el que se miran continuamente), me convencieron, y probé FreeBSD. Aquello fue toda una sorpresa. Mi portátil funcionaba mejor con FreeBSD que con Windows. En Windows (lo reconozco, lo instalé alguna vez), en ocasiones al suspender se colgaba. En FreeBSD nunca le pasó aquello.

Aprendí muchas cosas sobre FreeBSD. Estaba todo el día trasteando: recompilaba el kernel, mezclaba las ramas 5.3 y 6, y claro, un día me lo cargué. Se colgaba al suspender, dejando unos mensajes muy raros en los logs del sistema.

Me armé de valor, y empecé a buscar el mensaje dentro de las fuentes del kernel. Lo encontré, y asombrosamente el problema era muy sencillo de resolver. Así que lo arreglé, y se lo pasé a algunos de los usuarios en las listas de FreeBSD, que también solucionaron su problema. Al parecer era un bug que se introdujo en una de las versiones de la rama 5.2. En la rama 5.3 ya lo solucionaron, aunque empleando una solución mejor que la mía (que era un poco chapuza).

Era julio de 2004 y tenía una sensación rara. Tenía un trabajo que más que llenarme me vaciaba. Me había pegado un pequeño batacazo con mi proyecto por liberarlo bajo licencias libres. El Barça había tenido una mala temporada. Había apostado rojo y salió negro. Mi mujer se largó con mi mejor amigo; ellos conducían un Mercedes y yo una Vespa. Y de repente Baranda y Grex se cruzaron en mi camino. Publicaron una petición de becarios, y les escribí. La verdad es que dado mi perfil (siempre he tenido la sensación de ser un intruso en la Informática) no creía que me hicieran mucho caso. Sin embargo, Baranda me propuso que nos entrevistáramos un día. Fue en Málaga, durante aquel verano. Y la verdad es que me lo pintó todo muy negro, pero no logró desanimarme. Era tan geek que el mero hecho de entrevistarme con Barahona era para mí un logro. En realidad creo que ésa era su táctica para comprobar de qué "madera" estaba hecho. Por ejemplo, a mí me dijo que no iba a tener que programar casi nada, que casi todo va a ser documentación. Y a Juanjo Amor, compañero de beca, le dijo todo lo contrario ;-) A cada uno le dijo lo que no esperaba oir. Jejeje, Jesús, te hemos pillado :-P

Semanas más tarde la sorpresa: me ofrecían la beca. Cuando leí aquel correo no podía para de dar botes en la habitación. Aposté rojo y salió rojo. El Mercedes se caló. Y mi Vespa tenía turbo. Incluso hoy todavía me dura la alegría de aquel momento.

Y otro giro más en mi vida de estudiante (esto de cambiar radicalmente en cada etapa va a acabar convirtiéndose en una costumbre): comencé el doctorado en Informática. Sinceramente, meses antes (qué digo meses, semanas) no hubiera apostado un duro por esta posibilidad. Por fin podría "formalizar" mis conocimientos de Informática.

Meses más tarde, ya como becario en el grupo de Ingeniería del Software Libre en la URJC, descubrí Ubuntu y me volví a enamorar de Linux. Primero usé la Ubuntu Warty, y ahora la Hoary, que me dio algunos problemillas, pero que es toda una gozada.

Y ahora aquí sigo, estudiando el doctorado en Informática, y, sinceramente, sintiéndome todavía un poco intruso, aunque muy feliz por haber podido aprovechar esta oportunidad.

Si alguien ha llegado hasta aquí, ya ha encontrado el premio. Que no, que era una excusa para que lo leyeras toda la parrafada. Si has saltado hasta aquí desde el principio, tú te lo pierdes, no creo que nunca más tengas la oportunidad de leer unas escenas de sexo como las que describo :-P

PD1: Cualquier parecido con la realidad no es pura coincidencia. Durante la redacción de esta parrafada no se dañó a ningún animal (bueno, el que llevo a mi izquierda en el autobús me está mirando un poco raro, pero creo que no ha sufrido daño alguno ;-).

PD3: No, no tengo una Vespa, y no, no tengo hermana; lo de la mujer que se va con el mejor amigo lo cogí del anuncio del Golf, además nunca se pudo demostrar la relación entre Linux o FIPS y la muerte de mi perro.

PD4: Mis más sinceras disculpas por todas estas tonterías. Entendedlo, el viaje es muy largo.

lunes, abril 18, 2005

Tu doctorado, en un periquete

Resulta que hay alguna gente aburrida que ha creado el artilugio soñado por muchos: un generador automático de artículos. En la página del generador, podéis poner los nombres de los autores, le dáis al botón generar, y ya tenéis un artículo listo en varios formatos (casi como en la vida real, sólo que en la vida real no se le da al botón, sino que se le dice a un becario ;-).

Por ejemplo, he aquí un un magnífico artículo, con todas sus gráficas, referencias, etc. A destacar sobre todo la referencia 4, en la que se puede observar el artículo que escribí con Paul Erdös.

Lo mejor de todo es que los creadores del generador, enviaron dos artículos (1 y 2) a un congreso, y el primero de ellos fue aceptado. Si es que es un generador de calidad excelente. Escribe unos artículos mejores que los de los pobres autores cuyos artículos fueron rechazados en ese congreso.

Los organizadores del congreso se han dado cuenta, porque el asunto ha levantado revuelo en muchos foros de internet (1, 2), y han eliminado el artículo del congreso. Pero tiene miga, se han dado cuenta por la publicidad que se ha dado al asunto, no por el proceso de revisión científica del congreso.

Venga, a publicar artículos por la patilla.