Hans Reiser (allegedly) killed his wife

Y cayó en Slashdot la perturbadora noticia de que Hans Reiser ha sido arrestado bajo sospecha de haber asesinado a su esposa.

Me iba a seguir con los comentarios que aparecieron en Slashdot, pero cuando le platiqué a Citlali resultó que no sabía quién era Hans Reiser… o el ReiserFS, así que mejor hago una pequeña desviación para entrar en antecedentes.

Hace años, cuando los hombres eran hombres, las mujeres eran mujeres y las ovejas tenían miedo, se iba la luz mientras uno estaba trabajando en Linux. De hecho, todavía se va la luz cuando uno trabaja en Linux, pero en esas épocas cuando se iba la luz, y además uno no tenía no break (el caso de muchos, porque antes no era tan común tener no break), uno se jalaba los pelos porque sabía que iban a pasar algunos minutos mientras Linux hacía el fsck del sistema de archivos al volver a iniciar el sistema.

La cosa es que el sistema de archivos que venía por omisión en casi todas las distribuciones, ext2, no realizaba sus operaciones de escritura atómicamente. Lo cual era lo común para casi todos los sistemas de archivos de ese entonces, y de hecho para todos los que había disponibles para Linux.

Al no realizar una escritura atómicamente, si se iba la luz justo cuando un archivo estaba siendo escrito el sistema de archivos quedaba en un estado inconsistente. En el peor de los casos esas inconsistencias podían resultar en la corrupción total del sistema de archivos: por eso Linux corría el programa fsck cuando detectaba que el sistema operativo no había sido apagado como debía de ser. El proceso podía ser muy lento.

La solución por supuesto es realizar las operaciones atómicamente; la bronca es que si realmente fueran atómicas, entonces el sistema sería lentísimo, así que la gente especializada en sistemas de archivos se les ocurrió lo que se conoce como “journaled filesystems”. La idea es que el sistema de archivos lleva un “diario” (el journal) donde dice qué debe hacer, y la operación atómica consiste en escribir los datos y además escribir en el diario que se escribieron los datos.

Por supuesto eso es una sobresimplificación terrible, pero por ahí va la idea.

El punto es que el primer sistema de archivos para Linux (oficial, o sea, dentro del mismo kernel) con journal fue ReiserFS, escrito principalmente por Hans Reiser. Ahora ya hay muchos más (ext3fs, xfs, jfs, etc.), pero ReiserFS fue el primero.

Yo lo usé un tiempo: gracias a él perdí un capítulo (chiquito) de mi tesis de licenciatura. Ahora uso ext3, muchas gracias.

Hans Reiser es conocido en el geekdom como alguien “difícil”, por decir lo menos. Son famosas las peleas que ha tenido con Linus porque incluyeran ReiserFS en el kernel, que actualmente siguen para que se incluya ReiserFS4, la nueva versión.

Pero sí fue bastante inesperado de repente enterarnos de que ahora está preso acusado de haber asesinado a su esposa. A falta de un comentario mejor de mi parte, está cabrón.

Por suerte (o tristeza) muchos de los lectores geeks de Slashdot no tienen ese problema, y sin ningún miramiento estuvieron dando su opinión alegremente acerca del tema:

  • “All Reiser has to do is roll back the journal on his wife’s deletion. Problem solved by superior software! There. How’s that for tasteless?”
  • “The filesystem with killer performance.”
  • “What if he’s found guilty, and the project is continued by other people, and renamed to avoid infamy, and Reiser loses his first appeal because his lawyer fails to subpoena critical records from the medical examiner’s office, and Reiser 4 is finally completed and included in Linux 5.0, but develops stability issues, and around that time Hans is acquitted in a later appeal based on new evidence, and he rejoins the project? Will they change the name back?”
  • “It will now be known as ojfs. Okay, so I’m not a good person.”
  • “What’s the difference between O.J. and Hans Reiser? Hans kept a journal. (Sorry everybody…)”
  • “Sounds like Hans Reiser is really fsck’ed now.”

Me debatía entre echarme a reír o a llorar.

Evaporando agua con NVidia

Instalé lm_sensors, que había intentado usar hace un par de años pero que me desesperó su interfaz. O mejor dicho la falta de.

