Elucubrando

Agosto 18, 2008

Monzón

Archivado en: — rodrigo @ 11:58 pm

Lo primero que notas, al salir a la calle, es la conmoción en la atmósfera. En vez del opresivo calor de siempre, de la pesada calma, hay un viento que agita los árboles y levanta las hojas del piso. El polvo se arremolina, levanta basura. En lugar de la límpida vista del valle sin final, se cierra una bruma oscura.

Después, las gotas. Gruesas, pesadas. Caen al piso con intensidad de proyectiles, como si extrañaran este suelo que tan rara vez visitan. Mojan las calles, mueven la grava que en esta ciudad adorna las banquetas en lugar del pasto de otros lugares. Lentas y deliberadas al principio, aumentan el ritmo. Pasan de alegre tamborileo a marcial redoble y de ahí a estruendoso concierto. Para entonces, se unen al espectáculo los rayos que cruzan cortantes entre las nubes.

El cielo cae sobre tu cabeza.

Los rios de asfalto fundido se transforman, breve y súbitamente, en impetuosas corrientes de agua sin fin.

Y luego, casi tan de pronto, las nubes se retiran. Los truenos callan, las gotas parten a otros suelos que las reclaman con sed. El viento se tranquiliza y el calor reestablece, prepotente, su reinado sobre el desierto.

Julio 9, 2008

Observación insulsa #3458

Archivado en: — rodrigo @ 5:34 pm

Las interacciones sociales no son mediadas (por lo menos no directamente) por los campos gravitatorio o electromagnético, como se puede inferir de que su intensidad no disminuye con el cuadrado de la distancia.

Junio 20, 2008

¡(Re)hola mundo!

Archivado en: — rodrigo @ 12:21 pm

Nada importante que decir, salvo que ¡Elucubrando vive de nuevo!

Perdón, amables y fieles lectores, por esta larga interrupción en el sitio.

Saludos a todos los demás.

Mayo 27, 2008

Reporte

Archivado en: — rodrigo @ 6:56 pm

Mochila al hombro, salí de casa el fin de semana con destino al super. Una de las cosas que recordé demasiado tarde es que las distancias en el mapa son engañosas hasta que te acostumbras a la escala. Las cuadras acá en Phoenix son laaargas. Salvo eso, nada más que reportar. El clima este fin de semana fué benigno, el parque que atravesé de camino es bastante bonito, la gente que no anda en coche escasa pero amigable.

En vez de ir al Walmart que me queda cerca, fuí al Whole Foods que es algo así como un Superama de comida orgánica. Hartos jugos y pastas integrales. Y quesos, ñam. Compré también sopas de lata, lechuga para ensaladas, un paquetito de frambuesas. En general, me está gustando la estancia por acá. He logrado establecer bien una rutina de correr en la mañana, me estoy acostando (comparativamente) temprano, tengo tiempo de ver la tele y la chamba es divertida. No he probado las mesas de pinpón, pero sí los scooters eléctricos y la silla de masajes. Hay una buena cafetera en la oficina, así que no he deplorado mucho la horrible lata de café que compré el primer domingo.

Para las semanas que vienen, mis planes incluyen mudarme a algún departamentito más chico, acogedor y, sobre todo, barato, comprarme una bici para andar por la ciudad, solicitar mi tarjeta abono mensual para el autobús y comprar los muebles mínimos para el nuevo depa, a saber: Una colchoneta, una bolsa-sillón, vajilla y batería de esas de a 50 pesos. Ya después las iré sustituyendo por cosas bonitas, por ahorita me basta con que no derramen.

Y eso es todo, por ahora.

Abril 23, 2008

Mudanzas

Archivado en: — rodrigo @ 12:27 pm

La editorial por más que intento no me sale, así que lo redacto como invitación de boda:

Éste su anfitrión anuncia con beneplácito que se va del país. A Phoenix, Arizona, en los Yunaites. ¿A qué? A cambiar de aires, conocer gente, visitar parques naturales un poco más lejanos que La Marquesa y a trabajar en Google.

Y ya, ese es el chisme.

