Monday, September 28, 2015

¿La mejor partida de la máquina Belle?


Ken Thompson junto con Joe Condon diseñaron una máquina para jugar ajedrez. Sin duda Thompson, que trabajó por muchos años en los Laboratorios Bell, después adquirido por AT&T, tenía ciertas facilidades para pedir presupuesto para el proyecto que quisiese, sino es difícil explicar cómo es que se pudo realizar un trabajo como el crear hardware específico para jugar al ajedrez.  La historia es fascinante y Thompson se consiguió a un ingeniero electrónico que de hardware sabía mucho, Joe Condon, quien fue el que diseñó las tarjetas electrónicas de la máquina de ajedrez que sería bautizada como Belle.

Cabe decir que probablemente Ken Thompson sepa bastante de ajedrez y de hecho, recuerdo que cuando visité los Laboratorios Bell (1993), en algún momento pasamos por una sala donde había mesas de ajedrez y relojes. Evidentemente el ajedrez no estaba ahí por casualidad. Y digo que Thompson de ajedrez debiese saber más que lo suficiente fue porque él intuía que su máquina de ajedrez requeriría una biblioteca de aperturas, la cual la saco de un libro en particular, el cual le llevó meses transcribir para poderlo usar en su sistema.

Así, Condon y Thompson hicieron una estupenda mancuerna tecnológica: el primero en hardware y el segundo en software. Belle ganaría tres veces el Campeonato Mundial de Ajedrez por computadoras y demostraría un buen bagaje de herramientas y técnicas que después de él se tomaron muy en cuenta para sus sucesores. Bien Ken Thompson podría escribir un libro llamado "Mis Grandes Sucesores" [1]. Una estupenda reseña de los avances en cómputo, particularmente con Belle y su desarrollo puede verse en el libro "Chess and Machine Intuition", escrito por George W. Atkinson, el cual estoy terminando. Además de las propias opiniones del autor, Atkinson hace un desarrollo breve pero bastante completo del "estado del arte" en el ajedrez por computadora. Un libro sin duda muy recomendable.

La partida ntre Blitz (que eventualmente se convertiría en Cray Blitz), del año 1978, es muy importante, porque quizás fue la primera vez que una computadora analizó las consecuencias finales de un sacrificio que lleva al mate. Es cierto, sí, que esa combinación no se ve particularmente difícil para un jugador de primera fuerza, pero el avance fue sin duda importante, pues mostró cómo una máquina podía deshacerse de la idea de ser materialista y comerse cuanta cosa pudiese en una partida, para pasar a un nivel en donde incluso, los sacrificios eran posibles. En mi opinión,m el desarrollo de Belle fue un parteaguas para la siguiente generación de programas de ajedrez, como HiTech o ChipTest, por ejemplo.

He aquí la partida:

ACM 1978.12.06
Blitz 6.5 - Belle

1. e4 e5 2. Nf3 Nc6 3. Nc3 Nf6 4. Bb5 Nd4 5. Bc4 Bc5 6. Nxe5 Qe7 7. Bxf7+ Kf8 8. Ng6+ hxg6 9. Bc4 Nxe4 10. O-O 

La posición favorece sin duda a las negras. Tienen ventaja material a cambio de un rey en una posición relativamente insegura. Sin embargo, aquí Belle halla una combinación ganadora:



10. ... Rxh2! 11. Kxh2 la peor jugada, pues sigue mate en cuatro. Sin embargo, cualquier otra jugada no salvaba la partida. 11. ... Qh4+ 12. Kg1 Ng3 13. Qh5 gxh5 14. fxg3+ Nf3# 0-1

Fue tan impresionante esta partida para el propio Ken Thompson que mandó a hacer playeras con la posición final. Dicha playera la usó en el siguiente campeonato de computadoras.

Belle eventualmente llegaría a jugar unos 2203 puntos Elo y recibió un premio honorífico, haciendo a la máquina miembro de la Federación Estadounidense de Ajedrez, cosa que como David Levy dijo alguna vez: "esto sólo pasa en los Estados Unidos".


_____
[1] Haciendo referencia a la colección de Kasparov: "Mis Grandes Predecesores".
[2] La foto inicial de este artículo ilustra la posición de quizás la partida más famosa de Belle. En la foto se observan a Joe Condon (izquierda) y Ken Thompson, con la posición de la brillante partida en el momento del sacrificio.

Saturday, September 26, 2015

¿La caída de López-Dóriga?



Joaquín López-Dóriga es el locutor oficial del Noticiero del Canal 2 de Televisa, en su horario más importante (10:30 pm). Es un periodista que siempre me ha parecido nefasto y que finalmente, siendo la cabeza de dicho noticiero tiene al menos injerencia en las noticias que presenta y cómo las presenta, vamos, en la línea editorial del noticiero que conduce.

Desde hace unas semanas, López-Dóriga parece que ha entrado en el ojo del huracán. Todo porque María Asunción Aramburuzabala, propietaria de la inmobiliaria Abilia (y además, heredera de una gran fortuna porque hasta donde entiendo su abuelo fue quien fundó la exitosa empresa Cervecería Modelo), se enfrascó en un pleito con Teresa Adriana Pérez Romo y su esposo, Joaquín López-Dóriga. De acuerdo a los dichos de la señora Aramburuzabala, la pareja mencionada la querían extorsionar y le pedían no sé si cinco o diez millones de dólares para permitirle que continuara la construcción de un edificio de departamentos.

Cabe señalar que la revista Proceso dice que López-Dóriga tiene al menos seis departamentos de lujo en el Club de Golf Bosques, siete en la colonia Polanco, su lujoso yate valuado en 40 millones de pesos, una suite en residencial Villa Alejandra de Acapulco, más millonarios ingresos a través de dos empresas, Akron y Ancla, que han recibido más de 237 millones en contratos por menciones, campañas y entrevistas de dependencias federales entre 2001 y 2015.

