sábado, 30 de septiembre de 2006

Mi Top 100 de Películas

  1. The Matrix (1999)

    The MatrixEscrita y dirigida por Andy y Larry Wachowski.

    Con Keanu Reeves (Neo), Carrie-Anne Moss (Trinity), Hugo Weaving (Agent Smith), Laurence Fishburne (Morpheus).

  2. Back to the Future Part II (1989)

    Dirigida por Robert Zemeckis.

    Escrita por Robert Zemeckis y Bob Gale.

    Con Michael J. Fox (Marty McFly/Marty McFly Jr/Marlene McFly), Christopher Lloyd (Dr. Emmett Brown), Thomas F. Wilson (Biff Tannen/Griff Tannen).

  3. Le Fabuleux destin d'Amélie Poulain (2001)

    Dirigida por Jean-Pierre Jeunet.

    Escrita por Guillaume Laurant y Jean-Pierre Jeunet.

    Con Audrey Tautou (Amélie Poulain), Mathieu Kassovitz (Nino Quincampoix), Serge Merlin (Raymond Dufayel).

  4. The Matrix Reloaded (2003)

  5. Back to the Future (1985)

  6. 50 First Dates (2004)

  7. Eternal Sunshine of the Spotless Mind (2004)

  8. Memento (2000)

  9. Being John Malkovich (1999)

  10. The Matrix Revolutions (2003)

  11. The Lord of the Rings: The Two Towers (2002)
  12. Love Actually (2003)
  13. Fight Club (1999)
  14. Abre los ojos (1997)
  15. The Butterfly Effect (2004)
  16. Snatch (2000)
  17. A Lot Like Love (2005)
  18. Lola rennt (1998)
  19. A Beautiful Mind (2001)
  20. Moulin Rouge! (2001)

  21. Adaptation. (2002)
  22. Sweet November (2001)
  23. The Bourne Identity (2002)
  24. The Sixth Sense (1999)
  25. Lemony Snicket's A Series of Unfortunate Events (2004)
  26. Frida (2002)
  27. X-Men: The Last Stand (2006)
  28. Requiem for a Dream (2000)
  29. Pulp Fiction (1994)
  30. Traffic (2000)

  31. Artificial Intelligence: AI (2001)
  32. The Lord of the Rings: The Return of the King (2003)
  33. Volver (2006)
  34. There's Something About Mary (1998)
  35. The Others (2001)
  36. Spider-Man 2 (2004)
  37. Crank (2006)
  38. Back to the Future Part III (1990)
  39. The Lord of the Rings: The Fellowship of the Ring (2001)
  40. Good Will Hunting (1997)

  41. Sen to Chihiro no kamikakushi (Spirited Away) (2001)
  42. Big Fish (2003)
  43. The Truman Show (1998)
  44. Los Amantes del Círculo Polar (1998)
  45. Matando Cabos (2004)
  46. Shrek (2001)
  47. American Pie (1999)
  48. Forrest Gump (1994)
  49. Star Wars: Episode IV - A New Hope (1977)
  50. Asesino en serio (2002)

  51. Cruel Intentions (1999)
  52. Monsters, Inc. (2001)
  53. Amores perros (2000)
  54. Lilo & Stitch (2002)
  55. Charlie's Angels (2000)
  56. The Thomas Crown Affair (1999)
  57. Kill Bill: Vol. 1 (2003)
  58. Final Fantasy: The Spirits Within (2001)
  59. Todo el poder (1999)
  60. City of Angels (1998)
  61. Wild Things (1998)
  62. Se7en (1995)
  63. Harry Potter and the Sorcerer's Stone (2001)
  64. Terminator 2: Judgment Day (1991)
  65. Shrek 2 (2004)
  66. Hauru no ugoku shiro (Howl's Moving Castle) (2004)
  67. Tomorrow Never Dies (1997)
  68. Vanilla Sky (2001)
  69. Finding Nemo (2003)
  70. The Animatrix (2003)
  71. Spider-Man (2002)
  72. Jurassic Park (1993)
  73. V for Vendetta (2005)
  74. Star Wars: Episode I - The Phantom Menace (1999)
  75. The Lake House (2006)
  76. Mr. & Mrs. Smith (2005)
  77. Ocean's Eleven (2001)
  78. Bridget Jones's Diary (2001)
  79. Harry Potter and the Prisoner of Azkaban (2004)
  80. Hable con ella (2002)
  81. Signs (2002)
  82. American Wedding (2003)
  83. American Beauty (1999)
  84. Millions (2004)
  85. Contact (1997)
  86. Chicago (2002)
  87. South Park: Bigger Longer & Uncut (1999)
  88. Romeo + Juliet (1996)
  89. The 40 Year Old Virgin (2005)
  90. Planet of the Apes (2001)
  91. The Chronicles of Narnia: The Lion, the Witch and the Wardrobe (2005)
  92. Die Another Day (2002)
  93. Star Wars: Episode VI - Return of the Jedi (1983)
  94. Honey, I Shrunk the Kids (1989)
  95. Face/Off (1997)
  96. My Big Fat Greek Wedding (2002)
  97. Mar adentro (2004)
  98. Kill Bill: Vol. 2 (2004)
  99. King Kong (2005)
  100. Finding Neverland (2004)

jueves, 28 de septiembre de 2006

Alguien se fijó en las velitas?

Seguramente muchos se dieron cuenta que Google celebró su cumpleaños poniendo ayer en la página principal un logo conmemorativo. Pero, alguien se fijó en las velitas?

miércoles, 27 de septiembre de 2006

Google Notebook para tu Home!

Para aquellos que aún no han tenido el placer de conocerlo, Google Notebook es otra de esas útiles aplicacioncillas de Google que puedes utilizar para coleccionar notas, ligas a páginas interesantes en la red, recordatorios de cosas que tienes que hacer, pedacitos de información de por aquí y por allá, en fin, lo que quieras.

Ahora, para aquellos que ya lo conocían y lo usan frecuentemente, les tengo una muy buena noticia y es que hay ya también un módulo para poder agregarlo a tu homepage.

Thanks Google ;-)

