Monday, May 25, 2020

Finalmente se ha publicado mi artículo de patrones


Los que siguen mi blog saben que en los últimos años he trabajado en mi doctorado en ciencias de la computación, el cual realizo en la UNAM. Uno de los requisitos obligatorios es la publicación de al menos un artículo en una revista internacional arbitrada. El asunto supone que si se acepta en ese tipo de publicaciones, con académicos que no saben quién es uno, que finalmente sólo leen lo que único está investigando, pues debe tener valor. Esa idea parece que fue de Sandoval Vallarta, físico, profesor en el MIT y del Instituto de Física de la UNAM, quien alguna vez indicó a un reportero que le preguntó cómo es que la ciencia nacional podía validarse, su respuesta fue: "publicando en el extranjero". Y tiene su propia lógica viniendo de un país que es del tercer mundo. Por ejemplo, mi asesor estudió su doctorado en el Reino Unido y no había ese requisito e incluso, les sorprendía cuando le pregunta eso a sus tutores.

Como sea, después de casi dos años desde que mandé el primer borrador del artículo, finalmente lo aceptaron. Mi asesor me decía que no tomara a mal las correcciones que me hacían, pues no eran personales. Así que aguanté todo lo que me dijeron, corregí todo lo que me pidieron y finalmente fue aceptado y publicado -según entiendo- en el número de mayo 2020. Esta revista sale cuatro veces al año.



Así pues, requisito cumplido y además contento, porque creo que la contribución vale la pena, particularmente en los patrones de ajedrez, en los que llevo trabajando desde mucho antes de que entrara al doctorado.

Cabe decir que en estos días de cuarentena se me ha ocurrido que el lenguaje de descripción podría hacerse más robusto si le añadimos la capacidad de ser programable. Es decir, por el momento, en el artículo se analiza cómo describir posiciones en ajedrez de manera generalizada, lo que haría finalmente tener la posibilidad de describir los patrones en ajedrez, cuyo mérito es que muestran que no necesariamente hay que analizar profundamente en un árbol de variantes para encontrar la mejor jugada.

Por ello mismo, añadiendo capacidad de procesamiento de los patrones en bases de partidas, se podría tener un ambiente en donde podríamos eliminar los manejadores de bases de datos (de encuentros ajedrecísticos) y darle así independencia al lenguaje de descripción de este tipo de aplicaciones.

Ya hablaré más de esto en la medida que vaya progresando en el problema. Por lo pronto, como ya dije antes, creo que empiezo a ver la luz al final del túnel.

Saturday, May 23, 2020

La cuarentena, el semáforo epidémico y las mentiras del gobierno



Seguimos en cuarentena y ya en la Ciudad de México se ha anunciado que el semáforo rojo, es decir, la condición actual de la pandemia, nos mantendrá encerrados hasta el 15 de junio. Y se supone, de acuerdo a las predicciones de un grupo de matemáticos de los cuales nadie sabe quienes son, se empezarán a abrir las actividades, de las imprescindibles hasta las no imprescindibles. Es decir, actividades como la distribución de alimentos, que son necesarias e imprescindibles, no pueden detenerse. Pero actividades como las diversiones, los cines, los teatros, etcétera, que no son imprescindibles, no empezarán pronto.

Y desde luego, cuando empiecen a haber más actividades, que se abrirán gradualmente, puede haber rebrotes y entonces ya lo digo López Gatell, se tendría que regresar a la fase anterior, regresando a la cuarentena, aunque fuese más selectivamente. En resumen, todo el problema tiene tres vertientes: por un lado el hecho de que la pandemia no puede curarse con ningún tratamiento o vacuna, otro, que no se puede perpetuar la inmovilidad social de las ciudades y finalmente, el hecho de la miserable infraestructura médica gubernamental. Y es que el gobierno está preocupado porque requiere que los casos de contagio no sobrepasen cierta cantidad porque no habría manera de atenderlos. Y entonces nos hablan de la disponibilidad de camas y de respiradores todos los días, como si fuésemos primer mundo. Pedro hay historias de enfermos que han pasado un  vía crucis para ser atendidos.