Aparentemente la influencia y poder económico de la Sra. Aramburuzabala ha sido suficiente para detener esta supuesta extorsión. Pero más allá de eso, a partir de este evento, muchos sitios web de poca credibilidad realmente, han estado esparciendo el rumor de que López-Dóriga podría salir del noticiero nocturno porque su imagen se ha debilitado. Curiosamente, la revista Proceso, que mantiene cierto status de rigor periodístico, plantea también ahora esta posibilidad y de hecho, para mi sorpresa al menos, pone al susodicho periodista en la portada que circulará el próximo domingo (es decir, mañana).

No es la primera vez que López-Dóriga se halla en el ojo del huracán. En algún momento creo recordar que fue director de noticieros dee ImeVisión, lo que ahora es TV Azteca, y que en un movimiento político, fue "derrocado"  y expulsado de su puesto. Me acuerdo que en esos años entonces López-Dóriga sacó un periodicucho llamado "Respuesta", en donde al menos en su primera edición, dijo que no se dejaría intimidar, más un largo bla bla bla que probablemente nadie le creyó.

Por otra parte, López-Dóriga ya dejó de ser un joven periodista. Ya aprendió a lidiar con el poder político de este país y no tuvo empacho, a cambio de jugosos sueldos, hablar bien del gobierno en turno. En mi opinión, no tarda mucho para que Televisa al menos, lo jubile. Quizás este asunto con la heredera del Grupo Modelo sea el catalizador que finalmente haga que retiren de cuadro a uno de los periodistas más lamentables de este país.

Yo me preguntó ¿por qué se metió en este asunto López-Dóriga y esposa? ¿Es que no tienen suficiente dinero ya? Tal vez aquí el asunto sea de poder y no estrictamente de dinero. En cualquiera de los casos me parece que después de la portada de Proceso, que tiene finalmente cierta influencia en el imaginario colectivo, el periodista de marras deberá andarse con pies de plomo. Su puesto -creo que ahora sí- corre peligro.

Y si sale de Televisa, quizás también salga de la Radio y de pronto sea un "apestado" como Guillermo Ochoa, el cual fue corrido por Azcárraga cuando presentó sin su autorización, una entrevista con la Quina, justo cuando Salinas lo encarceló fincándole no sé cuantos delitos y buscando así tomar el control de Pemex, todo esto en 1988. Después de su atrevimiento de publicar la entrevista con el ya fallecido líder de los petroleros, Ochoa fue despedido y desapareció de los medios por muchísimo tiempo. Hoy -me parece- Ochoa es un hombre mayor, enfermo, que tiene por ahí una columnita de opinión en la radio que alguna vez oí y que no sé si siga al aire.

Veremos el desenlace de esta historia pronto. Tal vez Televisa espere unas semanas para que las aguas regresen a su nivel y entonces le den a López-Dóriga una salida decorosa indicando él mismo que ha decidido pasar la estafeta a -probablemente- su sucesor, Loret de Mola.

Sistemas expertos: tecnología obsoleta



En Inteligencia Artificial (IA) se trabaja en muchos frentes. Pueden ser redes neuronales, o quizás programas que hacen búsquedas exhaustivas sobre un árbol de posibilidades. También pueden usarse los sistemas expertos, que pretenden lidiar con las incertidumbres asociadas con la información en prácticamente todo el ámbito humano. Así, por ejemplo, podemos pensar en las heurísticas, una manera de manejar un problema para el cual no siempre hay una solución exacta. Una heurística es una regla general, que funciona la mayoría de las veces o en la mayoría de los casos, pero bien podría no trabajar correctamente en un caso particular.

Los sistemas expertos sonn una rama de la IA que pretende describir un problema con base en reglas del tipo IF-THEN, es decir, SI ocurre un fenómeno en particular ENTONCES tomaremos la siguiente acción. Por ejemplo, si pensamos en un sistema de diagnóstico médico, podríamos tener este tipo de reglas:

SI el paciente presenta fiebre, estornuda, cuerpo cortado ENTONCES tiene gripa.

Esta regla es muy evidente por sí misma pero muchas veces en el mundo real las cosas son menos sencillas. Por ejemplo, podríamos decir:

SI el cielo está nublado ENTONCES llevaré mi paraguas.

Aunque la regla podría funcionar considerando que al estar el cielo nublado, entonces podría llover, pues no parece ser mala idea llevar consigo el paraguas. La pregunta que surge, sin embargo, es: ¿Cuál es la probabilidad de que vaya a llover? Si dicha probabilidad es 10% o menos que eso, a lo mejor no tiene sentido cargar con el paraguas aunque sí, podría eventualmente caer una lluvia.

Este tipo de criterios hacen que los sistemas expertos se conformen de muchas reglas CAUSA-EFECTO y que estas se encadenen para llegar a una conclusión. Existen dos tipos de encadenamiento, hacia atrás (backward chaining) y hacia adelante (forward chaining). El primero es más o menos lo que hace un médico que nos ve por primera vez. Nos preguntará en cómo nos puede ayudar y le diremos, por ejemplo, que nos sentimos mal. Entonces el médico preguntará por los posibles síntomas: ¿le duele la cabeza? ¿le duele alguna otra parte del cuerpo? Y entonces el médico buscará encadenar de alguna manera los síntomas que presenta el enfermo para así llegar a un diagnóstico.

