“Late” night crusin’

What I want, you've got
But it might be hard to handle
Like the flame that burns the candle
The candle feeds the flame yeah yeah
What I got -- full stock of thoughts and dreams that scatter
And you pull them all together
And how I can't explain oh yeah
Well well you (ooh ooh ooh ooh) you make my dreams come true (you you) you
(you you)

Ok, no es un “code”…

He aquí unas verdades fundamentales de la vida:

– Conforme avanzas en edad (y rutina, y responsabilidad), te cuesta más trabajo desvelarte.
– Conforme avanzas en edad (y rutina, y responsabilidad), más te gusta desvelarte.
– Desvelarte es la ÚNICA (acentuado para no tener problemas de copyright con la FI) manera de programar algo que valga la pena.

Ergo… conforme avanzas (bla bla bla), más te gusta programar (WTF, old dude?). O al menos buscar la solución a los problemas computosos. Estúpido moodle, pero a la vez bello moodle.

Por cierto, me gustaría saber cuáles son las mejores canciones para programar. Tengo propuestas:

– Orbital: Halcyon (and on and on). Está en mi iPod como “Mortal Kombat Symphony” porque el soundtrack me lo bajé de interné y no tenía el nombre de las canciones. Y se callan, MK es la neta… Tiene dos grandes cosas a su favor, esta rola: no tiene letra (salvo algunos cánticos medio ballenescos) y es laaaarga. Muy buena por si tienes chance de poner una y ya.
– The Dandy Warhols: Bohemian like you. “oooh-ooh oooooooh!” Por cierto, WTF significa “I’m feeling bohemian like you”? Obviamente los grititos son buenos para celebrar una línea particularmente inteligente, o haberle entendido a la documentación finalmente (quién diablos se imagina que String.Format toma CUALQUIER OTRA COSA SALVO UN STRING COMO PARÁMETRO en ciertos casos? O sea, digo, no mamen…)
– Héroes del Silencio: Apuesta por el Rock ‘n Roll. “Y no sé si nací para correr… pero quizás sí que nací para” compilar? Geeky as fuck. Y también porque no hay lista de mejores canciones sin Bunbury. Eso me recuerda: el dolor en la planta del pie es 1) pie plano, 2) plantar fasciitis (como se diga en español), 3) gordura extrema, o 4) psicosomático?
– Smash Mouth: Walkin’ on the sun. Igual es porque así van saliendo en el iPod, entre 7 millones de canciones inútiles (por cierto, qué será mejor? Limpiar tu música de todo lo que no te GUSTA TREMENDAMENTE, tener un segundo dispositivo para esas canciones que son doubleplusgood, o resignarte a la diversidad?) De cualquier forma, si puedes cantar la canción y seguir programando sin poner “INSERT INTO fashion will be smashing WHERE the true meaning” ya la hiciste… igual es para rondas dobles de programación.
– Edward Maya, Vika Jigulina (really? Jigulina??): Stereo Love. Y en la misma idea:
– Röyksopp: Follow my ruin. Esta la conocí en el taller de Yopas. Me cae que no me gusta la electrónica (o dance, o house, o techno, o como les digan hoy en día – y casi puedo apostar que estas dos no son del mismo género. Fuckers), pero de repente como que sí. Igual es porque parecen un loop de lo mismo y entonces no te distrae tanto. Pero si un loop musical te traba en un loop mental??? Qué entonces, carajo?! Igual ya es la hora.

Se aceptan sugerencias…

P.D. Sí, el último post estuvo muy raro. Juro que no nació de un motazo…

Acerca de .Net, el manifiesto y los requisitos previos

Pues llevo la mejor parte de la noche (ok, ok, apenas un par de horas, pero es bastante para mí!) lidiando con un problema interesante. Explicaré un poco de los preeliminares, para que todos nos entendamos.

