martes, 7 de abril de 2009

Tesoros perdidos reencontrados (XIX): La práctica de Ingeniería del Conocimiento

Cuando recuperé, rebuscando entre bolsas de CD viejos, la cantidad de archivos que había dado por perdidos, también recuperé buena parte de las prácticas que hice durante los años de la carrera. Sin embargo decidí no publicarlas dentro de este marco de artículos porque me parecían más bien parte de anécdotas que productos por sí mismas. Aunque es cierto que tesoros anteriores se han solapado con el universo del anecdotario personal y no dejan de ser, de alguna forma, producto de las mismas.

En cualquier caso, y como decía, pese a no tener más fundamento que mi propio apetito y criterio, las prácticas habían quedado desestimadas completamente como parte de esta serie. ¿Y por qué nos das la brasa entonces con una, preguntarán? Pues porque la práctica de Ingeniería del Conocimiento me la he tropezado en Internet.

Tengo el raro hábito de buscarme a mi mismo en Google de vez en cuando. No es algo que tenga programado ni de lo que tenga una necesidad perentoria por realizar. Simplemente, en un momento cualquiera y de repente, me voy a la entrada de búsqueda en la esquina superior derecha del navegador, escribo mi nombre y apellidos, y compruebo qué aparece. En general es casi siempre lo mismo: La orden de caza y captura para devolver el dinero de una subvención, algunas fotos que han usado otros, una consulta que hice hace eones en un foro, algún comentario hecho en algún blog, etc., etc. Pero esta vez me he tropezado con un documento Word escrito a principios de 2000, conteniendo la susodicha práctica. Y me ha resultado curioso. Curioso porque es una de las prácticas que sí estuve a punto de poner en esta serie y saltarme con ello la decisión inicial.

No se puede decir que fuera un estudiante modelo. Lo de apoyar codos no era precisamente lo mío. Yo siempre fui de los que con asistir a una de cada tres clases y con estudiar la tarde anterior, aprobaba. A veces con notas generosas. Eso era en cuanto a la teoría, porque para las prácticas era otro gesta diferente que cantar. Les dedicaba horas, horas y horas sin importarme lo más mínimo. Siempre fui bastante perfeccionista para los detalles y las prácticas de Ingeniería del Conocimiento fueron de las que más me curré. Aunque no las que más. Gracias a eso, nuestro grupo de prácticas obtuvo matrícula de honor.

Y ahí está la parte de anecdotario de esta entrada. Ingeniería del Conocimiento fue una de las últimas asignaturas que cursé en la carrera. Después de algunos años trabajando había decidido retomar y finalizar la Facultad de Informática, antes de que se transformase definitivamente en ingeniería, por lo que me alié con Roberto para repartirnos las prácticas de las asignaturas. Él se curraba a fondo las suyas y yo las mías. Divide y vencerás. Mientras nos íbamos contando los detalles importantes de cara a las defensas. Eso fue algo que no entendió Daniel, el tercero en discordia. Nos vimos forzado a aceptarlo porque a) Roberto era demasiado buen tipo para negarse y b) los grupos tenían que ser de tres, mínimo. Daniel resultó ser un tocacojones de cuidado. No entendía que yo hubiese acordado eso con Roberto. Sólo participaba con nosotros en esta asignatura, así que mi trato con Roberto era algo fuera de su area de interés. En sencia se quejaba de que no hacía nada y no traía preparado nada para las reuniones de grupo. De hecho Daniel tampoco hacía gran cosa y, las aportaciones que hacía no eran demasiado adecuadas para mi enfoque del trabajo. Le repetía una y otra vez que dejase el asunto de Roberto y que confiase en lo que estaba haciendo, que no se arrepentiría. Pero no lo dejó estar y se quejó al profesor, contando que a) que no le dejábamos participar y b) que Roberto no hacía nada. Tras explicarle al profesor por activa y por pasiva que no era exactamente así, la cosa se resolvió y todos tuvimos un diez en la asignatura. Después de publicadas las actas con las notas, no tuvo ni un gesto de agradecimiento. Como dicen por ahí, hay gente pa'tó.

La práctica trataba del diseño de un sistema experto para la concesión de préstamos y créditos por parte de una entidad financiera. En aquella época yo trabajaba en una empresa que daba servicios para una caja de ahorros, de forma que tuve acceso a gente que me explicó, por encima, cómo funcionaba el asunto. El resto, los huecos que no pude consultar, simplemente me los inventé. Así funcionan las cosas.

Si has llegado hasta aquí en la lectura de la entrada del día, aprovecho para comentar que las ilustraciones con las que he ido decorando el artículo fueron todas realizadas con Corel Draw, del que ya he hablado en varias ocasiones. Aunque ahora, revisándola con un poco más de detalle, me da que más bien usé Visio. Eso también lo solía hacer: usar Visio para los diagramas de clases y luego pasarlo todo a Corel Draw para finiquitarlo. Da igual.

En fin, que si tienes ganas de meterte entre pecho y espalda un poco de mi prosa dedicada a las prácticas de Informática, ahí cuentas con la posibilidad de hacerlo con la genial práctica de Ingeniería del Conocimiento. El profesor era un buen tipo y se enrolló con la nota final. Nos la merecíamos (sé que las comparaciones son odiosas, pero el resto de grupos no hizo una práctica tan buena ni de lejos), pero no dejó de ser generoso con la nota final. Más si tenemos en cuenta el numerito del amigo.

sábado, 4 de abril de 2009

MacPorts y Postgresql 8.3

Al preparar la entrada sobre Talend me quedé un poco apenado por no disponer de ningún ejemplo de la herramienta trabajando sobre una base de datos. En realidad debido a que, simple y llanamente, a estas alturas aún no había instalado ningún motor de gestión de bases de datos en mi equipo de uso personal. Cierto que hacía muchísimo tiempo que no usaba mi ordenador doméstico para cosas profesionales. Algo que, sin embargo, parece estar cambiando estas últimas semanas, en las que me entretengo con cosillas nuevas; o revisitando algunas viejas con enfoques distintos.

Las herramientas/aplicativos que he venido usando durante mi experiencia profesional han estado siempre muy ligados a la empresa en la que he trabajado. Como le habrá pasado a todo cristo viviente en esta profesión. La presumible diferencia es que yo cambio de empresa, de promedio, cada dos años. Aunque creo haber encontrado la definitiva, aclaro. Aclaro para los posibles compañeros de empresa que sepan que ya se acerca la fecha de mi segundo aniversario en ella. De momento me quedo.

En el apartado de bases de datos, durante casi tres años hice uso, casi en exclusiva, de PostgreSQL. Hasta su versión 7.1, si no recuerdo mal. Desde mediados de 2002 hasta mediados de 2007 trabajé en exclusiva con SQL Server y apenas me he mantenido al día en los avances implantados o realizados en el primero. Quitando pequeñas cosas realizadas con otros SGBD, como Interbase, Oracle, MySQL, etc., en los que más cómo puedo llegar a sentirme son en los dos mencionados antes. Especialmente en el de Microsoft, dado que es el que mas tiempo -y recientemente- he usado. Pero como es de pago y, para colmo, sólo existe en su encarnación para el sistema operativo de las ventanas, queda descartado.