martes, 26 de septiembre de 2006

Lo que me ha tenido ocupado

Un ligero update sobre lo que me ha tenido ocupado estos últimos días.

Primero, desde la semana anterior empezó oficialmente el semestre en la universidad lo que lo que implica muchos más estudiantes, frenesí por toda la ciudad, gente nueva por doquier, más fiestas y relajo por las noches y, también, más trabajo para mí. Y es que como estoy trabajando de medio tiempo dando servicio técnico en las redes de dormitorios, ésta es justo la temporada donde llegan todos los estudiantes nuevos queriendo conectarse e implorando por que les arreglemos el internet en su cuarto. Pero bueno, quizá esto es lo más cerca que voy a estar en mi vida de poder llenar mi agenda con citas que tienen nombres como Alessandra, Carolyn, Rebecca, Denisse y Maryam. Que triste, jaja.

Otra de las cosas que me ha mantenido ocupado es el cambio de cuarto que, como habrán visto en un post anterior, no fue mucho de mi agrado. Pero también ya me voy acostumbrando y después de todo pues parece que no está tan mal. Después de una reorganización de muebles y tratar de embellecer un poco el lugar, pues ya no se ve tan mal. Mis nuevos compañeros de dormitorio también se ven muy buena onda todos, son 3 chinos y 3 musulmanes. Prometo más detalles, fotos y comentarios pronto en otro post.

En la uni ahí voy también en el ciclo de nueva idea → implementar idea → probar idea → idea no sirve → nueva idea → ... Y por otro lado cazando a mi supervisor que después de haber andado un año de sabático todavía no puedo hablar bien con él para definir lo que será el curso de mi investigación en lo que será (esperemos) el último año del doctorado.

