Randy Pausch y la ciencia en Guatemala

Julio 25, 2008

Por litomd

Como muchas personas, hoy, al enterarme de la muerte de Randy Pausch, busqué en YouTube alguna de las innumerables versiones de su “Última Lección”, es decir, el video que se publicó (y que luego se convirtió en libro) cuando el Dr. Pausch dictara la conferencia titulada “How to Achieve your Childhood Dreams” (Cómo Alcanzar los Sueños de tu Niñez) en la universidad Carnegie Mellon en Pittsburgh, en septiembre de 2007.

Para cuando dictó esa conferencia se le había diagnosticado cáncer en el páncreas, extendido al hígado, con un diagnóstico que auguraba solo unos meses más de vida, si no unas cuantas semanas. Así que lo que solía ser un ejercicio académico para el cual se invitaba a distinguidos profesores a dictar una conferencia que fuera como su “Ultima Conferencia”, se convirtió para él en algo mucho más patente y dramático.

Parte de lo extraordinario de su historia es que lo supo hacer como los grandes maestros: llegando al corazón de sus alumnos. En lugar de ver a una persona deprimida y triste por vivir sus últimos momentos, vieron a alguien lleno de energía, satisfecho de la vida que había vivido, de sus logros y de su legado.

Y no es para menos. Una búsqueda de “Randy Pausch” en la biblioteca digital de ACM - The Association for Computing Machinery, la sociedad de ciencias de la computación más importante del mundo - devuelve 210 resultados, la gran mayoría artículos científicos y reportes de investigación de los proyectos en los que participó.

Randy Pausch investigaba en un área que poco a poco va adquiriendo fuerza en las ciencias: la Interacción Humano-Computador o HCI por sus siglas en inglés (IPO en España, es decir, Interacción Persona-Ordenador) y uno de los productos de su trabajo - la plataforma de programación Alice - es conocida y de hecho utilizada en algunos colegios y universidades en Guatemala y en todo el mundo en un esfuerzo por hacer más atractiva la programación y las ciencias de la computación en general, a las nuevas generaciones de jovenes, más acostumbrados a visualizar resultados inmediatos que a diseñar un algoritmo.

Pero lo que me impulsó a compartir estas líneas con ustedes hoy son dos ideas de la “Última Lección” de Randy Pausch. La primera: “Espera lo suficiente y la gente te sorprenderá e impresionará” es una invitación a recuperar la esperanza en el ser humano, no importa que tan improbable sea esperar esos resultados impresionantes. Hoy, casualmente, también es el último día de Converciencias y aunque no he podido asistir a ninguna conferencia (mas que una, vía el sitio del Concyt) pienso que esta idea y las iniciativas tan importantes que van de la mano de Converciencias son las que con el tiempo posibilitarán el que nuestros paisanos nos sorprendan e impresionen… ¡y lo harán! No hay duda. De hecho, ¡muchos ya lo hacen!

La segunda: “los muros existen para darnos la oportunidad de demostrar con cuanto afán deseamos algo” (”brick walls are there for a reason: they let us prove how badly we want things”) nos viene tan a la mano porque a veces parece que el sueño de hacer ciencia en Guatemala tuviera una pared enfrente. Pero esa pared no está ahí para impedirnos pasar, sino para que demostremos que aún con los mayores obstáculos ese sueño es posible.

Personalmente siento una gran admiración por Randy Pausch y me alegra saber que parte de mi trabajo en la Universidad Rafael Landívar aquí en Guatemala fue impulsar la plataforma Alice para enseñanza de la programación en secundaria y diversificado. Estoy convencido de que este tipo de herramientas, donde se enseña a programar creando animaciones en 3 dimensiones, en forma accesible para los más jovenes, estimula la creatividad, el deseo de conocer, la curiosidad, la percepción de las estructuras, la abstracción, en fin, tantas habilidades tan necesarias para la investigación científica, podrían utilizarse con exito en una estrategia nacional de impulso de las ciencias y la tecnología.

Muere un gran científico que deja un legado lleno de lo más noble que un hombre de ciencia puede dejar: la materia para que otros puedan seguir sus pasos en la búsqueda del entendimiento del universo.


Física, computadoras y linux

Junio 20, 2008

Por Enrique

