Python Argentina, la historia

Python — Domingo 05 de Septiembre de 2010, 16:48

El siguiente texto formó parte de la Primera Edición de PET - Python Entre Todos, la revista de PyAr. Tiene un montón de artículos copados, y la pueden ver online, o bajarla en PDF en distintos formatos. En la semana va a salir el mismo número, pero en inglés, y esperamos una segunda edición prontito. ¡Disfrútenla!

Ahora, el artículo.


Conocí Python en el 2001, buscando un lenguaje piola para trabajar en entornos Unix y Windows, y frustrado por algunas experiencias anteriores. Inmediatamente ví que era algo que me gustaba, y comencé a invertir tiempo, aprendiendo y profundizando en él.

No conocía muchos que usaran este lenguaje. Sí, estaba la lista de Python en español, y la lista en inglés, pero no tenía contacto con otros argentinos que programaran en él (más que un par de compañeros de trabajo). Buscando gente, caí en un sitio que organizaba reuniones de todo tipo, me anoté, pero nada.

Llegó el 2004. Pablo Ziliani (más conocido como un tal Pablo) encontró el mismo sitio pero lo tomó, lo sacó de su hibernación, y mandó invitación para juntarnos.

Esta juntada fue finalmente la Primera Reunión de Python Argentina. Nos encontramos en un bar céntrico, el 9 de Septiembre de 2004, Pablo, un chico llamado Javier que no volvimos a ver, y el que suscribe.

Aunque sólo charlamos de generalidades alrededor de Python, el ímpetu no quedó ahí y con esa base se organizó la próxima reunión, en la que ya se empezó a formar el grupo propiamente dicho.

En esta segunda reunión, a fines de Octubre, se bautizó al grupo como “PyAr - Python Argentina”, y decidimos crear la lista de correo y establecer un portal web donde se den a conocer los objetivos y actividades del grupo, las instrucciones para participar, enlaces a información útil, y generar contenido propio (como por ejemplo experiencias locales en el uso de Python).

El primer año del grupo pasó a pura reunión. Darnos a conocer no era fácil, y aunque hacíamos promedio una reunión por mes, éramos entre cuatro y siete personas, siempre los mismos. Pero en función de llegar a más gente fue que en la reunión de Agosto del 2005 decidimos participar en CaFeConf 2005, las Jornadas Abiertas de GNU/Linux y Software Libre organizadas por CaFeLUG. Presentamos entonces dos charlas para dicha conferencia, Lucio dió una sobre PyGame y yo una de introducción a Python.

