Bandera PyAr - Votación

Python — Miércoles 25 de Octubre de 2006, 18:52

Estamos a miércoles, y el viernes se cierra la votación de la primer bandera de Python Argentina (más info acá, con estos diseños, pero para votar tienen que estar suscriptos a la lista de PyAr).

Yo propuse cuatro modelos. Y tuvieron bastante buena aceptación: Aunque no voy ganando, porque el modelo Pablo6 me desplaza del primer puesto, tengo los cuatro modelos dentro de los siete más votados.



El viernes cierra la votación, hay dos días para hacerle alguna que otra modificación menor, y el lunes ya se manda a imprimir, :D.

Gracias a Alecu, por llevar adelante este proyecto.

Saliendo a jugar

Python — Lunes 25 de Septiembre de 2006, 16:58

Acá comenté como habíamos arrancado PyWeek 3, vean el post para la primer parte del relato e info genera de qué es eso. Ahora termino la épica historia.

Durante la semana, no pude hacer mucho, que es un eufemismo para dar entender que no tuve ni mierda de hacer un carajo. Pero me reservé la noche del viernes porque nos volvíamos a juntar en lo de Leito.

Así que el viernes, después del trabajo, partí para su casa, bien cargado de ceros y unos para alocar nuestros bits.

Llegué primero, pero al rato ya estábamos todos lo que éramos. Luego de las configuraciones de red de rigor, nos pusimos a seguir trabajando. Discutimos lo que correspondía luego de la semana, y más o menos nos dividimos las tareas. Como la parte que yo había comenzado el fin de semana anterior la había terminado, y en la semana no había hecho nada, me busqué una tarea.

La encontré fácil: debía con Nubis diseñar diez niveles en sus distintas facetas (tipo de público, elemento a desaparecer, historia de entrada, historia de salida cuando ganás y de cuando perdés, y hechizo). A priori iban a ser diez temas por separado, pero nuestras retorcidas mentes dieron con una historia que hacía fluir los diez capítulos.

Luego de tan ardua tarea, ya eran casi las dos de la mañana, así que boludeé un rato y ya me vine para casita. Al otro día luego de una mañana de compras, me puse también con el juego. Ya no físicamente con los chicos, sino en casa, coordinando por IM y/o chat.

Estuve más que nada buscando detalles que construir o solucionar, y previo permiso de alguien que estuviese físicamente reunido en lo de Leito, lo hacía. Algunas tareas eran de dos minutos, otras de treinta, y así se fue el resto de la tarde.

La hora límite eran las 21 de Argentina, pero nosotros nos pusimos las 8 como momento para dejar de incorporar cambios. Los últimos momentos tuvieron bastante adrenalina, porque el tiempo se acababa, sabíamos que cada cambio iba apenas a ser probado, y nuestros cerebros ya estaban quemados.

Yo corté alrededor de esa hora, sí, aunque los chicos siguieron unos veinte minutos. Hice un svn commit, y al toque le avisé a Lucio que retiraba mis manos del teclado, :). En esos momentos, Moni se venía con una espectacular picada para comer y ver una peli, ¡es genial!

Los chicos terminaron de armar el paquete con el juego, y lo subieron al sitio.



Entre participantes individuales y por equipos, se subieron 30 juegos antes de la hora límite. Tuvimos dos semanas para evaluar los juegos (los juegos se evalúan por los participantes del concurso, no por el público en general). Las evaluaciones corren por tres carriles:
  • Diversión: si el juego era divertido de jugar, si uno lo jugaría más de una vez.
  • Innovación: si el juego tenía algo nuevo en términos de tema, tipo de juego, etc.
  • Producción: gráficos, sonido y música, y que estos elementos estén balanceados.

En cada punto, se votaba del 1 al 5. También se podía indicar si el juego debía ser descalificado porque violaba algunas de las reglas de la competencia.

La cuestión es que al fin de semana siguiente me bajé tooooooodos los juegos, y los jugué (o intenté jugar) intentando evaluar estos parámetros. Y los voté, uno por uno. La mayoría de los participantes hizo lo mismo, y el sábado pasado caducó el plazo de las votaciones, y se eligieron los ganadores, un ganador por equipos y uno individual.

¡Y ganamos!