Ya para terminar sólo comento también que en los pocos minutos libres que he tenido me la he pasado generando la lista de mis 100 películas favoritas de todos los tiempos. Ambas la lista y cómo generé la lista son historias interesantes, de las que prometo dar detalles pronto. La lista, de hecho, ya la tengo (¿alguien puede adivinar las 3 primeras?). Pero los dejo unos días en suspenso, prometo subirla aquí también pronto en otro post.

Promesas, promesas.

martes, 19 de septiembre de 2006

Fotografiando a nuestro planeta

Un grupo de estudiantes de licenciatura en Cambridge, lograron mandar una cámara hasta la estratosfera de la Tierra para tomarle fotografías.

Los estudiantes subieron el equipo fotográfico en un globo que ascendió hasta los 30 km de la superficie terrestre. A esa altura el globo se quemó y la cámara regresó a la tierra a salvo en un paracaídas. Durante el trayecto que duró tres horas, la cámara tomó unas 800 fotografías de nuestro hermoso planeta azul.

Este es el primer paso en la investigación de estos jóvenes científicos que quieren, de hecho, mostrar que es posible enviar pequeños cohetes al espacio con un presupuesto de menos de £1,000.

Cómo se ve que con creatividad y un tantito de ingenio se pueden hacer muchísimas cosas increíbles. Que chido por estos chavos, me da gusto saber que hay personas para quienes ni siquiera el cielo es el límite.

Fuentes: [1] [2], Más fotos: [3].

sábado, 16 de septiembre de 2006

De paradojas y cosas no computables

Recientemente me encontré con el trabajo de un grupo de científicos que descubrieron algunas relaciones entre la compresión de texto (generar archivos comprimidos como los .zip), la interpretación de lenguaje natural (que las máquinas hablen y entiendan nuestro lenguaje) y problemas de inteligencia artificial en general.

La primera vez que escuché esto me pareció un completo disparate pero, después de estarlo leyendo con un poco más de calma, he visto que la idea es realmente muy interesante y parece tener bastante sentido. Incluso, además de tener unos tintes medio filosóficos geniales, todo está fundamentado en resultados matemáticos formales. También me he dado cuenta de que las ideas, aunque no son nada triviales, tampoco parecen imposibles de entender para nosotros los simples mortales.

Éste es entonces el primero de una serie de posts donde trataré de ir explicando varios de los componentes involucrados en esta teoría. El tema de este post es la llamada complejidad de Kolmogorov que, si no dejamos que nos espante mucho el nombre y leyendo con un poquito de atención, veremos que finalmente no es algo tan complejo como aparenta. ;-)

Empezamos con una simple cadena de texto. La dichosa complejidad es un numerito que trata de medir que tan ‘complicado’ es generar esa cadena con un programa en la computadora. Por ejemplo, la cadena de texto
  “hola hola hola hola hola hola hola hola ”
la podríamos escribir en la pantalla usando el siguiente programita
  repite 8 veces escribe "hola "
Algo interesante es que este programa se puede ver, además, como una cadena de texto
  “repite 8 veces escribe "hola "”
que, en este caso, está formada por 30 caracteres (contando todas las letras, símbolos y espacios). Observa como la cadena original, la de muchos hola’s, tenía 40 caracteres y la hemos podido generar con un programa que ocupa sólo 30.

Pero no todas las cadenas de texto son tan simples como repetir “hola” un montón de veces. Por ejemplo, para la cadena de 40 caracteres
  “u8agup2pPy3J087z4m9krF6c9gE00Uo6AOLox56m”
quizá el programa más corto que la escriba en pantalla es
  escribe "u8agup2pPy3J087z4m9krF6c9gE00Uo6AOLox56m"
que ocupa en total 50 caracteres.