Está bonito, porque ahora viene con un cómodo script que automágicamente detecta qué módulos del kernel debe cargar y porque hay un applet de GNOME que muestra iconitos bonitos con termómetros y velocímetros para los ventiladores, además de revisar la temperatura de mi tarjeta NVidia también. Los ventiladores no me interesan tanto como la temperatura (quiero decir; si la temperatura está demasiado elevada, probablemente los ventiladores estén mal), así que dejé sólo la temperatura de mi CPU (que tiene dos cores), de mi placa madre, la ambiental y la de mi GPU (mi NVidia).

Y me llevé un sustote:

NVidia ardiendo

NVidia ardiendo

La temperatura leía 59°C, pero eso estaba en el rojo vivo, así que inmediatamente pensé “¡O mi dos, estoy hirviendo mi tarjeta NVIDIA!”

Espantado revisé el programa de NVidia Settings, y para mi asombro vi que la temperatura máxima de mi GPU antes de comenzar a bajarle la velocidad para evitar daños es de 125°C:

NVidia Settings

NVidia Settings

O sea que tranquilamente puedo estar evaporando agua usando mi NVidia. No que lo vaya a intentar, claro.

El applet de GNOME por suerte pueden definírsele los límites de las temperaturas, así que puse el del GPU a 125°C y ya todo se ve bien:

NVidia fresca

NVidia fresca

Voy a poner esto en mi laptop, se ve chido.

NetKey

Hoy fui (por segundo día consecutivo) a Banamex a tratar de ver por qué no puedo entrar a Bancanet. La bronca parece estar relacionada con que necesito mi NetKey, así que me la tramitaron “rápidamente” en una hora.

Detesto ir al banco, pero la NetKey me llamó la atención.

El NetKey es un aparatito que consiste de un botón y un display parecido al de los relojes electrónicos más chafas. Cada vez que se presiona el botón un número “aleatorio” aparece y ese número hay que ingresarlo junto con el número secreto que uno elige cuando tramita el servicio de Bancanet.

Evidentemente el aparatito es un vil generador de números aleatorios (que cualquier computólogo sabe que, dado que son generados determinísticamente, son realmente pseudo aleatorios), cuya semilla es compartida por el aparatito y el servidor central.

Si la gente a cargo de toda esta infraestructura es inteligente, entonces hay una relación secreta entre el número de serie de cada aparatito y la semilla. Si no son inteligentes entonces el número de serie es la semilla, o (un poco mejor) la semilla se obtiene de una función hash cuya entrada es el número de serie.

Como sea, la idea es buena. Las claves son válidas únicamente una vez, lo que hace que el sistema sea completamente impenetrable utilizando criptoanálisis. Y supongo que el servidor genera los números a partir del último válido y comienza a comprobar desde ahí, por si el usuario estúpidamente estuvo apretando el botoncito como idiota.

Claro que si alguien obtiene el algoritmo para generar los números aleatorios (no muy difícil teniendo el aparatito) y resulta que la semilla es fácil de obtener a partir del número de serie, entonces no sirve para un carajo. Y siempre está la agradable posibilidad de perder el aparatito, claro.

Pero la idea no es mala.

Least I Could Do

Siendo como soy, es raro que realmente no esté tan inmerso en la red. Sí, paso mucho tiempo conectado y siguiendo ciertas cosas en particular (política, tecnología, Linux), pero mis necesidades culturales son satisfechas en su gran mayoría por cosas afuera de la red (cine, música, literatura, teatro, comics, animé, televisión).

De las pocas cosas culturales que de hecho hago conectado, es el leer webcomics. Y aún así no son muchos. De hecho, son muy pocos, contrario a lo que se esperaría de alguien como yo.

Primero fue User Friendly porque, bueno, como que va conmigo: Linux, computadoras, geekdom. Después siguió Penny Arcade porque lo ligaban en Slashdot y porque es fabuloso: Tycho y Gabe son un gran equipo y la tira sin duda alguna es en varias ocasiones (aunque ciertamente no siempre) genial. Después siguió PvP, porque lo ligaban en Penny Arcade y porque es lo suficientemente telenovelesco (sin perder nunca el humor) como para entretenerme.

Y ya. Al menos hasta hace un par de días, cuando Kurt (el dibujante de PvP) mencionó Least I Could Do, y fui a checarlo por cómo lo describió. Eso es importante: Kurt está mucho más involucrado con la comunidad de creadores de webcomics que Tycho y Gabe (o al menos habla mucho más al respecto), y constantemente menciona otras tiras. Generalmente no las voy a revisar, pero lo que dijo de LICD me interesó:

