lunes, 23 de julio de 2007

Canard de bain

Arte.



Monumental trabajo de Florentijn Hofman.

De sus obras, la que más me ha llamado la atención es su "Canard de bain" (Badeend/Rubber duck), un PVC inflable de 26 x 20 x 32 m. En la descripción dice entre otras cosas: "un amarillo punto en el horizonte que lentamente se acerca a la costa".

Saint-Herblain:del 1o al 15 de junio
Couëron:del 17 al 27 de junio
Cordemais:del 30 de junio al 20 de julio
Paimbœuf:del 23 de julio al 16 de agosto
Saint-Nazaire:del 19 de agosto al 1 de septiembre


_____
Website // Link
Florentijn Hofman // Link
A Saint-Herblain et sur l’estuaire // Florentijn Hofman // Link

[entrada publicada originalmente el 23-07-2007 12:15 en Yahoo! 360]

martes, 17 de julio de 2007

"Gran Orden" de programadores

Ideas.



“Se mistifica lo que no se conoce”. Aquí un ejemplo escrito por Herbert Schildt:

¿Cómo escribir un programa que tenga como entrada una cadena que contenga una expresión numérica, como por ejemplo (10-5)*3, y que calcule el resultado adecuado? [...] Si todavía existe una “Gran Orden” de programadores, deben de pertenecer a ella los pocos que sepan hacer esto.

La mayoría de los demás programadores [no C] mistifican la forma en que los lenguajes de alto nivel convierten las expresiones algebraicas en instrucciones que la computadora puede ejecutar. Este procedimiento se denomina análisis de expresiones y es lo que forma la espina dorsal de todos los compiladores e intérpretes de lenguajes, de los programas de hojas de cálculo y de cualquier otro programa que convierta expresiones numéricas en forma que puedan usar las computadoras.

Aunque resulte misterioso, el análisis de expresiones es realmente algo simple y, en muchos sentidos, es más fácil que otras tareas de programación. La razón se encuentra en que el problema está muy bien definido y se basa estrictamente en las reglas del álgebra. (Schildt, 2001: 515).

[...]

No es difícil ni define ninguna "Orden". Una manera de solucionar la pregunta introductoria de Schildt a su Capítulo 24. Análisis y Evaluación de Expresiones, es: En tiempo de ejecución, cualquier expresión se desmenuza en tokens y sobre ellos se aplican las reglas algebraicas. El producto es un algoritmo que dicta la secuencia de instrucciones que calculan el resultado adecuado. Pero ahora...

Torito! ¿Como convertir "cualquier" consulta válida sobre "cualquier" base de datos georreferenciada en una vista 3D en Google Earth, y que muestre el resultado correcto sin tener que reescribir el programa para cada consulta?

Ejemplo de consulta, solucionada con un sistema que desarrollaba llamado z_KML: Desde una base de datos llamada xUgaDB, el siguiente programa ejemplo genera un KML (Google Earth) de todos los 'gatos fotografiados' después de 1995 en Tamaulipas, y los ordena por fecha, hora y número de memoria del GPS.

open   xUgaDB   1
agroup   l_date   l_anio   l_mes   l_dia
agroup   l_time   l_hora   l_minuto
sort   l_date   l_time   gps_mem
search   l_localidad   ?   "Tamaulipas"
search   l_notas   ?   "gato"   and
search   l_notas   ?   "foto"   and
search   l_anio   ?   "1995"   and
coord   lat_gra   lat_min   lat_seg   lon_gra   lon_min   lon_seg
do
end

Comentarios: En el proceso se crean los campos temporales L_DATE y L_TIME que se usaran en SORT; la geoposición se controla en COORD; el 1 en OPEN desecha el primer registro de la base -porque no es útil-; en DO no se solicita enumerar los registros en la respuesta; y no se han cambiado los parámetros default para generar el KML. El resultado es un conjunto de geoposiciones en formato KML.

