martes, 10 de febrero de 2015

HelloWorld

main() {
printf(“hello, world\n”);
}

Kernighan & Ritchie

En 1978 Brian Kernighan y Dennis Ritchie presentaron el programa “Hello World”, en el primer capítulo del libro The C Programming Language. Se trataba de un software que imprimía esa frase en pantalla.
Desde entonces es muy común cuando se comienza a aprender un lenguaje de programación, empezar por este programa, pues además de funcionar como una aproximación práctica al sistema básico de funcionamiento del lenguaje, es una sugerente sentencia que se refiere al gran abanico de posibilidades expresivas que permite saber programar.
Este proyecto es una clara evidencia de mi fascinación por las oportunidades creativas que brinda la programación; sobre todo, el hecho de que no se necesiten grandes conocimientos técnicos para implementar proyectos que apuesten por la construcción tropológica y metafórica, sino la habilidad mínima necesaria. A la larga, la pericia y la creatividad siguen siendo la clave.

Mine

Uno de los proyectos finales de programación para los estudiantes de primer año de informática en Cuba, es reimplementar el juego Winmine.
A finales del año 2012, yo estaba muy inmerso en la programación y quería medir mis potencialidades con los estudiantes que consideraba mis homólogos: los de primer semestre de primer año; ese era el máximo nivel al cual podía aspirar a llegar en esos momentos y que no he podido superar aún.
Tuve la oportunidad de revisar los proyectos de los estudiantes de ese año y me sentí frustrado pues, aunque todos cumplieron con el enunciado, ninguno hizo nada digno de recordar en tanto no fuera cumplir o no con el ejercicio. Como artista me parecía que reimplementar un juego tan conocido, debería ser algo más que el simple reto de rehacer lo ya hecho.
Coyunturalmente llegó a mis manos el manifiesto que presenta Cuba ante una convención de los Derechos Humanos realizada en Ottawa, Canadá, en el año 1998 en la cual se negaba a firmar un acuerdo que proponía la prohibición de las minas antipersonales.
El proyecto surge de la mixtura del impacto que me causó ese texto, y el deseo de interpretar intelectivamente el Winmine, más allá del reto técnico que ello significaba para mí, teniendo en cuenta mis incipientes habilidades como programador:
A diferencia de la versión original del Winmine, al activar un botón, en lugar de números coincidentes con la cantidad de minas a su alrededor, se debelan letras, estas en conjunto conforman fragmentos del referido manifiesto.

N

 
La propuesta de Zenón de Elea, conocida como “la refutación del movimiento” todavía hoy es sumamente intrigante.
Según nos dice el griego, un corredor no podría ganarle a una tortuga en una carrera. Ello se debe a que es matemáticamente imposible avanzar en una sucesión creciente, pues las subdivisiones entre los números que la componen son infinitas. Esta idea, además de ser muy reveladora para su momento, es el germen de la teoría del límite en matemática.
Borges estaba apasionado con esta paradoja. Con su genio, lo extendió al lenguaje y a los elementos de significación en la estructura narrativa del relato (ello podemos corroborarlo en El jardín de los senderos que se bifurcan y La biblioteca de Babel). Por transitividad me llegó la pasión por la idea de Zenón, dada mi admiración a Borges.
Entonces me propuse (tal como lo hizo Borges con la narrativa) interpretar la paradoja desde la programación.
Estaba muy obsesionado además con la reducción al mínimo de la obra, pero me interesaba mantener la densidad tropológica de la idea.
Por ello, el título sería un solo caracter: “n”. Este corresponde con la variable usada para la notación de cada uno de los valores dentro del conjunto y a la vez puede designar a todos los valores como un todo.
Así, n era el conjunto, y cada una de sus sudivisiones posibles, a la misma vez.
El software resultante, al ser ejecutado, crea una ventana que se compone de los elementos estructurales mínimos necesarios que funcione como tal: los botones de minimizar, maximizar (que no permite ser usado) y cerrar.
Minimizar mantiene su función original. Pero cuando el usuario intenta cerrarla, la ventana se convierte en dos. Si una de estas es cerrada se convierte en otras dos y así sucesivamente.
La secuencia termina al ser pulsada la tecla “n”.

Fuente

Uno de los campos de investigación que he pretendido mantener desde el año 2012 son las variantes experimentales de literatura, mediadas por la tecnología digital.
El componente visual es muy importante en estas prácticas. Según me parece, todas son deudoras de la poesía concreta y de sus extensiones y mutaciones (experimental, visual, alternativa, performática, etc.). Siguiendo este principio, me propuse hacer un poema que fuera solo imagen, pero sin obviar el componente textual.
La solución que encontré fue incidir en el recurso principal en la conformación de la visualidad del texto: la fuente.
Solo me quedaba el problema del contenido. Cualquier contenido que pusiera daría un valor agregado que le restaría importancia al poema-imagen que pretendía realizar. Después de un tiempo descubrí que la solución siempre estuvo ante mis ojos: usar los textos incluidos por defecto en los archivos de instalación de fuentes.
Ya los había visto anteriormente, pero no había reparado en ellos. Para mi fortuna, al menos en español y en inglés tienen un tono medio surrealista que se avenía muy bien a mi idea:

[Español]
El veloz murciélago hindú comí feliz cardillo y kiwi. La cigüeña tocaba el saxofón detrás del palenque de paja.

[Inglés]
Jackdaws love my big sphinx of quartz.
(El pequeño cuervo ama mi gran esfinge de cuarzo)