La plataforma de .Net es, para mi gusto, una verdadera maravilla. Si vas a desarrollar para Windows (y no te importa mucho obligar a tus usuarios a que instalen X dependencias que bien pueden ser molestas), te permite utilizar una serie de lenguajes muy parecidos entre sí, sólidos, con una gran base de desarrolladores que pueden ayudarte, código disponible en línea, e incluso bibliotecas listas para ser aprovechadas. Como Java, pues, pero sin la molestia de tener que usar… *eso*. Si tú desarrollaste en Visual Basic, VB.net es prácticamente lo mismo; si trabajaste en Java, C# es un camino bastante directo. Tiene gran versatilidad para desarrollar aplicaciones web, permite redistribución de dependencias (recuerden esto), tiene soporte para actualizaciones automáticas de tu aplicación… bueno, las bondades son demasiadas. En fin, es una plataforma que personalmente, me agrada bastante.

Nosotros, los programadores eventuales (es decir, que en realidad no nos dedicamos a esto para vivir), tenemos muchas malas mañas. Generamos código sucio, no muy organizado ni comentado; nuestra documentación puede catalogarse como garabateadas en servilletas y hojas de papel que acaban tiradas por ahí; y tendemos a vivir en el modo “debug”, nunca preocupándonos por cómo va a quedar la aplicación final cuando el usuario final decida instalarla – digo, podemos dejarlo hasta el final, no? El problema con esto es que cuando llega el famoso final… es una pesadilla.

De entrada, les recomiendo esto: no utilicen acentos para nombrar a su aplicación. No, .Net no truena con eso. Pero si quieren utilizar la funcionalidad de actualizaciones, su servidor web puede darse de topes con ustedes, porque va a buscar archivos y cadenas no fácilmente codificables. Solo… tómenlo como una recomendación amable.

Y por supuesto, el centro del problema: los requisitos previos. .Net corre sobre una máquina virtual (el “Framework”), y mi aplicación en particular utiliza un motor de bases de datos sencillo (SQL Server CE, que es algo así como el primo debilucho de SQL Server Express, que a su vez es el babas a comparación de SQL Server, que a su vez… etc etc), comparable con sqlite. El Framework, para instalarle, utiliza *otro* requisito previo, el Windows Installer (v.3.1 en este caso en particular). Estos requisitos son manejados elegantemente por el instalador generado por .Net: se descargan automáticamente de internet, si el usuario final no los tiene ya instalados. El problema es que, combinados, son alrededor de 100 Mb de descarga: ciertamente no es mucho para un geek, pero un usuario con una conexión de Infinitum a 512 (cuando le va bien) nos va a obligar a visitar a los papás. So… debemos poder incrustarlos con nuestro instalador, cierto?

La respuesta es “sí, pero te va a costar trabajo”. Resulta que estos instaladores (que se pueden bajar bastante fácil de internet) no se ponen en cualquier localidad. Deben ir en el directorio que .Net utiliza para almacenar los instaladores. Suena sencillo… hasta que nos enteramos que cada versión del Framework tiene diferentes localidades (y lo mismo para cada versión del Installer, SQL, etc), y que a su vez, cada versión de la IDE lo pone en directorios ligeramente diferentes. En mi caso?

C:Program Files (x86)Microsoft SDKsWindowsv7.0ABootstrapperPackages

¬¬ Sí te iba a encontrar, no?

Pero gracias a un valiente y hermoso post:

http://social.msdn.microsoft.com/forums/en-US/Vsexpressvb/thread/56584721-3064-46c2-81f4-6c29c01e1895/

Tuvo solución el problema. La moraleja, como siempre, es no fiarse de M$.

😀

iOS 4.2 está bastante chido…

Pues acabo de actualizar mi iPhone a la versión 4.2 del sistema operativo. He de decir… wow. Apple acaba de hacer que mi teléfono cuente con muchísima mayor funcionalidad. Veámoslo a detalle.

1. Primero que nada, el nuevo AirPrint. Resulta que ahora puedes imprimir a cualquier impresora soportada (que tristemente, no son muchas… pero la mía sí :D) desde el mugroso iPhone. Esto incluye Fotos, Safari, Mail y Notas, así como una cantidad de aplicaciones adicionales. O sea, que la próxima vez que quiera imprimir un correo, solo debo hacer dos clicks… y voilà. Realmente de siglo 21 😀