Abril 11, 2008

¿Programar en XML?

Archivado en: — rodrigo @ 10:16 am

Me llegó por ahí la pregunta, ¿es válido decir “Yo programo en XML”? Mi respuesta es que es tan válido como decir “Yo programo en ASCII”. Posiblemente cierto, pero bobo e irrelevante. Los márgenes de un twiterazo son demasiado pequeños para una explicación completa, así que mejor la pongo por acá.

XML no es un lenguaje. Y no dije “lenguaje de programación”, dije lenguaje. XML es metalenguaje, un juego de reglas para definir la sintáxis de otros lenguajes. Usar XML para definir un lenguaje le da un aspecto parecido al de todos los demás lenguajes definidos con él, pero no dice nada acerca de la semántica del lenguaje, es decir, del qué significa. Los lenguajes que se definan usando XML pueden ser lenguajes de programación, lenguajes de marcado de textos, lenguajes de intercambio de datos. XML no tiene nada que decir respecto a eso[1].

Un ejemplo relacionado lo da la familia de lenguajes “parecidos a C”. Si bien nadie se ha tomado la molestia de escribir con cuidado una descripción de la sintáxis común, todos los programadores la conocemos de uno u otro modo. Cosas como “los identificadores están formados de alfanuméricos”, “las palabras reservadas son cadenas de letras”, “los bloques se delimitan con {}”, “0x marca el inicio de un número en hexadecimal”. Todas estas reglas (y muchas otras, por supuesto) son parte del metalenguaje (no escrito) que describe la sintáxis de esa familia. Gracias a ellas es que C y C++ y Perl y Java tienen ese aspecto similar, ese “no se qué” que hace que quien ha programado en uno no se sienta intimidado al ver otro. A pesar de que los lenguajes en sí son sumamente distintos unos de otros.

Igualmente, XML es un juego de relgas del estilo: “El documento se estructura en bloques anidados con nombre”, “Los nombres no pueden contener espacios”, “El final del bloque repite el nombre del mismo”, “mayorque y menorque son caracteres reservados”, etc, etc. Mucha información acerca del aspecto, nada acerca del significado.

Las relgas de sintáxis son, por supuesto, importantes. XML destila la experiencia de mucha gente encontrando reglas útiles para lenguajes cuyo propósito principal es enmarcar un texto. De este modo, alguien que necesita diseñar un nuevo lenguaje puede saltarse esa parte (que es más bien aburrida) y evitar errores y ambiguedades de las que es difícil darse cuenta. Pero no son el lenguaje, así como no lo es el apegarse a la convención de representar un espacio con el número 32 y la letra ‘A’ con el 65, como en ASCII.



1. En general, las reglas de sintáxis definidas por XML están enfocadas a lenguajes de marcado de textos, en los que se espera que casi todo el documento sean datos (el texto) y las instrucciones pocas y esparcidas por ahí. Debido a esto, los lenguajes de programación definidos usando estas reglas tienden a ser más bien feos. Eso no impide que sean definidos, aunque sí tiende a impedir que sean usados, por lo menos voluntariamente.

Abril 9, 2008

D&D

Archivado en: — rodrigo @ 11:01 pm

I Am A: True Neutral Elf Wizard (4th Level)

Ability Scores:

  • Strength 11
  • Dexterity 12
  • Constitution 13
  • Intelligence 16
  • Wisdom 13
  • Charisma 12

Alignment:
True Neutral A true neutral character does what seems to be a good idea. He doesn’t feel strongly one way or the other when it comes to good vs. evil or law vs. chaos. Most true neutral characters exhibit a lack of conviction or bias rather than a commitment to neutrality. Such a character thinks of good as better than evil after all, he would rather have good neighbors and rulers than evil ones. Still, he’s not personally committed to upholding good in any abstract or universal way. Some true neutral characters, on the other hand, commit themselves philosophically to neutrality. They see good, evil, law, and chaos as prejudices and dangerous extremes. They advocate the middle way of neutrality as the best, most balanced road in the long run. True neutral is the best alignment you can be because it means you act naturally, without prejudice or compulsion. However, true neutral can be a dangerous alignment because it represents apathy, indifference, and a lack of conviction.