Como toda ocupación, la física computacional tiene sus herramientas. Comúnmente se dice que hacer investigación en física teórica no requiere de un gran presupuesto, pues lo que se necesita son lápices (o lapiceros) y varios cientos de hojas de papel. Bueno, en realidad también se necesita acceso a libros, revistas científicas y — en estos tiempos — los largos y engorrosos cálculos de álgebra se hacen en la computadora.

Para mí, ha sido muy entretenido trabajar en física computacional. Es una subarea de la física teórica. No se hace ningún tipo de trabajo experimental en el laboratorio. Sin embargo se hacen “experimentos numéricos” en la computadora, se exploran diferentes situaciones que en muchos casos son imposibles de reproducir en un laboratorio (como la evolución de estructuras galácticas, por ejemplo). El tipo de problemas que se estudian involucran ecuaciones diferenciales muy complicadas, para las cuales no se conoce una solución general. Los problemas que se estudian van desde las ecuaciones de la mecánica cuántica para explorar estructuras moleculares, simulaciones de desdoblamiento de proteínas, dinámica de fluidos, clima global hasta la formación de galaxias y muchos otros.

Mi campo particular de acción es la relatividad numérica. Desde patojo me apasionó la teoría de la relatividad y andar escribiendo programas en la computadora, así que esta área de la ciencia fue la combinación perfecta. Lo que se hace en relatividad numérica es resolver las ecuaciones de la relatividad general de Einstein para averiguar el comportamiento de los extremadamente fuertes campos gravitacionales producidos en la colisión de objetos estelares, tales como agujeros negros y estrellas de neutrones. La relatividad general predice que en tales eventos, grandes cantidades de energía son irradiadas al espacio en forma de ondas gravitacionales. Estas simulaciones numéricas han sido un gran desafío en la física computacional en los últimos 40 años. Fue hasta el 2005 que se logró calcular una simulación completa la colisión de dos agujeros negros orbitando.

En este post quiero mencionar brevemente las herramientas del lado computacional. Las aplicaciones que son usadas alrededor del mundo para hacer investigación científica de punta. La lista no pretende ser exhaustiva sino mas bien esencial y comienza con algo sencillo: las aplicaciones y programas que vienen con cualquier distribución de Linux. Sí, usuarios de Linux, un su computadora tienen las mismas herramientas básicas que posee cualquier otro científico computacional.

Basado en mi propia experiencia, he creado una lista de aplicaciones que uso constantemente. Todas vienen por default en su distribución favorita de Linux [1] y si no vienen, se bajan gratis de internet. Así que empecemos:

  • La terminal de Linux Una pequeña ventana en donde se escribe todo tipo de comandos. Algunos que uso todo el tiempo son:
  • ssh Permite conectarse a una computadora remota y trabajar como si uno estuviera físicamente enfrente de ella. Este es el método de conexión para utilizar una supercomputadora.
  • rsync Una buena manera de copiar grandes cantidades de datos entre dos computadoras. Encripta los datos y copia solo los archivos modificados. Ideal para hacer backups periódicamente.
  • cvs, svn, darcs, git Estos son sistemas de revisión de versiones. Cuando uno desarrolla sus propios programas, ya sea sólo o en equipo, estos sistemas llevan la cuenta de todos los cambios hechos y crea diferentes versiones de cada archivo. Esto hace posible poder regresar a cualquier versión previa en caso de que nuestros cambios arruinen el programa (sucede).
  • latex El mejor sistema para preparar documentos y presentaciones. Es posible escribir ecuaciones y tablas sin tocar el mouse. Enumera capítulos, secciones, subsecciones, figuras, tablas y ecuaciones automáticamente. Si hay que insertar una tabla o figura, LaTeX reordena la secuencia de numeración y las referencias a ellas también. Maneja la bibliografía de la misma similar y genera el índice automáticamente. ¡Qué más se puede pedir!
  • gnuplot Excelente para hacer gráficas en dos y tres dimensiones así como para ajustar funciones a datos numéricos, tanto lineales como no lineales. Todo se hace a través de comandos y también se pueden hacer scripts, automatizando la generación de los gráficos cuando se cambian los datos. Esto substituye las gráficas generadas en hojas electrónicas.
  • DV, ParaView, OpenDX, VisIt Son programas para visualización científica. Es fácil pasarse horas generando gráficas en 3D y animaciones impresionantes.

