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

WordPress 2.0

Al final no pude resistirme y cambié a WordPress 2.0.

Exceptuando algunas adecuaciones que tuve que hacerle al filtro de HTML (¿porqué carajo quieren filtarme a mí si quiero usar <div> personalizados?), y cosillas por el estilo, todo quedó como me gusta.

La nueva versión administrativa está muy padre; lamentablemente no está toda en español como a mí me gusta. Pero sólo la veo yo, así que tendrá que esperar a (al menos) que acabe el semestre.

Imprimir entrada Imprimir entrada

WordPress 2.0

Y acabo de hacer otro respaldo de mi blog. Digo “otro”, porque tengo como 20… todos en abulafia.

(Lo cual, siendo estrictos, los descalifica como respaldos; un respaldo por definición es off-site, si no cuando abulafia explote no me sirven de nada).

La razón del respaldo es que acaba de salir WordPress 2.0. Ahora; no hace mucho que configuré mi nuevo tema (con todo en español como a mí me gusta), y que puse cosas como el plugin de LaTeX… no estoy seguro de qué tan bien funcionen todas esas cosas en la versión 2.0, y no estoy de humor (o con tiempo) de arreglarlas si fallan.

Así que probablemente me espere un poco para actualizar; y mientras empiezo a reparar la base de datos, porque acabo de revisar y parece que está combinando UTF-8 e ISO-8859-1… lo cual siempre da broncas.

Imprimir entrada Imprimir entrada

XEmacs 21.5.23 (+CVS-20051212)

Acabo de reparar lo último que me faltaba para poder tener XEmacs con fuentes con antialias justo como a mí me gusta:

XEmacs CVS

XEmacs CVS

Aquí está el tar.gz de mi versión CVS de XEmacs (es sólo un checkout del CVS comprimido), y mi overlay de Portage (básicamente el ebuild de XEmacs y el del paquete xemacs-base).

El tar.gz del CVS pueden no bajarlo y hacer su propio checkout si no confían en mí, y el ebuild es básicamente una ligera modificación del último ebuild de XEmacs en Gentoo.

Para configurar las fuentes del editor en sí, utilizo esto en mi .xemacs/init.el:

(set-face-font 'default "Bitstream Vera Sans Mono-16")
(set-face-font 'bold "Bitstream Vera Sans Mono-16:weight=bold")
(set-face-font 'italic "Bitstream Vera Sans Mono-16:slant=italic")
(set-face-font 'bold-italic "Bitstream Vera Sans Mono-16:weight=bold:slant=italic")

Para que no salgan letrototas en los widgets utilizo esto en mi .Xresources:

XEmacs*Tabs.xftFont: Bitstream Vera Sans-10
XEmacs*menubar*xftFont: Bitstream Vera Sans-10
XEmacs.modeline.attributeFont: Bitstream Vera Sans-12
XEmacs.gui-element.attributeFont: Bitstream Vera Sans-10

Básicamente eso es todo; lo he estado usando unos cuantos días y parece jalar de pelos. Y se ve precioso.

Imprimir entrada Imprimir entrada

XEmacs Xft

Despúes de mucho tiempo durante el cual XEmacs fue mi única y vergonzante aplicación que no tenía fuentes con antialiasing, hoy que no tenía nada que hacer (o mejor dicho nada de ganas de hacerlo) bajé la última versión CVS de XEmacs, modifiqué el ebuild de XEmacs 21.4.15, y por fin mi XEmacs jala con antialias como Dios quiere.

XEmacs con antialias

XEmacs con antialias

Ahora todo mi escritorio corre con antialias. Claro que me faltan corregir algunas cosas; no sé porqué los widgets tienen una letrota tan grandota, ni porqué me sale este error al inicio:

(1) (key-mapping/warning) Obsolete key binding technique.
Some code you're using bound EuroSign to `self-insert-command' and messed around
with its `ascii-character' property. Doing this is deprecated, and the code
should be updated to use the `set-character-of-keysym' interface.
If you're the one updating the code, first check if there's still a need
for it; we support many more X11 keysyms out of the box now than we did
in the past.

Pero exceptuando eso está jalando de pelos. Y se ve bien bonito.

Imprimir entrada Imprimir entrada

GanjaPress

Ya que me copian mi estilo, lo cambié una vez más. Ahora es GanjaPress (con mi usual número de cambios para que quede como a mí me gusta).

Este tema me había gustado desde la primera vez que lo vi. Digo; tiene una hoja enorme de mariguana… no era posible que no me gustase. Pero había previsto que me tardaría algo en modificarlo para que quedara como a mí me gusta, y de hecho así ocurrió. Pero aquí está, en todo su esplendor, mi nuevo tema.

Ahora espero que no me copien. Al menos no pronto, y menos alguien a quien yo conozca.

Imprimir entrada Imprimir entrada

LaTeX

Después de entregar mi Tarea 3 de Análisis de Algoritmos (que platicaré después de ella, porque merece una entrada por sí misma), quiero ver si puedo ponerla en el blog porque creo que merece ser puesta en el blog, así que traté de usar LaTeX2HTML.

Falló miserablemente; lo cual no es raro porque hace rato que no lo actualizan, y yo sí uso some serious shit en mis archivos de LaTeX. Y nunca ha terminado de gustarme la idea de LaTeX2HTML; por lento más que nada.

Total que me puse a buscar convertidores de LaTeX a HTML. Y encontré uno, pero de eso no se trata esto.

De lo que se trata, es que encontré un script en PHP que permite utilizar LaTeX dentro de cualquier sistema en PHP (como WordPress). El script es LatexRender, y encontré también un plugin para WordPress.

Me permite hacer cosas sencillas como

x^{2}+y^{2}=1

Pero también cosas más chidas como

\displaystyle\frac{\sqrt{\sum_{i=1}^{n}(2k-1)}}{\int_{-1}^{1}x^{2}}

No necesita ser centrado y aparte puedo incluir en el texto como en el siguiente párrafo:

“Sea G=(V,E) una gráfica conexa y dirigida con función de peso w:E\rightarrow\mathbb{R}, y suponga que |E|\geq|V| y que todos los pesos de las aristas son distintos.”

Mis cuates matemáticos se van a morir de la envidia. Pero les doy el gusto de permitirlo también en los comentarios.

Imprimir entrada Imprimir entrada

Imágenes de Celestia

Como sé que no me va a hacer caso nadie si no pongo unos screenshots, aquí les van unos de Celestia:

La Luna y la Tierra

La Luna y la Tierra

Phobos y Marte

Phobos y Marte

En este tipo de cosas nunca puede faltar Saturno:

Saturno

Saturno

Y como geek además tenía que añadir algo inexistente; en Celestia se pueden agregar objetos definidos por el usuario, y hay un buen en la red para bajar. Aquí está la Estación Espacial V, de 2001 Odisea del Espacio:

Space Station V

Space Station V

En el programa, la estación espacial gira. Y uno puede manipular el tiempo, para que se vea (por ejemplo) como la Tierra le da la vuelta al Sol.

Vayan a la página de Celestia y bájenlo ya. Es un programa fabuloso.

Imprimir entrada Imprimir entrada

Celestia

Hace un par de días vi en OS News el anuncio de una nueva versión de The OpenCD. Nunca he usado The OpenCD, pero sé de qué se trata. La idea es meter en un CD el software libre más chido que hay disponible para Windows, para tener en un sólo sitio un montón de programas disponibles en caso de verse en la necesidad de utilizar el lado oscuro.

Me metí a ver los distintos programas que podía tener, y vi a los sospechosos comunes; Firefox, OpenOffice, Gaim, etc. Pero uno que me sorprendió fue Celestia; es un simulador espacial en tiempo real. Y vi que había versión para Linux, así que lo emergí en Gentoo.

Qué bonito programa. Estaba yo como niño viendo a Marte, Júpiter y Saturno, y viajando entre la International Space Station y la Luna. Lo único que faltaba era la voz de Carl Sagan en el fondo.

Lo chido es que es un programa que hasta niños pueden usar, y de verdad que está bien bonito. Altamente recomendable.

Imprimir entrada Imprimir entrada

Ocadia

Estoy viendo si cambio de tema. Actualmente estoy usando el tema Ocadia, ya dirán ustedes cómo se ve.

El tema está bien, supongo. Nunca he sido muy quisquilloso con los temas; me interesa que sea fácil de navegar, y legible. Principalmente lo segundo: nunca usaré un tema con fuente de color rojo y fondo negro.

La bronca tampoco es instalar el tema, o hacer que WordPress lo use. De hecho es ridículamente sencillo. La bronca es que quede bien. Y bien para mí en particular implica que todo esté traducido al español de México, y esa siempre es mí bronca. Así que estoy modificando mi es_MX.po para que acepte las cadenas del nuevo tema, y haciendo que el tema de hecho internacionalice todas sus cadenas.

Y ya me dio hueva. Mañana le sigo.

Imprimir entrada Imprimir entrada

SPAM

Hace años que no me preocupo del SPAM. En GMail se maneja más o menos; y en mi casa con Evolution utilizo SpamAssassin y el número de SPAMs que se me filtran es cercano a cero. Y eso que recibo muchísimos SPAMs.

Ahora sin embargo, el SPAM comienza a molestarme una vez más… sólo que en mi blog.

Comenzó hace cierto tiempo, y lo había estado medio manejando. Primero, comencé a incluir palabras en una lista negra que tiene WordPress. Eso funcionó un rato; realmente no creo que mucha gente me escriba comentarios donde incluyan la palabra “póker”, o “shoes”. Pero ahora resulta que WordPress tiene un bug… o al menos así lo parece.

Cuando la lista negra de palabras prohibidas llega a cierto tamaño, nomás deja de filtrarlas. O al menos así me hizo a mí. WordPress además tiene la opción de marcar un comentario como SPAM; yo pensé que utilizaría un filtro bayesiano, pero al parecer sólo los quita de mi vista. Como sea, le di la vuelta borrando palabras “viejas” de la lista y poniendo las nuevas… este tipo de SPAM llega en olas; durante unos días uno es bombardeado con SPAM para sitios de póker en línea, y después ya no. Pero se estaba volviendo bastante molesto, y hoy me llegaron 3 SPAMs distintos, así que sólo puedo esperar que lleguen más.

Yo tengo en abulafia instalado WordPress 1.5.1.3… creo. La última versión es WordPress 1.5.2… creo. Espero que ésa haya compuesto el bug en la lista negra de palabras prohibidas.

Pero de verdad no quería actualizar… y no porque WordPress tenga problemas al actualizarse (como Gallery 2)… al contrario; se actualiza muy fácil. La bronca es que, como ya comenté en otra entrada, yo escribí mi propio archivo es_MX.mo, y corregí cosas de WordPress para que éste jalara. No quiero hacerlo de nuevo… pero de verdad ya se volvió medio odioso el problema del SPAM, así que básicamente no tengo de otra.

Imprimir entrada Imprimir entrada

XEmacs, Mule y LaTeX con UTF-8

Desde hace ya tiempo, cada vez que iniciaba XEmacs, éste se quedaba como pasmado durante unos 10 segundos, con la ventana completamente en blanco, hasta que por fin como que se desapendejaba y comenzaba a parsear mi .xemacs/init.el.

No era algo terriblemente grave; sólo muy molesto. Pero dado que en mi máquina de escritorio sólo inciaba XEmacs cada vez que hacía login, y esto a su vez sólo ocurría cuando se iba la luz o alguna desgracia por el estilo, no era una molestia frecuente.

Y entonces vino la laptop. La laptop la estoy prende y apague cada que vuela la mosca, y el apendejamiento al inicar XEmacs se convirtió en una molestia muy frecuente. Así que me puse a viriguar qué carajos ocurría que me apendejaba el XEmacs.

Jugando con las USE flags, llegué a la conclusión de que era Mule; si compilo XEmacs sin Mule, todo funciona como Dios quiere. La bronca es que sin Mule, XEmacs no maneja UTF-8. Lo cual a su vez no es tan grave, porque el único sitio de XEmacs donde utilizo acentos (y ergo, UTF-8), es mis archivos de LaTeX, y éstos los tengo en good, old latin1, A.K.A. ISO-8859-1.

Pero todo mundo sabe que ISO-8859-1 está a punto de desaparecer… desde hace como cinco años viene desapareciendo. Uno de estos días nos sorprende y desaparece de verdad. Y LaTeX ya soporta archivos editados bajo UTF-8 (o al menos todos los que yo le he puesto).

Así que una vez más me di a la tarea de investigar qué ocurría. La respuésta me la dio xfontsel; el honorable (y viejo, como Yoda) programa se apendeja de forma idéntica a XEmacs. Y xfontsel no hace mucho (contrario a XEmacs); básicamente carga fuentes. Busqué el único mensaje de error que escupía (“Warning: Missing charsets in String to FontSet conversion”), y encontré una entrada en la página de Adobe para no sé qué programa suyo que corría en una HP/UX. Proponían una solución, que intenté sin muchas esperanzas:

LANG=en_US.iso88591 programa

Y tarán… funcionó. Haciendo que XEmacs corra bajo ISO-8859-1 en lugar de UTF-8, todo funciona. Así que para poder usar XEmacs con UTF-8, necesito hacerle creer que uso ISO-8859-1. No tiene demasiado sentido, pero funciona.

Imprimir entrada Imprimir entrada