Race:
Elves are known for their poetry, song, and magical arts, but when danger threatens they show great skill with weapons and strategy. Elves can live to be over 700 years old and, by human standards, are slow to make friends and enemies, and even slower to forget them. Elves are slim and stand 4.5 to 5.5 feet tall. They have no facial or body hair, prefer comfortable clothes, and possess unearthly grace. Many others races find them hauntingly beautiful.

Class:
Wizards are arcane spellcasters who depend on intensive study to create their magic. To wizards, magic is not a talent but a difficult, rewarding art. When they are prepared for battle, wizards can use their spells to devastating effect. When caught by surprise, they are vulnerable. The wizard’s strength is her spells, everything else is secondary. She learns new spells as she experiments and grows in experience, and she can also learn them from other wizards. In addition, over time a wizard learns to manipulate her spells so they go farther, work better, or are improved in some other way. A wizard can call a familiar- a small, magical, animal companion that serves her. With a high Intelligence, wizards are capable of casting very high levels of spells.

Find out What Kind of Dungeons and Dragons Character Would You Be? courtesy of Easydamus

Abril 1, 2008

Tribeckoning

Archivado en: — rodrigo @ 3:00 pm

Juega, mi pequeño, juega
protegido de la noche,
del influjo de la luna
por las sombras bajo el faro,
por su aliento compartido,
por sus ojos alumbrados
del espíritu de vida
robado de las ciudades
de la gente que ahí habita
de parques y de edificios
y de figuras esquivas.



Leonora Carrington en la Ciudad de México

Marzo 15, 2008

Persistencia

Archivado en: — rodrigo @ 9:25 pm

Los parques donde ahora estoy
no tienen las bancas en que
tu recuerdo se sienta a leer bajo el sol.
Las estaciones del metro
no están a dos cuadras de ahí,
la oficina en la que tú trabajas.
Las avenidas y calles
no acaban todas por llegar
a la glorieta frente de tu casa.

Mis sueños, sin embargo, parecen no haberse enterado.

Febrero 9, 2008

Explicaciones

Archivado en: — rodrigo @ 2:59 pm

Una opción sería, por ejemplo, que eso de los universos paralelos sea cierto. Obviamente, la distinción entre uno y otro tiene que ser el conjunto de los estados de cada una de sus partículas. Pero, como el estado de una partícula no es algo perféctamente definible (ya saben, Heisenberg ) resulta que la distinción entre un universo y otro tampoco lo es. En cada momento estamos no en “este” universo, sino en una nube borrosita alrededor. Nube que es compartida por un infinito no numerable (¿aleph_1?) de otros universos, el estado de cuyas partículas difiere del “nuestro” por alguna epsilon pequeñita.

¿A que viene todo esto? Pues bien, todo ese asunto normalmente no importa. En promedio, todos esos universos de la nubecita se comportan de forma exáctamente igual a nivel macroscópico, así que determinar en “cual estamos” sería, en el mejor de los casos nada más que un ejercicio teórico. Pero, así como un electrón puede, en condiciones adecuadas, encontrarse del lado opuesto a una barrera de potencial, aparentemente saltando de forma discontínua de un lado a otro, postulo que el universo completo pueda hacer escencialmente lo mismo. Así, cuando una “nubecita” de universos se traslapa un momento con otra, uno de los de una pueda “brincar” a la otra, pasando, por ejemplo, de una nubecita que tenía una goma en la mesa a una que no tiene goma a una que la tiene en la esquina de los libreros.

¿No entienen nada? Precisamente por eso está esto clasificado como “divagación”.

Febrero 3, 2008

Propósito

Archivado en: — rodrigo @ 9:37 pm

Por kilómetros y kilómetros, hasta dónde alcanzaba la vista, se extendía la muralla. Sus muros eran altos y gruesos. De grandes piedras perféctamente encajadas, sin una sola rendija dónde un enemigo pudiera anclarse para escalar. Fuertes parapetos, estratégicas mirillas, bien repartidos contrafuertes. Era, en verdad, el mayor orgullo del imperio.