Así las cosas, el asunto es que López Gatell nos dijo que el pico de la pandemia sería el 10 de mayo. Pero no solamente no se cumplió esa fecha, a pesar de lo que dijeron los matemáticos que hacen las predicciones y que el Secretario López Gatell ha anunciado como luminarias de la ciencia en México. Y ojo, entiendo que los modelos matemáticos fallan, pero decir una y otra vez que el pico sería en un día determinado y ver que no se cumple y que además, sigue creciendo la cantidad de contagiados, habla que algo estamos haciendo mal.

Y ya no voy a hablar de los números que presentan. Hay muchas voces que dicen que hay muchos más muertos de los que menciona el Gobierno Federal. Sea como sea, el asunto es que empieza a dar impresión de que todas las medidas han sido inadecuadas o bien que no se han cumplido como se cacarea, literalmente.

Termino con eso: apuesto doble contra sencillo que saldrá la Dra. Sheinbaum a decirnos que la cuarentena se extenderá hasta finales de junio y cuando estemos por llegar ahí, dirá que se alargará otros 15 días de julio. Y puedo entender las razones, pero estamos llegando al límite de esta cuarentena. Y ojo, ni siquiera estamos hablando de regresar a las escuelas, que se supone está planeado para agosto de este espantoso 2020. Así están las cosas. Yo ya no les creo nada a las fechas que propone el gobierno.

Más sobre las imágenes hechas con dados



Hace apenas un par de días escribí sobre la imagen de Michael Jordan, creada con dados, hecho por Barbara Lynn Helman, una ciberartista. La foto del basquetbolista está hecha con pequeños dados negros con puntos blancos. Después de elaborar una versión que ya tenía para hacer imágenes -pero con fichas de dominó- me di a la tarea de simular los dados. No fue difícil pues en Internet hay muchísimas imágenes de dados como los que necesitaba.

Pues bien, debido a que el tema me era familiar, decidí replicarlo por software, es decir, me iba a evitar comprar 5300 dados para hacer algún cuadro, pues iba a simular los mismos poniendo las gráficas correspondientes a cada cara del dado, de acuerdo al tono de gris que requiriera la imagen.

Sin embargo, como ya mencioné antes, mis resultados -usando la misma imagen que usó la artista- no lo replicaba. Sí, se parecía bastante pero por alguna razón la creación con dados reales se veía mejor que en mi simulación con dados virtuales.

Así descubrí que Barbara Lynn Helman había manipulado la fotografía de Michael Jordan. El fondo de la imagen original lo oscureció totalmente -lo cual tiene sentido si consideramos que las caras de los dados pueden dar apenas seis tonos de gris: el dado marcado con un punto es el más oscuro y la mula de seis es la más clara. Igualmente, Barbara cambió el contraste y el brillo dela imagen antes de procesarla, para que la creación quedara mejor. Así que decidí manipular la imagen y sí, los resultados empezaron a parecerse más, pero aún notaba que la imagen de la artista era más clara.

Entonces decidí ver por qué no se podía ver mi imagen procesada como la creada con dados reales. Vi el video de Barbara y hallé la razón: usa dados negros que tienen puntos blancos muy grandes. Por ello, algunas partes de su cuadro parece que tienen dados blancos pero no es así, es que el dado  marcado con los seis puntos se ve muy claro. La siguiente imagen muestra un fragmento del video. Obsérvese que los dados tienen puntos muy grandes.



Entonces rehice mis dados virtuales e hice unos con puntos gordos.


Y volví a procesar la imagen de Jordan, ahora con mejores resultados. Igualmente, le agregué un marco a los dados para que se viera que estaban separados unos de otros, aunque fuese por muy poco, para dar la sensación de ser dados independientes. Esto mejoró el asunto. Así entonces, ahora mi software puede generar dados simples, con marco y con puntos "gordos". De hecho, esta el la opción que da mejores resultados.

Este es el resultado final:



Podemos compararlo contra la versión anterior (a la izquierda). Esta última versión es más clara y la razón es simple: los puntos de los dados son más grandes.


Todas las pruebas que hice, en su tamaño original, pueden descargarse de este enlace.

Finalmente, hice un último experimento, pero hora tomé una de las fotos de Instagram de Barbara Lynn Helman, y este fue el resultado (que puede descargarse en su tamaño final de este otro enlace).