Entonces, la complejidad de una cadena de texto, como la definió este señor Kolmogorov, es el tamaño (en no. de caracteres) del programa más pequeño que escriba dicha cadena en la pantalla.

En el último de los ejemplos vimos cómo, para cualquier cadena de texto, es muy fácil conseguir un programa que la escriba; basta con agregarle unos 10 caracteres extras: “escribe "..."”. Esto quiere decir que la complejidad de una cadena no puede ser mucho más grande que el tamaño de la cadena misma. En el peor de los casos el programa tendrá 10 caracteres extra pero, en muchos otros casos, es posible encontrar programas más pequeños.

Imagínate en mi primer ejemplo que la cadena dice “hola ” pero, en lugar de 8, unas 5000 veces. La cadena de texto tendría ahora unos 25000 caracteres, mientras que el programa para escribirla en pantalla sigue siendo pequeñito
  repite 5000 veces escribe "hola "
y ocupa, después de cambiar el “8” por “5000”, ¡tan sólo 33 caracteres! Observa como aquí comienzan a aparecer algunas relaciones con compresión, una cadena de 25000 caracteres la pudimos comprimir en una de 33.

Espero que hasta aquí vaya todo más o menos claro, porque vamos a comenzar ahora con cosas más divertidas. Y es que vamos a mostrar que calcular la complejidad de una cadena es una tarea, digamos, muy difícil.

Supongamos que un amigo muy inteligente nos ha hecho el favor de escribir un programita al que le damos una cadena de texto y nos regresa la complejidad de esa cadena. El programa se vería más o menos así:
  Complejidad(Cadena S) regresa Número
inicio
/* Un código súper inteligente va aquí */
fin
Ya que tenemos este programa, vamos a escribir nosotros este otro
  EncuentraCadena(Número N) regresa Cadena
inicio
por cada Cadena S
si Complejidad(S) > N entonces regresa S
fin
¡No se espanten! Voy a explicar ahora de qué se trata todo esto. Nuestro nuevo programa recibe de entrada un número, N, y va a dar como salida una cadena de texto. La cadena que obtenemos en la salida tiene la única peculiaridad de que su complejidad es más grande que N, el número que le demos de entrada.

Y el funcionamiento de este programita tampoco es nada complicado. Lo único que hace es ir generando una por una todas las posibles cadenas de texto (esto es lo que indica el ‘por cada Cadena’) y llamando a la rutina Complejidad para ver si hemos encontrado o no una cadena con complejidad mayor a N. En cuanto encontremos la primera cadena con complejidad mayor a N el programa termina y regresa como resultado esa cadena.

Recapitulando, este es el código que llevamos escrito hasta ahora.
  Complejidad(Cadena S) regresa Número
inicio
/* Un código súper inteligente va aquí */
fin

EncuentraCadena(Número N) regresa Cadena
inicio
por cada Cadena S
si Complejidad(S) > N entonces regresa S
fin
Recordemos que la linea donde dice ‘Un código súper inteligente va aquí’, efectivamente, tenemos reemplazarla por el código que nos haya dado nuestro amigo. Ya que hayamos escrito ese código podemos entonces contar el total de caracteres que ahora ocupa todo el programa completo hasta este punto. Digamos que los contamos y resulta que en total hay unos 5000 caracteres.

Podemos agregar entonces el siguiente pedacito de código al final de nuestro programa.
  escribe EncuentraCadena(8000)
Veamos que es lo que hace este programa. En realidad es muy sencillo, simplemente busca una cadena que tenga complejidad mayor a 8000 y la escribe en pantalla.

¿Puedes ver algún problema? Veámoslo de nuevo. Hemos construido un programa que, en total, ocupa unos 5030 caracteres e imprime una cadena de complejidad mayor a 8000. ¿Recuerdas la definición de complejidad? Es el tamaño del programa más pequeño que escribe la cadena. Según el código súper inteligente de nuestro amigo, el programa más pequeño necesita unos 8000 caracteres, pero nosotros hemos logrado escribir esa cadena ¡con sólo 5030!