La imagen arriba es una captura de pantalla de una consulta real (solicitada a xUgaDB), en donde se necesita que el resultado (conjunto de geoposiciones que responden a la pregunta) sea organizado como un conjunto de rutas de longitud mínima (un árbol de rutas). Se logra con la función PATHS ruta mínima; para lograrlo, simplemente se agrega antes de DO:

set   _KML_STYLE_name   x_style_02
set   _KML_STYLE_type   paths
set   _KML_STYLE_altitude   1500
set   _KML_STYLE_line_style_color   7f00ffff
set   _KML_STYLE_line_style_width   4
set   _KML_STYLE_poly_style_color   7f00ff00
set   _KML_STYLE_tessellate   1
style
set   _KML_PATHS_style_name   x_style_02
paths   _KML_PATHS_style_name   min

Comentarios: Los primeros 7 SET declaran un estilo; con STYLE se crea el nuevo estilo; en el siguiente SET se asocia el estilo a PATHS; y finalmente, en PATHS se solicita con el estilo asociado, la ruta mínima entre todas los registros geoposicionados de la respuesta (la consulta ya configurada). PATHS se encarga de localizar una ruta base, a la cual se unan las demás rutas generadas, para que entre todas generen una distancia mínima de recorrido.

Parafraseando ¿Como escribir un programa que tenga como entrada el libreto con las instrucciones anteriores y que genere un gráfico (KML) con el resultado adecuado? Mi respuesta: z_KML es un lenguaje que analiza tokens, donde cada token es una función paramétrica que se aplica a una estructura de datos georreferenciada.

Actualización 23 jul 2007: Y si estamos en exigencias, entonces ¡que también genere un shapefile para ArcView!


_____
del libro que actualmente leo:
Schildt, H. 2001. C Manual de referencia. Osborne McGraw-Hill. 709 pp.


Herbert Schildt // Link
wiki: Google Earth // Link
wiki: KML // Link
wiki: Shapefile // Link
wiki: ArcView // Link


[entrada publicada originalmente el 17-07-2007 21:41 en Yahoo! 360]

domingo, 1 de julio de 2007

Empecé a divertirme

Historia de la Ciencia.

De cómo la presentación de los resultados del análisis del ADN mitocondrial europeo se enfrentó al conocimiento previamente establecido. La nueva evidencia no coordinaba con el estado actual del conocimiento sobre la dinámica de la invasión indoeuropea (agricultores neolíticos) y que supone sustituyera a los habitantes locales (cazadores-recolectores mesolíticos) en Europa. Palabras de Sykes (2001: 157-159):

Decidí presentar nuestro trabajo en la Segunda Euroconferencia sobre Historia de la Población, que tuvo lugar en Barcelona en noviembre de 1995. Sabía perfectamente que los principales defensores de la teoría de la “onda de avance” estarían allí, así que, por lo menos, lo que yo tenía que decir llamaría la atención. Me concedieron un espacio de 20 minutos. La sala de conferencias era muy grande: había cuatrocientos delegados y sitio para muchos más. Fui presentado por el convocante, sir Walter Bodmer, miembro de la Royal Society, colaborador durante mucho tiempo de Luca Cavalli-Sforza y coautor con él de dos importantes libros de texto sobre genética. Walter no se distingue precisamente por sus comentarios conciliadores, pero su presentación –“Y el siguiente orador es Bryan Skyes, que va a hablar sobre las mitocondrias. Yo no creo en las mitocondrias”- me pareció poco elegante. Empecé a exponer las bases de nuestra revisión de la prehistoria europea.

Walter y Luca estaban sentados juntos en primera fila, al pie del estrado. Es sorprendente lo mucho que puedes observar cuando hablas en público, aunque se trate de un público tan numeroso como aquel. Mientras yo exponía un punto tras otro, vi que Walter se iba agitando. Empezó a murmurar para sí mismo, y después en voz cada vez más alta. “Tonterías”, “absurdo”, me pareció oírle decir. Mientras las diapositivas se sucedían en mi presentación, él empezó a agitarse en su asiento, hacía ademán de levantarse y después se volvía a sentar. Cuando llegué a la última diapositiva, casi pude ver cómo le salía vapor por las orejas.

