Democracia

Otra vez de política. Prometo no hacerlo muy seguido. Además, esta entrada es peje-free.

Hay que adorar a las “democracias” Occidentales… porque por supuesto nosotros pobres países en vías de desarrollo tenemos que voltear y tomar como ejemplos a seguir a países como Estados Unidos, Gran Bretaña y Francia, para poder algún día (si nos esforzamos mucho mucho y seguimos las acertadas recomendaciones del FMI) llegar a ser como ellos.

Por supuesto nadie menciona en ese contexto que en esas democracias todavía discuten si enseñar creacionismo o evolución en las escuelas, tienen reyes, o revueltas que vuelven loca a París por rencor social y racial.

En ese sentido es fabuloso ver los sitios de noticias “occidentales” de los últimos días. Todos esos gobiernos imperialistas nos urgen a abrazar la democracia (como ellos la entienden) y aceptar las “bondades” del libre comercio mundial, y toman como pretexto el que un país no sea democrático (como ellos lo entienden) para mirarlo feo, imponerle bloqueos comerciales, o de plano bombardearlo.

La búsqueda de la “democracia” (como ellos la entienden) es el principal pretexto para cometer atrocidades que no le quitan el sueño a nadie porque generalmente son contra árabes, negros o indios a los que les tocan.

Pero cuando la democracia (como ellos no la entienden) es ejercida por esas muchedumbres de árabes, negros o indios, entonces se mesan los cabellos escandalizados de que tal cosa pueda ocurrir.

Evo ganó en Bolivia, un país con 60% de población india. Yo no entiendo como alguien puede sorprenderse de que haya ocurrido. Pero más sorprendentemente aún me parece la página de CNN, mencionando que “Occidente” (todo Occidente según ellos… aunque lo más propio sería decir los gobiernos imperialistas de Occidente) está “en SHOCK” porque Hamas ganó las elecciones palestinas.

Bueno ¿y qué esperaban?

Yo no soy fan o apoyador de Hamas; y creo (desde mi no muy informada perspectiva), que muchos de sus dirgentes están bastante locos. Pero lo que yo aprecio en su victoria en las recientes elecciones palestinas (con una participación altísima, por lo que he leído), es sencillamente que el pueblo palestino:

  1. Quiere un estado para ellos (que además es consenso internacional, incluido EU, desde hace ya rato), y
  2. Ya están hasta la madre de no obtenerlo y de los obstáculos que pone Israel, y creen que el de Hamas es el mejor camino para conseguirlo.

¿Eso es bueno? Claro que no; probablemente venga otro agravamiento de esa crisis, vengan más muertos (sorpresa sopresa: lo más serán palestinos), y probablemente se estanque el proceso de paz más décadas, si no es que hay incluso un retroceso en los avances conseguidos.

Pero que no salgan con mamadas de que “Occidente” está en shock por la victoria de Hamas. “Occidente” es en gran medida responsable de que Hamas haya ganado en primer lugar.

Lo que pasa es que a “Occidente” sólo le gusta la democracia cuando ganan los candidatos que les gustan.

Imprimir entrada Imprimir entrada

Subversion

Desde hace un rato (desde el sábado 13 de marzo de 2004, según mis logs), tengo mi $HOME en un repositorio de Subversion. Es increíblemente útil, y además bien mamón.

En primer lugar, me permite nunca perder un archivo al momento de que lo añado al repositorio. En segundo, puedo recuperar cualquier versión anterior de casi cualquier cambio que haya hecho. En tercero, me mantiene sincronizados mis ambientes de trabajo entre mi desktop (ahora más poderosa que nunca) y mi laptop.

(Debo hacer notar que no es todo mi $HOME el que tengo en SVN; sólo $HOME/Documents; el resto son cosas de configuración y similares, que no me preocupa perder tanto como mis archivos).

Cuando cambié a mi Athlon 64 X2, me dije “fácil; hago un respaldo del directorio SVN, y lo repongo en la nueva máquina”. Grave error.

Resulta que el formato opaco que usa Subversion (DB 4), no es compatible entre arquitecturas (incluso si son cercanas, como x86 y amd64). De hecho, a veces no es compatible entre distintas versiones de DB. Así que tuve que mover mi respaldo a mi laptop, hacer un dumpfile, mover el dumpfile a mi Centurion, y recuperar el dumpfile.

Pero bueno, al menos no perdí nada.

Imprimir entrada Imprimir entrada

FlightGear Flight Simulator

Cuando vi que Rhythmbox funcionaba recompilando algunas de sus dependencias, le di una segunda oportunidad a otros programas: principalmente Celestia y FlightGear Flight Simulator, para probar mi tarjeta de video (el demo de Quake IV me está dando broncas, y no sé si sea que tengo broncas con el reloj interno de la máquina, o alguna cosa con la emulación de software en 32 bits).

FlightGear había llegado el punto en que ya no podía jugarlo. Con esta nueva máquina y tarjeta de video, no sólo puedo jugarlo, sino que no tengo que cerrar nada mientras lo hago. Se ve muy bonito.

Puente de San Francisco

Puente de San Francisco

Voy a bajar la escenografía de México; espero que incluya al menos parte de la ciudad.

Imprimir entrada Imprimir entrada

Tarde de cine