Creo pues haber encontrado el problema por el cual mi software sí, hacía estas creaciones muy parecidas a las de Lynn Helman, pero que no quedaban tan bien como su trabajo. De nuevo, a quien le interese el software, puede pedírmelo a morsa@la-morsa.com y con gusto se lo mandaré de forma gratuita.

Voy a dejar un nuevo video con las mejoras del software. Puede verse aquí abajo.



Friday, May 22, 2020

Fotografías hechas con dados



Recientemente vi un video de Barbara Lynn Helman, en el cual muestra una imagen del basquetbolista Michael Jordan, hecho con 5300 dados de color negro con puntos blancos. La idea de hacer imágenes con objetos no es realmente muy novedosa y de hecho, en el curso de Proceso Digital de Imágenes que imparto en la Facultad de Ciencias de la UNAM, muestro algunas ideas al respecto.



La primera vez que vi algo al respecto fue en el 2006, en un documental sobre el matemático Martin Gardner, a quien Ken Knowlton le había hecho un cuadro con piezas de dominós (ver aquí). Así que la idea de Lynn Helman, usando dados no era necesariamente muy original. El mérito de la artista es que usó 5300 dados físicos para armar la imagen de Michael Jordan.


Martin Gardner y su cuadro hecho con fichas de dominó

Como para el curso de Proceso Digital de Imágenes ya había hecho algo parecido con fichas de dominó, decidí hacer lo mismo pero usando dados. Fue un trabajo de un par de horas, pues ya tenía realmente el software escrito. Sin embargo, cuando tuve la primera versión modificada, me di cuenta que mi resultado no encajaba con lo que había hecho Barbara Lynn Helman.

El asunto va de la siguiente manera:

  • Tenemos seis posibles dados, del 1 al 6. El 1 es el más oscuro y el 6 es el más claro. Desde luego que con tan pocos tonos de gris, por decirlo de alguna manera, el resultado siempre es complicado para que salga bien.

  • Por otra parte, quería usar la misma foto que usó la artista y después de una media hora, finalmente la hallé en Internet.

La foto original usada por Barbara Lynn Helman

  • La artista manipuló la imagen de Jordan, poniendo en negro todo el fondo. Esto ahora lo sé porque tengo la imagen que usó originalmente.

  • Curiosamente hay una foto donde está el escritorio con la imagen a medio formar con los dados y la foto que usa no tiene modificado el fondo.


Así que tomé la imagen de Jordan. La recorté lo necesario tratar de hacer una imagen del mismo tamaño que uso Lynn Helman. Me guié del video que mostró la artista en Instagram.

Y entonces procesé la iamgen y en menos de un minuto tenía ya el resultado final. Este es el resultado:


La diferencia es que yo usé 6 imágenes el decidir qué cantidad de puntos iban en cada posición lo hizo el software automáticamente. La teoría al respecto es muy sencilla:


  • Tómese una imagen a procesar
  • Cuadricúlese la imagen en pequeñas regiones cuadradas (porque los dados son cuadrados). Entonces vea la primera región y calcule su tono de gris. Este será de 0 a 255. Hay que poner el dado que se acerque más a ese tono. Como tenemos solamente seis caras de un  dado, cada una contempla unos 42 tonos de gris. del 0 al 41 usé el dado con un punto. de 42 a 81 usé el que tiene dos puntos y así sucesivamente. Haga este procedimiento para toda la cuadrícula definida.
Si comparamos ambos resultados, hallamos lo siguiente:



El resultado prácticamente es el mismo. La única diferencia es que yo no tuve que conseguir 5300 dados negros con puntos blancos.

En realidad la arrtista Lynn Helman usó la conocida teoría de los semitonos, la cual ya expliqué aquí.

A quien le interese el software, escríbame a morsa@la-morsa.com y se lo mando gratuitamente por correo electrónico. Dejo más abajo un video sobre los pasos a seguir con la aplicación escrita para crear este tipo de imágenes.


Wednesday, May 20, 2020

La cuarentena interminable



La pandemia provocada por covid-19 parece que no se resolverá pronto. Y es que las mediciones de los enfermos, contagiados, intubados (¿no debería ser entubados?) siguen creciendo. El subsecretario de salud, López Gatell, había hablado del pico de la pandemia era, primero el 6 de mayo, después el 8 de mayo y finalmente hablaba del 10 de mayo. Y comentaba que esto era la predicción de un grupo de matemáticos capaces, coordinados por CONACyT.