Tan inexpugnable era que las hordas bárbaras rápidamente se rindieron. “¿Para qué intentarlo?”, decían unos. “Los otros reinos son mejor presa”, confirmaban otros. Y de la noche a la mañana, casi, dejaron de venir. Nunca más turbaron sus gritos la tranquilidad del valle. Nunca más sus pendones flamearon por sobre las montañas.

Los soldados siguieron patrullando por un tiempo. Marchaban marciales por los caminos. Practicaban feroces asaltos contra hipotéticos invasores. Pero luego, poco a poco, se fueron aburriendo. Algunos regresaron a sus casas, a sembrar los campos y cuidar sus rebaños. A platicar con sus amigos en la taberna, con relatos de sus hazañas allá en el muro. Otros, más aventureros, se marcharon hacia afuera. A defender otros reinos, quizá. O a ser parte de las hordas invasoras, nadie lo sabe.

De la gran muralla sólo queda esa torre, la más alta. El último de la guarnición todavía se mantiene ahí, vigilante. Él mismo fué poco a poco desarmando los muros. Haciendo, primero pequeños y después no tanto, huecos por dónde los invasores entrarán un día feliz en el que él podrá dar el aviso y cumplir por fin con su misión.

Enero 28, 2008

La inferencia de tipos es tu amiga

Archivado en: — rodrigo @ 6:18 pm

Supongan que quieren hacer una estructura de datos para guardar una asignación de roles a permisos. Como lo van a usar para visualizar y editar, no basta con asociar a cada rol un conjunto de permisos, sino que necesitan asignar un booleano a cada par (rol, permiso) (Así, el código de visualización no tiene más que dibujar la matriz).

Como no estamos escribiendo C, lo que vamos a hacer es usar un Map (o hash table, o arreglo asociativo, o como le llamen en su lenguaje favorito) anidado. Vamos a tener un arreglo rolPermiso indexado por roles. La entrada asociada a cada rol es a su vez otro arreglo. Este segundo está indexado por permisos, y cada entrada es un booleano que nos dice si el rol tiene este permiso. ¿Limpio, no?

Dicho en perl, es algo parecido a

 $rolPermiso{$rol}{$permiso}

Muy bonito. Pero propenso a errores, por que tengo que tener mucho cuidado que $rol y $permiso tengan siempre algo válido. Si no, perl alegremente creará nuevas entradas en el arreglo con lo que sea que tengan esas variables.

De ese problema quien nos salva es el tipado estático. Si le avisamos al compilador que nuestro arreglo debe estar indexado por Roles, que el contenido deben ser arreglos de Booleanos indexados por Permisos, y creamos un par de enumeraciones para los Roles y los Permisos, el compilador se encarga de avisarnos «¡Oye, “Adninistrador” no es un rol válido!»

Claro que, para eso, necesitamos un sistema de tipos capaz de expresar ese párrafo. Y que al mismo tiempo no nos obligue a tonterías como el sistema de tipos de Pascal, que consideraba tipos diferentes a los arreglos de 4 enteros y a los de 5, y nos obligaba a escribir una función para ordenar arreglos de 4 enteros y otra para los de 5.

La solución, por supuesto, es el uso de tipos polimórficos (paramétricos, les llaman algunos). En Java 5 las funciones que toman arreglos asociativos genericos usan el tipo Map<K, V> en dónde K y V son variables de tipo, que expresan que a dichas funciones no les importa qué hay en el arreglo, sino sólo que la estructura es de arreglo.

La declaración de la variable que nos importa es entonces

 Map<Rol, Map<Permiso, Boolean>>