También son necesarias las herramientas para programar:

  • Editor de texto Los más usados son emacs y vi. Personalmente, prefiero emacs.
  • Compilador de GNU Todos nuestros programas en C, C++ y fortran dependen de él. También es posible bajar el compilador de Intel, en muchos casos optimiza mejor el código haciendo que corra más rápido.
  • Librerías científicas (scientific libraries) [2] No todo hay que programarlo de cero. Existen varias librerías optimizadas para algunas tareas. Entre ellas está LAPACK (Linear Algrebra PACKage) con rutinas para hacer todo tipo de operaciones con matrices. PETSc (Portable, Extensible Toolkit for Scientific Computation), una suite de rutinas usadas en la solución de ecuaciones diferenciales parciales. MPI (Message Passing Interface) provee comunicación entre procesadores, permitiendo computación en paralelo. Es la base de la computación de alto rendimiento. HDF5 permite manejar extremadamente grandes y complejos archivos de datos. Se usa para hacer output de cantidades que dependen de las tres dimensiones (x,y,z). La información se almacena en formato binario, de lo contrario los archivos ocuparían hasta varios tera bytes en formato ascii.
  • Perl, Shell Scripting Otros lenguajes útiles para hacer operaciones repetitivas que regularmente involucran varios archivos. Por ejemplo, si tenemos 100 archivos con 10 columnas de datos y queremos extraer las primeras 5 de ellas y mandarlas a un sólo archivo. Abrir cada archivo en un editor de texto… no es la mejor manera de hacerlo.

Me parece que esto cubre la mayor parte, agreguen o quiten dependiendo del problema específico y de gente específica [3]. :)

También podría agregar la aplicación de chat. Es útil para hacer hacer preguntas cortas. Uno siempre puede ir a los chat logs si se le olvida algún detalle.

Resumiendo, cualquier persona con inclinación a la ciencia o la ingeniería tiene todas las herramientas para transformar su computadora de una máquina de escribir electrónica a toda una estación de trabajo científico.

________________

[1] Algunas personal también usan Macs.
[2] ¿Por qué traducimos “libraries” como “librerías”?…
[3] Los paquetes como Mathematica y Matlab son muy útiles también. Sin embargo no son gratis.


Un plot

Mayo 11, 2008

Por Enrique

El próximo lunes 12 y martes 13 se realizará la 11a. Conferencia del Este sobre Gravedad (11th Eastern Gravity Meeting) en Pennsylvania State University. El formato consiste en presentaciones de 10 minutos + 2 minutos para preguntas. Lo reducido del tiempo se debe a la gran cantidad de participantes. Este tipo de charlas cortas son muy buenas para enterarse — a manera muy general — en qué anda trabajando la gente. La otra semana trataré de resumir que tal estuvo la reunión.

Mientras tanto voy a terminar de preparar mi presentación. Ayer y hoy me la he pasado procesando gigabytes de output de simulaciones numéricas para crear gráficas y animaciones bonitas. La figura de abajo es uno de mis primeros intentos.


funcion lapse

El sistema físico que se analiza consiste en dos agujeros negros orbitando. Según las ecuaciones de Einstein, el sistema pierde energía por emisión de ondas gravitacionales y los agujeros negros colisionan eventualmente, formando un único agujero negro. Esta gráfica representa el valor de la función lapse en un corte a través del plano xy para uno de los agujeros negros en cuestión. En Relatividad General, y especialmente en Relatividad Numérica esta es una función muy útil. Usualmente, el lapse tiene un valor igual a 1 en todo el espacio excepto cerca del agujero negro, en donde su valor es cercano a cero. Con esto uno puede localizar un agujero negro en la región donde el lapse se hace pequeño, tal como se ve en la figura de arriba. En el caso de un agujero negro de Schwarzchild, la componente g_{00} de la métrica es igual a menos el lapse al cuadrado. El gradiente del logaritmo natural de esta función es la acelación que experimenta un observador estacionario. Las franjas blancas en el mapa de colores no son errores de la gráfica. Están a propósito para indicar el trozo de volumen en que cada procesador hacía los cálculos. Ocho procesadores en este caso (una simulación pequeña).

En cuanto la tenga lista, mostraré la animación completa de esta simulación.