En el caso de forward chaining, el médico cuando ve al paciente piensa para sí en un posible diagnóstico, por ejemplo, observa al paciente y decide que éste se ve agripado. Entonces, las preguntas ya están orientadas sobre qué puede tener. Empieza el interrogatorio con una posible hipótesis de la enfermedad del paciente. Si acaso éste le contesta no a un síntoma que debiese ser sí, el galeno entonces buscará una nueva hipótesis. ¿Cuál es la mejor manera de encadenar la información en un sistema experto? No sé, depende del problema que se planteé.

Otro punto a considerar es la incertidumbre en la información. Muchas veces, cuando vamos al médico, éste nos pregunta: ¿qué tanto le duele la cabeza? ¿Mucho? ¿Poco? Defínalo de 1 al 10, donde 1 es que le duele muy poco. Y esto en un sistema experto debe ser validado. ¿Qué pasa si hay diversas incertidumbres asociadas a diferentes preguntas? Las matemáticas tienen la solución, usar el teorema de Bayes, el cual permite combinar adecuadamente las probabilidades asociadas a eventos para saber la probabilidad final deque un evento pueda ocurrir.

Cabe decir que los sistemas expertos contienen tres elementos básicos:


  1. La interfaz con el usuario
  2. La base de reglas causa-efecto
  3. El motor de inferencias


El primer punto permite tener una manera de comunicación entre el usuario y el sistema. La base de reglas, en cambio, debe armarse de acuerdo a consultas que harán los programadores del sistema experto. Finalmente, el motor de inferencias es el que nos dice si haremos encadenamiento hacia adelante o hacia atrás.

Todo esto está muy bien, pero los sistemas expertos parecen ser ya una tecnología obsoleta, por decir lo menos. Definir todo en términos de predicados causa-efecto no parece ser siempre una buena idea e incluso, con el manejo de las incertidumbres, el resultado final parece acartonado. Tal vez -para colmo- los programas de IA que lidian con este tema de los sistemas expertos, decidan cambiar el enfoque a una búsqueda por demás exhaustiva. Y entonces las heurísticas pasan a un segundo plano porque ya se puede tener una solución clara y más precisa.

Un ejemplo de ello es el propio ajedrez por computadora. Los programas tienen una función de evaluación que informan qué posición es mejor y por qué. Un sistema experto con reglas para jugar bien parece resultar por una parte, difícil de generar y por otra, de aplicar en la gran cantidad de posiciones que pueden darse. Es claro que los sistemas expertos no sirven por ejemplo, en el dominio del ajedrez.

Los sistemas expertos tuvieron un inicio interesante e incluso hubo sistemas que permitían vender equipos de cómputo y organizar cómo se pondrían en la empresa del cliente. este tipo de sistemas estaba hecho con una centena de reglas pero incluso, tenía un sistema experto (con más reglas), que buscaba que éstas no tuviesen contradicciones evidentes. Sin embargo, sus limitaciones fueron saliendo a la luz.

Hoy en día no hay quien decida armar un sistema experto, en el tema que sea, porque probablemente quedará siempre limitado. Pienso pues que esta tecnología es obsoleta y habrá que considerarla como un interesante esfuerzo que no prosperó. Así pasa contínuamente en la ciencia. Tampoco es algo que haya que alarmarnos.

Wednesday, September 23, 2015

El nuevo Big Brother de Televisa


Creo que han pasado más de diez años que nació la idea de encerrar a una serie de jóvenes en una casa, de manera que convivieran y a través de mecanismos como retos y votaciones del público, se fuesen eliminando, sacándolos de su encierro y así, llegar a "ganar"una cifra millonaria además de sus quince minutos de fama. Big Brother, si no me equivoco, es una idea de un holandés, que vendió su programa a manera de franquicia. Debe haber hecho mucho dinero pero como todos los contenidos, terminó por agotarse, quemarse, a la gente dejó de interesarle y finalmente por su bajo rating, Televisa debe haber decidido cancelar las emisiones.

Pero han regresado con un Big Brother "recargado", quiero creer. No lo he visto porque ahora veo menos televisión que nunca y entonces, ni siquiera me entero ni a qué horas pasa. Pero más allá de eso, me parece que Televisa sigue empujando a la juventud a este mundo superficial, al del poco esfuerzo, en el que basta ser un "mirrey" o una joven "desinhibida y guapa" para que se tenga éxito en la vida. En esta página hallé el perfil de los habitantes de Big Brother, los cuales supuestamente se eligieron en un gran casting nacional, el cual debe haber tenido miles de potenciales habitantes de la "casa más famosa de México" (después de la casa blanca de Peña Nieto, desde luego). He aquí algunos de los inquietantes perfiles:

Christopher Basteris:



Vamos, un currículum de pena ajena. De verdad.

Veamos a éste:

Martha Rossana:



"Lo que más le gusta es ligar" y su personalidad es seductora, sexy, fiestera, provocadora y juguetona. Vamos, con 27 años de edad no habla de lo que ha leído, de sus intereses culturales, nada. El asunto parece ser la fiesta, el reventón, como lo mejor que puede hacer.

Y así por el estilo, todos los personajes en cuestión son de una superficialidad abrumadora. Entiendo que muchos de ellos están viendo esto como una plataforma para lanzarse eventualmente como actores/actrices, cantantes, etcétera, y así entrar por la puerta grande al mundo de la "artisteada" como alguna vez dijo al célebre Gaviota de Peña Nieto cuando era aún una jovencita.

Si ven los demás perfiles, observarán que hay una buena cantidad de personajes que se dedican al modelaje, o que viven de fiesta en fiesta, o que son muy platicadores y buena onda. Pero no hablemos de cierta profundidad porque eso no es para Big Brother. Los productores eligieron bien: una sarta de inútiles que se sienten modelo y de mujeres guapas con las mismas aspiraciones. Eso es lo que da Televisa y no hay más.