¿Qué significa todo esto? Pues lo primero es que nuestro amigo súper inteligente nos mintió y el código que nos dio para calcular la complejidad de una cadena no funciona. De hecho no funciona porque, no se puede escribir ningún programa para calcularla. Lo que hemos demostrado es que, no importa qué tan inteligente sea nuestro amigo, nunca podrá escribir el dichoso programita porque eso genera contradicciones. En otras palabras hemos probado que la complejidad de Kolmogorov no es computable.

¿Y, qué significa eso? En palabras más sencillas, una de las implicaciones de este resultado es que nunca podremos programar el compresor de archivos perfecto. Y ojo que eso no quiere decir que no podamos comprimir archivos, eso sí que lo podemos hacer y es lo que hacemos cuando generamos archivos .zip. Lo que no podemos tener es la garantía de haber podido comprimir los archivos lo más posible.

Ya para terminar sólo quiero mencionar que, para hacer la explicación más sencilla, tuve que sacrificar un poco la formalidad de la demostración. Pero espero que me puedan creer que esto se puede hacer formalmente sin ninguna ambigüedad, usando por ejemplo un lenguaje de programación real apropiado. En particular el ‘por cada Cadena’ se puede implementar fácilmente generando las cadenas en orden, primero las más chicas y luego las más grandes; y las del mismo tamaño ordenadas alfabéticamente.

También para los curiosos, o si alguien se perdió entre tanta explicación y cosa rara, una versión más informal del mismo argumento es la Paradoja de Berry.

miércoles, 13 de septiembre de 2006

Segundo año terminado

Finalmente después de algunas semanas tratando de controlarme para no entrar en pánico y esconder los nervios por todo el trámite en el doctorado para este fin de año, hoy se terminó ya oficialmente para mi el segundo año.

El tramite involucraba entregar un reporte corto hace una semana, y hoy una entrevista para que mi supervisor, asesora y dos examinadores internos evaluaran mi desempeño en este segundo año. Y pues, después de haber pasado un año sin supervisor porque andaba de sabático, si estaba yo medio preocupado de que tan relevante era el trabajo que había estado haciendo.

Pero bueno, en contra de todas expectativas, parece que me fue bien. A los examinadores les gustó mi presentación (yo tampoco le entiendo) y parece que quedaron contentos. El otro lado de la historia se los podré contar el próximo viernes (o lunes) después de platicar bien con mi supervisor y decidir el rumbo de mi investigación para (esperemos) mi último año del doctorado.

Así que, ahí vamos a la siguiente etapa.
Thank you Mario! But our princess is in another castle!

martes, 12 de septiembre de 2006

Un milagro!

function Jesus.Miracle(Water: TWater): TWine;
begin
Result := Water as TWine;
end;

domingo, 10 de septiembre de 2006

We blog

"Blog" itself is short for "weblog," which is short for "we blog because we weren't very popular in high school and we're trying to gain respect and admiration without actually having to be around people."

The Ultimate Blog Post

viernes, 8 de septiembre de 2006

