sábado, 24 de septiembre de 2011

Érase una vez en el Oeste

He vivido casi cuarenta y un años sin saber de la existencia de la película Once Upon a Time in the West. El título de la versión en español, Hasta que llegó su hora, no recoge el aire de melancolía que envuelve toda la película. No se trata de una historia más de spaghetti western; es una obra de arte del director Sergio Leone y, no menos, del compositor Ennio Morricone. Me enamoré de la película por el tema que Morricone compuso para las escenas de Jill McBain (Claudia Cardinale), una música sublime que inunda de tristeza, sin tregua, al espectador.

Es una película en la que priman los primeros planos, en los cuales los rostros de los personajes dominan las escenas y transmiten emociones imposibles de describir con palabras: obsesión, venganza, codicia, desprecio, ternura, compasión, ilusiones, sueños... El tiempo transcurre muy despacio, en ocasiones casi se congela, dando a algunas escenas en las que se alternan los rostros de los personajes un aire de manga japonés. La película, más que hacer pensar, hace sentir, provoca emociones.

Los protagonistas masculinos son tipos duros, con un pasado a cuestas cargado de muerte. Los interpretan magistralmente Henry Fonda, Jason Robards y Charles Bronson. Como en la Trilogía del dólar, de Leone, en la que Clint Eastwood es el hombre sin nombre, aquí lo es Charles Bronson, al que Cheyenne (Jason Robards) describe como el hombre que en lugar de hablar toca una armónica y habla cuando mejor sería que callase. Siempre la lleva consigo y al final se revelará como el talismán de sus oscuros recuerdos. Frank (Henry Fonda) es el hombre malvado sin escrúpulos, capaz de llevar a cabo las mayores atrocidades sin pestañear. Sin embargo, el hombre de la armónica logra revolver en su pasado oscuro y despertar en él una sensación de desasosiego que se va convirtiendo en obsesión. Cheyenne es un famoso y temible bandido, buscado por las fuerzas del orden, que traba simpatía con el hombre de la armónica. Ambos, hombres sin hogar, sin rumbo y sin muchos principios, en presencia de Jill McBain son capaces de sentir compasión y brotes de ternura.

La última escena en la que se encuentran estos tres personajes se desarrolla con pocas palabras, pero despliega tales cruces de miradas, rostros cargados de melancolía, la sonrisa embriagadora de Cardinale, la sonrisa imperceptible de Bronson, la mirada comprensiva de Robards, todo ello al son de la música de Morricone, que la dotan de una emoción arrolladora. El desenlace es triste, pero lleno de paz y de futuro, un futuro en el que la protagonista tendrá que llevar a cabo sola el sueño de una vida, la del hombre que quiso hacerla su esposa.

domingo, 17 de julio de 2011

Reparación de coche económica

Hace unos meses tuve una experiencia gratificante con motivo de la reparación de una avería de mi coche. En principio, el asunto se presentaba como una situación de lo más corriente. Uno de los faros delanteros había dejado de lucir. Era de esperar que la solución fuese tan sencilla como cambiar la luz del faro y asunto concluido. Sin embargo, no fue tan sencillo.

Llevé el coche al taller oficial al que suelo ir habitualmente. Los faros de mi coche son de xenón, lo que significa que las lámparas son más caras de lo habitual, algo más de cien euros. En fin, pensaba que pagaría esa cantidad y volvería a tener el faro como nuevo. Por desgracia, no fue así. En el taller pusieron una lámpara nueva y el faro seguía sin lucir, así que la avería era un poco más complicada. Resulta que este tipo de faro utiliza un circuito de encendido de alta tensión, que es un poco especial. Lo más probable era que ese circuito estuviese estropeado. Lo malo es que en mi modelo de coche ese circuito no se sustituye por separado sino que está integrado en el faro. La única solución que me daban en el taller era cambiar el faro completo, reparación que ascendía a la suma de 1000 euros. Esto ya eran palabras mayores.