El producto final es el resultado es combinar fragmentos aleatorios de estos textos, de modo tal que, aunque el poema puede ser leído e interpretado, en realidad no tendría mucho sentido. Se trata entonces de un poema solo para ser visto aun cuando está conformado por texto.
Al usuario le corresponde armarlo visualmente a su voluntad.

Quídam

La categoría sujeto, que es sumamente funcional para la filosofía es, en la práctica, una total abstracción. Esta designa una entidad autónoma capaz de autoreproducirse e incidir en la realidad mediante la producción de objetos. Como vemos en esta definición cabe desde un ser humano hasta una galaxia. El modo en que se ha definido el sujeto en la filosofía ha ido variando con el tiempo, en lo personal me siento identificado con la idea de “yo trascendental” de Kant, que relaciona al sujeto con el sustrato que subyace más allá del hecho. En otras palabras, en la producción de objetos es aquello que hace que continúe la secuencia, pues solo se conoce a sí mismo como objeto empírico.
Esta, básicamente, es la descripción de un ejecutable autorreplicante, usado muchas veces en el funcionamiento de los virus.
Pero yo no quería crear un virus, en cambio, me interesaba la voluntad del usuario en la replicación del software. Este proyecto creció significativamente en complejidad y no me fue posible
completarlo por mi cuenta. Por ello, la implementación corrió a cargo de un colaborador contratado al efecto. Él en principio no entendió el sentido del encargo, pero le pareció interesante su realización por ser informática pura sin mediaciones, algo casi inconcebible en la actualidad.
El funcionamiento se basa en un ejecutable que al ser activado abre un selector de archivos. En el directorio establecido por el usuario se compila una nueva instancia autónoma, que al ser activada abre un selector de archivo y se compila en el nuevo directorio y así sucesivamente.

DEATH-SUDOKU

Por mediación de alguien muy cercano tuve la oportunidad de revisar los registros de defunciones originales de cierto hospital habanero. No es una información confidencial, pero tampoco de muy fácil acceso.
Recuerdo que los releía una y otra vez, con algo de curiosidad morbosa. Llegado el momento, me sentí un poco incómodo con la idea de que yo también pedía terminar así: un nombre sin vida en un frío listado siendo leído por alguien con curiosidad morbosa.
En esos listados todo se reduce a la estadística funcional y acumulativa de datos: el nombre como criterio de identificación y un número de registro como etiqueta de acceso dentro del conjunto.
El sudoku es un juego de ingenio de origen japonés, cuyo nombre se traduce como “número solo”. Mientras se juega, se accede a una cierta organización de números, que en conjunto conforman la funcionalidad del juego. Su sentido es puro divertimento, y nada más. Yo, por ejemplo, suelo jugarlo en mi móvil para paliar el hastío, en las interminables colas y mientras espero la llegada de una guagua.
El modo de uso de los registros de defunciones y la funcionalidad del sudoku en un final son lo mismo: el acceso instrumental a números. Dentro de los listados las personas desaparecen, y en su lugar quedan los datos vacíos deshumanizados, números abstractos que apuntan a la nada; enfatizar en ellos mediante un sudoku les devuelve, temporalmente, la individualidad perdida.

Let it be

Después de QUÍDAM, me quedaba la desazón de lo fácil que era deshacerse del ejecutable resultante. Decidí, entonces, ir un paso más allá. No quería eliminar la voluntad del usuario, pues ese era el único paso que separaba al proyecto de ser un virus propiamente dicho. Pero tampoco quería que el resultado simplemente se borrara y ya. Me propuse, pues, que el producto resultante fuese una carpeta imposible de borrar. Buscando en la Web encontré que en la API de Windows existen palabras reservadas que no permiten ser usadas para nombrar las carpetas. De manera convencional es imposible crearlas, en cambio con un brevísimo script si se puede.
El algoritmo para lograrlo es el siguiente:

1. cree un archivo de texto en un directorio cualquiera.
2. nómbrelo “let it be”
3. ejecútelo y escriba el siguiente texto: md aux\
4. cambie la extensión “.txt” por “.bat”
5. ejecútelo

El resultado es una carpeta imposible de borrar convencionalmente. Usted puede:
1. ofuscarse tratando de borrarla
2. buscar vías alternativas para su eliminación (que por supuesto las hay)
3. no preocuparse y simplemente dejarlo existir.

Almacenero

Mi padre fue almacenero en una tienda de divisas en Cuba por nueve años. A veces, sobre todo los fines de semana, me pedía que le ayudase a organizar el almacén. Era un trabajo muy tedioso y poco creativo. Básicamente se trataba de organizar las cajas de forma tal que cupieran la mayor cantidad posible en menos espacio.
Jugar Sokoban puede no ser una experiencia sensible para muchos, para mí, es evocar cada uno de los días en que trabajaba con mi padre en el almacén.
Mi padre controlaba además el Listado de Existencias, donde se registraban cada uno de los productos en inventario. Por tal motivo, tuve acceso a información de primera mano sobre la relación de precios, algo demasiado sensible para los cubanos como para habernos acostumbrado a ello.
De toda la información en los listados la más cruda, a mi juicio, era la relación valor de costo-precio de venta. Siendo el precio del producto el resultado de la ecuación costos+beneficios, el valor de costo sería el monto en que se incurre para la producción, embalaje, distribución etc. del producto, el resultado de sustraerle al precio de venta el precio de costo es ganancia limpia. La norma de ganancia a nivel internacional es el 30% de los costos, pero en Cuba es mucho más que eso.
La versión de Sokoban usada como referencia fue implementada por Jeng-Long Jiang en 1992. De él se tomó la disposición de los elementos para todos los niveles.