No pasé :-(

The results of the Google Code Jam 2006 Qualification Round are now official. Unfortunately, you did not qualify for Round 1.
Ni modo, pero estuvo divertido. ¡Deberían de haber más concursos como éste más seguido! ¡Para no perder la práctica!

lunes, 4 de septiembre de 2006

¿Qué es para ti la felicidad?

La felicidad es...
  • como una fugaz mariposa.
  • punto de encuentro entre la ilusion y la razón.
  • interior, no exterior.
  • un estado psicológico que trasciende la noción del estado.
  • una actitud mental.
  • un estado de satisfacción, plenitud o regocijo íntimo y personal.
  • un estado de ánimo placentero.
  • algo muy personal, íntimo y subjetivo.
  • un tesoro.
  • el resultado de la actividad cerebral y puede ser observada y medida.
  • la riqueza, el vino.
  • generosa. No vive de destruccion.
Según Google el 4 de septiembre a las 10:18 AM (BST).

domingo, 3 de septiembre de 2006

Computación basada en humanos

Uno de mis nuevos héroes personales, Luis von Ahn, es uno de los precursores principales de una nueva idea que me parece extremadamente simple pero, al mismo tiempo, muy ingeniosa y quizá hasta revolucionaria.

La idea proviene de darnos cuenta que hay cierto tipo de problemas que, actualmente, los humanos podemos resolver mucho mejor que las computadoras. Uno de esos problemas es, por ejemplo, interpretar imágenes y reconocer objetos en ellas.



Para un humano es fácil ver que en esta foto hay una mujer, con una blusa azul. Hay también unas flores, parecen tulipanes. Una tasa, una computadora con monitor, teclado y mouse. La mujer esta sentada en una silla frente a un escritorio. Si miran también con cuidado, en el fondo hay una lámpara y un teléfono.

Mientras que, por otro lado, uno de los mejores programas que se han creado en visión por computadora tiene problemas tan sólo para reconocer que hay un rostro en esa imagen: Sorry, no faces were detected.

Y las aplicaciones potenciales de resolver un problema como éste son también evidentes: obtener resultados mucho más precisos y relevantes cuando hacemos una búsqueda de imágenes, proveer a personas con deficiencias visuales de una descripción detallada de imágenes en la red, conseguir más y mejores datos para entrenar algoritmos que realicen el reconocimiento automático de imágenes.

Bien ahora la pregunta es, ¿cómo reclutar a miles de humanos en todo el mundo que estén dispuestos a perder su tiempo etiquetando imágenes de la red? Podríamos pagarles para hacerlo pero, seguramente, eso terminaría siendo muy caro. “We need something that is cheap and fast”.

“¿Por qué no podríamos ...”, piensa von Ahn, “... hacer que las personas quieran desperdiciar su tiempo etiquetando imágenes? ¿Por qué no hacerlo... ¡divertido!?” Así es como surgió la idea del ESP Game.

Extrañamente adictivo, el juego te conecta con otro jugador en alguna otra parte del mundo, no puedes comunicarte con tu compañero y lo único que tienen en común es que están viendo la misma imagen. El reto es lograr escribir ambos una misma palabra que describa a la imagen. Cuando los dos logran coincidir en una palabra ambos ganan puntos, y se les muestra una nueva imagen. El objetivo del juego es ganar la mayor cantidad de puntos en una cantidad fija de tiempo. “Points make people happy”.

Si quieren enterarse un poco más de las ideas y la teoría detrás de este tipo de computación basada en humanos, les recomiendo enormemente ver el video de la plática que Luis von Ahn dio en Google al respecto. No es para nada técnica y, por el contrario, deja ver como el tipo es simple y sencillamente un genio.

Google acaba de lanzar, basado en esta misma tecnología, su etiquetador de imágenes. Y en principio, en manos de Google, esta idea corre el peligro de crecer desenfrenadamente de manera exponencial. Desafortunadamente el programa está aún en etapas demasiado beta. Al menos la última ves que lo jugué, el juego solía trabarse y las imágenes son a veces demasiado pequeñas. Espero que arreglen pronto estos problemas, porque la idea es genial y no hay más. Como sea, si están interesados y quieren jugar los exhorto de nuevo a desperdiciar sus human cycles en el fabuloso ESP Game.

La idea en Matrix de que las computadoras decidieron no eliminarnos a los humanos porque nos necesitaban como baterías es increiblemente ridícula. Pero que tal ésta: decidieron conservarnos para resolver por ellas problemas en los que los humanos somos mejores.

Ésto me recuerda también a una computadora llamada Earth que construyeron los ratones para calcular la última pregunta de la última respuesta sobre la vida, el universo y todo. :-S