Siiiii, salimos primeros en la competencia por equipos, :D. Como pueden ver en los resultados, sacamos un 3.5 en diversión, un 3.5 en innovación, y un 4.5 en producción. En promedio, 3.9 puntos.

Y el equipo de Python de Córdoba salió tercero, ¡felicitaciones para ellos también! Realmente demostramos que PyAr está para cosas grandes, :D

Pueden bajar el juego de acá. Para probarlo, tienen que tener Python instalado (lo pueden bajar de acá) y PyGame (de acá).

Juéguenlo y me cuentan, :)

Arrancando PyWeek 3

Python — Lunes 04 de Septiembre de 2006, 17:15

Este fin de semana arrancamos con PyWeek 3, la tercera edición de una competencia donde hay que hacer un juego en una semana (7 días exactos, para nuestro huso horario desde las 21hs del sábado pasado hasta las 21hs del sábado que viene). Por supuesto, al juego hay que hacerlo en Python.

Nos juntamos a las 7 de la tarde en la casa de Leito. Fuimos Lucio, Ricardo, Dave, Alecu, un tal Pablo, y yo. Leito ya estaba (obvio, era la casa), y Nubis pasó un rato.

Estuvimos discutiendo distintas alternativas, y a las 21hs en punto se conoció el tema del juego: The disappearing act (el acto de desaparición). Era uno de los que menos nos gustaba, pero nos pusimos a pensar qué juego armar. Fuimos a comprar vituallas para la noche y el día siguiente, mientras discutíamos distintas ideas.

Volvimos, y seguíamos charlando sobre distintas ideas. Pedimos comida, y ya íbamos delineando lo que queríamos. Mientras comíamos, seguimos puliendo detalles. Después de comer, cerrábamos los últimos cabos sueltos.

Poco después de medianoche nos pusimos finalmente a programar el juego. Separadas las tareas, equipos de una/dos personas trabajaban en puntos separados y cada tanto juntábamos las cosas, a veces pedíamos feedback de otros, sacábamos algún que otro tema a discusión, etc. Una forma de trabajo más que interesante.

Así toda la noche.

Yo me fui a las siete de la mañana. A esa altura ya teníamos hecho el motor del juego, casi toda la interfaz para el motor, el escenario, el público, etc. Leito ya estaba durmiendo, y Lucio estaba en eso. El resto, seguía trabajando.

Yo, despues de levantarme, no pude hacer nada en el juego porque tenía otras tareas, pero al final del día hice un update y ví que ya estaba todo integrado. Tenemos que usar estos días para pulir detalles, y tratar de llegar al sábado con un producto final, apuntando a la jugabilidad.

¡El finde que viene les cuento!

Misterios en lo profundo del byte

Python — Lunes 14 de Agosto de 2006, 11:14

La semana pasada me encontré con uno de esos misterios justo trabajando con MySQL, en el laburo. Hace rato que no me pasaba.

Tales misterios, para los que no están acostumbrados, son aquellos en que surge una dificultad técnica, pero disfrazada de acontecimiento que se califica como "no puede ser", "me está haciendo algo raro", "che, esto se rompió", etc., pero que luego resulta ser que uno está haciendo algo mal.

Lo divertido de tales misterios es que lo obligan a uno a leer, releer y analizar documentación, buscar en la web, aprendiendo muchísimo en el proceso.

El problema que tenía era que un colaborador mío estaba usando un módulo que yo tenía para acceder al MySQL desde Python, usando MySQLdb, pero con apenas algo de laburo para hacerla más fácil, y cuando insertaba algo en una tabla, por otro lado no veía lo insertado.

Es decir, el estaba con un programa por un lado, y con la linea de comandos del MySQL por el otro. Y cuando insertaba algo en la base desde el programa, no lo veía por la linea de comandos. Es más, a veces la inserción daba timeout porque la tabla estaba lockeada.

Luego de tres horas de buscar, probar, y reescribir mi módulo de MySQL utilizando la Python DB API 2.0, encontré cual era el problema.

Primero, algo que desconocía. Que cuando estás en una tabla InnoDB, que maneja transacciones, el SELECT también es una transacción, y como tal, luego de la misma, hay que hacer un COMMIT. Y lo otro es que al levantar una conexión con MySQLdb, el autocommit está por default deshabilitado (al contrario que por linea de comandos del MySQL que por default está habilitado).