“My good friend Ryan Sohmer is holding a contest over at his sex-romp comic Least I Could Do. Well, I say sex-romp, but LICD is the only sex-romp comic with hardly any nudity or sexy language in it. There are a lot of people having consensual intercourse over there. It’s all very civil…and I give Ryan a hard time for this constantly.”

Sex-romp para mí fue como “¡ven, ven a checarme!” Y obedecí.

Me encontré con un comic bastante divertido donde ciertamente la vida sexual del protagonista central (Rayne Summers) es el principal vehículo para hacer reír. Y vaya que lo consiguen, al menos conmigo.

El comic está escrito por Ryan Sohmer y actualmente va en el tercer dibujante. El primer dibujante (Trevor Adams) apestaba: si vas a hacer una tira donde el sexo es un elemento importante, uno espera ver reinas sabrosas. Adams no daba eso. El segundo dibujante (Chad WM. Porter) fue mucho mejor, y me encanta el detalle que le daba a los labios de las chavas. Actualmente está dibujando Lar Desouza, y me parece el mejor hasta ahora.

La tira es divertidísima casi todo el tiempo, si bien es políticamente incorrecta la mayor parte de las veces. De hecho, gran parte del humor viene de lo machista, sexista e insensible que es Rayne Summers, que se acuesta con casi toda mujer que se atraviese en su camino. Un ejemplo de un poema que lee Rayne (tiene de vez en cuando noches de poesía):

“Ladies you might think,
That men don’t care.
But I can tell with all honesty,
That we are incredibly aware.
The things that we do,
We don’t always choose.
But that’s the way of the world,
Always paying our dues.
I know it’s not pleasant,
But I beg you to follow.
This simple request,
If you give head please swallow.”

Está muy divertido este comic. No me impresiona no haberlo visto antes; no busco este tipo de cosas en la red. Una forma de verlo es que me pierdo de un montón de cosas fabulosas que están ahí esperando que las descubra. Otra forma de verlo es que qué bueno que no las busco, porque si no perdería mucho más tiempo del que en general pierdo en línea.

El Ilusionista

Fui a ver The Illusionist; se aplican las advertencias de spoilers normales.

The Illusionist

The Illusionist

Me gustó bastante esta película, si bien Norton me decepcionó un poco. Se ve un poco seco, un poco tieso. Como si realmente no estuviera disfrutando su papel.

En cambio Paul Giamatti es fabuloso; comienzo a tomar confianza en que si él aparece en alguna película es casi seguro que me guste (con la posible excepción de Paycheck). Se roba la película descaradamente.

Jessica Biel (a quien sólo conocía de Stealth) está sorprendentemente bien… y no me refiero sólo a lo obvio; también actúa chido. Y Rufus Sewell como el príncipe demente también está excelente en su papel.

Además de las actuaciones, la película tiene una música muy padre, y está muy bien ambientada en la Austria del siglo XIX. Hay escenas en “el pasado” de la película que no sólo están en color sepia; además tienen oscuro los bordes, como una fotografía antigua.

Es muy agradable la película, y a mí me gustó bastante. La recomiendo ampliamente.

Beryl

Esto tratando de ponerme al día sobre las cosas que quería escribir, que por estar ocupado no había podido, pero ya estoy cansado y esta última entrada será rápida.

La gente que mantenía Compiz-Quinnstorm (la versión de Compiz con plugins locochones) decidió (no tengo idea por qué) que ya no les gustaba el nombre de Compiz y ahora el “bisne” se llama Beryl. Repito: no tengo idea de por qué se dio el cambio, y realmente no me importa, pero el punto es que llegué a mi compu, actualicé mi repositorio de XGL Coffee, y resultó que Compiz (y toda la parafernalia necesaria) había pasado a mejor vida.

La mala noticia: Beryl necesita de forma obligatoria la extensión GLX_EXT_texture_from_pixmap, que los controladores de NVidia que tenía instalados en mi AMD 64 X2 no soportaban. La buena noticia: los controladores “beta” soportan esa extensión, y de corolario hacen innecesario usar XGL, porque también jalan con AIXGL.

Así que primero probé el chisme este en mi laptop, y funcionó de pelos (de hecho recuperé mis imágenes arriba y abajo del cubo; en algún momento había dejado de mostrarlas), y tras unos cuantos golpes de cabeza también jaló en mi escritorio.

