Elucubrando

Diciembre 1, 2008

Luna

Archivado en: — rodrigo @ 12:41 pm

Ayer te vi
retratada.
O, no, más bien,
dibujada,
sugerida
en el trazo
de otro rostro,
en el porte
de otro ego,
en la luz que
derramaban
otros ojos
al reir.

Noviembre 10, 2008

Interrumpimos este programa para informar …

Archivado en: — rodrigo @ 10:01 am

Me encontré, en medio de la diaria rutina de perder el tiempo leyendo sitios aleatorios en la red, uno de esos memes de “Ponga usted sus respuestas a n preguntas más bien aleatorias”. Y una de las preguntas era “¿Cuál es tu palabra favorita?” Y eso me hizo pensar qué, según yo, la mayoría de la gente tiene un criterio muy malo para escoger palabras favoritas. ¿Por qué digo eso, se preguntan? Pues porque, por lo menos en los casos en que me he fijado, la gente no elije palabras favoritas, sino conceptos favoritos. Les sueltas la pregunta y te salen con “¡Chocolate! ¡El chocolate es sabroso!” Noción con la que, por supuesto, no tengo problemas, pero que no tiene nada que ver con la pregunta. El chocolate sería igualmente sabroso así se llamara “paparacuija”. ¿Por qué, oh dioses de la semiótica, confunden al referente con el referido, eh? ¿No saben que confundir los niveles de Meta es malo para la salud de sus sistemas axiomáticos?

La otra pregunta era: “¿Cuál es tu aminoacido favorito?” El mio, por supuesto, es el triptófano.

Noviembre 8, 2008

Tita

Archivado en: — rodrigo @ 2:00 pm

Tita

Octubre 24, 2008

2 semanas

Archivado en: — rodrigo @ 4:47 pm

Este domingo hace dos semanas que estoy en la tierra que dió al mundo las salchichas y la iglesia Luterana. Debo decir que me la he pasado bastante bien por acá. Entre los puestos de curry y de pan, la multitud de callejones retorcidos entre edificios viejos como ellos solos, el muelle y el mercado y más puentes de lo que es creible.

Como sé que todos lo primero que se preguntan es del clima, empiezo por ahí. No, no es TAN grave.

Sí hace friito, pero nada que una buena sudadera y mi querida bufanda de lana no superen. Y mi paraguas, por que llueve un poco más frecuentemente que allá en Phoenix. No hay mucho sol, pero por algún motivo no me está resultando desagradable. Quizá es que ya tengo llenas mis reservas de varios meses de vitamina D o algo así.

El contraste con EU es notorio. Digo, además del estilo de las construcciones y el hecho de que la gente habla alemán, por supuesto. Las calles están llenas de coches pequeños, siempre hay gente caminando, multitud en bicicleta. Y el metro y los camiones son una maravilla, aunque cobren 1.30€ por viaje.

No hay mucho más que contar por ahora. La comida es buena, aunque he comido más italiano que alemán. Los compañeros de trabajo no han cumplido con el estereotipo de frios, serios y ajustados a todas las normas, lo cual es bastante bueno. Y no he visitado museos, eso me toca el fin de semana que comienza.

Deséenme suerte, o por lo menos, no me echen la sal.

Octubre 23, 2008

Yo tubeo

Archivado en: — rodrigo @ 7:02 am

Y ahora, para todos ustedes, mi primera incursión en el mundo de los videos en linea.

El “Fischmarket”, en Hamburgo, es un mercado callejero a medio camino entre tianguis para turistas y lugar donde comprar los jitomates. En particular, la parte que tomé en el video tiene muchos más jitomátes que camisetas con recuerditos. Cualquier semejanza con el tianguis de su colonia, acreditenla a la naturaleza humana, supongo. Me levanté a las 6 de la mañana en domingo para ir ahí, así que espero muchos y amables comentarios de su parte diciendo cuánto les gusto.

Como premio adicional, el panorama de la ciudad que tomé un par de horas después, desde la otra orilla del Elba:

Octubre 7, 2008

¡Ah, sí, el chisme!

Archivado en: — rodrigo @ 12:17 pm

Resulta que, por inescrutables motivos que no nos está dado a los simples mortales comprender, los altos mandos corporativos decidieron que la oficina de Google en Phoenix no será más. Casi junto con esa, nos anunciaron también la decisión de que la contratación de vendors tampoco. Así que yo y todos mis compañeros cambiamos de aires. Unos cambian de ciudad, otros de empresa, otros ambas, cada quien a según las diversas ofertas que recibió, el apego que le tiene a los calores, el hoyo en su presupuesto que cambiar su vida de lugar le representa.

Yo, en particular, me voy a Alemania, a Hamburgo. A un proyecto temporal para un sitio de redes sociales. Después de eso, ni idea. Espero esta vez tomar más fotos.

¡Fotos!

Archivado en: — rodrigo @ 1:36 am

A guisa de despedida de esta ciudad, les dejo unas pocas imagenes que tomé en mis deambulares.

Phoenix1

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.

Gestionado con WordPress