Pues bien, ya el Dr. López Gatell ha olvidado esas predicciones y ahora parece que el pico de la pandemia será los primeros días de junio. Y entonces, en ciudades como la CDMX, se mantendrá la cuarentena hasta el 15 de junio. ¿Entonces? ¿Qué pasó con las predicciones? ¿Por qué ha fallado el modelo? Bien podrán decir que es un modelo y que no es una ciencia exacta. Pues muy bien, pues si es así, ¿para qué se la pasaron anunciando picos que no ocurrieron y fechas que no se dieron?

Ahora en la CDMX se seguirá inventando esta "nueva normalidad", porque ahora hay que seguir la nomenclatura que diga el Presidente. Por lo pronto, las universidades y las actividades escolares empezarán, si bien nos va, en agosto. Mientras tanto nos seguirán dando largas, explicando las razones para seguir manteniendo a la gente en sus casas, porque no parecen tener ninguna otra idea. En términos reales, si para septiembre no se está en un semáforo verde, estará claro que toda la gestión del gobierno habrá sido un fracaso.

En fin, la cuestión es que seguiremos en esta cuarentena que no parece tener fin. Vamos a ver qué pasa.

Tuesday, May 19, 2020

Las redes sociales y el Presidente de México



Hace unos pocos días, el Peje, el actual presidente de México, Andrés Manuel López Obrador, en una de sus conferencias mañaneras, dijo que había que pedir explicaciones a Facebook y Twitter, pues estaban llenas de "bots", los cuales desacreditaban las acciones de la 4T (palabras más, palabras menos).

No sé Facebook, pero Twitter contestó a las preguntas de nuestro tlatoani mayor indicando que el negocio de Twitter no era ni remotamente los bots, de lo cual se deslindaban de una buena vez. Esta respuesta apareció en Twitter pero... ¿qué dijo López Obrador? Fácil: que había recibido respuesta de la empresa Twitter, pero que no había podido saber lo que dice porque el mensaje venía en inglés y como todos saben, el Peje no habla inglés (ni como Peña Nieto).



Cuando escuché la declaración de AMLO pensé que era absurdo que el presidente de este país no hubiese tenido la iniciativa trivial de llamar a alguien para que le tradujera el dichoso mensaje. Pero la realidad es que caí en la ingenuidad. López Obrador sabe perfectamente que si el mensaje venía en inglés, alguien podría traducírselo. Entonces, ¿por qué dijo semejante barbaridad? Simple, porque el Peje quiere que sus votantes, las personas que están con él, se identifiquen con él.

Entonces, es sumamente probable que mucha gente que lo sigue ciegamente tampoco sepa inglés y entonces, estas personas podrán sentirse identificadas con la cabeza de la nación. Vamos, que es un truco del Peje para ganarse simpatía y empatía. Desde luego que hacer ese comentario es ponerse "en la foto" para ser criticado por ello. Pero eso es un costo nimio ante la certeza de ganarse simpatías con todos aquellos que cultural e intelectualmente son como él.

Alguien me había dicho, más de una vez, que el Peje es muy inteligente y que lo que dice -aunque parezca absurdo- tiene una intención más oculta. Ante ese comentario me quedé con la idea de que esto simplemente justificaba los dislates presidenciales que dice diariamente. Sin embargo, ahora -con este episodio- no estoy ya tan seguro de ello. En cualquier caso me parece una mala idea hacerse de una imagen tan lamentable para seguir pretendiendo ganarse a los votantes ¿o estoy equivocado?


Sunday, May 10, 2020

Reto de programación lúdica: Un ensamblador del 6502 escrito en algún lenguaje moderno



Hoy los procesadores son muy poderosos, corren a velocidades que ya van en los 4 GHz y pueden soportar 64 bits. Estos chips tienen incluido un conjunto de instrucciones que son las que gobiernan lo que hacen los microprocesadores a cada momento. Hay diferentes arquitecturas y conjuntos de instrucciones. Pero en el pasado no tan remoto, llegaron los primeros procesadores, que eran de 8 bits, con un bus de 16 bits de direccionamiento, lo que hacía que pudiesen tener hasta 64K bytes de memoria RAM para poder trabajar. Considerando lo que puede hacerse ahora esta cantidad de memoria parece muy limitante y lo es, porque los sistemas ahora requieren de toda una infraestructura de hardware para poder ejecutarse.