Y además ahora mis dos máquinas utilizan AIXGL, que es mucho más limpio que XGL. Y el nuevo decorador de ventanas (Emerald se llama; no, no es error de ortografía; y sí, ahí sí entiendo por qué cambiar el nombre de CGWD) tiene mucho más limpios los temas, así que en general el cambio fue bueno.

Que por cierto, creo que esta revolución (porque no es otra cosa) que empezó con XGL y Compiz y ahora sigue con AIXGL y Beryl va a conseguir algo que creí imposible hace unos cuantos años: que KDE y GNOME compartan el mismo manejador de ventanas.

Recuerdo las guerras en las listas de correo cuando GNOME originalmente dijo que no tendría manejador de ventanas “oficial”, y las mentadas de madre que recibió el proyecto cuando se negaron a usar kwin. Sin embargo, los dos proyectos se esforzaron en soportar los estándares de Freedesktop.org, y como resultado cuando salió Compiz fue trivial ponerle soporte para KDE aún cuando originalmente sólo era para GNOME. Ahora Beryl soporta alegremente los dos proyectos, y dado el éxito que está teniendo el escritorio OpenGL, no me extrañaría que ambos proyectos eventualmente pongan al mismo manejador de ventanas como el oficial.

Ahora sólo espero que dejen de estarle cambiando de nombre al proyecto y se queden con Beryl. Que apesta, pero bueno.

Beryl

Beryl

The Devil Wears Prada

Fui con mi mamá a ver The Devil Wears Prada. Se aplican las advertencias de spoilers normales.

The Devil Wears Prada

The Devil Wears Prada

Me encantó la película. Meryl Streep actúa fabulosa, y sin duda se roba toda la película. Anne Hathaway a mí me encanta con sus ojotes y su bocota, y aquí actúa muy bien, y es muy chistosa. Emily Blunt también es maravillosa en su papel de inglesita venenosa, y Stanley Tucci sencillamente está a la altura de lo que uno normalmente esperaría de él.

Y ya. Realmente la película es muy buena por las actuaciones: la historia es una pendejada (aunque la parte del libro de Harry Potter es particularmente ingeniosa). Pero Meryl Streep es tan imponente en su papel que uno termina convencido no sólo de que sí es el diablo: además tiene poderes, que usa para el mal.

Váyanla a ver; ni siquiera lo piensen. Está muy divertida.

Ubuntu 6.06

Fui con Citlali a instalarle Ubuntu 6.06 (Dapper Drake).

Originalmente le había instalado Gentoo, porque en verdad creo que es una gran distribución, y porque creí que Citla tenía los requerimientos de geek necesarios.

Después de casi año y medio de soporte técnico remoto (y a veces no tan remoto), llegué a la conclusión de que no. Esto no dice nada de Citlali; sin duda es una computóloga más que capaz. Lo que pasa es que Gentoo es demasiado rudo. A veces es demasiado rudo hasta para mí.

Como Omar y otros cuates tenían Ubuntu en alta estima, decidí instalárselo y ver cómo nos iba.

En general fue más que satisfactorio; la instalación toma literalmente quince minutos, y lo primero que hace después de instalar es actualizar a las últimas versiones. Configurar sonido, video, red, impresora, etc. es ridículamente fácil. No, esperen, tachen eso.

No hay que configurarlo. Uno rebootea y ahí está todo.

Ahora, no todo fue miel sobre hojuelas. Ubuntu es una distribución para usuarios. Gente que quiera navegar, oír MP3s, ver videos y tal vez trabajar en procesadores de palabras y hojas de cálculo. En ese sentido, no es developer friendly.

Es la primera vez en la vida que instalo una distribución Linux, escribo gcc en la terminal, y me escupe Command not found.

Yo estaba escandalizado. Creí que de hecho lo difícil en una distribución normal era quitarle el compilador de C a la máquina; no que uno tuviera que ponérselo de hecho.

Como sea eso fue fácil de resolver: apt-get funciona casi tan bien como emerge (y sin duda es más rápido instalar paquetes), y no tuve broncas instalando cosas a lo bestia.