Las primeras reuniones del 2006 nos encontraron ya con más gente (entre diez y veinte por reunión), y discutiendo sobre otros temas a nivel de grupo más allá de la difusión. Estábamos con la creación de las primeras remeras, Ricardo había creado un canal de IRC en Freenode (el viejo #python-ar), y Alecu proponía formalizar un poco el tema de las reuniones, creando un procedimiento para las mismas.

También con estructuras más afianzadas se empezaron a barajar otros desafíos, como reuniones en interior del país, traer algún invitado internacional a CaFeConf 2006, traducir documentación oficial de Python, y algo que en su momento se llamó NERDcamp...

En Febrero de ese año yo realicé mi primer viaje a PyCon USA (la conferencia de Python más importante del mundo), donde PyAr comenzó a hacerse visible más allá de nuestras fronteras, no sólo porque dí una Lightning Talk de nuestro grupo, sino porque aproveché para vender muchas de las remeras que habíamos hecho.

En reuniones de esa primera parte del año también hablamos sobre el contenido de la lista de correo (si la separamos en sub listas o qué hacemos para limitar las conversaciones no específicas a Python; esta discusión la seguimos teniendo hoy en día...), hablamos del Día Python realizado en Mendoza, y charlamos sobre cómo organizar el grupo a nivel estructura: si íbamos a definir /cargos/ dentro del grupo, o seguir como estábamos en una estructura plana sin presidentes ni presididos.

La organización del grupo merece un párrafo aparte. Desde el comienzo de Python Argentina hasta ahora no hubieron nunca personas con cargos específicos, sino que siempre mantuvimos una muy saludable anarquía, en donde había una asociación y un pacto voluntario entre las personas del grupo que quisieran llevar algún proyecto interno adelante, sin necesidad de "decisiones oficiales" que impongan recorridos al resto de las personas del grupo. En otras palabras, si alguien en PyAr desea empujar un proyecto, sólo tiene que hacerlo, y tendrá más o menos participantes y/o ayudantes en función de si el proyecto es interesante o no, pero no tiene que "oficializarlo", o pedir aprobación sobre el mismo.


Siguiendo con la historia

En Junio del 2006 se realizó la Primer Jornada Python Santa Fe, en la Universidad Tecnológica Nacional, ciudad y provincia de, justamente, Santa Fe. Las jornadas fueron un éxito, y en la reunión / sprint posterior a las mismas (mientras comíamos pizza y hablábamos de todo un poco) se empezó a trabajar en un proyecto importante para el grupo: una versión offline de la Wikipedia. Este evento nos motivó bastante, y en la reunión siguiente Pablo Ziliani  sugirió que tratemos de ponernos como objetivo "organizar una reunión /federal/ al menos una vez al año", y decidimos que queríamos tener una bandera de PyAr.

Septiembre del 2006 nos encontró participando en la tercera edición de PyWeek, una competencia internacional en la que se debe programar un juego en Python en una semana, arrancando desde cero y terminando con algo que prueban el resto de los competidores. No era la primera vez que participábamos, pero en esta oportunidad uno de los grupos de PyAr ganó la competencia con el juego Typus Pocus (¡y otro grupo nuestro quedó tercero!).

La segunda mitad del año no trajo mayores novedades hasta que llegamos a CaFeConf 2006, donde estrenamos stand con una bandera recién salida del horno, y además una de las plenarias del evento era dada por Alex Martelli (habló de "Qué es Python y por qué importa"), invitado internacional traído por gestiones propias de PyAr.

Luego de este evento empezamos a reconocer lo importante que era para Python Argentina participar de estas conferencias y jornadas abiertas a la comunidad, ya que luego de las mismas notábamos un salto en la cantidad de suscriptos a la lista de correo. Además, empezamos a establecer buenos vínculos con el resto de la comunidad de software libre de Argentina, comunidad a la que algunos conocíamos pero en la que no estábamos involucrados.

El año 2007 fueron meses de consolidación. Se realizaron varias reuniones en Capital e interior, estuvo el segundo Día Python en Santa Fé (esta vez con dos tracks, de nuevo un éxito), y PyAr participó en CaFeConf, en Unlux y en las Jornadas Regionales de Software Libre, en Córdoba. Como se discutió en la reunión del grupo luego de esa conferencia, Python Argentina era un grupo nuevo que estaba naciendo y  aprovechábamos la gentileza de los “hermanos mayores”: la capacidad organizativa y la gente involucrada en los LUGs. Un detalle importante a considerar es que Python era el único lenguaje de programación con stand propio, tanto en CaFeConf como en dichas Jornadas.

Durante este año también la lista de correo alcanzó una cantidad de participantes suficientes como para que la rueda gire sola: la gran cantidad de respuestas a las preguntas dejó de surgir del grupito de 20 o 30 personas que arrancó el grupo y pasó a ser generadas por personas más nuevas. También activamos el IRC como medio de comunicación, pero usando #pyar como canal en Freenode (necesitábamos hacer algunos cambios y no teníamos acceso a Ricardo, que había creado el anterior). En conjunto, la lista y el canal de IRC, probaron ser los mejores medios de comunicación para el grupo, complementándose entre ellos ya que la dinámica es distinta en cada caso, y ambos teniendo como soporte persistente al sitio web, que de a poco se fue llenando de Recetas, Cartelera de Trabajo, Novedades, Documentación, FAQ, etc.

2008 arrancó con una gran novedad: el primer PyCamp. Organizado por Except, una empresa de Córdoba, este evento se desarrolló durante cuatro días en los que fuimos a trabajar en distintos proyectos de Software libre relacionados con Python, a socializar, y a tener algún pequeño contacto con la naturaleza.

En la reunión de Mayo de ese año se charló sobre las participaciones del grupo en otros eventos internacionales. Estuvimos representados nuevamente en PyCon y por primera vez en Fisl (donde integrantes de PyAr hicieron Falabracman, un juego en 36 horas para la competencia OLPC Game Jam, ¡la cual ganaron!).  También se charló una diferencia importante entre los grupos de usuarios de USA y de Argentina; en Estados Unidos se juntan directamente a programar o a hablar de cosas netamente técnicas, y en Argentina las reuniones son con un fin más social, para conocernos las caras y quizá tomar alguna que otra cerveza.  Relacionado con una idea que venía de antes, Humitos nos contó que estaba haciendo una traducción al español de manual de Django, y surgió el tema de traducir el Tutorial oficial de Python, con la posibilidad de imprimirlos y encuadernarlos para venderlos o regalarlos en algunos eventos.

La segunda mitad del año estuvo bien movidita también. No sólo por reuniones en Buenos Aires e interior (¡primera vez en Rosario!), sino que terminamos de definir el diseño de la segunda tanda de remeras de PyAr, y participamos nuevamente en las Jornadas Regionales de Software Libre. En este evento Python volvió a pisar fuerte, no solo por la cantidad de charlas presentadas o lo exitoso del stand, sino que volvimos a traer un invitado internacional (Raymond Hettinger) para que dé una plenaria en un evento de primera linea.

También se realizaron las 3ras Jornadas Python en Santa Fe, donde se anunció formalmente que al año siguiente se realizaría la primera conferencia nacional de Python en Argentina. En la última reunión del año en Buenos Aires se terminó de discutir el arranque de la organización de esta importante conferencia, y terminamos el 2008 con muchas ganas de que arranque el próximo.


Quinto aniversario

Los últimos días de Marzo del 2009 nos trajo la segunda edición del PyCamp, nuevamente en Los Cocos (Córdoba). Fueron nuevamente cuatro días en los que se desarrollaron muchos proyectos, y se profundizaron muchos lazos dentro de la comunidad Python.

La segunda parte del año tuvo como plato fuerte a PyCon Argentina 2009, la primera conferencia en español del mundo, un merecido festejo del quinto cumpleaños de PyAr. Fueron dos días en Septiembre, mañana y tarde, con tres secciones en paralelo la mayor parte del tiempo. Usamos tres auditorios de distintas capacidades, siendo el mayor para 300 personas, y dividimos las exposiciones en tres tipos: charlas comunes (tuvimos 33 distribuidas en ambos días), lightning talks, y plenarias.

PyCon fue todo un éxito (no esperábamos tanta gente, vinieron más de 400 personas, muchas de Buenos Aires, pero una buena parte de interior, y también gente de otros paises), y tuvo muy buena repercusión tanto en nuestro país como en medios internacionales. A esto último ayudó que tuvimos dos invitados de primera linea (Jacob Kaplan-Moss y Collin Winter) que se lucieron en sus respectivas charlas plenarias.

Para la conferencia pudimos terminar uno de los proyectos de larga data dentro del grupo: ni más ni menos que la traducción completa al castellano del Tutorial de Python (el oficial), que publicamos en la red pero que también imprimimos en cantidad para repartir durante la conferencia (especialmente en la charla de Introducción a Python), y que luego fuimos llevando a los otros eventos que participamos. Además, aprovechando que PyAr tiene mucha gente estudiando en Universidades, donamos Tutoriales a las Bibliotecas de dichas instituciones.

Terminamos el año con una participación en un evento amigo, Fábrica de Fallas, en La Tribu. No es un ámbito tradicionalmente orientado a la programación, y aunque PyAr siempre tuvo buena acogida en ese ámbito, nos sorprendió gratamente que uno de los momentos artísticos del evento haya sido la pintada de un mural cuya base es un tutorial de Python!

El comienzo del 2010 tuvo al clásico PyCamp en la primera parte del año, pero esta vez no en Los Cocos, como en las dos ediciones anteriores, sino en Verónica (Buenos Aires). Cambió el lugar pero no el estilo: los PyCamps son uno de los eventos de programación más interesantes que conozco, y uno de los que más cumplen a la hora de aprender y divertirse.

También se aceleró el trabajo sobre la CDPedia, el proyecto que ya les había mencionado sobre meter la Wikipedia en un disco para usarse sin estar conectados a Internet. En la versión CD entraron más de 80 mil artículos, la mayoría con imágenes. Y en la versión DVD entraron todos, casi todos con sus respectivas imágenes. Si podemos terminar algunas funcionalidades que necesitamos, estaríamos distribuyendo la CDPedia en muchas escuelas de todo el país, a través del Ministerio de Educación.

En Mayo se realizó el primer Python Day en Rafaela, Santa Fe, el cual fue un éxito, llevando a casi 100 personas. Y para Septiembre se hará el primer Python Day en Buenos Aires, que esperamos ansiosos.

La segunda parte del año nos traerá también el primer Ciclo de Charlas Abiertas, en La Tribu (una serie de charlas sobre programación y Python, a la gorra, abiertas a la comunidad), y la segunda edición de PyCon Argentina, esta vez en Córdoba.

Seguramente cerremos el sexto año del grupo festejando todo lo hecho, pero también planeando nuevos eventos, nuevas formas de promover Python, y de juntarnos entre todos los usuarios de Python del país.

Analizando la memoria en Python

Python — Viernes 20 de Agosto de 2010, 19:32

Estoy haciendo un análisis de la memoria del cliente de Ubuntu One (particularmente unos módulos que conforman el SyncDaemon propiamente dicho), y me pareció tan copado que muestro acá parte de eso (aprendí el 99% de esto gracias a Guillo).

El análisis se basa en usar Heapy. Si a ubuntuone-client se lo levanta con --debug-heapy_monitor, el mismo hace (sacando el manejo de error):
import guppy.heapy.RM
guppy.heapy.RM.on()
Nada más. Entonces, lo ejecuté, y lo llevé a un estado en donde quería probar un par de cosas.

En otra terminal, ejecuté:
python -c "from guppy import hpy; hpy().monitor()"
Y eso me abrió una linea de comandos a través de la cual me conecté a mi programa Python que estaba ejecutando en la otra ventana (sí, a SyncDaemon):
<Monitor>
*** Connection 1 opened ***
<Monitor> lc
CID PID  ARGV
  1 4451 ['bin/ubuntuone-syncdaemon', '--debug-heapy_monitor']
<Monitor> sc 1
Remote connection 1. To return to Monitor, type <Ctrl-C> or .<RETURN>
<Annex> h

Documented commands (type help <topic>):
========================================
close  h  help  int  isolatest  q  reset  stat

<Annex> stat
Target overview
------------------------------------
target.sys.executable   = /usr/bin/python
target.sys.argv         = ['bin/ubuntuone-syncdaemon', '--debug-heapy_monitor']
target.wd               = /home/facundo/canonical/u1-client/aq-memory-improvements
target.pid              = 4451
------------------------------------
Abrí una consola interactiva, y le dije que me tomara un snapshot del heap:
<Annex> int
Remote interactive console. To return to Annex, type '-'.
>>> h1 = hp.heap()
Luego hice tiré un archivo con contenido a Ubuntu One, volví a pedir el heap. Y miré las diferencias:
>>> h2 = hp.heap()
>>> h2.diff(h1)
Summary of difference operation (A-B).
        Count     Size
  A    204310 17394824
  B    204296 17393604
  A-B      14     1220  =   0.00701 % of B

Differences by kind, largest absolute size diffs first.
 Index  Count     Size  Cumulative  % of B Kind (class / dict of class)
     0      3      468       468   0.00269 str
     1      2      272       740   0.00425 dict (no owner)
     2      2      152       892   0.00513 ubuntuone.syncdaemon.marker.MDMarker
     3      1       92       984   0.00566 ubuntuone.syncdaemon.action_queue.Upload
     4      1       56      1040   0.00598 unicode
     5      2       56      1096    0.0063 ubuntuone.syncdaemon.logger.mklog
     6      1       52      1148    0.0066 ubuntuone.syncdaemon.action_queue.MakeFile
     7      1       36      1184   0.00681 types.MethodType
     8      1       36      1220   0.00701 ubuntuone.syncdaemon.sync.FSKey
     9      0        0      1220   0.00701 dict of ubuntuone.syncdaemon.event_queue.MyReader
    10      0        0      1220   0.00701 ubuntuone.syncdaemon.event_queue.MyReader
Seguí haciendo unos experimentos, y llegó un punto en que ciertos elementos no deberían estar más en memoria, pero estaban. Lo más piola es que pude ver dónde:
>>> markers = h5[39]
>>> markers
Partition of a set of 241 objects. Total size = 18316 bytes.
 Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
     0    241 100    18316 100     18316 100 ubuntuone.syncdaemon.marker.MDMarker
>>> markers.referrers
Partition of a set of 2 objects. Total size = 6332 bytes.
 Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
     0      1  50     6280  99      6280  99 dict (no owner)
     1      1  50       52   1      6332 100 collections.deque
>>> markers.referrers[0].referrers
Partition of a set of 1 object. Total size = 136 bytes.
 Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
     0      1 100      136 100       136 100 dict of ubuntuone.syncdaemon.action_queue.DeferredMap
>>> markers.referrers[1].referrers
Partition of a set of 1 object. Total size = 520 bytes.
 Index  Count   %     Size   % Cumulative  % Kind (class / dict of class)
     0      1 100      520 100       520 100 dict of ubuntuone.syncdaemon.file_shelf.LRUCache
El segundo es un caché, y está todo bien, está acotado y cuando se suelte, se volarán. Pero el primer es un leak (del código nuestro, no de Python), y me confirmó lo que yo había visto por inspección del código.

Buenísimo el Heapy, :D

Arrancamos con las charlas en La Tribu

Python — Lunes 16 de Agosto de 2010, 20:37

Las dos primeras charlas ya fueron el mes pasado.

La primera fue "Introducción a la Programación", charla que estrenaba completamente, y que implicaba la dificultad adicional del tema: no era Python, era "programar", un tema difícil de explicar, y más aún de mostrar en slides para un público masivo.

La segunda fue "Introducción a Python". Aquí yo dí la misma charla de siempre, pero en muchísima más profundidad. Tomás Zulberti completó al final hablando sobre la Biblioteca Estándar, y Diego Mascialino cerró con un ejemplo de procesamiento de números.

Las dos charlas fueron un éxito bárbaro: tuvimos un lleno completo en el aula, ¡la gente se amontonaba en el pasillo! Y lo mejor, es que se fueron todos contentos, :D

Los slides y los videos de los dos días están en la página de las charlas , así como también la planificación para el resto del año.

Este sábado, tenemos "Introducción al Desarrollo Web I", por Alejandro J. Cura, a la mañana de 10:30 a 12:30, y "FooBar (virtualenv, buildout, nose)", por Roberto Alsina, a la tarde de 13 a 15 horas. La entrada es libre y gratuita. Se pasará una gorra voluntaria durante los cursos para hacer frente a viáticos y gastos generales.

Vengan con tiempo, para conseguir buenas ubicaciones. Los esperamos en La Tribu, Lambaré 873, Ciudad de Buenos Aires.

Charlas Abiertas de Python en La Tribu

Python — Viernes 16 de Julio de 2010, 20:13

Python Argentina y Colectivo La Tribu se enorgullecen en presentar el Ciclo 2010 de Charlas Abiertas de Python.

Distribuidas a lo largo de varios sábados del segundo semestre del año, cubren temas desde lo más principiante a temas muy avanzados, cerrando incluso con un taller.



Las charlas serán dadas en La Tribu, Lambaré 873.

La entrada es libre y gratuita. Se pasará una gorra voluntaria durante los cursos para hacer frente a viáticos y gastos generales.

No hace falta registrarse, pero vengan temprano para asegurarse un lugar porque los cupos son limitados.

Para más información y actualizaciones, pueden consultar la página oficial de las charlas.

Por favor ayuden con la difusión! Si quieren pueden imprimir este folleto y pegarlo en vuestros lugares de trabajo y/o estudio. Muchas gracias!

Entrenando al pequeño

Python — Sábado 24 de Abril de 2010, 06:41

Felipe enojado

Community Award

Python — Viernes 19 de Marzo de 2010, 18:05

Y cuando uno cree que ya nada lo sorprende, va y recibe un premio de la Python Software Foundation!

El premio de Facundo Batista fue por organizar PyCon Argentina y la comunidad argentina de Python, así como también por sus contribuciones a la biblioteca estándar y por su trabajo en traducir la documentación de Python.

¡Estoy *tan* contento por esto!

:D

PyCamp 2010

Python — Lunes 15 de Marzo de 2010, 04:54

Viernes

En realidad llegamos a Veronica el jueves. Viajamos a la tarde/noche con Alecu, Ricardo y Joac, para llegar, cenar, acostarnos, y levantarnos temprano para armar lo que era energía e internet.

El plan estuvo muy bien, nos levantamos casi a las ocho, desayunamos, y empezamos a armar todo... para cuando empezó a llegar la gente, ya teníamos todo andando.

La mañana estuvo tranquila, charlando de cosas varias mientras iban llegando los participantes, y recién luego de comer arrancamos con la organización del schedule para todos los días:

Schedule de PyCamp 2010

El primer tema me interesaba (tower defense); no para programarlo, sino para participar en la charla inicial. Las ideas estuvieron muy bien, veamos como evoluciona.

También participé de la segunda sesión (hacer un server XMPP en Twisted), pero llegamos a la conclusión que no tiene sentido ponernos a hacer todo ese trabajo, porque para las funcionalidades locas que quisieramos implementar, es suficiente con hacer un cliente o un componente (y ya hay soporte para eso en Twisted).

Luego me pegué un regio baño, y llegó la hora de la cena. Y con el fin de la comida, pasamos a la parte de juegos.

Como siempre, se armaron distintos grupos jugando a distintas cosas. Yo jugué al Settlers of Catan con Perrito, Robert, y Luciano. Un rato después de que terminamos de jugar (y de que nos habíamos terminado el Legui), llegó Moni con Felipe, que venían de Buenos Aires en el auto de John, así que fuimos a terminar de armar las cosas en la habitación y a dormir, que eran como las dos de la mañana.


Sábado

Por suerte no arrancamos temprano, ya que el desayuno es a las nueve de la mañana, así que me levanté ocho y media, y a las nueve estábamos desayunando con la familia.

Durante la mañana no hice nada específico, más que nada charlas, cargué muchos bugs de Enjuewemela, y le eché algo de laburo a Typus Pocus: nos fuimos de Google Code, ahora estamos en Launchpad, y empecé a darle forma para poder utilizarlo de ejemplo en la clase de empaquetamiento de Luciano (ver más abajo).

A las 13 almorzamos, y luego jugamos a la pelota como media hora (sí, ¡deporte!). Cortamos a las 14 porque arrancaba la sesión de Lalita. Nos juntamos obviamente al aire libre (estabamos la mitad transpirados por el fúbol), y charlamos cosas para hacerle. Me anoté un bug doble (o dos bugs muy parecidos, como quieran), pero antes de empezar a hacer eso me fui a bañar.

Familia en PyCamp

Cuando salí encontré que ya había empezado la charla de cocos2d, y me metí para la charla/discusión sobre qué era y cual es el futuro (llegamos a la conclusión de que lo que habría que hacerle a la biblioteca es: mejor manejo de sonido, implementar colisiones, mejor documentación, y bugfixing en general).

La noche pintaba tranqui, porque no habíamos podido armar el fogón entonces no sabíamos que íbamos a hacer con la reunión de PyAr. Pero al final la hicimos, repartimos merchandising que Nati y Matías habían traido de USA, repartimos tutoriales impresos para que lleven a las Universidades, hablamos del PyCon en Argentina pasado y futuro, del recién terminado PyCon USA, de Python y la evolución del lenguaje, de cómo estaba Python en Argentina a nivel laboral, etc. Muchos temas. Y terminó derivando en charlas políticas muy interesantes.

A eso de las dos y media de la mañana, luego de charlar en varios grupos y con ya demasiado vino en sangre, me fuí a dormir.


Domingo

El domingo arranqué con un poco de resaca, pero llegué bien a desayunar.

Durante la mañana estuve trabajando en Typus Pocus, para que esté listo para la clase de la tarde de Luciano Bello sobre empaquetar proyectos para Debian. Esa clase fue muy útil, y recorrimos casi todos los pasos para que se pueda meter el juego en esa distro de Linux (todavía faltan sacarle unos warnings de lintian, ya anunciaré aquí como evoluciona eso).

Luego se hizo un pequeño Bug Day de Python, en la cual muchos chicos aprendieron cómo trabajar en el proyecto de Python en sí, y cómo buscar bugs y proponer soluciones, y hasta se corrigieron un par de cosas!

Durante la tarde, también, se realizó el primer Torneo Universal de Ping Pong Durante Un PyCamp (o más fácil: TUPPDUPC). Yo perdí en cuartos a manos de (o "a paletas de") el que sería el campeón, Nico Echaniz:

Torneo de ping pong

Estuvimos también charlando un rato largo sobre el modelo del juego que construiremos durante el próximo PyWeek (el juego más grande del mundo, ¡ya les contaré cómo participar!).

Finalmente, volví a trabajar en la laptop, en el bug doble de Lalita que había comenzado a resolver el día anterior. Y estando ahí trabajando, al lado de Riq, no se bien cómo surgió pero me terminó explicando cómo se usaban matrices para resolver los cambios a imágenes (redimensionarlas, rotarlas, desplazarlas, etc.; lean esto que lo explica bien).


Lunes

Durante la mañana del último día logré corregir los bugs que venía trabajando de Lalita, antes de comer me puse a trabajar en un juego que estoy armando, Enjuewemela, un juego loco con un montón de gemas que tienden a desaparecer siguiendo extrañamente acciones del usuario.

Luego del almuerzo tuvimos una charla entre todos sobre el PyCamp mismo: cómo había sido, que cosas estuvieron mal, cuales bien, qué deberíamos corregir, y hasta terminamos tirando la idea de hacer un segundo PyCamp a continuación de PyCon Argentina 2010, en Córdoba.

Luego de esta charla seguí trabajando en Enjuewemela, hasta que se acabó el tiempo.

Ahí empecé a ordenar todo lo mío y a limpiar un poco los lugares donde habíamos trabajado, armé el auto, y emprendimos el regreso.

Trabajando

Así terminó el tercer PyCamp en Argentina, uno de los eventos de programación más interesantes que conozco, y uno de los que más cumplen a la hora de aprender y divertirse.  Todas las fotos, aquí.

Lalita liberada por primera vez

Python — Domingo 28 de Febrero de 2010, 05:45

Python Argentina se deleita en anunciar la versión 0.1.1 de Lalita.

Lalita es otro bot IRC más, uno donde es simple crear nueva funcionalidad agregando plugins fáciles de escribir.

Esta es una liberación pre-alfa, nuestra primera liberación, pero el producto entregado es bastante robusto: lo estamos usando desde hace casi un año.

Lalita está escrita con algunos objetivos en mente:
  • Twisted! (no nos gustan los hilos)
  • Enchufable: es fácil escribir nuevas funcionalidades
  • Divertirse: sí, es Python
Como se indica arriba, es realmente fácil agregar nueva funcionalidad (sólo hace falta copiar el plugin ejemplo y tocar un par de lineas), pero Lalita misma trae muchos plugins ya incluidos, entre los que se destacan:
  • freenode: Ejecuta todo el diálogo de autenticación contra los servidores de Freenode (este plugin no ofrece funcionalidad al usuario final, pero permite que Lalita se conecte a Freenode usando un usuario registrado).
  • misc: Implementa una funcionalidad muy simple: contesta "pong" al usuario cuando recibe un "ping".
  • url: Colecciona todas las URLs que se dicen en los diferentes canales, permitiendo luego buscar entre las mismas.
  • seen: Implementa dos comandos: "last" y "seen". El primero indica que es lo último que dijo un usuario, y el segundo muestra cuando un usuario fue visto por última vez (a veces ambos coinciden, a veces no).
Para más información, esta es la página del proyecto.

Repercusiones de la CDPedia

Python — Jueves 11 de Febrero de 2010, 04:41

Estos fueron algunos de los medios en Internet en los que rebotó la noticia de la edición 0.6 de la CDPedia...
  • Reparten en escuelas argentinas DVD con contenido de Wikipedia [Infobae]
  • CDPedia: una Wikipedia en CD para quienes no tienen Internet [RedUSERS]
  • CDpedia busca llevar la Wikipedia a escuelas de todo el país sin conexión [CanalAR]
  • CDPedia: Proyecto que pretende llevar la Wikipedia a los alumnos argentinos sin conexión a internet [Alt1040]
  • CDPedia 0.6 [Viva Linux!]
  • Nueva versión de la CDPedia [Dominio Digital]
  • La Wikipedia se distribuirá en CD en Argentina [WikiNoticias]
  • Lanzamiento de CDPedia 0.6, la wikipedia en CD [Barrapunto]
Pero no sólo en castellano, sino que también tuvimos noticias en otros idiomas/paises:
Ah, y también salí al aire en la FM La Tribu, en una entrevista a este respecto.

En fin, mucha presión y pilas para trabajar en una versión 0.7 que haga aún más ruido, :)