Y eso es lo triste, porque Televisa manda un mensaje lamentable: "No se estudie, no se trabaje, no se profundice en nada. No es importante eso. Lo verdaderamente interesante es que te veas como modelo, que vivas la vida loca y chance, te lleves un muy buen dinero después de que te "encarcelemos" por tu propia voluntad, por unas semanas. Más aún, a lo mejor hasta terminas siendo artista. Porque ¿sabes? No hay que estudiar nada para ser artista en nuestra "casa". En Televisa hacemos ídolos y los usamos hasta que se desquebrajan, hasta que se desgastan, hasta que sus imágenes ya no dan para más, entonces: los tiramos". Eso es lo que hace la televisora y la juventud, que no tiene idea de nada en este país aparentemente, cae en todas las absurdas promociones que le ponen en la "caja boba".

En fin, por eso este país cada vez se lo carga más el payaso. De verdad.

Sunday, September 20, 2015

Cambio de paradigma


La investigación seria en el ajedrez por computadora habría empezado formalmente con el famoso artículo de Claude Shannon, en 1950, el cual marca las pautas para desarrollar un programa completo que pudiese jugar al ajedrez. Sorprendentemente las ideas de Shannon están vigentes hoy en día, en donde los mejores motores de ajedrez utilizan muchas de las ideas descritas en el mencionado artículo.

Los programas actuales utilizan una función que evalúa cada posición (que es un polinomio lineal) y un algoritmo MiniMax, que permite analizar el árbol de variantes creado y calcular la función en los nodos terminales. Este procedimiento MiniMax tiene una versión más sofisticada, llamada Alfa-Beta, que casualmente, bosqueja Allan Turing en su artículo sobre ajedrez aunque aparentemente no se da cuenta de ello. En la medida que se hace un árbol de variantes (jugadas, respuestas, jugadas, más respuestas), los programas pueden evaluar mejor las posiciones. Por ejemplo, si ejecutamos una jugada que sacrifica la dama comiéndose un peón, podemos pensar que esto da al bando rival una posición ganadora, pero si se acepta el sacrificio y entonces ese bando recibe mate, la jugada de la entrega de la dama exige que se vea más jugadas adelante. He aquí lo que se llama pues, el problema del horizonte o para ponerlo de forma llana: hasta dónde podemos ver.

Hoy en día los programas como Houdini, Komodo y Stockfish dominan el mercado y pueden analizar 10 o más jugadas adelante, en donde cada jugada está hecha por dos movimientos, uno del blanco y otro del negro. A eso se le llaman plies, por lo que un ply es media jugada, el movimiento de un solo bando. Pero aparte de analizar ya con mucha precisión y mejor que los seres humanos, valoran cada posición terminal cada vez de forma más exacta. Los programas líderes del mercado son notables y prácticamente imbatibles por los seres humanos.

Pero aunque este paradigma ha funcionado muy bien, por muchos años, quizás tantos como lleva la investigación de ajedrez, se ha buscado que los programas jueguen como lo hacen los seres humanos. Vamos, que los ajedrecistas de elite no calculan todas las jugadas, sino un subconjunto muy limitado y sin embargo, juegan muy bien. Y éste es el problema no resuelto: ¿Qué hacen los seres humanos para hallar la mejor jugada sin tener que crear un amplio y voluminoso árbol de variantes? Eso parece ser un misterio aún, pero se sigue trabajando en ello.


El cambio de paradigma apenas quizás está comenzando. El año pasado un estudiante puso una red neuronal profunda y la entrenó con 100 millones de jugadas (sacadas del servidor gratuito FICS). El programa entonces, viendo todas esas jugadas aprendió a jugar al ajedrez. No se declararon algoritmos específicamente, sino el algoritmo que usa una rede neuronal para poder extrapolar datos y sacar conclusiones.

Hoy hablan de otro programa, llamado Giraffe, que no analiza muchos plies, sino que entiende los valores posicionales y no requiere de analizar árboles grandes. Juega pues más como los humanos. De nuevo, una red neuronal es la responsable de este trabajo y parece ser que el programa aprendió, así como los niños prodigio como Capablanca, a jugar "sólo viendo" cómo su padre movía las piezas. De acuerdo al último reporte, Giraffe, en 72 horas de entrenamiento, ya logra jugar con la fuerza de un Maestro Internacional. Pero éste es un trabajo no terminado. Vamos a ver si se mantienen las conclusiones y si esto se convierte en una nueva manera de programar motores de ajedrez.

______
(*) Claude Shannon (derecha) le otorga el premio a Feng-Hsiung Hsu por ganar con Deep Thought el Campeonato Mundial de Ajedrez por Computadora, en Edmonton, Alberta, 1989.

Tuesday, September 15, 2015

La máquina de Torres Quevedo y el algoritmo para dar mate en el final R vs. RT


Leonardo Torres Quevedo (1852-1936), fue un inventor español, el cual además de todo, tiene un lugar de honor en el ajedrez, al haber inventado una máquina que podía jugar el final de torre y rey vs. rey.  En este caso, al contrario del Turco de Von Kempelen, la máquina de Torres Quevedo ganaba este final básico, pero si pensamos que esto se mostró para antes del 1920, el resultado es notable.


Me he preguntado ¿cómo será el algoritmo de este inventor español para ganar este final? Y lo he hallado descrito en el siguiente libro: Chess and Machine Intuition, de George W. Atkinson, Intellect Books. Este libro me parece fascinante. He aquí el algoritmo de Leonardo Torres Quevedo según el apéndice del libro mencionado:


El esquema de Torres para dar mate en este final de rey y torre vs rey asume una posición inicial con el rey del autómata en a8, torre en b8 y el rey enemigo en cualquier casilla en donde no esté en jaque en las primeras seis filas. He aquí el algoritmo en seudocódigo RB = Rey Blanco; RN = Rey negro y T = Torre blanca:

,
if RN y la T están en las columna a, b o c

  then mueve la T a la columna h (mantén a la T fuera del alcance del RN)

elseif ambos RN y la T están en las columnas f, g o h

  then mueve la T a la columna a (mantén a la T fuera del alcance del RN)

elseif si la fila de la T excede por más de una fila del RN

  then mueve el R una fila (quitandole espacio al RN)

elseif la fila del RB excede por más de dos filas a la del RN

  then mueve el RB una fila (para apoyar a la T)

elseif la distancia entre reyes es impar

  then haz tiempo moviendo la T



     if T es en la columna a then mueve T a la columna b

     elseif T está en la columna b 
          then mueve T a la columna a

        elseif T está en la columna g 
          then mueve T a la columna h

       else {T está en la columna h} mueve la T a la columna g

     endif



elseif la distancia horizontal entre reyes no es cero

  then mueve el RB horizontalment hacia el RN {mnanteniendo la oposición}

else da jaque moviendo la torre una fila {si es la primera fila entonces es mate}

Si el RN está en a6, con las mejores tácticas dilatorias, el mate puede tardar, con este algoritmo, unas 61 jugadas.

Thursday, September 10, 2015

Los problemas de hacer libros en el formato Kindle



La plataforma Kindle me parece una de las mejores para poder publicar contenidos (libros en particular, desde luego), que se tenga actualmente. Por una parte es popular y por otra, a los autores les dan una buena cantidad de alternativas para promover sus trabajos, incluso poniéndoles el precio de venta de cada uno de ellos. Por una parte, el formato de publicación es algo muy parecido a HTML y por ello los libros Kindle pueden leerse de igual manera en diversas plataformas, tanto de escritorio como móviles. De hecho, generar un libro en este formato se puede hacer desde Microsoft Word (e incluso OpenOffice o LibreOffice) y el propio Amazon tiene una guía gratuita indicando paso a paso cómo debe hacerse llamada “Building Yur Book for Kindle”.

Para tener éxito y que la publicación quede bien, tal vez lo más importante es utilizar los “estilos” de Word, los cuales algunos ya vienen en la barra de elementos que pone Word en la pantalla (en su parte superior). Esto es importante porque algunos estilos se usan para poder generar la tabla de contenidos, entre otras cosas. No obstante, si se nos ocurre usar la tecla tab (tabulador), para mover texto, hallaremos que a Kindle esto no le gusta y el formato se puede echar a perder o no verse adecuadamente en todos los dispositivos.

Kindle tiene un programa además, que permite observar cómo se verá el libro recién formado (antes de subirlo a Amazon). Es algo así como un emulador. No obstante esto, hay que reconocer que este sistema es engañoso, porque por ejemplo, si usamos un tipo de letra (una fuente), que Kindle no maneja, entonces ya en el libro final, si esta fuente no existe en la máquina o dispositivo del usuario, Kindle la cambiará por otra. Esto puede ser un grave problema de repente el cual no podremos notarlo aparentemente porque al ver nuestra obra en el formato electrónico, con los tipos de letra que tenemos instalado, no observaremos ningún problema.