Lo que nos dio realmente problemas fue Scigraphica, un programa que Citla usa para grafiar cosos. Por lo visto es un programa que deben usar como 2 personas, porque nada más fue imposible hacer que jalara. La versión binaria de Debian truena alegremente en un bug que Ci descubrió hace años, y la nueva no pude compilarla por más que usé todos los trucos de los cuales tengo conocimiento (que no son pocos). Hartos al final, hicimos una marranería, pero que jaló: compilamos el programa en Gentoo en otra máquina, y copiamos el binario sobre la instalación de Scigraphica de Debian.

No jaló perfecto; marca un par de errores, y con gráficas muy grandes el PostScript generado truena a la mitad de los datos. Pero jaló.

La otra bronca fue LIRC. Eso me molestó, porque me consta que Scigraphica lo usan pocas personas; pero LIRC es bastante utilizado, y debería haber paquetes binarios (o uno grandote) para todos los controladores para los distintos controles remotos que soporta LIRC. Dado que (¡obvio!) no tenía el código fuente del kernel, no pude ni siquiera compilar yo los módulos del kernel, y eso sí no pudimos resolverlo. Quedará para una sesión futura.

Pero exceptuando esas dos broncas, la verdad sí me impresionó lo pulido y en general amigable que está Ubuntu. Sí consideraría seriamente instalárselo a mi mamá o a mi papá en sus computadoras.

Unit Disk Graph

El jueves expuse en mi seminario de tesis; creo que me fue bastante bien. Pero lo importante (además del hecho de que por ello había estado demasiado ocupado para publicar en el blog) es que en un momento tuve que hacer la gráfica de una Unit Disk Graph; una gráfica donde los nodos están en el plano euclidiano, y dos de ellos están conectados (comparten una arista) si su distancia es menor o igual a uno.

Es un modelo obvio para redes inalámbricas si consideramos que todas las antenas tienen la misma potencia y definimos “uno” como el rango de la señal.

Ahora, lo interesante de hacer un ejemplo de gráficas de disco unitario, es que ésta sea conexa; es decir, que todo nodo pueda mandarle un mensaje a cualquier otro siguiendo una ruta a través de las aristas. Si uno hace a pie un ejemplo de 5 nodos la cosa se pone ya de hueva, porque uno tiene que estar midiendo que cada nodo esté a distancia uno o menor de al menos otro nodo.

Por supuesto, entonces uno quiere automatizar el proceso (yo quería un ejemplo de 50 nodos). La bronca es que si uno no tiene cuidado, todos los nodos (o una gran parte) terminan amontonados en alguna parte del marco donde uno esté trabajando. Recuerden que yo uso PStricks para mis gráficas en \LaTeX{}, así que lo que hice fue un programita en Java que generara 50 puntos aleatorios siguiendo el siguiente algoritmo:

  1. El primer punto es completamente al azar.
  2. El punto i elige a un “hermano” j al azar entre los otros i-1 puntos.
  3. Se toma un ángulo α entre 0 y 360 grados (o 0 y 2π radianes, como les guste verlo), y una distancia d al azar entre 0.9 y 1.0, y las coordenadas de i son las de j desplazadas la distancia d en la dirección α, a menos que el punto se salga del marco (pasa probabilísticamente pocas veces; en el peor de los casos hay un 25% de probabilidad de que el punto resultante esté en el marco)
  4. El punto que se obtuvo arriba es agregado si y sólo si se encuentra a distancia 0.5 o mayor de todos los demás puntos. Por esta condición el algoritmo se tarda un poco; para cada punto i, debe comprobar que esté “lejos” de los otros i-1 puntos. Y si el punto está demasiado “cerca” de otro, se repite el paso anterior y este.

Siguiendo este algoritmo, se obtienen gráficas bastante simpáticas: esta fue la que puse en mi presentación:

Unit Disk Graph

Unit Disk Graph

Por supuesto la idea del programita no era sólo generar los puntos aleatorios; lo chido es que me generó básicamente todo el código para PStricks. Yo sé que Java no es la mejor elección para estas cosas, pero la entrada y salida de ML me dio demasiados dolores de cabeza y mi Python está demasiado oxidado. Pensé en hacerlo con Perl, pero lo que realmente quería era un intérprete interactivo, así que me pasé a Java porque sencillamente me siento ahí cómodo. Pero a la próxima uso un lenguaje interpretado, seguro.

Como sea estuvo chido; utilicé programitas que me generaran el código PStricks en todos los casos excepto los más sencillos. Creo que terminaré haciendo una biblioteca para ciertas cosas geométricas comunes; nada más tengo que elegir con cuidado en qué lenguaje la quiero.