SloMo
Tecnología
Tempus II from Philip Heron on Vimeo.
Tempus II from Philip Heron on Vimeo.
Tempus II from Philip Heron on Vimeo.
No se atrevieron a llamarlo HAL 9000
Daisy, Daisy.
Una de las consecuencias de vivir en el tercer mundo tecnológico es que en demasiadas ocasiones tecnologías con un gran potencial pasan completamente desapercibidas. En la entrada Código, que por lo que se ve fue de las más leídas en el blog desde que existe, argumentaba que programar es importante pero lo es aún más lo que se programa.
Me es difícil, viniendo de algo tan particular como la Mecánica de Fluidos Computacional, buscar motivos para programar que no tengan nada que ver con la Matemática Aplicada. No puedo dirigirme a un estudiante de primero de arquitectura y pedirle que me resuelva una estructura reticulada en C++. Me dirá que está más interesado en saber si este año habrá o no San Cemento.
La semana pasada estuve hablando con la gente del Canal de Ensayos Hidrodinámicos de la Escuela de Navales. Leo y Chou llevan tiempo dándole vueltas a cómo mejorar las habilidades de los estudiantes en lo que a programación y pensamiento estructurado se refiere. No hemos coincidido siempre en las estrategias a aplicar pero sí estamos de acuerdo en el diagnóstico. Su punto de vista es empezar a nivel de instituto a lo que yo siempre he contestado que a esa edad, o se programa un videojuego, o poca cosa más se puede hacer.
He estado recordando mi tierna infancia, cuando empecé con esto de la programación con un MSX Basic. Sí, mis padres no estuvieron bien asesorados y no me compraron un Spectrum. Lo único que tenía aquella cafetera era un intérprete de BASIC y un cartucho ROM con el fabuloso juego LOGO. Recuerdo que lo que más me llamaba la atención era la posibilidad de manipular gráficos y sonidos siendo la forma más básica de creatividad que un niño puede tener. Programas una serie de líneas y una tortuga se pone a dibujar.
Hace tiempo me interesé por Processing para hacer presentaciones dinámicas en las que se pudieran visualizar los datos de manera interactiva. Incluso me compré el libro de referencia de Reas y Fry. Es una lenguaje de programación de alto nivel precisamente diseñado para manipular gráficos y sonido y finalmente orientado a la visualización de contenido.
Su base de usuarios primordial son diseñadores y artistas que pueden interactuar de manera simple con datos y ordenadores. Incluso hay un paquete que permite conectarse por puerto serie a una placa Arduino lo que permite tener una conexión directa con hardware de adquisición de datos en tiempo real. Las posibilidades son infinitas.
Creo que sería una buena idea explorar el uso de Processing en los institutos y en centros no relacionados directamente con la práctica de la programación como las escuelas de Arquitectura y Diseño.
¿Feedback?
Esta entrada es técnicamente bastante compleja. Avisados estáis.
Como alguno de los lectores sabrá, uno de mis pasatiempos es la ingeniería financiera. Sinceramente no tengo ninguna intención de hacerme insultantemente rico, simplemente me pareció una manera entretenida de hacer gimnasia mental con lo ya sé sobre computación, matemáticas y estadística.
Siempre me ha sorprendido que, aunque lo llaman ingeniería, la herramienta más utilizada para la implementación de algoritmos sea MS Excel. Es más, hablando con la gente de Microsoft, me aseguran que el nuevo Excel que ejecuta en paralelo será un bombazo dentro de los mercados financieros. Y yo, mientras tanto, sigo sin dar crédito a lo que oigo
La mayoría de las cosas que hago empiezan con un "seguro que no tiene que ser tan difícil". Muchas de ellas terminan en nada porque resulta que sí eran tan difíciles. En estos casos me siento como un necio, no lo cuento a nadie y termina en un directorio perdido de algún ordenador. En el tema de la ingeniería financiera me planteé que seguro que no era tan difícil hacer lo siguiente:
Muchos de los algoritmos de cálculo de futuros y opciones, especialmente los que tratan de predecir el precio de opciones de más de un asset, requieren integraciones en muchas dimensiones, lo que implica el uso de grandes potencias de cálculo. La respuesta obvia es: -usa un superordenador, melón. El gran inconveniente de un ordenador de memoria compartida es que los trabajos no entran instantáneamente. Estás a merced de un gestor de colas que luego se encarga de ejecutar tu aplicación y devolverte un resultado. Luego escribe en disco, te llevas el archivo y lo post procesas en otro sitio. Esto es demasiado lento para alguien que tiene que tomar una decisión en segundos o para los sistemas de compra y venta automatizados.
Se me ocurrió entonces que nada impide que un proceso MPI se quede activo en un cluster del mismo modo que un servidor web se queda activo esperando algún request. Pero un servidor debe ser capaz de gestionar su memoria en tiempo real, algo que no es especialmente fácil si utilizas un lenguaje estático como los habituales en entornos de supercomputación. La elección de una arquitectura servidor - cliente implica que también hay que programar el cliente y definir el protocolo de comunicación. Un sarao, vamos.
Hasta que me acordé que es fácil hacer estas cosas con Python. Y me puse a hacerlo.
¿Qué tengo ahora? Un servidor que se ejecuta en un cluster como un proceso python paralelo en el que las cuentas se hacen mediante una biblioteca escrita en C++ que se conecta al servidor mediante un wrapper hecho con swig. Tanto el cliente como el servidor se conectan mediante Twisted (los que progamaron twisted se merecen un puto monumento) de manera que cualquiera que tenga un cliente conectado al servidor le pueden pedir que valore una opción americana o europea mediante el método de cálculo disponible (de momento Black Scholes para las europeas y un Binary Black Scholes Lattice para las americanas). Sin ningún tipo de lag o espera porque el servidor está siempre vivo y escuchando en el puerto que uno elija.
Para rizar aún más el rizo, la aplicación puede utilizar varios núcleos con OpenMP y el mismo código fuente se puede compilar con el compilador de GNU y el de Intel en Linux y el Visual C++ 2008 en Windows. La voy a presentar en sociedad en el ISC 2010 en Hamburgo este Junio. Probablemente nadie entienda absolutamente nada de lo que estoy haciendo pero a mi me suda la polla.
Porque resulta que no era tan difícil.
Como no tengo demasiado tiempo para escribir pongo vídeos de yutube. Es el recurso fácil del blogger vago
Estas cosas no se llaman "efecto mariposa". De hecho basta con lo que en El Hormiguero le den un nombre para tener la certeza que se llama de otra manera. Y basta que esté en el puto guión del Flipy para saber cómo no se pronuncia.
Se llaman máquinas de Rube Goldberg. El tal Rube Goldberg era Ingeniero titulado en Berkeley y diseño las alcantarillas de la ciudad de San Francisco.
Por si no se ha notado la primera puya al Flipy. ¿No podría alguien diseñar algún experimento que le cortara los brazos y las piernas? Aunque fuera sólo un poquito.
Pensaba que los periodistas por lo menos sabían escribir.
Caos aéreo es que Godzilla arrase el aeropuerto de Barajas fulminando aviones disparando rayos por el culo o que un centenar de pilotos borrachos decidan jugar a los aviones de choque a 30000 pies. Definitivamente no lo es dejar los aviones en tierra por seguridad.