Apenas había terminado yo de hablar cuando Walter y Luca estaban ya de pie, disparándome preguntas. Conozco a Walter desde hace eones y lo he visto en acción muchas veces. Le he visto aplastar a jóvenes investigadores con sus agresivas preguntas y estaba decidido a que a mí no me ocurriera lo mismo. Con Walter sólo existe un remedio eficaz, y es replicar con argumentos. Yo ya me esperaba sus pirotecnias, y mientras aguantaba sus andanzas empecé a verlo todo como una representación teatral: como un contra interrogatorio en un tribunal de justicia o como un airado debate en la Cámara de los Comunes. Empecé a divertirme.

En cierto momento, Walter insistió en que ellos (él y Luca) nunca habían dicho que los agricultores hubieran tomado Europa, sustituyendo a los cazadores-recolectores. Yo había llevado un ejemplar del libro de texto que habían escrito entre los dos, “Genetics, Evolution and Man”, por si me decían algo semejante. Como respuesta, lo abrí por una página que ya llevaba marcada con un post-it amarillo y leí en voz alta: “Si la población de Europa está compuesta principalmente por agricultores que emigraron gradualmente de Oriente Medio, lo más probable es que los genes de los inmigrantes originales del Oriente Medio se fueran diluyendo progresivamente en los genes locales, a medida que los agricultores avanzaban hacia el oeste. Sin embargo, es probable que la densidad de los cazadores-recolectores fuera baja, y que de tanto en tanto la dilución [de los genes de Oriente Medio, se entiende] fuera relativamente poca”. Allí estaba, en letras de molde y con sus propias palabras. Aquello era sustitución a gran escala, en todo menos en el nombre. Walter resopló por última vez y se sentó: pero se había encendido la mecha de un encarnizado debate que todavía tardaría cinco años en resolverse.

En la ciencia actual, las conferencias internacionales como la de Barcelona resultan muy útiles para anunciar nuevos descubrimientos y observar la reacción inicial. Pero los trabajos presentados en una conferencia no tienen validez hasta que se publican en una revista científica. La publicación implica un minuciosos escrutinio de los datos, los métodos y las conclusiones por parte de expertos que trabajan gratuitamente y con la obligación de declarar cualquier posible conflicto de intereses. Aunque la presentación en una conferencia tiene que ser rigurosa, es durante el proceso de revisión anterior a la publicación cuando se comprueban a fondo las premisas, los resultados y las interpretaciones. Teniendo en cuenta la indignada reacción que nuestra radical revisión de la prehistoria europea había provocado en Barcelona, no nos sorprendió que cuando enviamos nuestro manuscrito al “American Journal of Human Genetics”, la principal revista internacional de la especialidad, los revisadores se mostraran más exigentes que de costumbre. Insistieron en que se añadiera un apéndice en el que se explicara una vez más el método de las redes evolutivas, que ya habíamos publicado en 1995 en un artículo intensamente matemático y bastante esotérico. Pidieron tablas adicionales, con comparaciones de poblaciones que en mi opinión estaban ya anticuadas. Pero al final lo publicaron “Paleolithic and Neolithic lineages in the European mitochondrial gene pool” (“Linajes paleolíticos y neolíticos en el fondo genético mitocondrial europeo”) apareció en el número de julio e 1996. Ya estaba impreso. Habíamos expuesto nuestra postura; ahora esperábamos la reacción.

_____
PD. El sistema eliminó segmentos del texto original durante la migración de Yahoo 360 a Perfiles Yahoo.

del libro que actualmente leo:
Sykes, B. 2001. Las siete hijas de Eva. Editorial Debate. 302 pp.

[entrada publicada originalmente el 01-07-2007 13:11 en Yahoo! 360]