Proyectos para PyCamp 2010

Python — Sábado 30 de Enero de 2010, 05:31

Este es la lista de proyectos que quiero empujar para PyCamp 2010, sin orden en particular:
  • CDPedia: Proyecto para tener la información de la Wikipedia en castellano accesible aunque no tengas una conexión a Internet.
  • BugDay: Salimos a la caza de bugs de Python (esto seguro que será sólo medio día o un día como muuucho)
  • Lalita: Un bot de IRC donde agregar nuevas funcionalidades es muy fácil, sólo se necesita escribir un plugin muy sencillo.
  • enjuewemela: Un juego loco donde un montón de gemas tienden a desaparecer extrañamente siguiendo lo que el usuario hace.
Mi idea es trabajar al menos un rato en todos y cada uno de ellos, así que si les interesa podemos trabajar juntos (y si quieren trabajar en alguno de estos mientras yo no lo estoy haciendo, igual los ayudo, obvio).

Después de todo, son cuatro días, y no todo es Python en PyCamp (mucho mate y charla, ejercicios físicos, juegos de mesa, etc.).

Nueva versión disponible de la CDPedia

Python — Martes 19 de Enero de 2010, 19:47

Python Argentina (PyAr) se enorgullece de anunciar la versión 0.6 de la CDPedia.  Esta versión fue entregada a Educ.ar con vistas a la distribución en escuelas del todo el país, y ya está disponible para ladescarga pública.