MacPorts

Desde el sitio de PostgreSQL puedes descargarte un instalador para Mac. Es por todos conocido lo maravilloso que resulta el sistema operativo de la manzana cuando se trata de instalar y desinstalar software. Ahora bien, aquellos que hayan tenido roces, especialmente de índole íntima, con Linux, sabrán lo cojonudo que es disponer de un repositorio de paquetes al que recurrir y evitarte, de esta forma, estar andando con tropecientos instaladores, o desinstalando la versión anterior cuando sale una nueva del software, etc., etc.

Buscando algo por ese estilo para Mac, encontré 'The MacPorts Project' (también en la Wikipedia). Y confieso que me ha entusiasmado. No es Linux, claro está, pero a estas alturas hay unos cuantos (más de cinco mil) ports disponibles. Y tiene una cantidad considerable de opciones. Habrá que profundizar un poco más en él.

La instalación es muy sencilla. Aunque no tan sencilla como las aplicaciones que simplemente funcionan con un arrastrar y soltar. El proceso requiere de un instalador. Si estás acostumbrado a Mac verás que sigue el mismo esquema de varios pasos de todos los instaladores.

Una vez concluye la instalación, el siguiente paso es entrar en una sesión de terminal. En mi caso uso mucho el Spotlight para estas cosas. Con apenas un par de pulsaciones tengo una ventana de terminal abierta (seguro que habrá un camino más rápido para hacerlo). A partir de ahí, port help y a ver qué nos depara el futuro.

Instalando PostgreSQL...

Ya en la ventana de terminal, lo primero es buscar lo que se quiere. En mi caso, como lo que quiero es el gestor de bases de datos PostgreSQL, con un port list postgresql* obtuve la lista de todos los paquetes que empiezan con ese texto.

Dado que no tengo software en producción que deba mantener, y que soy un verdadero kamikaze en lo referente a las versiones, opté por instalar la última versión, que en el momento de escribir esto es la 8.3.7. Así, con dos eggs y sin importarme lo más mínimo cuánto ha cambiado desde la versión 7.x.

Para instalar paquetes es conveniente -y necesario- hacerlo usando el programa sudo, anteponiéndolo en la línea de comando, antes de invocar la aplicación port.

Yo instalé los tres paquetes que hay para la versión 8.3:

sudo port install postgresql83
sudo port install postgresql83-server

sudo port install postgresql83-doc


Cada uno de ellos descarga, además del paquete solicitado, los paquetes de los que depende. MacPorts se a Gentoo Linux en su filosofía, donde por defecto te descargas la versión en código fuente del paquete que se compilará para tu máquina en particular. Lo que puede suponer achicharrar, sea dicho de paso, la CPU de tu carísimo Mac. Por muy doble-núcleo-dos-a-tropecientos-gigaherzios que sea ésta.

Al finalizar la instalación de paquete postgresql83-server tenemos la posibilidad de seguir las instrucciones que vuelca en la consola y establecer que el servicio arranque automáticamente cuando inicie el sistema operativo. Para ello, y tal como aparece en la captura anterior, debemos escribir la línea de comando: sudo launchctl load -w /Library/LaunchDaemons/org.macports.postgresql83.plist.

Una vez se ha indicado que quieres que cargue en el proceso de arranque, queda crear la primera instancia de PostgreSQL. Para ello se debe seguir los pasos indicados en la captura anterior, volcados en la consola por el mismo proceso de instalación del paquete servidor. Tras ello podrás arrancar el demonio desde línea de comando, tal como te indica al final de proceso de inicialización (ver siguiente captura).


Crear un usuario administrador y crear una base de datos


Por defecto el único usuario que puede acceder a las bases de datos creadas tras la inicialización es el usuario 'postgres', el mismo con el que se lanza el servicio del sistema y el único que existe asociado a las bases de datos. Si en este momento se intentara usar el comando psql83, que es el programa que te permite administrar las bases de datos, con el usuario autenticado, arrojaría un error.

Lo primero, por tanto, es crear un usuario con capacidades administrativas y una base de datos asociada a él. Lo segundo sería completamente opcional, ya que es administrador, pero es muy recomendable. En mi caso di de alta un usuario con el mismo nombre que tengo en el sistema y con poder absoluto. Primero haremos una suplantación y entramos con el usuario 'postgres' usando el comando sudo su postgres y, luego, entrando en la aplicación psql83. Dentro de la misma haremos uso de la sentencia CREATE USER. Para obtener la ayuda usaremos el comando \h seguido de aquello sobre lo que queremos informarnos, en este caso CREATE USER.

Ya podemos volver a nuestro usuario (para salir de la sesión de psql hay que usar \q). Pero si intentásemos entrar ahora, obtendríamos que no hay una base de datos con el nombre del usuario, que es la que, por defecto, intenta abrir si solo ponemos psql83. Con el parámetro -l (menos ele) podremos conocer las bases de datos existentes en todo momento.

Para poder crear nuestra primera base de datos deberemos conectarnos a alguna de las ya existentes. Aunque es recomendable no andar toqueteándolas. Para ello usaremos el parámetro -d seguido del nombre de la base de datos que queremos usar. Una vez dentro crearemos nuestra base de datos con la sentencia CREATE DATABASE, tal como se puede ver en la siguiente captura. Saliendo y usando el parámetro -l nuevamente, podrás apreciar que aparece una nueva base de datos en la que el propietario es el usuario que hayas indicado.

A partir de aquí ya queda que se definan las tablas que se deseen. De momento vamos a dejar el asunto aquí. En Internet hay muchos tutoriales SQL que te pueden instruir tanto en el uso del lenguaje de definición de datos (DDL), el de manipulación de datos (DML) como en del de control de datos (DCL).

Mirando al futuro...

Aunque dudo que esta entrada sea realmente de utilidad para alguien, lo cierto es que me he divertido escribiéndola; que al final de eso se trata. Hacía tanto tiempo que no jugueteaba con PostgreSQL que había olvidado la mitad de las cosas y al escribirlas también me aseguro que me servirán de apuntes en el futuro. La senilidad hace estragos en mi memoria a una velocidad vertiginosa.

Por otro lado, si PostgreSQL no es lo tuyo y prefieres algo del estilo de MySQL, solo tienes que hacer port list mysql* y a disfrutar. Y si quieres probar otras cosas, como Mono, siempre puedes intentarlo con sudo port install mono.

Igual dentro de un tiempo escribo algo sobre mis batacazos experiencias con Mono 2.4, o el que toque, en Mac. O, tal vez, me meta con MySQL, ya que se usa tanto y en tantos sitios. O, simplemente, me dedique a otra cosa. El que escribió mi futuro debió traspapelar algunas de las hojas.

viernes, 3 de abril de 2009

Tardes de sofá: la tercera novela de Mundodisco, 'Ritos iguales'