Hasta aquí, todo bonito. El problema, por supuesto, es en cuanto queremos inicializar dicha variable, usando una implementación específica de la interfaz Map y un wrapper que inicialize los valores de forma automática en el primer acceso. Como es necesario en cada punto decirle al compilador los tipos de todas las variables en cuestión la inicialización termina siendo el siguiente mounstruo:

    public Map<Rol, Map<Permiso, Boolean>> rolPermiso =
            new DefaultValueMap<Rol, Map<Permiso, Boolean>>(
                    new HashMap<Rol, Map<Permiso, Boolean>>(),
                    new DefaultValueMap.DefaultCreator<Rol, Map<Permiso, Boolean>>() {
                        public Map<Permiso, Boolean> create(Rol rol) {
                            EnumMap<Permiso, Boolean> tmp =
                                new EnumMap<Permiso, Boolean>(Permiso.class);
                            for (Permiso p : Permiso.values())
                                tmp.put(p, rol.tienePermiso(p));
                            return tmp;
                        }
                    });

(Con el problema exacerbado por que Java no tiene funciones de primer orden, así que el inicializador default tiene que quedar envuelto en un objeto de una clase anónima cuyo único propósito es pasar a su único método de un lado a otro. Fuchi.)

Una vez que se les pase el dolor de cabeza de tratar de leer eso, fijense que más o menos la mitad de esa inicialización consiste en reiterarle los tipos al compilador. Lo interesante es que el compilador sabe cuales deberían ser esos tipos (por que si los ponen mal, emite un error). Lenguajes como Haskell y ML se aprovechan de eso (y de un poco más de cosas, claro) y proporcionan inferencia de tipos. Basta con que le digan al compilador algunos de los tipos y él mismo averiguará cuales son todos los demás.

