Novedades: actualmente estoy impulsando el proyecto Argentina en Python, desde aquí (ver mapa)

Un tachero pelotudo

Note

Este post no es el original, sino una migración de Wordpress a Nikola. Si no se visualiza correctamente, podés ir al original (en Wordpress) haciendo click aquí

Hoy me re colgué en el laburo y corté como a las 16:30 porque estaba enganchado con algo que estaba haciendo y venía saliendo como piña. En realidad era una boludés, pero tenía esa sensación de: "copado, me está saliendo de una y estoy manejando la mayoría de los casos sin probar nada". Así que ya estaba llegando tarde a la Psicóloga, entonces decidí no organizar mucho las cosas y llamar un taxi para llegar a horario.

Mientras esperaba el taxi me lavé los dientes y acomodé todo así nomás las cosas de circo ya que te tenía después de la Psicóloga. Entonces, llega el taxi, me subo, le digo la dirección, paseamos (fue por el parque el vago, tranqui) y finalmente... Llegamos a destino. Son $14,50... What?! Culeado, me estaba re cogiendo.

Miro la billetera, tenía: 1 de $100, 1 de $50, 3 de $2 y algunas monedas. Agarro el de $50 y se lo arrimo. El tachero me dice: "Eh?? No tenés cambio, nene??!!" a lo que contesto: "Esteeemmm... No, pero tengo los $4,50 si te sirve". "No nene, vos tenés que pedir un auto con cambio cuando lo necesitás, flaco, yo recién empiezo...". "Eu, no te estoy pagando $5 con $50, te estoy pagando 15 mangos con $50, no es una locura".

Y bueno, palabra que va, palabra que viene; el loco me hizo ir a buscar cambio a varios locales de la zona y no conseguí. Dimos la vuelta manzana y se bajó en un par de lugares a buscar cambio pero no encontró y mientras me decía: "Y... no sé como podemos arreglar. Si no, me lo pagás después. Te dejo ahí en la esquina que me dijiste".

Llegamos a la esquina y tira el vago: "Mmmm... a ver, a ver si alguien se olvidó la billetera acá". Mete la mano por debajo del asiento de acompañante, revuelve bastante y saca una billetera. Busca el cambio y me dice: "Pibe, tenés que pedir un auto con cambio la próxima vez, ¿sabés?" y al final me da 1 billete de $20, 1 de $10 y 5 de $2. Agarré todo, lo miré a los ojos y le dije.... -nada- (Andate a la concha de tu hermana, pelotudo de mierda, esto lo pensé). Abrí la puerta, la cerré con toda la bronca y llegué tarde por el tachero pelotudoeste.


Comportamiento "raro" en Django

Note

Este post no es el original, sino una migración de Wordpress a Nikola. Si no se visualiza correctamente, podés ir al original (en Wordpress) haciendo click aquí

En pocas palabras tengo un modelo que obtengo desde su id que me viene por la url. Para esto utilizo la función get_object_or_404 que trae Django. En el medio de la vista de Django aplico algunas funciones a esta instancia del modelo y me estoy encontrando con que luego de aplicar funciones que modifican la base de datos (la fila a la que apunta esta instancia); la instancia no se actualiza y me devuelve valores viejos. ¿Esto está más relacionado con Python que con Django?

El caso que tengo es este (en Pastebin.com): `` >>> def modify_model_state(model): ... model.state = 'Closed' ... model.save() ... >>> model = get_object_or_404(Model, pk=pk_object) >>> model.state u'Open' >>> modify_model_state(model) >>> model.state u'Open' >>> the_same_model = Model.objects.get(id=pk_object) >>> the_same_model.state u'Closed' >>> ``

En realidad esto está muy simplificado, pero refleja exactamente lo que tengo en mi código y lo que estoy "viviendo" :P


Tabs de Firefox a la derecha

Note

Este post no es el original, sino una migración de Wordpress a Nikola. Si no se visualiza correctamente, podés ir al original (en Wordpress) haciendo click aquí

Soy un tipo que tiene muchos tabs abiertos en el Firefox normalmente. Esto es porque siempre tengo el Gmail abierto, el Google Docs / Reader / Calendar (alguno de ellos) y además los tabs de las cosas que estoy investigando y trabajando. Por ejemplo, el ticket que estoy resolviendo, dos o tres tabs con las posibilidades de hacerlo que hay, alguno que otro para la documentación de Python, otro para la de Django y probablemente dos más para Javascript y CSS.

Haciendo un conteo rápido son entre 10 y 15, entonces si los ubico de la forma predeterminada de Firefox me quedan muy chiquitas las pestañas y casi ni se leen los títulos o bien hay que scrollear horizontalmente para alcanzar el tab deseado. También he visto que por este problema algunas personas hacen utilizan algún AddOns para que la barra de tab no scrollee y que se le hagan varias filas así:

image0

Pero a mí esto no me gustó, ya que me quitaba bastante pantalla y seguía con el problema de tener tabs chiquitos. En la PyCon Argentina 2010, ví en alguna Lighting Talk que el flaco tenía los tabs ubicados a la derecha, y me pareció re piola porque siempre digo que sobra espacio horizontal y falta vertical al navegar (tengo un wide-screen).

Buscando plugins en Mozilla el primero que encontré fue Tree Tab Styleque me parecía re piola, porque podías poner los tabs a la derecha y además te los ponía en forma de árbol, entonces podías tener varios temas agrupados en un árbol. No estaba mal la idea, pero al final no me resultó ya que cada vez se hacían más pequeñas los tabs y algunos comportamientos no me gustaban. Igualmente lo usé un tiempo porque cumplía a medias lo que yo quería.