2. Find My Iphone. Esta es probablemente la característica más payasa. Resulta que este servicio, que anteriormente tenía un costo de $100 USD al año, ahora es gratuito para todos los usuarios de iPhone 4. Y está… impresionante. En esencia es un servicio push que permite posicionar al iPhone en cuestión desde web (o incluso otro dispositivo iP*)… pero eso no es todo. Permite enviarle un mensaje (que se despliega en la pantalla del iPhone), deshabilitarlo (para que no lo puedan utilizar), o incluso, borrarle toda la información que contiene, de manera remota y confiable.

Es decir, que ya no me tienen que presumir nada los que usan su BlackBerry. Este dispositivo también tiene su remoteWipe. 😀

3. Por último, pero no menos importante… el Tethering. O sea, compartir internet. Disponible en el menú “Red” de la sección de configuración, ahora podemos compartir internet con otro dispositivo (ej. Laptop) a través de la conexión 3G del teléfono, sin necesidad del jailbreak. Ya lo probé y funciona de maravilla. Ahora, a ver si Telcel no se mancha y quiere cobrar de más por esta funcionalidad… Pero de momento, es una fantástica adición.

Creo que tiene otro par de mejoras más, pero estas fueron las que me vendieron la actualización. Gracias, Apple!

“¡De panzazo!” y otras ideas sobre la educación en México

Pues hoy, mientras navegaba los intertubes, ví un link a un video, avance de un documental muy interesante llamado “¡De panzazo!”, producción de Loret de Mola y con dirección de Juan Carlos Rulfo (Del olvido al no me acuerdo). Interesante propuesta… por decir poco.

La idea del documental (disponible en el buen youtube) es plasmar una imagen fehaciente del estado de la educación mexicana actual. De lo poco que se ve en el promo (dura 7:33), se ven duras entrevistas a muchos personajes importantes en el tema, así como grabaciones ocultas realizadas por alumnos durante sus propias clases, y el voiceover del Sr. de Mola con comentarios acerca del tema. Debo decir… es algo triste, y en mi opinión más importante que “el narco”, tema que por supuesto domina los titulares nacionales al momento.

La verdad es que esta opinión está basada completamente en experiencia personal; en mi vida me ha pasado algo criminal, pero sí he tenido contacto directo con los efectos que una mala educación (estrictamente hablando del ámbito académico) puede tener en la vida de una persona por demás capaz y con gran potencial. Y por supuesto, en el hecho de que una buena educación permite plantarse firme ante esas (y otras) tentaciones…

En cuanto al contenido… qué puedo decir. Francamente, me dan ganas de abandonar todo y largarme a dar clases a algún lugar. Triste, decepcionante y muy encabronante la actitud que algunos maestros tienen ante su profesión. Sobre todo porque tuve la fortuna de ver muy de cerca lo que verdaderamente es un maestro de calidad.

Terrible, en fin. Tal vez tenga más cosas que decir después, pero… por ahora solo se resume en 🙁

Corrigiendo el error de empathy con MSN en Ubuntu 10.04

Hace como tres semanas se me ocurrió la loca idea de migrar de Debian Lenny a Ubuntu, con eso de que había ya salido la versión 10.04 (Lucid Lynx) y que esta es una versión LTS (Long Term Support, o bien de Soporte de Largo Plazo… tres años en particular). Me dije: Porqué no ahora?

Todo marcha de maravilla, con la notable de excepción de su cliente por defecto para mensajerías, llamado Empathy. Empathy es un proyecto de GNOME que está bastante apoyado – es decir, tiene apoyo de muchos frentes – y se ha convertido en el cliente por defecto del tal Ubuntu. Nada mal, excepto por el hecho de que su soporte para características del protocolo de MSN apesta. Y apesta feo.

La bronca con el tal Empathy es que, de vez en vez, se pasma la conexión. Ya no actualiza los contactos, ya no recibo (ni puedo enviar) mensajes, y lo peor… no me puedo desconectar. Bueno, al menos no con la interfaz que me proporciona Empathy. Según él, se desconecta (y luego vuelve a conectarse), pero son notablemente patrañas.

Un par de veces me desesperé y acabé reiniciando (sin comentarios), y todo volvía a la normalidad. Pero evidentemente esta no es forma de vivir… así que me puse a investigar. Primero, instalé el aMSN en un acto de desesperación, bajo el razonamiento de “si la conexión está trabada, el conectarse/desconectarse con otro cliente lo va a hacer funcionar”. Y no resultó como esperaba; efectivamente, aMSN pudo exitosamente conectarse y desconectarse, y sacó al Empathy de su estupor. Pero ahora se quejaba de que no podía conectarse por un (bien explicativo): “Network Error”. Hmmm….