De momento, me fui del taller sin hacer la reparación. Me parecía mucho dinero. Pero de algún modo tendría que arreglarlo. Se nos ocurrió contárselo a un amigo que tiene un taller en un concesionario oficial de la misma marca. El único inconveniente es que se encuentra a 600 kilómetros de nuestra casa... Este amigo dijo que podía ser que tuvieran piezas de desguace que pudieran utilizarse para reparar nuestro coche. Fui a su taller aprovechando otro viaje y, buscando, efectivamente encontraron un faro del mismo modelo de coche que parecía que estaba en buen estado. En este taller se les ocurrió que podían tratar de sustituir el circuito de encendido de nuestro faro por el circuito sano de desguace. Era algo que no habían hecho nunca pero pensaban que merecía la pena intentarlo. En esa ocasión no teníamos allí nuestro coche, pero nos dejaron la pieza de recambio por si nos animábamos a proponer esta solución en nuestro taller local.

En ese taller buscan este tipo de soluciones con cualquier cliente, no sólo con la gente conocida. Creen que buscar la solución más económica posible forma parte de su labor profesional. En más de una ocasión les ha sucedido que la dirección de la marca les ha echado la bronca porque venden pocas piezas de recambio nuevas y, como consecuencia, facturan menos de lo que podrían. Vivimos en un mundo en que no es rentable preocuparse por el bolsillo del cliente...

No me animé a proponer la solución "no oficial" en mi taller local. En cambio, esperé unos días y, en cuanto pude, aproveché un par de días no laborales y me hice 600 km, y otro tanto de vuelta, para ir al taller de nuestro amigo para que intentaran reparar el faro. Verdaderamente, mereció la pena. Sustituyeron el circuito de encendido del faro según tenían planeado y pusieron una lámpara nueva. ¡El faro funcionaba perfectamente! No necesitaron dedicar demasiado tiempo para realizar la reparación. Pagué un poco de mano de obra y la lámpara nueva. El circuito de encendido me lo regalaron. Tratándose de una pieza de desguace, ellos no perdían mucho por dejármelo gratis, pero podrían haber cobrado algo. En definitiva, me ahorré prácticamente 1000 euros, que se dice pronto.

Volví a mi casa muy contento porque la operación resultó un éxito: el coche estaba reparado y me había ahorrado mucho dinero. Mereció la pena hacerse 1200 km y perder dos días. De todas formas, lo más valioso no fue el ahorro económico, sino lo gratificante que resultó experimentar que hay gente que se preocupa de verdad por los demás: no te engaña, no te propone la solución más ventajosa para su empresa aunque a ti te resulte muy gravosa, no se desembaraza de ti lo más deprisa posible. Se preocupa por darte una solución lo más satisfactoria posible. Ojalá todos actuáramos del mismo modo.

domingo, 22 de mayo de 2011

San Manuel Bueno, mártir. Miguel de Unamuno


San Manuel Bueno, mártir es una novela corta de madurez que sintetiza el sentimiento trágico de la vida, de la vida cotidiana, la más auténtica para Unamuno, la tragedia de haber nacido para tener que morir.

El protagonista es don Manuel, el cura párraco de Valverde de Lucerna, un pueblo situado cerca de un lago, éste al pie de unas montañas, motivos orográficos que sirven para establecer un símil literario recurrente a lo largo de la novela entre el misterio de la nieve que cae de las montañas y todo lo envuelve (simbolizando la fe) y el lago cuyas aguas todo lo disuelven (simbolizando la razón).

Don Manuel está completamente entregado al pueblo, un pueblo que lo admira como a un verdadero padre espiritual que lo guía por las dificultades de la vida. Deshace rencillas, ayuda a los necesitados, acompaña a los enfermos y a los moribundos y se esfuerza por mantener la fe de todos y por convertir a los que no creen. Es, en definitiva, un perfecto pastor de sus ovejas, un santo en vida.