Habilité entonces en mi módulo el autocommit, para que el SELECT no me bloquee la tabla y que luego me dé el timeout, y listo, :) Todo solucionado.

Costó, pero aprendí bastante más de InnoDB en MySQL, y aproveché para actualizar mi módulo, que la verdad es que era un desastre, después de todo fue mi primer clase hecha en Python!

Otras memorias de Python StaFe

Python — Miércoles 28 de Junio de 2006, 15:25

No quería dejar de comentarles dos otros relatos de la primer jornada de Python Santa Fe (aparte de la mía).

El primer relato es de Nubis, quien nos acompañó desde Buenos Aires, y cuenta bajo el punto de vista de un asistente, ¡está muy divertido!



El segundo relato es de Cesar Portela, uno de los organizadores, y está contado desde el punto de vista puramente de organizador. Si alguna vez tienen que organizar algún evento, ¡no dejen de leerlo!



Las fotos que les dejo acá están tomadas prestadas del sitio donde están todas las fotos sacadas, aquí.

Viendo videos sin conexión a internet

Python — Jueves 22 de Junio de 2006, 12:22

Ufff, como me cuesta volver a agarrar ritmo con el blog... la verdad es que no tengo tampoco taaaaantas cosas para contar, pero creo que algunas tengo y se me pasan.

Un ejemplo de esto servirá para el post de hoy.

Me hice un programita (en Python, por supuesto), que corre por linea de comandos, al que uno le pasa la URL del video que está viendo en Google Videos, YouTube, o los trailers en Apple, y el programita sólo te baja el video a disco, para luego verlo sin tener que estar conectado a internet.

Para ver los videos, no puedo dejar de recomendar a mplayer, que corre tanto en Windows como Linux, y es mi preferido porque reproduce casi todo, aunque sufre de inconvenientes como no tener una interfaz gráfica en Windows (¿pero quién se fija en esas cosas? ;).

Python en Santa Fe

Python — Jueves 08 de Junio de 2006, 03:55

Este fin de semana se realizó la Primer Jornada Python Santa Fe, en la Universidad Tecnológica Nacional, ciudad y provincia de, justamente, Santa Fe.

El fin de semana arrancó a las seis de la tarde del viernes, cuando tomamos ruta Alecu, Nubis, Pablo Z, Leito, Lucio y yo. Fuimos en dos autos, el de Lucio y el mío.

Llegamos tarde a Santa Fe, luego de una sola parada para cargar nafta. La idea era llegar y buscar un lugar para comer. Pero terminamos cayendo en la casa de amigos de Leito, Nicolás y Lucas. La verdad es que se super portaron, ya que nos dieron de comer ellos. Nosotros llegábamos con hambre, y ellos sacaron carne al horno con papas (ya cortada, como para picar), palitos, maníes, etc...

Prácticamente les comimos todo, y para no hacer diferencias, también les tomamos toda la cerveza, las que tenían y las que fueron a comprar. Mientras tanto, charlábamos y charlábamos de Python, Linux, y demás temas raros que nos apasionan a nosotros y a Luca, otro amigo que llegó después.

Ya que nos habían agasajado, decidimos devolverles el favor yendo a un boliche y pagando nosotros: arrancamos para El Potrero, el cual está muy bien: pool, música, cerveza, etc...



A eso de las dos de la mañana partimos para el hotel. Nos registramos con Lucio, y nos fuimos a dormir hasta las seis y media. Nos levantamos, bañamos, y bajamos a desayunar justo cuando nos pasaba a buscar Juanjo. Desayunamos y partimos hacia la facultad, en una mañana de sábado gris y con una llovizna muy molesta.

El día de charlas estuvo muy bien. Yo arranqué con Introducción a Python, y siguió Lucio con Python en el mundo real. Después comimos en la cantina de la Facultad, unas milanesas con ensalada que estaban muy bien.



A la tarde seguí yo con Demostraciones técnicas (Procesamiento distribuido, Sistema de Administración de CDs, Web services, y Booscadoor) y cerró Lucio con Magia negra en Python.