¿Qué? ¿Preparándote para escaquearte otro fin de semana más? Bueno, no te preocupes, que en este espacio te propongo, un viernes más, la forma ideal de pasar, sin pena ni gloria, otro sábado y otro domingo sin dar ni golpe ni mover un músculo con las labores domésticos que tanto tiempo llevas esquivando. Eso sí, nunca le hables a tu pareja de quién te da estas ideas. Ya hay mucha gente odiándome sobre la Tierra.

En esta ocasión vamos a posponer las series de televisión y vamos a intentar reavivar tu materia gris. La poca que te debe quedar a estas alturas. Ver tantas series y eludir con tanto ahínco las tareas domésticas embrutece. Mucho. Te lo digo yo, que lo sé de primera mano. Así que no está de más, un fin de semana de cada cuatro, cinco, seis o los que sean, que te arriesgues a sufrir un derrame cerebral esforzando tus neuronas con la lectura de un libro. El efecto debe ser similar al que se sufre cuando uno está estreñido pero quiere deshacerse, a toda costa y a riesgo de reventar las venas de la frente, de tan molesta y maloliente carga, por la vía del sobre esfuerzo esfinterrectal.

Hace ya unos cuantos meses comenzaba con la serie de libros de Mundodisco, narrativa hilarante y espléndida por obra y gracia de Terry Pratchett, comentando las dos primeras novelas de esta peculiar y extravagante mezcla de fantasía atípica con crítica satírica y mordaz. Así que, por eso de seguir el orden cronológico de publicaciones, que no necesariamente el orden de lectura, toca hablar de 'Ritos iguales', tercera novela de este particular universo y primera de la saga o trama argumental de las brujas. En realidad en singular, porque la única bruja que aparece en la novela es 'Yaya' Ceravieja, personaje imponente y autoritario que, de tratarse de una película, llenaría la pantalla con su sola presencia cada vez que apareciese. La más entrañable 'Tata' Ogg aparecerá en novelas posteriores.

Desgraciadamente habrá que esperar hasta que se forme el aquelarre completo para que las novelas de las brujas ganen en genialidad, pues esta novela es algo más floja que las dos primeras de la serie. Pese a que el comienzo es muy bueno, con las típicas meteduras de patas y equívocos característicos de esta serie, que crean el caldo de cultivo de los buenos momentos, decae rápidamente y, salvo por momentos puntuales que te obligan a reír a mandíbula batiente, la mayor parte del texto pasa sin pena ni gloria por delante de las retinas. Eso sí, no llega a resultar aburrido en (casi) ningún momento y, aún no siendo la mejor de las novelas de Mundodisco, sí que no está de más pasar unas horitas leyendo literatura ligera y entretenida. Reconozco que me lo pasé bien en que hace un guiño a la mecánica cuántica y a cómo la entiendes pero no sabrías explicarla.

En cualquier caso, y dado que la alternativa es ponerte a pasar la mopa por toda la casa, o tender los calzoncillos, que por otro lado buena falta hace ya, no desestimes la ocasión de volver a excusarte y tírate en el sillón a leer. Tu mente te lo agradecerá y tu pareja te odiará un poco más.

Recomendable por el simple hecho de formar parte de la serie Mundodisco. Y poco más.

Nota: He prestado mi ejemplar, así que he tenido que recurrir a la intesné para conseguir una reproducción aceptable. La encontré aquí.

Nota (19/sep/2010): Como suscriptor de la edición que sacó Altaya, recibí tres láminas con dibujos «extendidos» de sendas portadas de libros de la serie. Una de ellas se corresponde con 'Ritos iguales'. Dado que me desharé de ellas consideré oportuno dejarla aquí escaneada para la posteridad. Aunque el dichoso escáner está empeñado por dentro.

miércoles, 1 de abril de 2009

El 'garbage collector'

En más de una ocasión he dicho que me gusta usar el transporte publico. Soy usuario y defensor del mismo. Por varios motivos, de los cuales ninguno viene al caso. Sea como fuere, desde que la empresa se mudara a Tafira, en diciembre, vengo compartiendo guagua con los niños y niñas que estudian en el campus. Lejos de sentirme avergonzado, me hace gracia ser el abuelo de la clase. Rara vez comparto el habitáculo automotriz con otro carcamal. Rara vez, digo, pero no significa que no aparezca de vez en cuando otro vejestorio.

Hace unas semanas coincidí con un conocido-desconocido -luego lo explico- de mis tiempos de carrera: el 'garbage collector'. Digo conocido porque coincidimos en el tiempo durante los (mis) últimos años de carrera; desconocido porque, sinceramente, era un tipo harto raro con el que nunca intercambié una palabra.

Entre los estudiantes de otras carreras, los que estudiamos informática, antes contemplada como ciencia, luego como ingeniería, y ahora como menos que nada, tenemos fama de ser unos bichos raros. Y lo cierto es que, en cierta medida, de forma muy general, y salvando las prudentes distancias (cósmicas), autoridad no le falta a esa creencia. Pero si tanto en el infierno como en el clero hay niveles, escalas y estamentos, entre los bichos informáticos no deja de haber grados de rareza.

El bicho más raro con que me tropecé en los años de carrera en la Facultad de Informática, fue un chico de rasgos algo simiescos, sobrado en kilos, talante introvertido, de aspecto desaliñado y, aparentemente, falto en brillantez intelectual. Aquel chaval dejaba a la altura del betún a cualquier aspirante al título ‘Rarito del Año’. De sobrenombre ‘garbage collector’ tenía la extraña afición de repasar minuciosamente el contenido de las papeleras que había en la sala de estudios, en busca de apuntes y garabatos que otros estudiantes hubiesen tirado en ellas. Parecía adicto a los resúmenes que otros estudiantes, después de hacerlos y estudiarlos, desechaban para su reciclaje.

El garbage collector tenía un procedimiento reiterativo: Se acercaba a una de las papeleras, introducía las manos y escogía unos cuantos papeles. Los revisaba por encima, de pie en mitad de la sala, y se los llevaba a su mesa de estudios. Luego volvía, tiraba los anteriores y escogía otros nuevos. Una especie de “do-while-true” o bucle infinito.

Lo más extraño, a la par que asombroso, que le vimos hacer, fue recoger unas hojas, quitar con los dedos un chicle que las mantenía pegadas, y llevárselas a su mesa-guarida. El chicle, por supuesto, estaba masticado y remasticado por otra persona que había tenido a bien usarlo como pegamento para sellar sus notas.

No había nada más desestresante en los días de duro estudio, que descansar una rato las retinas de tanto apunte, y espiar, transformarnos en voyeurs, escondidos tras las cristaleras de las peceras, los movimientos de aquel extravagante individuo. No es que me sienta, a estas alturas, especialmente orgulloso de ello, pero es lo que había. Algo así como un extraño rito de si no te burlas es que eres igual de rarito y practicabas algún oscuro arte similar al de aquel pobre espécimen. Eso y que, en el fondo, parece un alivio que haya alguien más raro que tú del que poder burlarte. Además, y poniéndome en plan house, es casi un imperativo biológico discriminar, de una u otra forma, a los que se comportan de manera diferente y evitar con ello poner, de forma manifiesta, en peligro la herencia genética que se podría traspasar a la siguiente generación. Y aquí viene las preguntas que nunca me había hecho y sí me hice cuando lo vi entrar en la guagua hace unas semanas: ¿qué sentirían sus padres? ¿Cómo será tener un hijo así de... complejo? Y, mas importante, ¿es consciente de que es, a ojos de todos, un bicho rarísimo? ¿Y si lo es, qué pasará por su mente? ¿Drásticas y sangrientas formas de ajustar las cuentas?