Sin embargo, a medida que avanza la historia, se nos van revelando las dudas de don Manuel, las mismas que el propio Unamuno dejó traslucir en todos los escritos en los que trató el asunto de la vida perdurable. Concretamente, don Manuel se sentía incapaz de pronunciar, durante la misa, las palabras del credo “creo en la resurrección de la carne y en la vida perdurable”. Esta duda, insinuada en los primeros capítulos, alcanza su punto álgido durante el proceso de conversión de Lázaro, el hermano de Ángela, la narradora.

Frente al grueso del pueblo, felizmente pobre de espíritu, Lázaro representa al hombre culto de su tiempo. Él mismo, ateo, duda de que don Manuel crea realmente lo que enseña acerca de la resurrección. Desde que Lázaro llega al pueblo, don Manuel se vuelca en tratar de hacerle creyente, hasta que en un punto de inflexión de la novela le confiesa a Lázaro amargamente que él mismo no es capaz de creer en la otra vida. Esta agónica duda atormenta a don Manuel y la combate mediante la vida activa de entrega a sus feligreses, la cual le permite huir de la soledad de sus pensamientos.

Unamuno ensalza el papel de la religión como consuelo de la desdicha de haber nacido para morir. La religión ofrece a la gente sencilla la ilusión de la vida perdurable. Don Manuel, incapaz de creer, y con él Lázaro después, encuentra su consuelo en consolar a los demás. Salvando las enormes diferencias, Unamuno llega a admitir la calificación de la religión como opio del pueblo, según la cita de Marx. Mientras que Marx utilizó la metáfora para criticar la religión, Unamuno ensalza su función social y psicológica, incluso ante la trágica situación de no creer en su contenido fundamental: la promesa de una vida perdurable. Pero la religión hace soñar y soñar es necesario para vivir y, ante todo, ¡hay que vivir!.

Tras la muerte de don Manuel y de Lázaro, Ángela reflexiona sobre la falta de fe de ambos y se pregunta si Dios no los habría hecho incrédulos a propósito por alguna misteriosa razón. A esta duda le sigue una serie de preguntas que la narradora formula acerca de su propia fe y, así, entre dudas y preguntas, en un ambiente tan característicamente unamuniano, concluye la narración.

lunes, 9 de mayo de 2011

GNU Chess v6