Siendo miércoles 2 x indio, fui al cine a desquitar que casi no he ido al cine por mi nueva máquina. Vi The Jacket, Aeon Flux y Jarhead, y voy a hablar de ellas, así que si no quieren oír spoilers no sigan leyendo.

  1. The Jacket
    The Jacket

    The Jacket

    Una mamada. Me gustó, pero no le quita que sea una mamada.

    Mi problema básicamente es que Adrien Body viaja en el tiempo cuando lo meten en una cajita amarrado (no sabemos por qué, y parece no importar que nadie lo sepa), que los personajes tienen como dos milímetros de profundidad, y que Body y Keira Knightley se enamoran básicamente porque el guíon decía. Ah, y que a un chavito árabe se le quita lo taradito dándole de toques. Eso fue particularmente fabuloso.

    Como sea está entretenida, y Body y Knightley hacen lo que pueden con un guión que hubiera sido fabuloso si no hubiera sido tan malo.

    Pero una mamada al fin y al cabo.

  2. Aeon Flux
    Aeon Flux

    Aeon Flux

    Una mamadota. Ya me lo esperaba, pero hay que decirlo con todas sus letras: es una mamadota.

    Hay que ponerlo en perspectiva, claro. Está basada en una caricatura que para empezar no era muy buena; no se le podía pedir mucho. Y tiene cosas “futuristas” divertidas y a Charlize Theron.

    Claro que la Theron se ve mucho más guapa cuando sonríe; cuando la hace de chava ruda-y-permanentemente-encabronada, no lo es tanto.

    Una mamadota.

  3. Jarhead
    Jarhead

    Jarhead

    Una mamadototota. No hay realmente historia, y los personajes son tan sosos que hacen admirar a los de las novelas de Karl von Vereiter. Ni siquiera es pro gringa para poder decir que es una película pro gringa. De hecho, no creo que haya otro mensaje además del (ligeramente homosexual) de spirit de corps. E incluso ése está pobremente expresado.

    Independientemente de lo mala que es la película (por no decir aburrida), cada vez me gusta más Peter Sarsgaard como actor. He visto tres películas con él (las tres malas), y él es lo más rescatable generalmente. Jake Gyllenhaal no está mal, sólo que su personaje no genera la más mínima simpatía.

    Pero es una mamadototota.

Así que vi una mamada, una mamadota y una mamadototota. Ya lo esperaba de Aeon Flux; pero creía que las otras dos serían al menos medianamente buenas.

No lo son. Hubiera visto Las locuras de Dick y Jane; al menos sale Téa Leoni.

Imprimir entrada Imprimir entrada

OpenOffice.org 2.0

Hace un par de meses emergí OpenOffice.org 2.0 en mi laptop. Me precié mucho de que tardó 5 horas 57 minutos en compilar todo el paquete; en mi máquina vieja, había tardado del orden de ocho horas.

Ahora mientras estaba entretenido con mi nueva máquina, decidí hacer un update en mi laptop y vi que entre los paquetes estaba OpenOffice.org 2.0.1. Pensé “bueno, otras seis horas”.

Tardó 22 horas 29 minutos.

No tengo idea de porqué tardó más de cuatro veces más. No tiene el menor sentido.

Imprimir entrada Imprimir entrada

HAL y pmount

Hace ya un rato (casi dos años), a Robert Love (reconocido hacker del kernel y GNOME) se le ocurrió la genial idea de que cuando un usuario conectara su cámara, llave USB, PDA, etc. a una máquina con Linux, sería muy chido que el aparato en cuestión comenzara a funcionar. De ahí nació el proyecto Utopía (pueden leer el mensaje original de Robert en Kernel.org).

La idea era integrar el kernel y el escritorio: básicamente (se dijo en ese momento), el kernel es über cool y GNOME todavía más, así que sólo había que pegarlos. En español: el kernel ya era capaz de detectar los dispositivos y manejarlos, y el escritorio tenía las herramientas para utilizarlos; la bronca era configurar la comunicación entre ambos. Utopía se iba a encargar de dicha comunicación.

De ahí vienen D-Bus y HAL, entre otras cosas. HAL (de Hardware Abstraction Layer) se encarga de que cada vez que un dispositivo se conecta, hace público tal evento, además de pasar bastante información del dispositivo, cosas como el fabricante y el modelo; o incluso cosas útiles como el sistema de archivos que utiliza una llave USB. D-Bus sirve como un sistema de IPC (Inter Process Communication), con jerarquías y toda la madre.

La idea es fabulosa… en teoría. En la práctica ha causado un verdadero desmadre, especialmente a la gente que usamos Gentoo y entonces seguimos los dictados de GNOME casi al pie de la letra… lo que se traduce en que si de repente a los GNOMEros se les ocurre la genial idea de usar pmount, ahí vamos el resto como borregos. Más de eso adelante.

Ayer todo GNOME 2.12 entró a amd64 (estable), y por tanto actualicé. Todo salió sorprendentemente bien, sin ninguna bronca. Yo estaba siguiendo con mi tarea hercúlea de restablecer mi sistema como lo tenía antes del cambio a AMD 64, así que configuré mi Palm (sin broncas), y decidí dejar conectado permanentemente el cable de mi cámara Sony Cybershot DSC P200 (de qué sirve tener 10 puertos USB si no). Para probar, la conecté y con horror vi que había desaparecido el hermoso iconito de una camarita en nautilus (ahora salía un horrible drive genérico), y en segundo y más grave lugar, ahora el sistema de archivos se montaba con shortname=winnt, lo que causa que todos los archivos ESTÉN EN PURAS MAYÚSCULAS LO CUAL NO SÓLO ES MOLESTO SINO INCONSISTENTE CON TODAS MIS DEMÁS FOTOS.

Así que como ando de vagaciones, decidí resolver el asunto de una vez y por siempre (ya había tenido esa bronca en mi laptop con mi iPod Shuffle, que causa que Rhythmbox no funcione como debe).

Después de menearle un rato, al menos recuperé mi hermoso iconito de camarita; el chiste fue poner esto en /etc/hal/fdi/information/99-sony-camera.fdi:

<?xml version="1.0" encoding="UTF-8"?> <!-- -*- xml -*- -->
<deviceinfo version="0.2">
  <device>
    <match key="@storage.physical_device:info.bus" string="usb">
      <match key="@storage.physical_device:usb.vendor_id" int="0x054c">
        <match key="@storage.physical_device:usb.product_id" int="0x0010">
          <merge key="storage.policy.should_mount" type="bool">true</merge>
          <merge key="info.category" type="string">camera</merge>
          <merge key="camera.access_method" type="string">storage</merge>
          <append key="info.capabilities" type="strlist">camera</append>
        </match>
      </match>
    </match>
  </device>
</deviceinfo>

Y mi iconito volvió (porque ya especifico que el dispositivo tiene la propiedad de camera):

Icono de camarita

Icono de camarita

Chingón. El problema fue decirle que no montara el dispositivo con la opción shortname=winnt. Inocente de mí, supuse que usando la propiedad volume.mount_option.shortname=lower todo iba a jalar. Nomás no lo hizo. Lo desesperante era que HAL sí estaba asignando la opción, sólo que en algún punto del stack de Utopía, se la pasaba por el arco del triunfo.

Analicé todas las opciones por omisión de HAL, y después de D-Bus. En ningún lado ponían explícitamente la opción shortname=winnt. Comenzaba a desesperarme, cuando vi la luz: era pmount.

Originalmente, HAL modificaba /etc/fstab cada vez que un dispositivo era conectado al sistema. Era sucio, era propenso a errores y a estados inconsistentes del sistema (por ejemplo si se iba la luz y uno desconectaba el dispositivo antes de volver a prender la máquina, la entrada en /etc/fstab se quedaba ahí hasta el fin de los tiempos), pero funcionaba. De repente en algún punto entre GNOME 2.10 y 2.12, a los GNOMEros se les ocurrió: “pues vamos a usar pmount“.

La idea de pmount es chida, si bien espanta un poco cuando uno la oye por primera vez. El programa lo que hace es permitir a usuarios comunes y corrientes el montar dispositivos sin que éstos tengan que estar listados en /etc/fstab. ¿Cómo hace esto? Fácil: es un programa setuid.

De donde yo vengo, cuando oímos algo así lo primero que hacemos es decir:

¡PELIGRO, WILL ROBINSON, PELIGRO!

En defensa de los autores de pmount, parece que es un programa chiquitito que hace una sola cosa y trata de hacerla bien y de forma limpia. La bronca es que hace falta un sólo error en el programa para permitir un escalamiento de privilegios en el sistema. Pero a la gente de GNOME se les hizo buena idea, y yo confío en ellos… y si me crackean ya sé a quiénes echarles la culpa.

Me costó un par de segundos descubrir el “error” (ellos le han de decir “feature”) en pmount: básicamente el tiempo que me tardó teclear grep winnt en el código fuente de pmount. En src/fs.c aparece:

static struct FS supported_fs[] = {
    { "udf", "nosuid,nodev,user", 1, "007", 1 },
    { "iso9660", "nosuid,nodev,user", 1, NULL, 1 },
    { "vfat", "nosuid,nodev,user,quiet,shortname=winnt", 1, "077", 1 },
    { "ntfs", "nosuid,nodev,user", 1, "077", 1 },
    { "hfsplus", "nosuid,nodev,user", 1, NULL, 0 },
    { "hfs", "nosuid,nodev,user", 1, NULL, 0 },
    { "ext3", "nodev,noauto,nosuid,user", 0, NULL, 0 },
    { "ext2", "nodev,noauto,nosuid,user", 0, NULL, 0 },
    { "reiserfs", "nodev,noauto,nosuid,user", 0, NULL, 0 },
    { "xfs", "nodev,noauto,nosuid,user", 0, NULL, 0 },
    { "jfs", "nodev,noauto,nosuid,user", 0, NULL, 1 },
    { NULL, NULL, 0, NULL, 0}
};

Y en el ChangeLog aparece:

- pmount: mount vfat with shortname=winnt option

Qué razonamiento tuvieron los autores de pmount para forzar la opción shortname=winnt, no la sé. Y como no tienen lista de correo y su página está en alemán, probablemente nunca lo sepa. Pero el punto es que me estaban limitando, y a mí no me gusta eso.

Por suerte es Open Source, así que sólo creé el parche:

--- pmount-0.9.6/src/fs.c       2005-10-13 09:59:06.000000000 -0500
+++ pmount-0.9.6-new/src/fs.c   2006-01-24 20:33:32.000000000 -0600
@@ -21,7 +21,7 @@
 static struct FS supported_fs[] = {
     { "udf", "nosuid,nodev,user", 1, "007", 1 },
     { "iso9660", "nosuid,nodev,user", 1, NULL, 1 },
-    { "vfat", "nosuid,nodev,user,quiet,shortname=winnt", 1, "077", 1 },
+    { "vfat", "nosuid,nodev,user,quiet,shortname=lower", 1, "077", 1 },
     { "ntfs", "nosuid,nodev,user", 1, "077", 1 },
     { "hfsplus", "nosuid,nodev,user", 1, NULL, 0 },
     { "hfs", "nosuid,nodev,user", 1, NULL, 0 },

y además hice un ebuild que aplica el parche e instala pmount con lo demás sin modificar. Después de eso, recuperé mis minúsculas:

Minúsculas

Minúsculas

Pero al menos ya estoy bien rudo en HAL: no tiene secretos para mí. Incluso hice que la cámara se monte en /media/sonycamera en lugar de /media/usbdisk.

Yay.

Imprimir entrada Imprimir entrada

¡Tango!

Ya teniendo casi todo funcionando como debe de ser del lado del software, decidí que mi escritorio se veía horrible. Así que cambié de tema.

No regresé a mi tema lila (ya llevaba más de un año con él), y en cambio puse Clearlooks (que viene incluido en Gtk+ 2.10), la edición Curve. Para las ventanas también utilicé el tema Clearlooks, que hace juego con el de Gtk+.

Para los iconos, sin embargo, decidí probar algo nuevo e instalé los iconos del proyecto Tango. Están simpáticos, si bien nada terriblemente nuevo.

Iconos de Tango

Iconos de Tango

Está bastante usable este tema; y está muy rápido… aunque creo que eso es responsabilidad de mi procesador.

Imprimir entrada Imprimir entrada

Teclas multimedia, revisadas

Para burla de mis esfuerzos, resulta que hay una nueva manera de definir las teclas multimedia, más sencilla. La descubrí leyendo Planet GNOME, en particular una entrada de Crispin Flowerday.

Pero ahorita tengo mucha hueva, y mi método funciona. Además, no resuelve el hecho de que tengo todavía varias teclas sin asignar; aunque creo que ese “problema” lo puedo resolver con un Hotkeys.

Imprimir entrada Imprimir entrada

Multimedia Keys

Centurion, mi nueva máquina Athlon 64 X2 no está lista y probablemente no lo esté hasta que compre mi nuevo DVD y mi nueva quemadora de DVDs de doble capa. La definición de “lista” es que le tome una foto de conjunto, y no voy a hacer eso si las unidades ópticas no son negras (se ven feas de color cremita).

Independientemente de ello, hay avances. Hoy por ejemplo corregí un problema (que no sabía que tenía), que hacía que la máquina se trabara (hard way) cada vez que conectaba mi cámara digital. Lo primero que pensé fue “pinche Linux”, porque ya había conectado otros dispositivos USB sin broncas; pero resultó que es la placa madre. Si no desactivo una opción rara en el BIOS que permite tener teclado y discos duros USB visibles al tiempo de booteo, la cosa se traba feo. Traba traba: incluso el BIOS se traba.

Muy raro.

El problema lo descubrí cuando quise bajar a Centurion las fotos de mis nuevos teclado y ratón Genius. El teclado es un Genius ErgoMedia 700, que me costó la fabulosa cantidad de 261 pesos:

Teclado Genius ErgoMedia 700

Teclado Genius ErgoMedia 700

El ratón es un vil Genius NetScroll, con la particularidad de que es negro (y por tanto se ve bonito):

Ratón Genius NetScroll Negro

Ratón Genius NetScroll Negro

Me costó $31.50. Con IVA.

El ratón lo conecté y jaló, como suelen hacer los fieles ratones. El teclado ídem, excepto las teclas de multimedia. Por supuesto.

Yo ya sabía que con las teclas multimedia habría broncas; mientras que los teclados de 101 a 105 teclas están comlpetamente estandarizados (al menos en los idiomas que usan el alfabeto latino), las teclas 106 a whatever no. Al contrario; cada fabricante define los teclazos (que terminan siendo un vil número para el sistema operativo) como se les da la regalada gana. En Windows esto no es un problema: los teclados vienen con un CD que configura todo para el usuario; pero para nosotros Linuxeros es “a ver cómo le hacen”.

No me costó encontrar con la solución (contrario a lo algunos piensan, soy muy bueno buscando cuando lo que busco de hecho me importa). La bronca fue llevarla a cabo; no es difícil, nada más es bastante talachudo.

Las páginas que más me ayudaron fueron Logitech Cordless Desktop LX700 en Living with Linux, y HOWTO Use Multimedia Keys en el Gentoo Wiki, aunque aquí pondré un resumen.

La idea es sencilla: por cada teclazo, el teclado envía al sistema un número. Aquí hay dos sopas: que el sistema operativo reconozca el número, o que no. Si sí lo reconoce, se lo pasa a X, que lo interpreta como otro número, y de nuevo puede ocurrir que X reconozca este nuevo número, o que no. Si lo reconoce, otra vez hay de dos sopas: que lo reconozca bien (donde “bien” está definido como “lo que yo quiero que reconozca”), o que lo reconozca mal.

Para todas las posiblidades en donde algo puede salir mal, hay modo de corregirlo. La primera es que el kernel no reconozca el teclazo: en tal caso enviará un mensaje (que se puede ver con dmesg o en /var/log/messages), que dice algo de este estilo:

Jan 20 18:24:44 centurion atkbd.c: Unknown key pressed (translated set 2, code 0xbb on isa0060/serio0).
Jan 20 18:24:44 centurion atkbd.c: Use 'setkeycodes e03b <keycode>' to make it known.

Bastante claro, ¿no? Hay que correr setkeycodes como dice el mensaje, y asignarle un keycode a la tecla en cuestión. Para ver qué keycodes hay disponibles, uno corre (¡surprise!) getkeycodes:

Plain scancodes xx (hex) versus keycodes (dec)
for 1-83 (0x01-0x53) scancode equals keycode

0x50: 80 81 82 83 99 0 86 87
0x58: 88 117 0 0 95 183 184 185
0x60: 0 0 0 0 0 0 0 0
0x68: 0 0 0 0 0 0 0 0
0x70: 93 0 0 89 0 0 85 91
0x78: 90 92 0 94 0 124 121 0

Escaped scancodes e0 xx (hex)

e0 00: 0 0 0 0 0 0 0 0
e0 08: 0 0 0 0 0 0 0 0
e0 10: 165 230 231 232 233 0 234 0
e0 18: 235 163 0 0 96 97 236 237
e0 20: 113 140 164 238 166 239 200 0
e0 28: 0 0 255 0 0 0 114 201
e0 30: 115 202 150 0 0 98 255 99
e0 38: 100 0 0 203 0 204 0 205
e0 40: 0 0 206 207 0 119 119 102
e0 48: 103 104 0 105 112 106 118 107
e0 50: 108 109 110 111 0 0 0 0
e0 58: 0 208 0 125 126 127 116 142
e0 60: 0 0 0 143 0 217 156 173
e0 68: 128 159 158 157 155 226 0 112
e0 70: 0 0 0 0 0 0 0 0
e0 78: 0 0 0 0 0 0 0 0

Los ceros muestran keycodes disponibles.

Así que con todas las teclas multimedia de mi teclado (que como pueden ver en la foto son un chingo), tuve que estar como taradito picándolas y viendo en mis logs qué número tenía que pasarle a setkeycodes. Ese es el primer paso; superado eso, el kernel ya reconoce a todas las teclas. Ahora sólo hay que hacer que X las reconozca, y que las reconozca bien.

Para esto uno corre xev, y presiona la tecla que uno quiere que X reconozca. El programa escupe algo como:

KeyPress event, serial 26, synthetic NO, window 0x4000001,
root 0xb5, subw 0x0, time 3304354, (464,-439), root:(655,339),
state 0x10, keycode 169 (keysym 0x1008ff8b, XF86ZoomIn), same_screen YES,
XLookupString gives 0 bytes:
XmbLookupString gives 0 bytes:
XFilterEvent returns: False

La línea que nos interesa es la tercera: ahí nos dice qué keycode genera la tecla (que no necesariamente es el mismo que el que pasamos a setkeycodes), y además que keysym tiene asignado. Si no tiene ningún keysim asignado, dirá que tiene el 0x0. Uno debe ver en primer lugar si tiene keysim asignado, y si sí tiene ver que sea el “correcto” (o sea, el que uno quiere). Los keysyms están definidos en /usr/lib/X11/XKeysymDB, y ya hay bastantes para teclas multimedia.

Para que la tecla con keycode 164 (por ejemplo), se le asigne el keysym “XF86AudioStop” (que Rhythmbox utiliza para hacer stop), uno le pasa:

keycode 164 = XF86AudioStop

a xmodmap. Esto puede hacerse con la opción -e, o usando un archivo; vean la página de xmodmap si les interesa. Y hay que hacer eso para todas las teclas. Eso me llevó un rato.

Para automatizar el proceso, hice un script que define las keycodes y lo aventé en /etc/init.d, para que se llame antes de que inicie X. Los comandos para xmodmap los puse en un archivo .Xmodmap en mi $HOME, y configuré gconf para que los cargue automágicamente al iniciar mi sesión:

Configuración de gconf

Configuración de gconf

Después de todo eso, lo que hemos conseguido es que a las teclas las vean el kernel y X; pero aún no hemos asignado nada interesante a dichas teclas. Para eso yo usé dos cosas: los shortcuts de GNOME (en el menú Desktop/Preferences/Keyboard Shortcurs), y los keybindings de Metacity (configurables en gconf usando las llaves /apps/metacity/global_keybindings).

Fue un desmadre. Pero quedó muy chido; la bronca es que entre GNOME y Metacity no me permiten asignar todas las teclas que tengo. Usando las teclas multimedia controlo Rhythmbox sin problemas (y sin que tenga que tener el foco en la aplicación), y también el volumen. También tengo un montón de aplicaciones que las lanzo con las teclas multimedia: Gaim, Nautilus, The GIMP, Firefox y Evolution. Pero varias teclas que ya están bien definidas, no sirven: por ejemplo, tengo teclas de “Back”, “Forward”, “Stop” y “Refresh” para controlar el navegador; pero Firefox decide ignorarlas. Y la verdad no uso tanto esos comandos, pero sería chido que Firefox les hiciera caso. Y tengo en total seis teclas todavía que me servirían para lanzar aplicaciones: la bronca es que Metacity sólo tiene 10 run_command personalizables, y ya ocupé todos.

Pero a pesar de esas limitaciones, está muy chido. Especialmente el poder controlar Rhythmbox desde cualquiera de mis nueve escritorios, así como el volumen.

Imprimir entrada Imprimir entrada

Monica Dean

Tengo un desmadre de proporciones épicas.

Además de estar armando mi máquina, estoy rearmando mi máquina vieja para que se la quede mi mamá, y la que ella tiene actualmente se la pueda llevar a la UAM a su cubículo. Todo eso involucra un montón de cables, discos duros, CDs, y dando la vuelta en medio de todo un dongle Wi-Fi USB que me prestó Enrique (una pequeña maravilla, por cierto).

Harto porque no termino, me puse a ver el último capítulo de Lost (The Hunting Party), que bajé hace unos días pero por todos mis relajos de hardware no había podido ver. Y en ese capítulo vi a una actriz que no puedo creer lo bella que es: Monica Dean.

Monica Dean

Monica Dean

Guau. Se me hace bellísima, y no he podido encontrar nada de información suya en la red.

Gran aliviane a los ojos.

Actualización: Juan, que tiene más paciencia que yo para estas cosas, me acaba de decir que el nombre de la bella francesa (ahora sé que es francesa) es Monica Barladeanu.

Imprimir entrada Imprimir entrada

La vida a los 64 (bits)

Centurion (mi nueva máquina AMD 64, dual core) lleva viva unos dos días, después de no pocos problemas.

El primero fue bastante torpe de mi parte: debí conectar el procesador a la placa madre, la tarjeta de video y la memoria, un teclado, y prenderla para ver si todo respondía como debía responder: básicamente ver si podía entrar al BIOS. Pero nooooo, creyendo yo que esto es como Disneylandia, conecté todo y encendí la compu, esperando que todo funcionase. En lugar de eso, se apagó a los siete segundos, aproximadamente.

Las placas madre MSI desde hace años incluyen un sistema de autodiagnóstico que funciona muy bien: son cuatro leds que se prenden en 16 distintas configuraciones, dependiendo de qué prueba esté realizando el sistema. Mi placa madre se moría justo cuando probaba la memoria; el manual dice que si la memoria está mal o mal colocada, la máquina se apagará, y exactamente el mismo error ocurría cuando prendía la máquina sin memoria. Por supuesto traté de colocar mi pastilla de 1 Gb de memoria en cualquiera de las cuatro ranuras disponibles, pero fallaba igual. Desconecté todo de la placa madre (pero la dejé puesta en el gabinete), y siguió fallando igual.

Supuse que era la memoria. Es raro que falle una memoria nuevecita (especialmente una Kingston), pero no es imposible. Esperé a que Enrique regresara a su casa para que probáramos la memoria en su placa madre, y ahí funcionó. Eso quería decir que la placa madre estaba mal, que el procesador estaba mal (por ejemplo que hubiera doblado las patitas al colocarlo), o que alguna conexión con el gabinete estuviera haciendo algo raro.

De regreso en mi casa saqué la placa madre del gabinete, saqué la fuente de poder del gabinete, desconecté todo de la placa madre (incluyendo los conectores a leds y botones del gabinete), y sólo dejé un cablecito con botón que Enrique me prestó que me permitía prender y apagar la placa madre sin necesidad de gabinete.

Y por fin jaló.

Pero cuando regresé todo al gabinete, falló igual. Dejando la placa madre en el gabinete le quité de nuevo todos los conectores de leds y botones, y volví a usar el cablecito de Enrique. Volvió a funcionar.

La cosa estaba rara, pero entonces conecté sólo el botón de encendido del gabinete a la placa madre, y volvió a fallar. Así que, créanlo o no, era el maldito botón. Desarmé el gabinete (o mejor dicho, el coso del gabinete con el botón), y vi que lo que ocurría era que cuando prendía la PC, el botón se quedaba pegado; entonces se apagaba a los siete segundos (aproximadamente), que es como debe de funcionar si se mantiene apretado el botón de encendido, por cierto. Que estuviera pasando por la prueba de memoria en ese preciso momento era sólo casualidad.

Traté de reparar el botoncito, pero resultó imposible; así que cercené el cable que Enrique me prestó, y le cambié el botón de encendido a mi placa madre. De ahí casi todo fue miel sobre hojuelas, y dejé la máquina compilando cosas a las cinco de la mañana.

No puedo decir mucho respecto al sistema: restablecí mi viejo $HOME, y entonces todo se ve más o menos igual (de hecho más feo; no he puesto ningún tema agradable). Es rapidísima; un kernel se compila en dos minutos, cuatro con módulos (ocho si se me olvida especificar que tengo dos procesadores). Puedo estar compilando a la mamá de Superman, y no se siente en el escritorio; y no he podido llenar los procesadores al 100%.

Lo triste: Rhythmbox no funciona (y no veo nada en bugzilla), y hay cosas que sencillamente no están para amd64 (como OpenOffice: y yo que me moría por compilarlo aquí para ver cuánto tardaba en terminar). No hay flash para amd64; si lo quiero tengo que usar la versión binaria de Firefox compilada para 32 bits, y no he querido hacerlo (en parte porque realmente no uso mucho flash, y de hecho es chido no tener que soportarlo todo el tiempo).

Pero todo lo que uso (excepto Rhythmbox) funciona: básicamente GNOME, XEmacs, Firefox (sin flash por ahora), y MPlayer (aunque sin codecs de Windows). Y sigo compilando cosas.

Necesito cables-Y para la fuente de poder: la placa madre utiliza una entrada directamente (para PCI-Express), y mi NVidia 6800GS utiliza 2 entradas 2 (si trato de iniciar X sin conectarla, el módulo del kernel de nvidia protesta y me dice que necesita más jugo para funcionar); eso me deja con un único conector disponible, que ahorita está enchufado a mi disco duro IDE de 80 Gb… por lo que no tengo DVD o quemadora.

Pero todo se ve muy chido; hoy voy por teclado y ratón nuevos, y el próximo mes compraré mi disco duro S-ATA 2 de 160 Gb (y ni quiero pensar en el desmadre de pasar todo ahí). En este momento estoy bajando el demo para Linux de Quake IV, porque ninguno de mis programas que usan 3D he podido compilarlos (básicamente Celestia y Flight Gear Flight Sim; tengo que ver qué onda con eso).

Imprimir entrada Imprimir entrada

Ortografía y gramática

En Slashdot acaba de poner una entrada CmdrTaco acerca de el formato para los artículos que aceptan ahí. En algún punto, dice claramente que ortografía y gramática son realmente secundarios para él al momento de publicar una historia.

(Lo cual es obvio; hasta yo que entiendo inglés empíricamente me doy cuenta de las garrafadas gramaticales que se cometen en las historias de Slashdot).

Yo sigo una política similar al aceptar comentarios en mi blog; la gente se está tomando la molestia de leerme e incluso de dejarme una nota expresando su opinión, así que se me haría muy pedante de mi parte el ponerme a corregirles la ortografía y gramática.

Sin embargo, en las historias que yo publico, sí trato de usar gramática y ortografía correctas, y de hecho si encuentro un error en entradas anteriores suelo corregirlo. Soy estudiante universitario (de la UNAM además); creo que es mi mínima responsabilidad.

A mis alumnos en la Facultad de Ciencias (cuando daba clases) siempre les dije que era de las cosas que debían distinguirnos a los universitarios; debemos ser capaces de escribir correctamente. No digo que todo mundo deba tener el don de una redacción fluida y entretenida; pero sí al menos debemos saber construir enunciados, conjugar verbos y (mi mínimo indispensable) escribir sin faltas de ortografía.

Por supuesto es una utopía: la mayor parte de la gente escribe con las patas. Y me podría seguir aquí con mi cantaleta de que es culpa de los últimos gobiernos por descuidar la educación pública, porque ahí van la gran mayoría de los niños mexicanos a aprender a leer y escribir en primaria, y si hay fallas de origen se hace cada vez más difícil corregirlos. Digo, yo fui a escuela primaria pública (a mucho orgullo), y mi maestra (Teresita) me enseñó la regla de los acentos y otras más como “eme-pe/eme-be”, y nunca se me han olvidado.

Sé que las máquinas ahora ayudan mucho, con correctores de ortografía y cosas por el estilo; pero el saber escribir (y por supuesto, quiero decir el saber escribir bien) no es algo fácil. Si alguien no lee, o lee sólo el Semanal de camioneros, está muy cabrón que escriba bien. Y por supuesto, para escribir bien también hay que hablar bien; si alguien habla usando “haiga” y “dijistes”, y además no lee, no va a tener punto de referencia para saber que esas dos palabras están mal. Creo que ni siquiera existen.

Justamente por eso es que creo que los universitarios debemos hacer un esfuerzo extra y tratar de escribir bien. Eventualmente hay que conseguir que todos los niños de las primarias públicas terminen el sexto año sabiendo leer y escribir correctamente; pero para eso hay que generar cambios políticos y sociales y otras cosas que no tienen ya nada que ver con esta entrada. Pero los estudiantes universitarios tenemos los medios y deberíamos tener la disposición de corregir los errores en nuestra formación para al menos escribir correctamente.

Imprimir entrada Imprimir entrada

Centurion

El seis de enero (día de reyes), Enrique me dijo el ultimátum: iba a Centel a comprar cosas, y si yo quería piezas era en ese momento o nunca. Así que le dije que me comprara mi procesador, mi memoria y un gabinete.

Habla mucho de cómo estuvo el fin del semestre que ni siquiera fui a recoger mis nuevos juguetes hasta el jueves 12. También tuvo que ver que un procesador sin placa madre y sin tarjeta de video no me servía de mucho, más que para girar el ventilador y hacer ¡yay!

Hoy por fin fuimos al centro por la placa madre y la tarjeta de video. La cantidad de dinero que he gastado en esta nueva máquina es obscena, y me falta aún. Lo que llevo sin embargo ya es usable (aunque tengo que usar un disco duro de mi máquina actual, porque no encontré un S-ATA 2 de 160 Gb), y estoy en el proceso de armarla. Lo que llevo es:

  • AMD Athlon 64 X2 3800+
    AMD Athlon 64 X2 3800+

    AMD Athlon 64 X2 3800+

    No hay mucho qué decir de esta chingaderita; es dual-core y jala a 64 bits. No lo he corrido, pero espero que lo haga rapidísimo. Me impresionó el tamaño del procesador; cabe en la palma de mi mano:

    Procesador

    Procesador
  • MSI K8N SLI
    MSI K8N SLI

    MSI K8N SLI

    La placa madre es un poco menos poderosa de la que originalmente quería. De hecho, eso no es totalmente cierto; es igual de poderosa, sólo no tan expandible: sólo tiene 4 puertos S-ATA 2 (no tiene otros 4 S-ATA 1), y cosas por el estilo. Pero está bien chida. Y por supuesto, es SLI:

    SLI ready

    SLI ready
  • XFX GeForce 6800GS
    XFX GeForce 6800GS

    XFX GeForce 6800GS

    Sí compré una 6800 al final, pero no la GT: era demasiado cara. Me compré en cambio una 6800GS, overclocked edition; me juraron que es un pelito más lenta que la GT… y yo quiero creerles. Como sea, eventualemente (como en dos años), compraré una segunda 6800GS y haré uso del SLI.

    La tarjeta se ve bien mamona:

    Tarjeta de video

    Tarjeta de video
  • Memoria Kingston
    Memoria Kingston

    Memoria Kingston

    Aquí no debería que decir nada; es memoria. La bronca es que Enrique compró el giga en una sola pastilla, no en dos. Así que olvídense de dual-channel, al menos hasta que compre otra pastilla de un giga. Pero bueno, al menos me da el pretexto de comprar pronto ese otro giga.

  • Gabinete Cooler Master Centurion
    Cooler Master Centurion

    Cooler Master Centurion

    En el gabinete confié en Enrique para que escogiera el modelo, yo sólo pedí que fuera negro. Y resultó ser super chido. El gabinete está poca madre; tiene 3 ventiladores incluidos: el de la fuente de poder (que se va a quemar en algún momento, es de 350 Watts), uno adelante común y corriente, y uno atrás de 5 1/4″:

    Ventiladorsote

    Ventiladorsote

    Además está bien macizo, y se ve bastante chingón.

Ahora sólo tengo que armar todo. Sólo que me da una hueva. Lo que sí, es que ya tengo nombre para la máquina; y aprovechando que soy fan de Battlestar Galactica, esta nueva máquina se llamará Centurion.

Imprimir entrada Imprimir entrada

BloodRayne

BloodRayne es un juego de video. Nunca lo he jugado, no me interesa jugarlo, y por ello dudo mucho llegarlo a jugar.

BloodRayne es una película basada en el juego de video. No sé si la vayan a pasar en México; pero aún si la pasan, dudo verla, porque no me interesa en lo más mínimo.

BloodRayne es también la última película que revisa The Filthy Critic. Buen Dios; qué cagada crítica. Se ve además que le encantó a Filthy el hacerla; en su calificación (un dedo, por supuesto) el comentario es “Uwe Boll, you Magnificent Bastard!” (Uwe Boll es el director), y la crítica termina con “One Finger for the Uwe Boll’s latest crapterpiece. And I can’t wait for the next.”

Muy divertido.

Imprimir entrada Imprimir entrada

El proyecto final de Arquitectura

Ayer tuve mi último examen de Análisis de Algoritmos, el correspondiente a la tarea 3 de Análisis de Algoritmos (en negritas, porque tengo que escribir acerca de ella, del examen y de la materia en general).

Al terminar le hablé a Alejandro, que estaba recluido en su casa (creo que sin bañarse) desde el viernes, y él me dijo que prefería estar en su casa chambeando. Dado que él fue el head developer por defecto del proyecto, presumí que nuestro deber era ir a apoyar; así que agarré a Alexander y fuimos a casa de Alejandro, llamándole a Iván y diciéndole que su misión si decidía aceptarla era ir también.

Lo que siguió fueron las veinte horas más pesadas que he tenido en el IIMAS, y ciertamente están en el top five de mi vida.

Estuvimos en casa de Alejandro con la firme idea de no salir hasta que saliera el proyecto o hasta que tuviéramos que ir al IIMAS a entregarlo, lo que ocurriese primero.

Varios obstáculos se interpusieron en el camino: primero, la chingadera no cabía. La Xilinx Spartan-3E que teníamos era el modelo más chafa (bueno, el segundo más chafa) de esa compañía, y nuestro proyecto era muy complejo: entonces las compuertas no alcanzaban. Los inges (principalmente Alejandro) estuvieron haciendo maromas con el código VHDL para optimizar todo lo optimizable, y viendo qué podían quitar.

Después, la FPU ya estaba, jalaba en el ModelSim, pero no servía cuando la quemábamos en la tarjeta. Tenía que ver con la frecuencia a la que jalaba la tarjeta, que era como el doble de lo que aguantaba el FPU… o algo así.

Y por último, cada quemada de todo el CPU nos tomaba cerca de 20 minutos… lo cual nos mataba el ritmo, porque no podíamos hacer nada mientras estaba compilando y quemando el CPU a la tarjeta.

Cerca de las 3 de la mañana, un gran pesimismo comenzó a apoderarse de nosotros: la cosa no quería quedar, y comenzamos a pensar en un plan B. En el peor de los casos, teníamos smiley para presentar.

Y entonces, a las 7:30 de la mañana, cada quién haciendo lo que podía con su parte (yo estaba terminando la documentación), todos madreados y ya sin muchas esperanzas, Alejandro de repente nos dijo “¡miren!”.

Y miramos.

Mandelbrot

Mandelbrot

Haciendo uso de todos los trucos del universo, y optimizando todo lo optimizable, el CPU cupo y funcionó en la tarjeta. Literalmente ocupamos todo el espacio de la tarjeta: incluso usamos una opción que tiene el XST de Xilins para utilizar los Block RAMs no utilizados en el proyecto como compuertas lógicas extras.

Uso de la tarjeta

Uso de la tarjeta

Ya de ahí todo fue de bajada; terminamos todo lo que había que terminar, y nos tomamos la foto del triunfo:

El triunfo

El triunfo

Lo chido de esa foto, es que de verdad estábamos eufóricos: el pinche procesador nos había costado un huevo y la mitad del otro, y ya casi habíamos perdido la esperanza cuando por fin funcionó.

Terminamos todo el procesador. Sólo excluimos las instrucciones lógicas (and, or, xor, shl y shr), porque no cabían. Era trivial implementarlas (las operaciones están soportadas a nivel de VHDL, y Xilinx para variar sí implementó esa parte del estándar VHDL); pero no teníamos ya compuertas. Nos quedaban como dos ORs. Y un AND.

Después fue preparar la presentación (que ya fue sencillo teniendo todo), nos fuimos al IIMAS, y fuimos el primer equipo en presentar su proyecto. Fue una presentación muy padre: fuimos el único equipo que hizo ensamblador y simulador, y pudimos enseñarle a Savage dos fractales y nuestro smiley. Además, de verdad estábamos emocionados con nuestro micro, porque nos había costado un chingo. Savage incluso nos felicitó; yo ni podía creerlo.

Ya después, cada quién fue a dormir a su casa.

No sé qué calificación vaya a tener al final en esta materia; en los exámenes me fue mal. Pero creo que no importa; a este proyecto le echamos todas las ganas del universo, y la verdad nos quedó muy padre.

Aunque yo le pondría 10 a mi equipo.

Imprimir entrada Imprimir entrada

Smiley

El trabajo en nuestro procesador para Arquitectura sigue y sigue. Los inges trabajan día y noche para poder sintetizar (así se le dice) el código VHDL en lo que sea que se quema en la tarjeta Xilinx.

Nuestro micro (cuando esté) podrá hacer cosas bastante interesantes. Pero aunque sigue incompleto, los inges han ido implementando cada vez más instrucciones, hasta que por fin fue capaz de hacer esto:

Smiley

Smiley

En la imagen (que no tomé yo) también se alcanza a ver la tarjeta que estamos usando.

No parece mucho, pero el programa en ensamblador que genera eso ya no es trivial. Para poder dibujar toda la carita necesitamos saltos (para los fors), saltos condicionales (para ifs), y dado que sólo tenemos cuatro registros enteros, necesitamos apuntadores (poder escribir y leer datos teniendo sólo la dirección de memoria). No ha sido nada fácil.

Si les interesa, el código del smiley está aquí. Viendo la cantidad de números mágicos que estaban apareciendo en nuestros programas, también añadimos constantes. Son iguales que las variables, sólo que de hecho no generan código máquina (se convierten en literales antes de generarlo), y por supuesto no pueden aparecer del lado derecho de un mov.

Imprimir entrada Imprimir entrada