Sin embargo, los procesadores de 8 bits nos enseñaron muchas cosas, entre ellas, a programar en ensamblador, que es el lenguaje más cercano al lenguaje de máquina. Un microprocesador, como el 6502, que fue muy popular en las máquinas Commodore, Atari y Apple II, tenía un conjunto de instrucciones y éste a su vez una serie de modos para direccionar la memoria. Había, por ejemplo, instrucciones para guardar un dato de memoria de manera directa, o bien, que lo guardase en una localidad de memoria especificando un índice que salía de un arreglo. Los modos de direccionamiento enriquecían el lenguaje del procesador y lo que podía hacerse.

Desde luego que los códigos de la máquina tenían ya para ese entonces (principios de los años 1980s), una serie de códigos “mnemotécnicos”, los cuales se asociaban a los valores de las instrucciones porque no hay que olvidar, que al final de cuentas, la máquina solamente usa números. Así, por ejemplo, LDA significaba Load the Accumulator A, un registro del microprocesador y NOP simbolizaba la instrucción de No Operation, es decir, solamente gasta ciclos de reloj.

Con esta lista de pseudo códigos, un programador podía entonces escribir programas y estos se traducían a los códigos numéricos, que formaban el archivo binario que era finalmente un programa “ensamblado” por un sistema llamado “ensamblador”. El ensamblador era pues un editor específico para crear programas al casi más bajo nivel de cómputo y sin tener que escribir los códigos numéricos que representaban las instrucciones. Esta labor tediosa la hacía el ensamblador.

Con el tiempo, los ensambladores crearon un sistema para poner macroinstrucciones, es decir, un grupo de instrucciones en ensamblador que hacían una tarea en particular. Y de pronto el ensamblador era un poco más que un editor de programas, era todo un sistema que daba muchas más facilidades al que codificaba.



Encuentro ahora en la red un ensamblador para el procesador 6502 escrito en BASIC. La ventaja de este enfoque es que el sistema puede trabajar simplemente si se tiene acceso a algún intérprete o compilador del BASIC tradicional. Este ensamblador no requiere además de tener un microprocesador 6502, pero genera código para una máquina de estas características. A todo esto, si no tiene una computadora con un 6502, siempre puede usar un emulador, que los hay por decenas. Si está en ese caso, el programa en BASIC es realmente un “ensamblador cruzado”, es decir, corre en una máquina que soporta un conjunto de instrucciones, pero genera código para otro tipo de procesador.

La idea es pues: ¿sería usted capaz de escribir un ensamblador para un microprocesador como el 6502 o el 6800 (que es igualmente sencillo en sus modos de operación)? El reto tendrá como premio una taza de la Morsa. Si el ganador es de provincia, se le mandará un USB de 8 GB al menos, porque mandar una taza por mensajería es ridículamente costoso. Cabe señalar que este concurso busca simplemente alentar el trabajo de la programación y mostrar que puede ser lúdica. Es un concurso de buena fe. Si hay, por ejemplo, dos o más respuestas satisfactorias, ganará quien la haya mandado primero. El ganador cede su código fuente a la comunidad. Es decir, se promueve el código abierto.

Las respuestas al reto deben mandarlas a morsa@la-morsa.com.



El ejercicio es interesante y quien lo intente seguramente comenzará a tener una visión mucho más rica de lo que hacen los procesadores. Más allá del posible premio, hay una cuestión de satisfacción personal en realizar este tipo de trabajos. Así que manos a la obra, es decir, ¡Manos al teclado!


Wednesday, May 06, 2020

La interminable cuarentena


Desde el 23 de marzo, si es que la memoria no me falla, empezó la cuarentena en México. Con el pomposo nombre de "Jornada Nacional de Sana Distancia", el gobierno federal empezó a implementar las acciones para evitar que la pandemia nos fuese a agarrar desprevenidos. Y desde luego, el covid-19 llegó tarde que temprano. La razón es que la epidemia viaja en jet, como comentó el Dr. Antonio Lazcano en algún momento, es decir, gracias a cómo nos movemos los seres humanos hoy en día, el contagio puede ser muy, pero muy rápido.