El aspecto que llevaba era el de alguien que sigue estudiando, con su bolso y sus apuntes. ¿Llevaría en su bolso apuntes ajenos recolectados de las papeleras? ¿Mantendría viva esta extraña filia? ¿Qué haría con ellos cuando llegase a su casa? Más kilos y más viejo, pero transmitiendo el mismo talante y aspecto que transmitía hace diez años. Era el mismo, sin lugar a dudas, y aunque mi memoria no es lo que era. El garbage collector en persona.

Aunque también cabe la posibilidad, claro, que fuese un estudiante ejemplar en aquellos años, que ahora sea profesor y que esa sensación de ser un bicho raro entonces, y seguir igual ahora, no sea más que un prejuicio por mi parte. ¿O estoy en lo cierto y pasará a ser un referente de bicho raro en las próximas generaciones de informáticos? Para la mía lo fue, y es un personaje recurrente que reaparece en las conversaciones cada cierto tiempo. Confieso que tengo curiosidad, así que igual, la próxima vez que me lo cruce, le pregunto.

¿Mientras quede con vida un informático que haya estudiado en estas décadas, seguirá existiendo el recuerdo del 'garbage collector'?

sábado, 28 de marzo de 2009

Primeras experiencias con Talend Open Studio

Desde hace bastante tiempo -en años se mide- sigo, aunque de forma muy desigual e inconstante, una serie de líneas/modas de pensamiento/tecnológicas dentro de mi profesión que me atraen mucho, pero que por mi naturaleza de tendencia holgazana, constantemente las dejo de lado, o apenas leo algo sobre ellas de vez en cuando.

Uno de esos temas sobre los que de vez en cuando vuelvo a retomar durante unos días, y luego vuelvo a abandonar, como la novia en otro puerto a la que visito una vez cada muchos meses, es el de la inteligencia empresarial (o business intelligence, que dicen los angloparlantes). En particular siempre me llamó la atención, dentro de la BI, la minería de datos (data mining) usando técnicas de inteligencia artificial. Pero ya lo he dicho antes: soy muy ganso y me conformo con leer de vez en cuando sobre el tema, en lugar de practicar. Vamos, como el que le gusta leer sobre fútbol, o verlo en la tele, pero luego no lo practica. Espera, coño, que sí que hay varios millones de pobladores en el país que hacen precisamente eso...

He tenido suerte y en la empresa que trabajo me pidieron un prototipo en el que ofreciera una serie de gráficas (¿recuerdan la entrada en la que mencionaba el asunto de las gráficas?). En la primera ocasión, por cuestiones del directo y aprovechar inversiones previas, todo se hizo de forma programática. Pero esta vez lo quise enforcar por una línea distinta. No quería caer en la tentación de andar programando. ¿Les había dicho alguna vez que soy un buen programador, por mucho que le pese a los envidiosos y a mis enemigos? Lo soy porque mi código es de calidad. Tiene que ver con cómo sientes el código... Pero no es de eso de lo que quería hablar. Sigo. Teniendo en cuenta que quería resolverlo sin programar, me puse a buscar en el mundo open source, que para el español medio es sinónimo de gratis, herramientas ETL (extraer, transformar y cargar -load-). Programar es un placer, difícil de entender si no lo has hecho de verdad, pero incrementa el coste total de propiedad de los sistemas de información. No necesariamente programando se es menos productivo, no se confunda usted. Simplemente digo que usando este tipo de herramientas, en concreto las ETL, se reduce el coste de propiedad. Pero eso lo defenderé en otra ocasión.

Buscando y rebuscando di con Talend y Kettle. Como tenía que decantarme por uno para empezar a montar contrarreloj las pruebas, elegí la primera de las dos. Más adelante le meteré mano a la segunda. Fue una sorpresa, añadida, encontrar que se podía usar en Mac (y en Linux). Así que después de juguetear en la empresa durante unos días con la versión para Windows, decidí instalarla en casa para intentar profundizar algo más con ella. Independientemente de lo que ocurra a partir del prototipo montado, sí que me gustaría seguir mejorando mi conocimiento sobre ella.

Instalación en Mac

El primer sobresalto me lo llevé cuando, nada más copiado el directorio (en Mac la mayoría de las aplicaciones se instalan copiando el archivo o carpeta dentro de la carpeta de aplicaciones), comprobé que el doble clic sobre el icono de la aplicación provocaba un mensaje del tipo "no compatible con la versión actual". ¿Cómo? Comprobé varias veces más que había descargado la última (calentita, calentita) versión sobre la que están trabajando ahora: 3.1.0 M3 (beta).

Afortunadamente no me costó mucho dar con la respuesta en el foro de la comunidad de Talend y que se resume en:

a) activar el bit de ejecución (chmod +x ...) del ejecutable

b) mostrar el contenido del paquete (ofrecido en el menú contextual sobre el icono de la aplicación), y

c) editar el archivo info.plist para cambiar el nombre del ejecutable (que por defecto está como 'eclipse') por el de Talend.

Después de eso, doble clic (o Spotlight) y aparecerá la ventana de arranque normal, junto al insistente diálogo de registro.


Principio filosófico-funcional, o... ¿cómo va esto?

Talend Open Studio es otro proyecto más que se basa en el aceptadísimo IDE de código abierto Eclipse. Pero para empezar a usar el IDE debes crear un proyecto nuevo.


Tras rellenar los campos necesarios, y decidir si quieres que sea un proyecto Java o uno basado en Perl, genera código para los dos lenguajes, se abrirá el IDE, propiamente dicho, con la ventana de trabajo dividida en diferentes zonas o áreas.

Aunque es mucho más que un editor de procesos -esta entrada no intenta hacer un repaso exhaustivo de la herramienta- se dirá que, en modo muy -muchísimo- resumido, la esencia del proceso de construcción es usar el panel de edición de jobs a modo de pizarra donde se irán arrastrando y soltando los diferentes componentes que provee la herramienta, uniéndolos de forma que se cree un flujo de trabajo (workflow) entre ellos. Cada componente representará un estado y una tarea del proceso y, como si de una caja negra se tratara, se encargará de realizar una serie de transformaciones sobre los datos de entrada para generar unos datos de salida. Las estructuras de datos de entrada y salida vienen a denominarse esquemas.


En su versión actual, Talend Open Studio ofrece una surtida cantidad de componentes dedicados a recoger, almacenar y procesar los datos de formas diversas. Todos ellos están clasificados por áreas en la paleta de componentes que, de forma general y preestablecida, aparece a la derecha en el IDE. Aunque, por si los que ya vienen de serie pudieran ser pocos, se pueden obtener más acudiendo al ecosistema de Talend. O los puedes fabricar tú, si tienes dotes de programador.