Resulta que Empathy trabaja con un framework llamado “Telepathy” para el manejo de sus conexiones. Se ve bonito, platicado te lo pintan muy completo, pero esa cosa es la que acaba trabándose. La razón por la cual lo digo es que en este viejo bug report de GNOME hablan de un post que describe una posible solución; específicamente:

ok try this remove telepathy-butterfly an you should just have telepathy-haze installed try connecting with that

Lo cual me hizo investigar los fulanos módulos telepathy-*. Esto fue lo que dijo Debian:

||/ Name Version Description
+++-=================================-=================================-==================================================================================
ii telepathy-butterfly 0.5.9-0ubuntu1 MSN connection manager for Telepathy
un telepathy-connection-manager (no description available)
ii telepathy-gabble 0.8.12-0ubuntu1 Jabber/XMPP connection manager
ii telepathy-haze 0.3.4-1 A telepathy connection manager that use libpurple
ii telepathy-idle 0.1.6-1 IRC connection manager for Telepathy
un telepathy-mission-control (no description available)
ii telepathy-mission-control-5 5.3.2-3 management daemon for Telepathy real-time communication framework
un telepathy-python (no description available)
ii telepathy-salut 0.3.11-1 Link-local XMPP connection manager for the Telepathy framework
un telepathy-sofiasip (no description available)

Hmmm… entonces me fuí a ver el proceso y…

sbecerril@dolphins:~$ ps -e | grep telepathy
5320 ? 00:00:04 telepathy-butterfly

Ok… so… este debería ser el proceso trabado. Un simple kill (cortés, sin llamar a -2 ni a -9 por supuesto)…

y voilà! Empathy revivió.

Ahora… a escribir un script que haga eso recursivamente… 😛

Disyuntivas

Si pudiera yo saber
lo que aún viene,
si pudiera inferir
lo que mañana tiene.

Podría ser indecisión
o una mera disyuntiva,
de ambos lados pinta
una ruta atractiva.

Tal vez suene mal
o me vea inmaduro.
Tal vez solo sea
necesario darle duro.

Si esta mal no desear
o desear solo silencio.
puede que sea un tonto
o meramente necio.

Sin embargo sigo
buscando descanso.
A ver si mañana
por fin lo alcanzo.

Ayer te ví y pensé, eres roca.
Peñasco impertérrito que se alza
imponente sobre aquellos que, atontados
podemos solo admirar tal bonanza.

Dura y rígida por fuera, sin duda.
Inspira respeto, sorpresa y atención,
aunque es importante hacer la nota
que bien puede despertar devoción.

Y quisieran creerte por completo
desprovista de cualquier movimiento.
Ay de aquellos que, en su impotencia
no pueden entenderte por dentro.

Disculpame, claro, la pretensión
de comprender algo tan perfecto.
Pero me agrada captar, si bien poco,
la breve ironía de este aspecto.

Pues yo creo que aún siendo roca
tienes mucha vida atrapada y ansiosa,
que completamente inútiles, nosotros,
hemos solamente dejado deseosa.

Pero, ¡no más! Me declaro culpable,
responsable y por todo el designado
de verme a tu lado, duro empujando
siendo tal vez, si deseas, tu aliado.

Oh, yo entiendo, tal vez soy ingenuo
al pensar que podría hacerte rodar.
Pero creo que, de lograrlo algun día
seguro que ya no podrías parar.

Pues fiel a las leyes de nuestro universo
iniciar tu camino implica un gran reto
pero si es superado, y logras iniciar,
sería simple inercia el ruedo perpetuo.

Tal vez sueno como si fuera automático
que, ya comenzando, siguieras tú sola.
Me permito aclarar que pretendo, contigo
correr más que aquella proverbial caracola.

Así pues, hoy también, te veo y eres piedra.
Yo diligente, reuniendo energías
seré leviatán que sacuda tu mundo
y, si me aceptas, brindarte alegrías.