Y llegó finalmente el primer contagiado confirmado... Y los medios hicieron su agosto vendiendo el terror. La pandemia iba a llegar y lo único que teníamos que hacer es estar lo mejor preparados posibles para darle pelea a la misma. Y es que hay dos problemas a resolver: como no existe vacuna o medicina que cure a quien se contagia de coronavirus, pues todos estamos en riesgo de que nos pase algo grave e incluso perdamos la vida. Por otra parte, los servicios de salud de México, sobre todo los públicos, siempre han sido poco menos que lamentables, con sus honrosas excepciones. Y entonces, la problemática es que si se enferma demasiada gente al mismo tiempo, el sistema de salud no va a ser suficiente y morirán personas que de otra manera quizás hubiesen podido salvar la vida.

Para taparle el ojo al macho, el gobierno ha empezado a soltar dinero, y ha comprado estos respiradores que parecen ser fundamentales para aquellos que pueden padecer lo peor del virus. Y en el camino tenemos un conflicto de intereses porque el hijo de Bartlett es quien ha vendido 160 millones de pesos al gobierno en estos equipos. Por otra parte, se han creado "hospitales covid" de la noche a la mañana e incluso un área de los Pinos se acondicionó para que lo usen un contingente de valientes médicos. Lo malo es que todas esas acciones suenan maravillosas, pero se enfrentan a la realidad de la burocracia mexicana. Yo no me la creo, y mucha gente estará conmigo, de que en el papel y los anuncios en las conferencias diarias, México es maravilloso. Pero ya teniendo que enfrentar la problemática en el mundo real, podemos esperar los escenarios más kafkianos... Y  no sé si me estoy quedando corto.

Los epidemiólogos entonces salen a hacer su trabajo. Se conoce el mecanismo de las pandemias y claramente el crecimiento de las personas contagiadas se vuelve exponencial... hasta que se llega a un pico y de ahí empieza a haber cada vez menos casos. Y entonces, de lo que se trata es de aplanar la curva, frase que se ha vuelto popular y que finalmente indica que lo que se quiere es que el incremento exponencial de los enfermos sea más lento, porque así nos da más tiempo para tratar (como país) a los enfermos.

La ciencia conoce estos modelos y los matemáticos, a la luz de los datos que se tienen incluso a nivel mundial, pueden dar predicciones y estimados de cuando ocurrirá cada fase del fenómeno. Por ejemplo, se estuvo mencionando que el 6 de mayo, es decir, el día en que escribo esto, se llegaría al pico y que entonces, en los siguientes días, empezarían a bajar los contagiados. Pero el Dr. Hugo López Gatell ya comentó que la fecha era una predicción "robusta" y a pesar de querer enfatizar en el poder de la ciencia, pues resulta que hubo que cambiar la fecha del pico de la pandemia para el 8 de mayo.

Pero curiosamente, López Gatell dijo que el cambio de fecha del pico no era necesariamente una mala noticia, porque esto implicaba que ganábamos tiempo aplanando más la curva. Y aseveró con toda honestidad que esto significaría que la salida de la pandemia podría llegar a ocurrir a fines de junio. Y dijo algo como que no se puede ganar en todos los frentes (aunque no fueron sus palabras textuales).

Pero el punto crítico, más allá de la pandemia, de los 2500+ personas fallecidas por el covid-19, está el tema económico. El mismo López Gatell indicó que no se puede mantener esta situación a perpetuidad. La actividad económica está en un mínimo y claramente tiene que empezar a liberarse la actividad económica, sea de manera escalonada, gradual, como quieran, porque la pregunta sería entonces: ¿Cuánto puede aguantar la economía de un país si se le cierra por N meses?

Y sí, lo sé, nadie quiere esto. Y sí, la vida es muy importante, vamos, fundamental. Nadie imaginó la problemática de un virus de estos ni las consecuencias del mismo, pero evidentemente el mundo, no sólo México está siendo rebasado. Y a todos nos agarró como con los dedos en la puerta, pero más allá de eso, hoy día, el propio gobierno -quien es el que tiene el poder para mantenernos en cuarentena- está cerca de tomar decisiones cruciales y probablemente no sean las mejores. Yo, por mi parte, ya me estoy haciendo a la idea de que ir a la UNAM después de mayo será aún poco probable. Y ojalá y me equivoque.