¡Pasen la noticia!

¿Qué es la CDPedia?

La CDPedia es un proyecto del grupo de usuarios de Python Argentina para poder acceder a la información de la Wikipedia en castellano aunque no se posea una conexión a Internet.  Se puede descargar libremente de la red y grabar a CDs o DVDs para repartirlos sin restricciones.  La CDPedia funciona en cualquier computadora, ya sea que tenga Linux, MacOS o Windows como sistema operativo.

La versión 0.6 de CDPedia en DVD fue recientemente entregada para su evaluación a Educ.ar, que por medio de un acuerdo con Wikimedia Argentina y PyAr está planeando distribuir esta enciclopedia libre en todas las escuelas de Argentina.

Esta misma versión ya está disponible para la descarga pública tanto para el formato de CD y DVD.  Para mayor información e instrucciones para la
descarga, visitar la página del proyecto.

El índice de la CDPedia

Python — Martes 17 de Noviembre de 2009, 06:20

La CDPedia tiene mucha información. En su versión CD, guarda como 85 mil artículos de la wikipedia en español, en su versión de DVD los guarda todos. El acceso a cada uno está armado con una estructura diseñada a tal fin, para que sea rápida y bonita.

El problema con tanta información es la búsqueda. Hoy por hoy solamente estamos buscando en los títulos de las páginas, y así y todo es un problema... porque la mayoría de los esquemas de búsquedas están armados por palabras completas (coincidencia exacta), o por parte de la palabra, pero siempre comenzando de esa manera (o sea, buscar por "cam", encuentra "camino", pero no "videocámara"). Creo firmemente en que la búsqueda debería permitir coincidencias parciales en cualquier parte de la palabra.