La Jornada fue un éxito: ¡¡280 asistentes!! El público no era gente de Python, sino estudiantes de las carreras de Ingeniería en Sistemas e Ingeniería en Informática, lo cual estuvo perfecto, ya que evangelizamos a full!! Creo que la gente se enganchó, le interesó, y se fue con una buena impresión de lo que es el lenguaje.




Después de allí nos fuimos unas diez o quince personas a un bar que tenía WiFi a realizar un sprint: trabajamos en un proyecto que tiene PyAr de armar una Wikipedia offline en un CD para distribuir a escuelitas.



Después nos separamos y se fue cada uno para su lado a refrescarse/cambiarse, y nos terminamos encontrando más tarde en el bar del día anterior, donde cerramos la noche con pool.

El domingo no volvimos en un sólo grupo, sino que arrancamos temprano Leito, Alecu y yo, y el resto volvió más tarde.

Resumiendo, fue una experiencia fantástica que creo que tenemos que repetir lo más posible. Salieron muchas cosas bien, y aprendimos un montón de esta experiencia. ¿Quién sigue? ¿Tucumán? Vamosssssssssss...

Verano (invierno) de código

Python — Viernes 05 de Mayo de 2006, 10:38

Más especificaciones con respecto al Summer Of Code de Google.

Los estudiantes que quieran encarar un proyecto (pueden elegir alguno de aquí y ver también más info) no tienen más que escribir una propuesta.

Luego de ser aprobada, se pondrán algúnos hitos y se irá evaluando el desarrollo del proyecto en el tiempo, durante lo que dure el verano (invierno aquí).

Al final del proyecto, el estudiante recibirá 4500 dólares de Google (otros 500 dólares van para la organización que coordinó el proyecto (en este caso, la Python Software Foundation).

Entonces... ¡a proponer ideas y ganar platita! :D

Noticias tres

Python — Martes 25 de Abril de 2006, 12:06

Google Summer Code

El GSC es un evento donde Google, a través de diversas asociaciones, le da dinero a estudiantes para que desarrolle programas que serán de beneficio a la comunidad. Estas asociaciones designan a distintos mentores, que son los que supervisarán los proyectos de los estudiantes.

El circuito es el siguiente. Una persona firma como mentor con Google, diciendo que pertenece a determinada asociación. Google confirma con esa asociación, y luego le otorga el título de Mentor a esa persona. Los estudiantes proponen proyectos y la asociación los aprueba (o los estudiantes directamente eligen de los proyectos que ofrece esa asociación), y luego se le asigna un mentor para que supervise el proyecto.

Al aprobarse el proyecto, el estudiante queda pegado con la asociación para terminar el proyecto (o completar distintas etapas), con determinados montos de dinero fijados. Al ir completando las etapas, o el proyecto total, se le pagará al estudiante la suma acordada.

La noticia es que firmé como Mentor con Google, a través de la Python Software Foundation, de la cual soy miembro, y ya me aprobaron. Como tengo cero tiempo libre, la idea es ofrecerle a la PSF la posibilidad de que acepte proyectos en castellano. No creo que agarre otro proyecto (aunque se está barajando el tema de reescribir Decimal en C, estaría piola ser mentor ahí).

Detalle de color: el cuestionario que uno llena en Google para ser Mentor, implica marcar en un mapa del mundo, usando google maps, la ubicación de uno, :)


Python 3000

Guido dió una charla sobre Python 3.0. Mucho de la charla, ya se conocía, pero yo me desayuné de varias cosas interesantes aquí. Lo más loco, es cuán superpuesto estará con el branch 2.x (o sea, que quizás salga el 2.6 y el 3.0 casi al mismo tiempo, pero seguirán viniendo 2.7, 2.8, etc, para que se tengan varios años de migrar a la nueva tecnología).

Los slides están acá.


Santa Fe

Se confirmó para el 3 de Junio, sábado, la Primer Jornada Python Santa Fé en la UTN de esa ciudad, al cual fuimos invitados como expositores Lucio y yo.

La idea es que demos un par de charlas cada uno durante el día. Como es un sábado, y ese viernes es laborable, viajaríamos a la tarde, llegamos directamente a meternos en el sobre en un hotel, y arrancamos el sábado tempranito.

Lamentablemente Mariano no va a venir, porque está llegando un par de días antes a Argentina, de su viaje por Europa.