Por último, y dado que el simple hecho de soltar un componente en el panel de edición no es suficiente (la inteligencia de la herramienta no llega hasta el punto de adivinar qué demonios quieres hacer exactamente), hay que configurar la etapa o tarea. Cada componente tendrá sus parámetros de configuración. En la siguiente imagen se muestra el caso del componente tFilterRow, que en el ejemplo que preparaba para este artículo, se encargaba de filtrar los artículos resultantes de una importación desde el canal RSS cogiendo únicamente los que tenían entre doscientas y cuatrocientas palabras.


Asegurándose que el primer paso es (o los primeros pasos son) elementos que leen datos de sus fuentes, y que los de finalización se corresponden con salidas, configurando adecuadamente los estados intermedios, se tiene el proceso o trabajo deseado.

Ya dije que iba a ser muy resumido. Hay mucho más. Cosas como los metadatos, los contextos, que el código generado puede ser invocado como un servicio web o como un proceso de sistema para incluirlo dentro de la programación del cron, etc., etc. Sin olvidarnos que, si lo que te gusta es programar, siempre podrás hacer uso de los componentes de programación (tJava, tJavaRow, etc., etc.) que te permitirán hacer cosas más allá de los límites de la imaginación.

Documentación y curva de aprendizaje

Reconozco que con el open source sufro de prejuicios -tal vez infundados- sobre la documentación disponible. Por lo general creo que la documentación es, como lo es al final en todos los proyectos, sean estos o no lo sean de código abierto, la gran maldita y descuidada. Ese sentimiento no desapareció cuando intenté dar mis primeros pasos usando únicamente la guía de usuario, algo pobre, y apoyándome en la guía de los componentes, algo incompleta. Mis primeras horas resultaron muy frustrantes. No terminaba de ver sentido a ciertas relaciones y las formas en que se usaban ciertas propiedades en las iteraciones, por ejemplo.

Ese sabor de mal documentado duró hasta adentrarme en la web de la comunidad, donde hay unos cuantos tutoriales que pueden ayudar mucho a reducir la curva de aprendizaje. Aunque no todos los componentes están tan bien documentados -al menos en lo que he tratado de buscar yo- como el tMap, el componente estrella de Talend, y para hacer algunas cosillas sudé tinta china buceando en las profundidades más abisales de Internet.

Pero lo cierto es que, con lo que encontré en Internet, en tres días, tenía montado un prototipo que ha estado funcionando durante una semana, con cinco tareas no demasiado complejas, hay que confesarlo. Ahora bien, sinceramente creo que para tener la soltura suficiente para considerarte un 'experto' en el entorno, hacen falta no menos de tres semanas. Tal vez más. Hay muchísimas cosas (y componentes) que no resultan triviales y que te obligan a buscar y rebuscar en el foro para intentar encontrar una solución, de encontrarla, o una explicación. Por ejemplo, estuve una hora intentando conseguir que una bifurcación de datos se pudiese volver a unir. Tuve que aceptar, tras leerlo en el foro, que eso, simplemente, no se podía hacer.

Apunte final

En el primer borrador de este post había preparado un ejemplo haciendo uso del componente tRSSInput enganchándolo al blog del amigo Adastra. De los diez artículos que devuelve el componente, la mitad, o sea cinco, tenían entre doscientas y cuatrocientas palabras. La idea era meterme un poco con su capacidad de generar texto: si lo conectases a un ordenador serviría para probar el ancho de banda de la red. Pero acabó siendo un proceso poco elaborado, resultando poco útil como ejemplo o para realizar un repaso de los detalles más destacables. Tampoco era posible usar uno de los procesos desarrollados para el prototipo de la empresa. La alternativa era desarrollar un ejemplo sintético desde cero. Como que no. En cualquier caso, aunque no haya explicado cómo hice el proceso, queda, sin embargo, para la posteridad en la captura.

viernes, 27 de marzo de 2009

Tardes de sofá: La divertida 'Boston Legal'

Vulgarmente, y según qué enemigo lo proclame, se puede llegar a aducir que me lo trago absolutamente todo. Aunque eso, creo haber demostrado con el tiempo, no sea del todo cierto. Si he de tragar, al menos quiero que haya sentimientos durante el acto. A mí también me gusta que me traten con cariño.

Sea como fuere, lo cierto es que no suelo hacerle ascos a casi ningún género. Me gustan las policiacas, las de abogados, las de ciencia ficción, las de fenómenos extraños, etc., etc., etc. Recalco el casi subrayado anterior porque detesto profundamente y a muerte (a poder ser el fallecimiento violento de sus guionistas) los culebrones: para dramones ya tengo la prensa seria, el proceso de Bolonia y la corrupción despiadada que reina en la casta política de este país. Lo único que pido es que la serie mantenga algo de coherencia en el tiempo y resulte entretenida. Eso suele ser suficiente para perder mi tiempo con ella.

Este es el caso de 'Boston Legal', serie de abogados que aborda la temática de los juzgados yakies (¿dónde iba a ser si no?) de forma atípicamente cómica, y que concluyó su emisión en los e-e-u-u en diciembre del año pasado -2008- tras cinco temporadas (o cuatro y media, si tenemos en cuenta que la última tuvo la mitad de capítulos).

Empezando a visionar la segunda temporada (se está emitiendo la cuarta en alguna cadena de las plataformas satélite), un elemento que me agrada profundamente es que no cae -al menos de momento- en intentar profundizar en exceso en las relaciones entre los personajes y derivando, con ello, en culebrones aburridos, lacrimógenos y lastimeros. El llevar más allá las relaciones entre los personajes, que tienden a acabar en cuestiones de cama (vulgarmente follando, se diría), suele ser uno de los mayores pecados que cometen casi todas las series. Pecado que acaba jodiendo la temática y siendo mortal para la serie. En este caso, de momento y como decía, mantiene una justa y agradable tensión cómica capítulo tras capítulo. Y hay más de un momento en el que no puedes evitar partirte la caja con un ataque de carcajadas.

Varios premios avalan las actuaciones, en general de todos los actores, pero entre las que hay que destacar, obviamente, las de James Spader y de William Shatner (otrora El Capitan Kirk -no ha habido otro después de él-, ahora como un magnífico y destartalado Denny Crane). Algunas de las situaciones en las que se mete esta atípica pareja, y las formas en que salen de ellas, merecen firmar exigiendo la canonización del guionista.

El apartado de los doblajes es igualmente estupendo. Es uno de esos casos en que agradeces que en España se tomen tan en serio el doblaje. Poco más que decir al respecto.

En conjunto una serie redonda y recomendable.

Sabiendo que eres una persona de moralidad dudosa, daré por hecho que no servirá de nada proponerte que vayas a comprarla y supongo que, si te van este tipo de series, acudirás a tu oscuro portal de acceso a las miserables redes de mafias del peer-to-peer para empezarar a descargarla de forma compulsiva (recuerda, ya hay casi cuatro temporadas disponibles). Pero aunque te recomiendo pagar por ella, que lo merece, haré la vista gorda. Merece aún más ser vista. No pierdas la oportunidad por tonterías del tipo "si eres legar, eres legar". ¿A qué estás esperando para poner la mula a funcionar?