Yo, en sus orígenes, armé un índice rápido y simple, porque la idea no era trabarnos ahí. Varias personas exploraron distintas alternativas, pero por h o por b, ninguna sirvió. Mientras tanto, yo fui emprolijando un poquito el índice rápido y tonto... ahora es sencillo, y aunque no trivial, hace todo lo que tiene que hacer sin consumir demasiado ni tardar demasiado.

Pero es un índice hecho en casa, y como yo no sé del tema, seguro que hay muchas soluciones por ahí que son mejores. Entonces decidí bajar la barrera de entrada para que se propongan otros índices.

Separé lo que es el uso del índice, del "motor de indexado" propiamente dicho, y a este motor le agregué casos de prueba. Entonces, cualquier persona que quiera jugar con índices, sólo necesita copiar de mi motor de indexado lo que es la API, y corriendo los casos de prueba puede saber si cumple o no con lo necesario.

La API no es complicada, se considera que las palabras (cadenas de texto) son claves, y los valores son tuplas en los que se guarda info arbitraria, y básicamente se necesita:
  • crear el índice [create()] (lo cual no tiene que ser demasiado complejo, ya que se hace una sola vez)
  • obtener todos los items guardados [items()]
  • obtener todos los valores [values()]
  • sacar un valor al azar [random()]
  • nos dice si una clave está en el índice [__contains__()]
  • nos busca varias palabras, viendo que estén todas ellas, pero buscando *exactamente* cada palabra [search()]
  • nos busca varias palabras, también haciendo un AND, pero buscando parcialmente cada una [partial_search()]
(este último punto es en el que fallan la mayoría de los índices que andan dando vuelta por ahí)

Más allá de esos requisitos "duros", la idea en general es que el índice tarde poco tiempo en buscar, y que consuma no demasiada memoria (por ejemplo: 100MB de RAM es bastante, pero aceptable...). Y otro detalle importante: tiene que ser multiplataforma... eso significa que la solución que propongan tiene que correr en Linux, Mac y Windows (esto es algo fácil de lograr si la solución es Python pura, pero también se aceptaría algo con binarios precompilados que no ocupen demasiado).

Un disclaimer: realmente no estoy buscando que me cuenten teoría de índices, que me apunten a tal o cual solución mágica, o que me traten de explicar por qué tal o cual cosa es mala idea... el objetivo acá es encontrar un índice piola (o escribirlo)... si se sienten a la altura de las circunstancias, ¡son bienvenidos a probarlo!

Desde ya, muchas gracias, :)
1 2 3 4 5 6 7 8 9  Siguiente»

Powered by LifeType