Se terminó PyCon 2006

Python — Martes 28 de Febrero de 2006, 11:38

Ya dentro de un rato me pasa a buscar la camioneta de SuperShuttle que me lleva al aeropuerto. Dos aviones y mil controles más tarde estaré llegando a Argentina, tipo mañana a la mañana.

Ayer y hoy medio día estuve trabajando en Docutils. Como resultado del día y medio de trabajo, Docutils tiene ahora una interfaz gráfica que te permite abrir un archivo y procesarlo (traduciéndolo) a HTML, LaTeX o XML.

Le falta mucho laburo, pero la base está. La idea era sacarlo rápido, y ahora discutir sobre esa base lo que le queremos agregar o modificar. Estuvo bueno.

Además aprendí a usar un widget que muestra HTML, así que ya tenemos la mitad de la Ayuda de SiGeFi hecha, :p. Y también resolví unos warnings que nos afeaban el proceso de generar automáticamente la documentación de las clases.

Con respecto a las remeras, hoy vendí un montón más (unas 8). En total vendimos unas 17, estaban todos muy copados por el diseño, y hasta me lo pidieron para ver si lo usaban en las remeras de la conferencia del año que viene!! :)

PyCon 2006, día 3

Python — Domingo 26 de Febrero de 2006, 18:55

La keynote del domingo no fue una presentación, sino una entrevista a Bram Cohen, creador del BitTorrent. Fue rara, en algunas partes interesante, en otra muy aburrida. El pibe no está preparado para que le hagan una entrevista en vivo y en directo, ya que se quedaba dudando, se colgaba, etc. No le ponía dinámica. Pero en general la entrevista estuvo bien. Especialmente divertida la parte en que contó como se le fue acabando la plata cuando no trabajaba por ocupar todo el día en BitTorrent, y como jugaba con el banco y las tarjetas de crédito...

La primer charla de la mañana fue de Glade y GTK. ¿Por qué hay gente que cree que dar una charla es pararse ahí adelante y sólo usar algo? Sin estructura, sin hilo conductor, sin objetivos en la demostración. Sólo lo usan, mostrando distintas cosas. No sirve. Con respecto a Glade, no se si nosotros no lo supimos ver o lo pusieron desde esa época (Mariano, ¿cuándo tomamos la decisión de usar wxPython?), pero, al menos usando GTK, soporta sizers y permite cambiar los atributos de los widgets y que eso se actualice on the fly en la ventana de edición. Interesante, incluso para descubrir el propósito de cada flag, parámetro, etc.

La próxima charla fue sobre usar Ajax con TurboGears. Ya había escuchado muy buenos comentarios sobre TurboGears, y realmente usar Ajax en ese framework es fácil. Demostraron como hacer cosas bastante interesantes (cosas que estamos acostumbrados a ver en una aplicación local pero no en una web), y el código para hacerlas es corto y sencillo. Si alguna vez tengo que hacer una aplicación web, seguro que voy a empezar probando TurboGears.

La última antes del almuerzo habló sobre el estado actual de PyPy (un intérprete de Python escrito en Python). Fue demasiado técnica para mi gusto. Esperaba un pantallazo general del estado de avance, y en cambio fueron dando puntas de las cosas que hicieron sobre temas particulares, y como hay que estar bastante al tanto de PyPy para entender esos temas particulares, no me sirvió (a mí) de mucho.

Después del almuerzo David Goodger dió una charla de Docutils, basicamente explicando qué es y en que estado están, que funciona y en qué están trabajando. Todavía falta la charla formal donde se presentan que Sprints van a haber, pero yo creo que voy a trabajar en la de Distutils (aunque no sé bien en qué, puede ser en traducir los keywords al castellano, puede ser en la interfaz gráfica, pero seguro que voy a ver los dos warnings que no podemos sacar de la documentación de SiGeFi...).

Más tarde hubieron un par de charlas que no me interesaron, y ya vino el cierre de la conferencia. Seguidito, las presentaciones de los sprints, pero como yo ya tenía decidido qué hacer, no fui. Para cerrar el día, nos juntamos unas quince personas e hicimos una revisión de la conferencia y comenzamos a planear la del año que viene, :).

PyCon 2006, día 2