En nuestro caso, en Haskell bastaría con decir que
rolPermiso :: Map(Rol, Map(Permiso, Bool)

y luego seguirse usandolo casi igual que como lo haríamos en perl. El compilador inferirá entonces que si le pido

rolPermiso rol

“rol” debe ser una variable de tipo “Rol”, y si algúna parte del código la usé con un tipo incompatible (si le intenté asignar “Adninistrador”, por ejemplo) protestará ruidosamente por la inconsistencia, en lugar de fallar de formas misteriosas en algúna otra parte del código.

Claro que todo esto no es mucho consuelo cuando se ven obligados a usar Java, pero bueno.

Enero 22, 2008

Libros

Archivado en: — rodrigo @ 8:57 am

Sales un día de tu casa y empiezas a caminar al azar. Avanzas con decisión por la acera, llegas a la esquina, tomas alguna de las calles que se cruzan ahí. Quizá incluso regresas por donde venías. Persistes en esto el suficiente tiempo, sabes que las leyes que rigen al mundo casi garantizan que vas a llegar, tarde que temprano, a una librería de viejo. Una de esas con desordenados pasillos estrechos, pequeñas puertas de media altura entre algunas estanterías y un dependiente a la entrada que toma nota de todos los presentes sin dejar de leer. Entras.

Revuelto entre libros de texto resueltos y viejas novelas rosas en algún idioma que no sabes leer hay un libro ahí esperandote. A veces es el tomo dos de aquel recetario que nunca completaste. O una edición bien conservada del famoso libro con el dragón en la cubierta, ese que es obra seminal y que todos en tu profesión deben leer. Esta vez es un libro de fotos. De edificios y casas. Lo ojeas, lentamente, reconociendo a veces los estilos, maravillándote de no haber visto nunca otros. Das un par de pasos y te sientas con él en la escalerita, la de alcanzar los estantes de arriba, a seguir hojeando.

Y entonces, en la exploración detenida del libro, en esa fase de oler las cubiertas y revisar el colofón y buscar notas apresuradas en los márgenes, te encuentras con la dedicatoria. Con bonita y regular caligrafía, de esa de rotular planos, en la página en blanco después del título: “Para mi amigo Barragán.” Te pierdes un rato pensando en los extraños caminos que tu libro (sí, ya es tuyo, aunque no lo hayas pagado) tuvo que haber recorrido para llegar al mismo estante que tú, y no un día antes o después, sino hoy. ¿Estaría metido meses en alguna caja de cartón de una mudanza? ¿En la lista de bienes a repartir como parte de un legado en disputa? ¿Olvidado detras de un librero, dónde cayo tras una fiesta particularmente ruidosa?

Y sales entonces, abrazando tu nuevo libro y pensando que tal lista de concidencias seguramente debe ser material suficiente con qué inspirar un cuento en el que expliques como fue que te topaste con él.

Diciembre 18, 2007

Bug Squashing Party - Domingo 23 de diciembre, 10 AM, Nul Unu

Archivado en: — rodrigo @ 11:36 am

Para no perder el vuelo que ya ibamos agarrando el año pasado, el grupo de Debian México ha decidido organizar un BSP este 23 de diciembre. La ubicación es, como las veces anteriores, en las oficinas de Nul Unu.

Si están intesesados en asistir, anótense en la página de coordinación.

Como en ocasiones anteriores, hay varias recomendaciones para los asistentes:

  • De ser posible, lleven su propia laptop. ¡Con Debian, o de perdida Ubuntu, por supuesto! Tenemos disponibles uno o dos equipos para quien no tenga lap, pero por lo menos uno ya está apartado, así que no cuenten en realidad con ello.
  • No se trata de hacer un InstallFest, ni una sesión de “intenté configurar mi Debian para que lea mi USB formateado en VMS y no me salió”. Se trata de colaborar para corregir problemas. Dicho esto, si tienes ganas de colaborar pero no sabes por dónde empezar o como se le hace, eres más que bienvenido. Todos empezamos así.
  • Hay cafetera (y, contrario a lo que afirma gwolf, en realidad es bastante sencilla de usar). Lo que no hay es café. Apreciaríamos bastante a quien trajera un medio kilito.
  • Vamos a estar ahí desde las 10 AM y hasta por ahí de las 6 PM. Si no tienes tiempo de estar todo el día, puedes venir solo un rato, aunque sea a saludar.
  • Si tienes llave GPG, trae tu fingerprint y una identificación. Si no tienes, ¿que esperas? ¿No sabes como sacarla? ¡Acá te ayudamos también con eso!

A estas alturas, los que no viven cerca del DF (o sí, pero se van de vacaciones) han de estar quejandose del mugroso centralismo de los chilangos. Como no queremos eso, les recordamos que ustedes también están cordialmente invitados. Abran su cliente favorito de IRC, conecten al servidor irc.debian.org y unanse al canal #debian-mx donde los estaremos esperando para platicar, matar bugs, y tomarnos unas cuantas tasas de café virtual.

Diciembre 10, 2007

Mini prueba de Turing

Archivado en: — rodrigo @ 5:49 pm

Estoy lo que se dice harto de que me lleguen aquí a los comentarios del blog robots colocadores de spam. En muchos sitios implementan mecanismos más o menos complicados para tratar de asegurarse que quién está escribiendo un comentario es un humano. Nunca he logrado juntar las ganas de implementar algo así, pero leyendo por ahí caí en la cuenta de que no necesito nada muy sofisticado. Dado que no es este un objetivo altamente deseable, nadie se va a tomar la molestia de escribir un robót ad hoc para darle la vuelta a mis mediditas de seguridad. Así que, a partir de ya, para poner un comentario en este sitio es necesario contestar una sencillísima pregunta de aritmética. Si veo que sirve, quitaré incluso lo de detenerlos para moderación.

Diciembre 9, 2007

Encuentro

Archivado en: — rodrigo @ 9:29 pm

La vi, o me pareció verla, hace un par de meses. Mi camión iba entrando a la terminal y mientras maniobraba para estacionarse ella estaba subiendo en otro. Para cuando bajé, su camión ya se había ido y no pude siquiera confirmar que en verdad era ella.

Hace unos días volvió a ocurrir, pero esta vez tuve suerte. Mi camión llegó temprano, o el de ella salió tarde, así que cuando bajé pude verla ahí parada junto a un par de maletas. “¡Hola, qué milagro!” “¡Yo te hacía en el extranjero!” “¿Y tu esposa?” “Mira, te presento al mio.” Nos despedimos pronto, yo tenía prisa y su camión estaba por partir. Pero intercambiamos teléfonos y correos. Y, sorprendentemente, los usamos. Nos vimos esta mañana, platicamos de trivialidades y del tiempo pasado. Nos mostramos fotos de nuestros respectivos hijos.

Y no sé a ella, pero a mi no me dolió. Es la primera vez que creo eso que dicen, que el tiempo cura todo. Curioso, ¿no?

Noviembre 14, 2007

Medicina alternativa experimental

Archivado en: — rodrigo @ 3:02 pm

Vaya usted a su pozolería favorita. Tome una pizca de chile piquín del recipiente más cercano y póngala en un litro de agua. Agite vigorósamente. Vierta el litro de agua en un garrafón de 20 y agite de nuevo. Tome ahora el garrafón y (con cuidado, por que es pesado y poco manejable) subase en una pipa llena de agua potable y vacíe en ella el contenido. Una vez hecho esto, maneje, tan rápido como se atreva, por alguna carretera del sur de México. Yo recomendaría llegar hasta Mérida, vía Chiapas, por que eso ayudará con la segunda parte del experimento. Lo de manejar rápido es para, como habrá sospechado el lector, agitar vigorósamente nuestra mezcla.

Después de todas estas contorsiones, lo que tenemos en el tanque de la pipa es una dilución de chile piquín, de potencia 3C (o 4C, si su pizca original es chica y la pipa grande), lo cual según las normas homeopáticas no es muy bueno pero sí alcanza a ser efectivo. ¿Qué curaremos con ella? similia similibus curentur, dicen, así que aprovechemos que ya estámos en Mérida, vayamos a algún sitio donde vendan una buena cochinita pibil, mordamos un chile habanero y comprobemos como una sóla cucharadita de nuestra dilución acaba con los ardientes síntomas inflingidos por tan irresponsable comportamiento.

Noviembre 11, 2007

Spotless

Archivado en: — rodrigo @ 1:08 am

So I went and dug
deep inside my brain,
deep inside my soul,
deep inside my drawers.

And I looked for you
and your memories.
And the things you said.
And the way you looked.

And I pulled from threads
of stringed up toughts
and my whole wide world
came out, all undone.

Thus, I dug no more.
Better let you stay.
Better to be stuck
than not be at all.

Perdonen ustedes si la rima es mala, o la métrica no cuadra. Me llegó así, en inglés, y no tuve corazón para auto destrozarme tratando de traducirme.

(Actualización) Roberto, en cambio, no sufre de mis neurosis y se avento una reinterpretación.

Octubre 26, 2007

Sopa de cebolla

Archivado en: — rodrigo @ 10:03 am

—Es que, mira, imagina que empezaramos a andar. Y que funcionara y dentro de un tiempo decidieramos vivir juntos. Tú sabes que a mi me gusta cocinar. Y que me gusta la comida con sabores más o menos fuertes, con mucho condimento y esas cosas. ¿Qué va a pasar el día que llegues y yo te reciba con un platote de sopa de cebolla, eh? Pues que no te va a gustar y vas a comer sin ganas, o de plano lo vas a dejar. Y yo me voy a ofender de que dejaste mi comida y a partir de entonces no voy a cocinar a gusto, porque voy a estar siempre temiendo que lo que haga no te va a gustar. Y va a haber resentimientos y peleas y vamos a acabar peleandonos por tonterías.
—¿Y por eso no quieres andar conmigo? ¿Porque no me gusta la cebolla?
—Pues, sí. Digo, ese es sólo un ejemplo, pero sí.
—¿Y no se te ha ocurrido, no sé, llamarme antes de ponerte a guisar y preguntar si me late el menú?

Octubre 19, 2007

Peleando con Plone

Archivado en: — rodrigo @ 4:38 pm

Si usan Plone 3 y quieren usar un tema para cambiar el orden de los viewlets, después de modificar el archivo viewlets.xml deben

  1. Desinstalar el producto en Plone que contiene su tema.
  2. Reiniciar el servidor Zope.
  3. Volver a instalar el producto.

De otro modo, Plone no se da por enterado de sus modificaciones.

Gestionado con WordPress