Hoy encontré otro llamado VertTabBarque solamentehace eso. Ubica los tabs a la derecha (o izquierda) y no te da muchas más opciones. Eso me gustó: la simpleza.

|image1|


Welcome to the Juggle, baby!

Note

Este post no es el original, sino una migración de Wordpress a Nikola. Si no se visualiza correctamente, podés ir al original (en Wordpress) haciendo click aquí

En la PyConAr 2010 estuve hablando con Héctor Sanchez, un amigo de la comunidad de Python de hace varios años ya. En pocas palabras, un tipaso. Por lo general lo veo poco y chateamos... "nunca", por decir la verdad. Pero cuando nos encontramos en algún tipo de evento o situación tratamos de ponernos al tanto de nuestras vidas y pasar un buen rato charlando.

En esta oportunidad uno de los temas que conversamos fue mi comienzo en el circo y sobre las actividades que hacemos en la escuelita. También le dije que me compré unas clavas y ahí el me contó de un amigo que daba una charla que se llamaba "Malabares y Software Libre". What the fuck!?

Héctor intentó explicarme de qué se trataba la charla y me dijo que el tipo este mostraba algunos programas didácticos para hacer malabares. Sinceramente, en ese momento no le creí y pensé que me estaba jodiendo. Me siguió contando un poco más y me dijo que busque en Google y demás (todas esas cosas nerd que uno hace para demostrar la veracidad de alguna cosa).

La cuestión es que busqué en Google y encontré un montón de información sobre malabares y computadoras. Realmente hay muchos simuladores de malabares y son bastante didácticos y útiles.

Dejo acá algunos links que me parecieron interesantes:

El que actualmente estoy probando, es Jongl. Aunque es un poco complicado de configurar, parece que está bastante bueno ya que permite hacer muchas cosas. En alguna otra oportunidad, cuando lo tenga un poco más visto al programa, comentaré más cosas. Por ahora, dejo estos links para los que se quieren poner a ver esto.

image0

Si sabés de otros programas (para cualquier plataforma), decime cuál es así lo pruebo. También usá los comentarios para comentarme si te sirvieron esos programas y si encontraste algunas opciones interesantes.

Explico cómo hice para instalarlo, ya que tuve que descargar algunas cosas más además del programa en sí. Los pasos están hechos en un Debian Squeeze (testing). `` wget -c http://www.jongl.de/download/jongl-14.0-linux.tgz sudo apt-get install libpng3 libgl1-mesa-swx11 tcl8.4 tcl8.4-dev ``

Luego para ejecutarlo, hay que escribir escribir este comando: `` ./jongl ``

El comando que utilicé para buscar los programas que tuve que instalar con apt fue este: `` [humitos] [~/juggle/jongl/JonglV14.0]$ ldd jongl linux-gate.so.1 => (0xb782b000) libglut.so.3 => /usr/lib/libglut.so.3 (0xb77d5000) libGLU.so.1 => /usr/lib/libGLU.so.1 (0xb7765000) libGL.so.1 => /usr/lib/libGL.so.1 (0xb769b000) libX11.so.6 => /usr/lib/libX11.so.6 (0xb757e000) libXext.so.6 => /usr/lib/libXext.so.6 (0xb756f000) libXi.so.6 => /usr/lib/libXi.so.6 (0xb7562000) libXmu.so.6 => /usr/lib/libXmu.so.6 (0xb754c000) libm.so.6 => /lib/i686/cmov/libm.so.6 (0xb7526000) libpng.so.3 => /usr/lib/libpng.so.3 (0xb7501000) libz.so.1 => /usr/lib/libz.so.1 (0xb74ed000) libtcl8.4.so => /usr/lib/libtcl8.4.so (0xb7435000) libtk8.4.so => /usr/lib/libtk8.4.so (0xb7353000) libc.so.6 => /lib/i686/cmov/libc.so.6 (0xb720d000) libstdc++.so.6 => /usr/lib/libstdc++.so.6 (0xb7117000) libgcc_s.so.1 => /lib/libgcc_s.so.1 (0xb70f9000) libnvidia-tls.so.260.19.12 => /usr/lib/tls/libnvidia-tls.so.260.19.12 (0xb70f7000) libnvidia-glcore.so.260.19.12 => /usr/lib/libnvidia-glcore.so.260.19.12 (0xb5a47000) libdl.so.2 => /lib/i686/cmov/libdl.so.2 (0xb5a43000) libxcb.so.1 => /usr/lib/libxcb.so.1 (0xb5a29000) libXt.so.6 => /usr/lib/libXt.so.6 (0xb59d7000) /lib/ld-linux.so.2 (0xb782c000) libpthread.so.0 => /lib/i686/cmov/libpthread.so.0 (0xb59be000) libXau.so.6 => /usr/lib/libXau.so.6 (0xb59bb000) libXdmcp.so.6 => /usr/lib/libXdmcp.so.6 (0xb59b6000) libSM.so.6 => /usr/lib/libSM.so.6 (0xb59ad000) libICE.so.6 => /usr/lib/libICE.so.6 (0xb5996000) libuuid.so.1 => /lib/libuuid.so.1 (0xb5992000) [humitos] [~/juggle/jongl/JonglV14.0]$ ``

En este caso, tengo todas las librerías necesarias, pero puede ser que alguna falte y el mensaje sería "Not found" o similar. Después, con el nombre del archivo en mente, utilicé "apt-file search" o "apt-cache search" para buscar el paquete necesario.

Además tuve que crear un symlink hacia una lib en mi caso: `` $ sudo ln -s /usr/lib/libtk8.4.so.0 /usr/lib/libtk8.4.so ``

¿Algo más?