Python — Sábado 25 de Febrero de 2006, 18:57

Abrimos con una keynote de Guido, donde mostró algunas cosas actuales (el nuevo sitio, el cronograma de liberaciones para 2.4 y 2.5, etc.), una presentación general de los nuevos puntos de la versión 2.5 (cuya versión final saldría por septiembre), y algunos detalles nuevos sobre Py3k (lambda queda, hay una reforma de los tipos de cadena de texto, un nuevo stack de entrada/salida, etc.).

Con respecto a la 2.5, es la versión con mayor cantidad de cambios desde la 2.2. No solo cambios en el lenguaje (la declaración with, import's absolutos y relativos, mejoras a los generadores, una nueva expresión condicional, cambios en las excepciones, y un nuevo __index__), sino también cambios en la implementación (compilador basado en AST, ssize_t, etc.). También mencionó nuevos items en la biblioteca estándar.

La primer charla de la mañana fue sobre la generación de bytecode de Python con la nueva Abstract Syntax. Aunque está más allá de mi entendimiento inmediato (y hoy por hoy no me voy a poner a estudiarlo), estuvo buena, me gusta esa parte del lenguaje.

Tanto en esta última charla como en otras, siempre pasa lo mismo. Resulta que toda la charla es explicando como se terminó un trabajo que llevó meses y muchas horas de razonamiento. Y siempre se levanta uno y hace una pregunta tipo "¿Consideraron agarrar y hacerlo de esta otra manera?". Las probabilidades de que surja con algo interesante son bajas (aunque no cero); ¿la gente no se da cuenta de que si se le acaba de ocurrir a ellos, al que hizo el laburo también se le ocurrió y lo descartó por algo? ¿Por qué no se van a la casa, lo piensan mejor, lo estudian, y de última mandan un mail? ¿O son ansias de figurar?

Para la otra charla me quedé en la misma habitación (sólo me acerqué a un enchufe), ya que aquí venía un caso de estudio: como Chandler manejó la internacionalización. La idea general es que la internacionalización es mucho más que traducir texto. Como muestra basta un botón: ¿sabían que el francés tiene reglas muy específicas sobre como ordenar las palabras? Interesante: miren la biblioteca ICU de IBM. Más interesante aún: PyICU.

Saco en conclusión que en SiGeFi tenemos todo más o menos bien encarado, lo que es todo un logro considerando que ni Mariano ni yo teníamos experiencia en l10n ni i18n.

Hubieron un par de horas en que no encontré ninguna charla interesante, y luego arrancaron las lightning talks. Las dos más interesantes fueron la de twill (una aplicación para testear aplicaciones web) y Chandler (realmente está quedando muy bien; está super completo, sin embargo van por la versión 0.5, y es bastante usable... ¿estamos viendo otro futuro suceso como Mozilla?)

La de PyAr estuvo buena, y los hice reir bastante en dos partes, una cuando les dije que cuando nos juntamos, hablamos bastante y tomamos bastante. Y después en el slides de las remeras, cuando les dije que están a la venta, hice una pausa, y la rematé con un a sus hijos les va a encantar, jijiji.

Luego hubieron algunas más o menos aburridas (o divertidas pero irrelevantes). Quince minutos después de que terminaron arrancamos para la librería que nos invitó a una especie de fiesta. Era una librería muy grandota con todos libros de tecnología, y habían pizzas, quesos, galletitas, dulces, bebidas, etc., todo gratis. Entonces la gente compraba libros aprovechando que habían muchos autores de esos libros por ahí (de los de Python, obvio). Pero todos también compraban otros libros (¡yo compré tres!), así que los tipos vendieron muchísimo.

Lo loco es que como no era un negocio normal, sino más bien una especie de depósito, no había cajero: la única forma de comprar era por internet! Encima no aceptaban tarjetas de crédito de afuera de USA, así que uno de los empleados me hizo la gauchada de pagar con su tarjeta de crédito y yo le dí el efectivo a él.

Después volvimos al hotel, donde estuve trabajando un rato en SiGeFi, escribiendo esto, y luego bajé un rato a tomarme una cerveza: estuvimos charlando con Raymond y Brett Cannon. Después subí, me bañé, y a la cama...2

Powered by LifeType