martes, 24 de marzo de 2009

Tesoros perdidos reencontrados (XVIII): 'La demoledora'

Hacía tiempo que no publicaba algo un martes, día dedicado, que no reservado en exclusiva, a esos pequeños tesoros que en su día perdí y en su día recuperé.

Hoy toca otro relato. Uno de los últimos, si no el último, que tengo redactado de forma completa.

Lo escribí en una época realmente oscura de mi vida. Tal vez el que llegué a considerar el peor año de mi existencia: 1997. Especialmente hiper sensibilizado con casi cualqueir cosa, me enteré de la suerte que estaba corriendo la sobrina de unos amigos de la familia. Dieciocho años, una operación complicadísima y pérdida parcial del habla y de la capacidad congnitiva. Aguantó tres meses más, nada más.

Intoxicado por esta amarga experiencia ajena y por mis propias penalidades, que nada tenían que ver con dolencias de carácter médico, aclaro, pero sí mucho con desamores, escribí este pequeño relato que, en esta ocasión, no llegó a publicarse en el fanzine de la escuela. Hacía ya bastante tiempo que no se publicaba el propio fanzine.

Un relato algo triste que no recomiendo leer. Especialmente si no te encuentras en uno de tus mejores momentos.

------ 8< -------------

La demoledora


Llevaba varias semanas acudiendo puntualmente a su cita con el destino, como a él le gustaba llamarla. Llegaba a las ocho y media de la mañana a la ladera, frontera de uno de los barrios periféricos de su ciudad natal, y se sentaba aproximadamente en el mismo sitio. Una vez allí, se quedaba mirando, estudiando absorto, a los trabajadores de la construcción y la maquinaria que estos manejaban. Estaban derribando unos edificios de viviendas, en precarias condiciones tras veinte años, para construir a continuación otros más grandes, más feos y, posiblemente, menos duraderos.

Todas las mañanas salía de su casa a eso de las seis y cuarto. Daba un beso a su madre, otro a su padre y se marchaba sin emitir ningún sonido. Veía las tristes caras de sus padres, comprensivos, evitando decir nada; pero expresando con su mirada el dolor y la pena que los embargaba. Una vez en la calle, caminaba y caminaba, sin rumbo fijo, durante casi una hora. Al cabo de ese tiempo tomaba rumbo a la obra.

Casi siempre salía con su libro favorito, "Crónica de una muerte anunciada", en el bolsillo. Cuando en la construcción descansaban, él aprovechaba para leer y releer algunos pasajes del libro, que ya amarilleaba del uso y cuyas puntas de las hojas estaban ya bastante estropeadas. A él le era indiferente, se sumergía en aquellas palabras, en aquellas frases y párrafos; era como si tuviera la oportunidad de leer el futuro de los acontecimientos en papel y al tiempo estar seguro de que, aún conociéndolo con exactitud, nada podría hacer para remediarlo. Eso era lo que le pasaba, se decía a sí mismo: "conozco mi destino, pero no puedo hacer nada por cambiarlo".

Al mediodía, recorría los ocho kilómetros a que distaba el hogar paterno y recogía unas pocas frutas de la nevera para, acto seguido, volver a salir. Por la tarde vagaba sin rumbo. "Es lo único que puedo hacer para combatir a mi destino preestablecido: imponerme una anarquía absoluta por las tardes", se repitió miles de veces. Generalmente acababa en un parque y se sentaba a leer su libro y a contemplar a las personas que paseaban arriba y abajo. Les miraba a los ojos buscando aquello que escondían en lo más profundo. Ese sufre un desamor, ese es muy feliz, ese es estúpido, ese es un ladrón...

Muchas veces se llegaba hasta el hospital en el que trabajaba su madre de enfermera y se quedaba escondido, vigilándola al salir. Mirándola desde la distancia a los enrojecidos ojos. Los primeros días era visible que había estado llorando, pero ahora simplemente tenía la mirada completamente ida, huida de su conciencia. Siempre se quedaba allí quince o veinte minutos, a la puerta del hospital, esperando a que el padre acudiera a recogerla. Él siempre le preguntaba si llevaba esperando mucho, pero ella le mentía: "Acabo de salir hace dos minutos". Respondía quedamente.

Luego, caminaba durante dos horas hasta su casa. Besaba en la frente a sus padres, cenaba algo y se acostaba en su habitación. No dormía. Por lo menos no durante las primeras horas. Pensaba y pensaba, siempre dándole vueltas a la misma idea: a la muerta. A Su Muerte. Cuando lograba dormir soñaba con su demoledora.

Hacía ya dos meses que le comunicaran la noticia. Pidió a sus padres estar presente. "¡O de lo contrario armo la de Dios!", amenazó. Era un chico tan responsable, que sus padres, al ser amenazados por primera y única vez, de aquella forma tan decidida, no supieron como reaccionar y le concedieron estar presente. El médico, neutral, distante y ajeno como exige la profesión, resumió el diagnóstico confirmado por años de experiencia: Tumor. Riesgos inadmisibles. Dañor cerebral. Inoperable. Sentencia de muerte.

- Lamentablemente no podemos hacer gran cosa- expresó, con la misma tonalidad neutra que empleaba con todos sus pacientes, mientras señalaba la placa del escáner –. La profundidad hace inviable una intervención quirúrgica. De todas formas, vamos a intentarlo todo. Las últimas técnicas en quimioterapia han conseguido mejorar y prolongar...

- No se preocupe. Me hago cargo – interrumpió. Tras unos segundos de parecer meditar algo, y sospechando que se esperaba alguna palabra de perdón a su verdugo dijo:– Muchas gracias por todo. Si me disculpa, yo espero fuera, hable con mis padres.

Sus padres salieron a los quince minutos, sin rastro de color en sus rostros. Ambos con muestras de haber llorado amargamente. El trayecto hasta casa se desarrolló en un silencio incómodo. Pero él lo agradeció. Lo menos que le apetecía ahora eran palabras de pesadumbre o de consuelo. Mañana tal vez, pero hoy no quiero hablar absolutamente de nada. Ya en su casa, se permitió el ducharse durante una hora, bajo agua caliente; esperando tal vez que el vapor que despedía su cuerpo lo purificase y que el agua arrastrase todos sus males. Entre los chorros de agua que caían desde su cara, iban mezcladas las lágrimas que había contenido desde que salió de la consulta. Esas que no quiso mostrar a sus padres. Luego se acostó sin cenar, cerrando la puerta de su habitación con llave. No pegó ojo. Podía escuchar el silencio de sus padres en la cocina. Ambos lloraban mudamente para no estorbar el sueño de su único hijo.