El día 27 de abril de 2011 anuncié la nueva versión de GNU Chess (http://lists.gnu.org/archive/html/info-gnu/2011-04/msg00015.html), el popular programa de ajedrez del proyecto GNU. Hace tiempo que venía persiguiendo esta publicación y por fin lo he conseguido. Sin la inestimable ayuda de Simon Waters, Stuart Cracraft y Karl Berry, no habría sido posible.

Mi relación con GNU Chess empezó hace ya más de tres años, a principios de 2008, cuando decidí ofrecer mi contribución al proyecto. Se me ocurrió la idea de incorporar una opción para debilitar artificialmente al programa en cuanto que jugador de ajedrez. En aquel primer contacto, sugerí la idea de esta nueva opción, pero también ofrecí mi colaboración en general. Stuart y Simon me comentaron que Fabien Letouzey había asignado la propiedad de su famoso programa de ajedrez Fruit a la Free Software Foundation (FSF) y estaría muy bien utilizarlo como base para una nueva versión de GNU Chess, la versión 6. La última versión de la línea v5, v5.07, se había publicado en 2003, es decir, el proyecto estaba en estado maduro y no manifestaba mucha actividad.

El ajedrez es un juego que me gusta desde niño. Soy un jugador mediocre (mi puntuación en FICS (http://www.freechess.org) es de unos 1300 puntos Blitz y 1700 Standard), pero me gusta mucho jugar. De pequeño jugaba de vez en cuando con mi abuelo Octavio y quizá me venga de aquello la afición. La oportunidad de contribuir, aunque fuese en pequeña medida, a un programa del proyecto GNU me resultaba muy atractiva porque goza de una enorme difusión. Además, desde hace muchos años utilizo el sistema GNU/Linux y, en cierto sentido, una pequeña contribución me parecía un más que merecido tributo.

Antes de empezar a trabajar en la versión 6 de GNU Chess, me puse en contacto con Richard Stallman para comprobar si había alguien más trabajando en ello y para recibir su consejo. Cuando Stuart me pidió que me comunicase con RMS, que son las iniciales del Sr. Stallman y como se le nombra habitualmente, me impresionó bastante y no me parecía probable que una persona tan importante (fundador de GNU y presidente de la FSF) contestase al mensaje de un desconocido. Sin embargo, a los pocos días RMS me contestó, y me dijo que lo más importante era prestar atención, en primer lugar, a las normas de programación de GNU en lo que se refiere a los interfaces externos y a la documentación; en segundo lugar, al sistema de configuración e instalación (configure y make). No mencionó que hubiera nadie trabajando en ello, lo que interpreté como luz verde para mí. Con la bendición de RMS, podía empezar a trabajar.

Acordé con Simon y Stuart mantener "compatibilidad hacia atrás" con los interfaces externos de la versión 5. Esto significaba mantener la misma línea de comando para arrancar el programa y los mismos comandos. Hay que decir que GNU Chess es un programa que permite a una persona jugar al ajedrez con el ordenador de forma interactiva en un terminal de texto, introduciendo las jugadas en notación algebraica estándar (SAN) o en notación algebraica de coordenadas. El programa muestra el tablero por la pantalla en modo texto. Una variante de los comandos interactivos permite utilizar el programa con una interfaz gráfica de ajedrez como XBoard, que es la forma habitual de utilizarlo. La comunicación de XBoard con GNU Chess originó el Chess Engine Communication Protocol, que luego han utilizado otros programas de ajedrez como sistema de comunicación con el exterior

Por su parte, Fruit no está pensado para que una persona juegue partidas directamente con el programa, sino desde una interfaz gráfica. De hecho, Fruit usa otro protocolo de comunicación, el Universal Chess Interface (UCI), que es muy distinto del que utilizaba GNU Chess. Aquí es donde surgía una de las principales dificultades: integrar el antiguo protocolo de comunicación con el nuevo programa.

En realidad, este problema no era nuevo, pues ya había surgido la necesidad de integrar Fruit con XBoard. El propio Fabien creó un programa adaptador: Polyglot. Así que decidí estudiar este otro programa para realizar mi integración. 

Al principio tomé Fruit como base y durante mucho tiempo estuve intentando crear mi propio adaptador, hasta que me di cuenta de que era una cantidad de trabajo nada despreciable. Estuve yendo por caminos erróneos hasta finales de 2009, cuando por fin vi la luz. Por supuesto, durante todo ese tiempo mi dedicación fue muy intermitente. 

Empecé 2010 con las decisiones que finalmente demostraron ser las correctas. Debía utilizar Fruit y Polyglot tal y como son y, al mismo tiempo, mantener la versión 5 de GNU Chess como programa principal. Al mantener la versión anterior, los interfaces externos se mantenían por construcción. Lo que tenía que hacer era "puentear" toda la parte del programa antiguo que no tuviera que ver con la interacción con el exterior: las jugadas y los comandos introducidos por el usuario debían pasarse a Fruit, a través de Polyglot.

Esta integración la acometí en dos fases. En la primera, mantuve las tres piezas como procesos independientes. De este modo, Polyglot y Fruit se mantenían intactos. Sólo tenía que modificar el programa principal. De aquí surgió ya el diseño de la arquitectura final del programa, estructurado en tres componentes: módulo de interfaz con el exterior, adaptador de protocolo y motor de ajedrez. A principios de 2010 tenía una primera versión de las tres piezas integradas. Por entonces sólo las jugadas y algunos pocos comandos de la versión anterior funcionaban. El siguiente paso era ir avanzando en la migración de comandos de la versión 5 a la 6.

Una vez que ya funcionaban los comandos principales, pasé a la segunda fase de la integración: convertir los procesos independientes en hilos de ejecución (threads) de un proceso único. Mantuve el mismo mecanismo de comunicación basado en tuberías (pipes). Fabien creó Polyglot a partir de Fruit, pero no mantuvo una base de código única. Por esta razón, una gran parte del código de ambos programas es muy parecida. No obstante su gran parecido debido al origen común, el código no es idéntico, lo cual no permitía unificarlo de forma sencilla. Por lo tanto, la decisión fue mantener ambas bases de código intactas. Para evitar la colisión masiva de identificadores a la hora de enlazar los módulos, definí un espacio de nombres (namespace de C++) distinto para cada uno de los dos. El módulo de interfaz, escrito en C, lo mantuve en el espacio de nombres global.

En noviembre de 2010 ya estaba terminada la integración y sólo quedaba por incorporar el mayor número de comandos que fuese posible. Simon siempre ha insistido, con razón, en el gran interés que tiene mantener los comandos de la versión 5, ya que permitiría a un usuario de dicha versión reemplazarla por la nueva versión 6 sin enterarse.

Karl me ayudó a utilizar los programas de construcción de GNU para empaquetar el programa según los estándares y ha sido un mentor accesible, didáctico y profesional en todo momento. A finales de 2010 realicé los trámites para asignar a la FSF todas mis contribuciones a GNU Chess.

Cuando el programa ya iba tomando forma definitiva, Stuart propuso evaluar su fuerza con una batería de pruebas que consta de 188 posiciones. El resultado en mi Mac Book Pro, empleando 10 segundos por posición, fue de 155 posiciones acertadas, lo que equivale a un ELO aproximado de 2547. Stuart se mostró entusiasmado cuando él mismo comprobó los resultados en su Mac, un día que volvía de visitar a Ken en Apple, y se los comunicó a las personas más señaladas en la historia de GNU Chess. Hay que entender que era una buena noticia el hecho de haber conseguido utilizar Fruit como base para GNU Chess. La fuerza de Fruit como motor de ajedrez era de sobra conocida, y su mérito le corresponde enteramente a Fabien.

La versión de Fruit que se ha utilizado como base para GNU Chess v6 es la 2.1, la última licenciada bajo GPL. Posteriormente, Fruit siguió evolucionando y aumentando considerablemente su fuerza ajedrecística, pero las siguientes versiones ya no fueron libres.

En la Navidad de 2010 teníamos una versión alfa del programa, que inscribí en FICS como GNUChessSix, a fin de poner a prueba su funcionamiento a través de XBoard en un "entorno real". Desde entonces, juega partidas de vez en cuando desde mi Mac.

El 26 de enero de 2011, publicamos la versión alfa 5.9.91. Con los comentarios recibidos y algunas otras mejoras, entre las que cabe destacar la creación de un manual "info" para toda la documentación del programa, por fin publicamos y anunciamos convenientemente la versión 6.0.0 el día 27 de abril de 2011, la primera versión oficial de GNU Chess v6. Tres años después, mi sueño de participar en el proyecto había llegado más lejos de lo que imaginara.

En febrero de 2011, Karl me comunicó que Simon y Stuart me admitían de buen grado como co-maintainer del paquete, lo cual acogí con gran alegría y acepté inmediatamente. Era lo lógico, después de todo, pues el trabajo de preparación de la versión 6, aun siendo muy modesto, ha sido fundamentalmente trabajo mío, por lo que soy la persona indicada para encargarse del mantenimiento de esta nueva versión.

Hace tiempo que existen programas de ajedrez que, en hardware básico tienen nivel suficiente para ganar al campeón del mundo humano. Por esta razón, las máquinas de jugar al ajedrez no tienen tanto interés como en los tiempos de Deep Blue. Sin embargo, considero interesante que el sistema GNU siga disponiendo de un programa de ajedrez actualizado y a disposición de todos. La FSF garantiza que el programa siempre será libre.

Para mí es un orgullo ser miembro del equipo de GNU Chess y, a través de él, del propio proyecto GNU. Este granito de arena unido a otros muchos hace que programas como este de ajedrez estén a disposición de todo el mundo, no sólo para utilizarlos, sino también para estudiar cómo están hechos, modificarlos y mejorarlos. A mi modo de ver, la presencia y difusión de proyectos no lucrativos hace que el mundo sea un poco más humano.