De hecho, enfrenté este problema porque llevo ya una buena cantidad de tiempo escribiendo un libro sobre Aron Nimzowitsch, el cual pensé, debería ponerlo en Kindle y ver qué tanta aceptación tiene. Los que no sepan de libros de ajedrez imaginarán al menos que hay toda una notación en el juego, para describir las jugadas que se hacen. En los libros antiguos (antes de los años setenta del siglo pasado), se usaba la notación descriptiva. Por ejemplo, la Ruy López, variante del cambio, podría escribirse así 1. P4R, P4R 2. C3AR, C3AD 3. A5C P3TD 4. AxC PDxA. Hoy en día se usa la notación algebraica y esta misma apertura se pondría así: 1. e4 e5 2. Cf3 Cc6 3. Ab5 a6 4. Axc6 dxc6. Sin embargo, en los libros modernos, tal vez por la influencia de la publicación yugoeslava, el “Informador Ajedrecístico”, que empezó a salir cada 6 meses con las mejores partidas del semestre anterior (y que ahora sale cuatro veces por año), las piezas, que en general son R(ey), D(ama), A(lfil), C(aballo) y T(orre), y se utiliza la inicial de cada una (a excepción del P(eón), que se omite y así, cuando no aparece, hablamos que es una jugada de peón), pero que en el Informador aparece una figurita (ver imagen más abajo), que muestra la pieza. De esta manera, la apertura Ruy López, con la variante del cambio de la que hablamos, podría ponerse así (arriba pueden verse las figuritas que representan cada pieza, Rey, Dama, Alfil, Caballo y Torre.

Todos los libros modernos ponen las jugadas como en el ejemplo anterior, usando el tipo “figurine” de ajedrez, es decir, el tipo de letra corrrespondiente a las piezas de ajedrez (hay varios estilos de este tipo de figuritas de ajedrez disponibles en el formato TrueType). Sin embargo, la plataforma Kindle no acepta cualquier tipo de letra sino que se adhiere a unos pocos (me parece que son máximo 8). Así, un libro de ajedrez escrito para usarse en formato electrónico Kindle, no puede crearse con figurines porque no es un tipo de letra que use comúnmente esta plataforma.

Lo mismo pasa con los diagramas de ajedrez, los cuales representan muchas veces posiciones claves de las partidas que aparecen en los libros. Un diagrama de este tipo puede verse así:



Hay tipos de letra (truetype), que permiten hacer diagramas. Hay letras que representan cada pieza en casilla blanca o casilla negra y se pueden formar diagramas completos. De nuevo, esto es un problema para Kindle, porque este sistema no acepta tipos de letra tan específicos. La plataforma está diseñada para libros con los tipos de letra más comunes y aunque parece que hay herramientas para poder poner tipos de letra embebidos, no parece garantizar que los libros Kindle se vean bien en cualquier dispositivo. En resumen, y esto parece que puede aplicarse a libros que contengan tipos de letra específicos, diferentes a los que Kindle maneja por omisión: no se verán bien en ningún dispositivo que tenga el programa de lectura de Kindle o bien, en cualquier dispositivo móvil incluyendo el propio Kindle Reader y podríamos no notarlo si dichos tipos de letra los tenemos instalado en nuestra máquina.

¿Qué hacer? En particular para los libros de ajedrez la solución es utilizar diagramas que sean imágenes (aunque el resultado final sea de muchos más megabytes pues los diagramas serán imágenes JPG), y en la anotación de las partidas no usar los figurines, sino las letras que representan a cada pieza. Pienso que este problema puede darse en otro tipo de libros e imagino que poco a poco, con el avance de la tecnología, estos problemas se resolverán. Mientras tanto, hay que tomar en cuenta estos detalles que la guía Kindle no indica. De hecho, todo esto lo hallé en un libro que me costó 73 centavos de dólar (From Word to Kindle), de Aaron Shepard. Una guía de hecho mucho más amable que la que presenta Amazon y que menciona los potenciales problemas que pueden surgir cuando uno decide formar un libro para la plataforma Kindle.

Si usted está pensando en publicar un libro para Amazon Kindle, busque algunas de las guías más usadas para formar los libros para esta plataforma. Se puede, evidentemente, hacer con las indicaciones del libro gratuito que se puede descargar de Amazon, pero francamente, hay más de un autor que explica de mejor manera lo que la empresa virtual de libros debería explicar.

Tuesday, September 08, 2015

Programas de TV deplorables


Ayer por Facebook a un buen amigo, Enrique, ingeniero y médico de profesión, amén de hacerla de actor en Televisa, hacer anuncios o participar en programas de concursos en Tv Azteca, nos dio la noticia de que saldría hoy en el programa "Laura de América", en donde la peruana (creo que ya se hizo mexicana), Laura Bozzo, presenta casos, supuestamente reales, de familias disfuncionales, que caen en situaciones bizarras, en donde el común denominador es la ignorancia profunda de estos personajes. Pueden hablar de "me enamoré de fulanito en internet" o "mi suegra es una bruja de magia negra", o cualquier tema que le plazca a la señora Bozzo.

Cabe decir que siempre pensé que estos programas eran una farsa y que las personas que salían ahí eran "actores", pero además -ahora lo sé porque vi a mi amigo en el mismo- el programa de TV es un mega-anuncio de cuanto producto innecesario hay y en donde la publicidad sigue dentro del programa, dejando quizás un 25% del tiempo efectivo de transmisión para los casos que busca presentar. Y si pensaba que a lo mejor las personas que se prestaban a salir en el programa de marras eran reales que estaban pasando por un conflicto por demás extraño, Enrique Gómez nos sacó de la duda indicando que lo habían contratado para aparecer en ese programa. Había hecho un "casting" y le cambiaron el rol que iba a actuar hasta tres veces.

Enrique contó pormenores de este asunto de su contratación y como ya ha salido incluso en alguna novela (creo que como médico), seguramente no tenía problemas en ir al programa de la Sra. Bozzo porque finalmente sabe actuar. El asunto es que el programa presenta los casos como reales cuando son una invención del equipo de producción. No existen estas familias que se pelean frente a las cámaras de la TV, en donde casi en ocasiones llegan a los golpes. Algunas de las mujeres que salen hasta lloran,, gritan se pelean verbalmente con otros de los "actores". Laura de América busca concluir las cosas de la mejor manera posible. Si existe algún personaje indeseable, laura lo presenta como "el desgraciado" y si llega un momento álgido en el escenario, el respetable empiez a corear "¡Fuera!, ¡Fuera!", y el personaje en cuestión sale del proscenio entre abucheos. Vamos que es un espectáculo en donde la calidad del ser humano se denigra constantemente. Y como seguramente tiene muchísimos anunciantes, el programa se mantiene en la televisión.

Vi a Enrique un momento. Su actuación es creíble sin duda, pero es triste venderse así. Enrique nos dijo que fue una muy buena oferta en dinero, amén de darle enseres domésticos y además, promesas para participar en telenovelas posteriormente. Yo no sé si valga todo eso el exponerse mediáticamente en un programa tan deplorable. Enrique -como dije- es un tipo peculiar, con dos carreras terminadas, buen ajedrecista y en algún momento hasta taxista fue. Permitirse estar en ese programa, que probablemente se olvide rápido, no le hace ningún favor a él. Vamos, que no es la mejor imagen de alguien que quiere quizás estar en los medios. Si todos supiéramos que el programa en el que asistió todo es una representación pues se entiende: todos son actores y listo. Ejecutan un guión y ya. Pero no, Laura de América los presenta como casos reales y ahí está la falta de ética, ahí reside lo triste de todo este asunto.

Ver a Enrique me dejó un muy mal sabor de boca y sé que él tampoco quedó satisfecho. Ojalá y que esta experiencia le sirva para no caer en estas trampas mediáticas tan, pero tan lamentables.

Saturday, September 05, 2015

Un truco para proteger el software


El 8 de agosto del 2013 publiqué un artículo sobre un programa que hace reconocimiento de caracteres visualmente (OCR), el cual usa una biblioteca de funciones de un tercero, que yo no escribí, sólo usé.

La biblioteca es gratuita pero estaba limitada en tiempo de uso, cosa que no sabía. El asunto es que de pronto mi programa dejó de funcionar. De alguna manera, pensé, la biblioteca tiene por ahí alguna función que sabe en qué momento se instaló el software y entonces calcula si está todavía en período de pruebas o no. Normalmente muchos programas en modo de prueba, que duran muchas veces no más de 30 días, permiten que el interesado pueda revisar, probar y usar el software sin ninguna limitación en ese tiempo. Después del mismo el software ya no se puede ejecutar.

Los esquemas para hacer software de prueba pueden funcionar de la siguiente manera: escribir en el disco duro del usuario, en alguna parte, un archivo escondido con la fecha de terminación del período de prueba. El software, antes de correr, va a buscar ese archivo y lo lee. Si la fecha del sistema ya es mayor a los 30 días, el software termina. Si por alguna eventualidad dicho archivo no existe, también el sistema termina la ejecución.

Hay otros esquemas más sofisticados que escriben en el REGISTRY, un archivo fundamental en la PC que si desaparece, mete en problemas al usuario de la máquina porque probablemente no pueda ver siquiera los programas que tiene en la máquina. Es un archivo muy sensible y ahí muchos fabricantes de software ponen sus claves de registro para conocer si se trata de software de prueba o no. No me voy a meter más con este archivo y recomiendo que si no saben cómo funciona, ni metan las manos ahí. Si lo hacen y cometen un error, es casi garantía que su computadora quedará inutilizada.

Pues bien, regresando al problema, me sorprendía que el ejecutable de mi programa de reconocimiento de caracteres supiera que ya no puede ejecutarse. Pensando un poco sobre esto, hallé que la única manera que podría saber eso era con al fecha de creación del programa escrito. Entonces decidí hacer una prueba: cambiar la fecha del ejecutable por la del día de hoy y probar. ¡Y sorpresa! Funcionó.

Para cambiar la fecha de creación de un programa se usa una utilería llamada touch, la cual cambia automáticamente la fecha del software. La sintaxis es:

touch nombre_del_archivo

Este programa no es de Windows, sino que se corre en modo consola. Como mucha gente no sabe cómo pasar a modo consola, escribí en un archivo batch dos instrucciones que hacen la tarea:

touch ocr01.exe
ocr01

Al darle doble click a este programa .bat, el sistema cambia la fecha al día de hoy y corre el software sin problemas. Así pues, asunto solucionado después del uso de un par de neuronas para entender el esquema de protección usado por el autor de la biblioteca de software.

Si alguien cree que hago mal, le sugiero entonces me compre la biblioteca comercial de dicho paquete de OCR y asunto moral solucionado.

Si le interesa este programa, escríbame a morsa@la-morsa.com y se lo mandaré a su correo.

Friday, September 04, 2015

La hipocresía humana



No voy a poner la foto del niño de 3 años sirio que aparece ahogado en la playa. Es una de esas imágenes que puede estremecer a cualquiera sin duda. Desde la publicación de la foto en las redes sociales han salido las más diversas voces a pedir que los países le den asilo a los refugiados. Vamos, hasta una propuesta en Change.org por parte de algún mexicano pidiendo que nuestro país abra las puertas a los que están en esta problemática.

La realidad sin embargo, es otra. Los usuarios de las redes sociales -ya lo he dicho antes- son los mejores activistas de sillón y se indignan con justa razón por este tipo de acontecimientos, pero no hacen nada. Veamos: supongamos que el gobierno de México acepta a los refugiados. ¿Dónde los va a meter? ¿Quién se encargará de sus necesidades básicas: comida, higiene, servicios de salud, educación? De eso nadie dice nada. Nomás apelan a que "recibamos a los refugiados y ya, porque es cierto, son personas que la están pasando verdaderamente mal. Pero la petición no involucra a quienes la hacen. Es muy fácil decir: "¡Hágase A, B o C! ¡Y hágase ya! Y si se les ignora entonces podrán decir que el gobierno es criminal, que no tiene corazón, que hay que hermanarse con los que están en tragedia, etcétera.

Pero ¿qué hacen estos peticionarios? Nada real. Puras palabritas en las redes sociales indignándose y exigiendo solución a problemas de otros países cuando en el propio tenemos dificultades que si las tomáramos en cuenta, no tendríamos siquiera tiempo para ver qué pasa fuera del país. Así pues, se me ocurre pedirles a todos estos que piden que México acoja a los refugiados, que hagan algo en favor no de esa pobre gente, sino de la nuestra, en donde más del 50% de la población mexicana vive en la miseria. ¿Qué tal acoger a una familia de cuatro personas, de nuestro país, y les demos refugio en nuestras casas? ¿qué tal darles alimento, servicios de higiene, un lugar para dormir y si se puede hasta educación? ¿qué tal tenerlos en nuestras casas un mes y así los ayudamos? ¿No sería mejor ver la viga en el ojo propio en vez de ver la paja en el ojo ajeno?

Y sí, el mundo es muy complejo y problemático. Lo que viven estos refugiados es terrible, pero es igual de terrible lo que viven muchos de los mexicanos y ni quien se acuerde de ellos. Estos activistas de sillón, si no quieren caer en la hipocresía absoluta, deberían actuar en consecuencia. Y si pido estas acciones es porque pedirles que donen a esta causa de los refugiados es inútil considerando que nunca sabemos si nuestros donativos de verdad llegan a los afectados. Entonces tomar el toro por los cuernos me parece más razonable. Vivamos esta indignación e intentemos ayudar no aun refugiado sirio, sino a un compatriota que está igual o más amolado que el de otro país. ¿Quién se apunta? ¿Quién dice yo?

Wednesday, September 02, 2015

Un lenguaje para patrones en ajedrez II


En el artículo pasado hablamos de un lenguaje de patrones para las posiciones de ajedrez. Definamos más formalmente esto: Un patrón es una generalización de un objeto que contiene sus características esenciales. En ajedrez podemos definir las características de una posición en términos de ataque y defensa. Así pues, solamente hay dos tipos de relación.

Un ataque se da cuando una pieza de un bando ataca a otra (del bando contrario). Una defensa se da cuando una pieza de un bando defiende a otra (del mismo bando). Es decir la definición de ataque se da entre piezas rivales y el de defensa por piezas del mismo bando.

Las relaciones más importantes pueden definirse así:

  • P1 P2 donde P1 (pieza 1) ataca/defiende directamente a P2 (pieza 2). Por ejemplo: T p (Torre blanca ataca peón negro)
  • P1 P2 P3 donde P1 ataca directamente/defiende a P3 vía P2. Por ejemplo: T D p (Torre blanca ataca al peón negro indirectamente a través de la Dama blanca). A eso le denominamos ataque de rayos X.

También podemos definir la relación de un ataque/defensa/dominación a una casilla, P1 C1, donde P1 es una pieza y C1 es una casilla determinada.

Las relaciones que parecen más importantes son:

  • P1 C1 Pieza ataca/defiende/domina a Casilla
  • P1 P2 Pieza 1 ataca/defiende Pieza 2
  • P1 C P2 Pieza 1 controla/domina la Casilla C desde donde ataca/defiende a la pieza 2
  • P1 P2 P3 Pieza 1 ataca/defiende a P3 indirectamente vía la pieza 2
  • P1 P2 P3 P4 Pieza 1 ataca/defiende a la Pieza 4 indirectamente a través de P2 y P3.

Los siguientes ejemplos pueden mostrar cómo pueden representarse los patrones y además, cómo ellos representan (en posiciones que aparentemente son distintas), el mismo patrón. Empecemos por definir la relación ataque/defensa:


Alfil ataca el peón negro de h7 y a su vez es defendido por el peón de c2.

Cabe señalar que esta es una descripción estática porque no se define movimiento alguno a través del patrón definido. Requerimos un componente dinámico, que nos indique qué jugada o jugadas hay que hacer para que el patrón se considere ganador.

----

La necesidad de definir una parte dinámica basada en las jugadas por hacer por parte del bando ganador en el patrón muestra porqué el patrón es importante ya que define una posición ganadora o de la que se saca ventaja. No me queda aún muy claro qué profundidad (cuantos plies) deben describirse. En una primera aproximación bien podríamos definir solamente un ply (media jugada, es decir, un solo movimiento de alguno de los bandos), y esperar que un motor de ajedrez hiciese el árbol de variantes para encontrar la secuencia ganadora.

Podemos entonces asociar movimientos a los patrones definidos. Una P1 que capture una P2 y le dé la ganancia de la pieza 2 podría escribirse como:

P1 P2 [+P2]

Con ese criterio podríamos establecer la siguiente notación, por ejemplo, para cuando la dama captura una pieza rival: D p [+p], D t [+t], D c [+c], D a [+a], D d [+d]. Obviamente no puede existir D r [+r] porque el monarca rival nunca se captura. Recibe mate y se acaba la partida.

Si tenemos a una dama que captura a una torre enemiga (véase siguiente diagrama) pero a su vez esa dama es capturada por un peón que defiende a la torre mencionada, escribiríamos:



La dama blanca captura la torre negra (que está defendida)

D t [+t – D]

Es decir, estaríamos hablando de un sacrificio de dama propia por una torre rival.

En las siguientes dos posiciones podríamos definir el factor dinámico de la siguiente forma:


Nimzowitsch - Tarrasch
San Peterburgo, 1914
Juegan las negras
Elemento dinámico: 1. … Axh2+



Lasker - Bauer
Amsterdam 1889
Juegan las blancas
Elemento dinámico 1. Axh7+


Y suponer que un motor de ajedrez puede hallar el resto de la combinación que no excede 10 plies, (cinco jugadas).

Otra opción, que ahora estoy investigando es la de generar la posición final a partir del patrón. Por ejemplo, en las posiciones anteriores (Lasker-Bauer y Nimzowitsch-Tarrasch):

Lasker-Bauer:


                                 Posición Inicial                                  Posición final


Nimzowitsch-Tarrasch:


                                Posición Inicial                                  Posición final


Podríamos decir que hay una transformación entre la posición inicial (la cual por el momento no sé cómo puede definirse), cuando existe el patrón y el resultado final de la secuencia de jugadas que llevan a obtener la ventaja (o el triunfo). Esta operación bien podría denominarse el colapso (o reducción) de la posición rival (que nace de la secuencia obligada que lleva al bando ganador a obtener la ventaja).

Esto desde luego puede representarse como un árbol de posibles variantes, tarea no muy difícil de hacer con una computadora. Así pues, a partir de la secuencia ganadora, se pueden ver todas las sub-secuencias que llevan a la posición final ganadora (o a la que saca una ventaja definida).

Cabe señalar que en los ejemplos no importa realmente el color de las piezas en el patrón. Si las negras son las que lo ejecutan, lo único que hay que renombrar son las coordenadas (restando 9 a cada una de ellas, es decir, un alfil blanco que ataca el peón de h7 se convierte en un alfil negro que ataca h2).

Un hecho importante sobre este lenguaje de patrones es que permite describir posiciones que precisamente tiene sus características generales. Sin embargo, las posiciones mostradas no son estrictamente las mismas y ahora me parece claro que habría que considerar un índice o una métrica que definiera qué tan similares son los patrones de posiciones específicas. Es decir, parece evidente que no todos los elementos se repiten pero que hay algunos que son fundamentales para definir al patrón.