Los primeros días, sus padres intentaron convencerlo de que acudiera a las terapias, pero él se negó rotundamente. La única oportunidad que tendrían de que acudiera a las mismas, era que su madre le dejara acudir un día con ella al trabajo. Trabajaba como enfermera cuidando precisamente los casos terminales. Paliativos, llamaban en modo resumido la planta en la que trabajaba. Sus padres se negaron tajantemente, creyendo que sería contraproducente; pero no estaban acostumbrados a la determinación que demostraba ahora su hijo en las decisiones, por lo que esperanzados de que con aquello pudieran convencerlo de acudir a sus sesiones de quimioterapia, consintieron. Acompañó a su madre por el servicio, observando a todos los encamados. Mostraba especial interés en los pacientes de cáncer y, en particular, en aquellos que padecieran, como él, tumores cerebrales. Los contemplaba en su inconsciencia saturada de morfina, conectados a máquinas que trabajaban exclusivamente para ellos. Extremadamente delgados y amarillos con el brillo de la cera, despedían olores que no lograba identificar, pero que le resultaban de una nocividad antinatural; "se están pudriendo en vida", creyó escandalizado. En más de una ocasión realizó un supremo esfuerzo por no vomitar allí mimo. Se marchó, sin despedirse de su madre, caminando hasta su casa.

- Sólo lo voy a decir una vez – se encaró con fiereza a sus padres a la hora de la cena -. Luego no quiero volver a insistir más en el tema. Me voy a morir. Cualquier cosa que se haga para impedirlo, lo único que logrará será mantenerme en un estado de muerte en vida; como las personas que estaban en el hospital -. Miró a su madre, que bajó la cabeza consciente de la visión que pasaba en ese momento por la mente de su hijo -. No pienso acudir ni a quimio ni a radioterapia. A todos los efectos ya estoy muerto.

Sus progenitores no daban crédito a la última afirmación. Sin esperar respuesta, su hijo se había levantado de la mesa para ocultarse en su habitación, cerrándola con llave como venía haciendo desde la última vez que vieran al médico. Sabía que si no lo hacía, su madre entraría furtivamente por la noche para cuidarlo y vigilarlo; como hacía cuando él era pequeño y se ponía enfermo: su madre pasaba las noches en vela vigilando la fiebre y la recuperación de su valioso hijo. Eso era lo que menos necesitaba ahora, compasión. Si se descuidaba, lograrían que perdiera la poca fuerza que le quedaba. Si eso ocurría, no podría seguir adelante como él quería seguir.

Dejó de hablar. Con sus padres o con cualquier otra persona. Ya no acudía al instituto. Tampoco devolvía las llamadas que le hacían sus amigos cuando él estaba fuera. Ni contestaba cuando estaba en casa. No quería cruzarse ni hablar absolutamente con nadie. Simplemente quería pasar sus últimos días completamente sólo, pensando en sí mismo. No había tenido tiempo en su corta vida en dejar huella, no quería dejarla ahora, a pocos meses de irse. Una huella con sabor de tristeza y pena.

Cuando descubrió la obra, en uno de sus primeros vagabundeos, quedó atraído por la demoledora, como él llamaba a aquella máquina responsable de destruir toneladas de bloques y cemento con un solo golpe. Aquella máquina enorme, prolongada en una gigantesca bola sujeta a una fuerte cadena, que manejaba a su antojo y lanzaba a los grandes edificios para derribarlos, le fascinaba. Así se imaginaba el funcionamiento de su tumor, como una gran bola que se lanzaba contra las construcciones de su cerebro para destruirlo. La miraba volar por el cielo y, cuando la bola golpeaba contra un edificio, se imaginaba que su tumor infernal golpeaba al unísono, haciendo vibrar a su prematuramente pútrido cerebro. Desde aquel día, no dejó de acudir un solo día de trabajo. Los domingos y festivos, se iba a la playa y, descalzo, caminaba de un lado a otro por la fría arena en un invierno especialmente frío.

Uno de los días, contemplando fascinado y absorto a su demoledora trabajar afanosamente, unos chicos se le acercaron y se pusieron a incordiarlo. Vivían, con toda seguridad, en aquella zona marginal y eran indudablemente pobres por las muy deterioradas ropas que vestían y las claras manchas de suciedad agarradas a sus rostros y brazos. Contarían entre once y catorce años, pero eran cinco e iban armados con palos y piedras. Le preguntaban quién era y exigieron que les diera todo lo que tenía. Él no les contestaba, seguía mirando a la obra y a la máquina que lo atraía de manera tan singular. Ellos, enfadados por ser ignorados, fueron estrechando el cerco para intimidarlo.

- ¡Eh tú, jodio gafúo! – gritó el más grande al tiempo que le lanzó una piedra, sin mucha fuerza, que le dio en la rodilla. El dolor del impacto pareció sacarlo del limbo y, por primera vez se quedó mirando, embobado y con la boca abierta, a la amenaza que desde hacía unos minutos lo acosaba. Continuó hablando el gamberro -. ¿Quié coño ere? Dame too lo que...- Sin terminar la exigencia, lo miró a la cara y se sorprendió:- ¡Joe! ¿Po qué sangra po la narí esta marica? –. Hizo la pregunta, tal vez asustado, tal vez sorprendido que el chico empezara a sangrar sin haber sido aún agredido.

Para cuando los otros, la mayor parte vigilando la espalda para que no huyera en esa dirección, giraron para encararlo, empezó a agitarse convulsivamente y a vomitar sobre sí mismo. Cogidos por sorpresa, y temiendo que los acuaran de los síntomas -o includo se la muerte, porque parecía que se estaba muriendo- del chaval si se quedaban, los niños salieron corriendo.

Despertó desorientado y dolorido. Buscando referencias visuales de dónde se encontraba. Pensar era tanto o más doloroso que moverse. Habían pasado unas cuantas horas, quizá cinco o seis. No podía pensar con claridad. Cuando pudo erguirse mínimamente, se quedó sentado, con los hombros caídos y las manos extendidas a los lados, mirando al infinito. La realidad fue llegándole poco a poco a través de los abotargados sentidos. Para cuando comenzó a hilar pensamientos coherentes y mínimamente complejos, ya había oscurecido completamente. Le extrañó que nadie hubiera acudido a socorrerlo, pero en el fondo dio gracias a ello. Intentaba incorporarse una y otra vez, pero no lograba mantener el equilibrio. Cada vez que lo intentaba un dolor horrible, tan intenso que le cortaba la respiración, recorría su columna vertebral. Su brazo izquierdo no terminara de responderle, ignorando cualquier orden dirigida a él. Lo sentía como corcho colgando. Como si no fuera suyo. Con cada intento, el cerebro parecía que se le iba a salir por las órbitas de los ojos. Y, cuando desistía una vez más, el mundo parecía girar incansablemente en torno a él. Esperó otra hora más, completamente insensible al frío que hacía. Tal vez a causa del frío, los músculos empezaron a dolerle menos y consiguió ponerse en pie. El regreso a casa estuvo amenazado a cada paso de caer redondo por un traspiés. Iba haciendo eses, como un borracho. Recobrar la sensibilidad en el brazo y en en todo su cuerpo trajo consigo empezar a sentir el duro frío de la noche. Cada cierto tiempo se cobijaba unos minutos en algún portal, donde recuperar algo de fuerzas, tiritando y abrazándose para entrar en calor. Las primeras veces no le importaba, pero al cabo de un rato le preocupaba que lo descubriesen escondido. Apestaba. Tenía las ropas completamente manchada de vomitos, orines y su propia mierda. En el camino volvió a orinarse varias veces encima.

En su casa encontró a sus padres sentados en la cocina intranquilos, esperando la llegada de su hijo. Siguió de largo, sin hablar como era ya natural, hasta el cuarto de baño. Escuchó la débil súplica materna queriendo saber dónde había estado hasta esas horas. No contestó. Se encerró en el baño y se duchó durante media hora, dejándo que su cuerpo se quemara bajo el agua hirviendo. Parecía haber recuperado el calor, la sensibilidad y una completa consciencia. Esta vez se había asustado realmente. En el tiempo que llevaba sufriendo su degeneración, ya había sufrido unos cuantos vahídos menores. Pero ninguno como el sufrido ese día. Entre lágrimas silenciosas se aseguró que ya había comenzado la última fase. Esa que acabaría dejándolo postrado en una cama en de hospital. Pasando la mayor parte del tiempo en una inconsciencia inducida por fármacos mientras su cuerpo seguía pudriéndose y despidiendo olores desagradables para los familiares y amigos que se acercaran a ver sus últimas inspiraciones y espiraciones. La imagen de aquellas personas completamente deterioradas le vino a la memoria con tal fuerza que estuvo a punto de perder el equilibrio. Se sentó en el plato de la ducha y lloró. Esta vez de forma sonora. Ya no le importaba que sus padres le oyeran llorar.

Una vez seco y abrigado, seguro de que sus padres ya se habían acostado, salió y cenó algo. Apenas le quedaban unas horas antes de que el padre saliera a trabajar. Se metió en su cuarto, se vistió, saliendo nuevamente. No le extrañó que sus padres no se despertasen cuando se acercó a besarlos en la frente. Tal vez no querían asumir que su hijo se iba y el único cobijo que les quedaba eran sus sueños. Tal vez soñaban con otra vida, una en la que su hijo no tenía que morir. O una en la que había una cura milagrosa y todo salía bien. Su madre sonrió y siguió sumida en su sueño cálido. Su padre comenzó a gimotear cuando el hijo ya estaba en la puerta. A lo mejor su padre sí estaba despierto y sabía porqué se marchaba. Por un momento estuvo tentado de retroceder y darle un abrazo. Como el que le daba cuando lo esperaba en la puerta al llegar del trabajo. Cogió una manzana de la cocina y salió de la casa sin hacer ruido.

Consigo llevaba el libro que tanto quería y las cartas que le había escrito su primera y única novia. Los últimos días se había acordado mucho de ella. Recordaba el día, hacía dos años y medio, en que se despidieron en el aeropuerto. El padre de ella había conseguido un ascenso en la empresa y lo mandaban a otro lugar. Se juraron amor eterno y esperar el uno por el otro, porque algún día, dijo ella, volvería. Pero el tiempo fue debilitando el sentimiento y acrecentando el intervalo entre carta y carta, por ambas partes. Hasta que en la última, tras dos meses de silencio, le decía que había conocido a otro chico. "Desde luego, soy un tío sin puta suerte", se dijo.

En la calle había empezado a llover con abundancia. El clima le hizo recordar las Navidades y, espontáneamente, cayó en la cuenta de que al día siguiente comenzaban las vacaciones de Navidad para los alumnos del instituto. Estudiaba el último curso antes de ingresar en la universidad. Quería estudiar Matemáticas. Y Física. Adoraba las ciencias y muchas veces se imaginaba a sí mismo trabajando con los mejores grupos de investigación. Por un momento se dejó creer que aquello era un mal sueño y que en realidad todo esto acabaría tan pronto lograse despertar. "Qué pensamiento más estúpido", se criticó duramente.

Ya había tomado la decisión. Se dirigió sin rodeos y sin pausas, al solar de la construcción. Saltó la valla y se encaminó al edificio que había elegido el día anterior. En el camino la asaltó el perro del vigilante, quien a esas horas estaba durmiendo. Interpuso el antebrazo derecho y el pastor alemán, una bestia enorme, lo sujetó entre sus fuertes mandíbulas, haciendo bruscos movimientos con la cabeza buscando rasgar la carne y romper el hueso; pero la ropa que llevaba impidió que se le clavaran muy profundamente los colmillos. El impacto lo había derribado y el animal aún forcejeaba sobre él, pero al instante perdió interés. El perro estaba intrigado, porque no había detectado miedo o dolor en aquella persona; soltó la presa y gruñendo desconfiado se alejó unos metros. A él le había dado igual que el perro le atacara; de hecho no le importaba lo más mínimo que lo matara allí mismo. Instantes después el perro se sentó, ligeramente intrigado, mientras aquel chico permanecía tumbado boca arriba, mirando el frío y despejado cielo, cargado de estrellas. En otras circunstancias habría dicho que aquella era una noche hermosa como pocas.

Al cabo de unos minutos se incorporó quejumbrosamente y continuó su camino, de espaldas al perro, que lo miraba ladeando la cabeza. Entró en el viejo edificio como pudo y subió hasta el último piso. Llevaba una pequeña linterna y a su luz releyó todas las cartas que recibió de su lejana novia. También leyó algunos de sus pasajes predilectos del libro, que también llevaba en uno de sus bolsillos. Dobló cada una de las cartas con sumo cariño y las encajó dentro del libro. Se dijo que tenía que haberse despedido de ella. Haberla llamado al menos una última vez. Ya no servía de nada lamentarse, se dijo, y se tumbó en el frío suelo, sin ser consciente del olor a humedad y de las ratas que correteaban cerca, mirando el cielo que le permitía ver la ventana sin cristales. Nombrando las estrellas que aparecían en ese espacio se durmió. Mintaka, la hermana de Alnitak y Alnilam fue respirada, más que pronunciada, antes de caer en un profundo y absoluto sueño. El primero, tal vez, desde que volvió aquella maldita tarde del oncólogo.

El primer golpe lo despertó. Sentía temblar el edificio. La inyección de adrenalina lo incorporó de un salto. Apenas pudo gritar "¡No moriré estúpidamente en una cama!" cuando una sombra enorme apareció en la ventana. En una centésima de segundo se veía la luz a través de la ventana y en la centésima siguiente todo el hueco estaba ocupado por una enorme bola que se abalanzaba hacia él. En la siguiente centésima ya no quedaba nada. Había desaparecido todo. Sin dolor.

Algunas de las cartas y de las hojas más sueltas lograron escapar del derrumbe. Unico testimonio de que estuvo allí en aquel momento.

Desde el amanecer sus padres lloraban en la cocina. Su madre apoyaba su mano derecha en una carta abierta sobre la mesa; encontrada junto a las manzanas. El legado de su hijo. Palabras de amor, palabras de consuelo, de ánimos y esperanza para ellos. Y un adiós.

10/noviembre/1997

------ 8< -------------

Sirva también este pequeño e insípido texto como defensa del derecho de cada cual a elegir cómo terminar.