Las búsquedas son un quilombo

Python — Domingo 08 de Febrero de 2009, 15:39

Encontrar lo que el usuario necesita pero no sabe bien como expresarlo es un bardo... es más... diría que si lo resolvés bien, te llenás de guita (preguntale a Google).

Por el otro lado, entregarte un montón de información pero no dejarte buscar en ese montón, es inútil. De ahí la famosa frase "darte la Wikipedia en un CD, pero sin buscador, es darte un CD cuya mayor utilidad es ponerlo atrás de la patente para evadir fotomultas".

La solución es fácil: agregarle búsquedas a la CDPedia. Hoy por hoy ya la tienen, con un índice no demasiado elaborado sobre los títulos, pero que nos permite buscar por palabras exactas con mucha rapidez (una búsqueda por diccionario), aunque también implementé una búsqueda por palabra incompleta (aunque esto, en el modelo simple actual, con todos los datos, creo que tardaría demasiado, aunque todavía no lo probamos).

Hoy por hoy, también, la búsqueda es utilizando Unicode sin ningún tratamiento. Y aunque esto tiene la ventaja de que soportamos eñes, tildes, y letras raras (o sea, letras a las que no estamos acostumbrados los hispanoparlantes), tiene la desventaja que tenés que poder escribir esas letras (o incluso recordarlas).

Por ejemplo, si quieren buscar ... no sirve que pongan ... :

  Camión    - Camion
  Muñiz     - Muniz
  Çanakkale - Canakkale
  Ⅱ         - II


La pregunta es... ¿cómo podemos "normalizar" los términos con eñes, tildes, y letras raras, de manera que la búsqueda siga siendo por coincidencia del diccionario?

Estuve leyendo algo de Desnormalización de Unicode (acá está todo, pero también ver esto), pero no me llegaba a convencer que lo que había que hacer era eso, porque las reglas de las distintas normalizaciones no me permitían inferir un único procedimiento para lograr lo que quería hacer.

Buscando y buscando, me di cuenta que si puedo acceder a cierta info de la Tabla de Unicode sin entrar en una Normalización formal, podía tener lo que quería. El acceso a esta información desde Python es con la función decomposition(), y la regla es la siguiente: si la decomposición indica que es por compatibilidad, incluir los caracteres devueltos, pero si solamente nos está separando el grafo principal de los accesorios, quedarnos con el principal.

Lo siguiente es el código, con las pruebas para los ejemplos anteriores:

# -*- coding: utf8 -*-

import unicodedata

def _norm_car(car):
    # si es una letra simple, no hace falta normalización, nos fijamos
    # primero porque es más rápido
    if ord(car) < 128:
        return car

    # descomponemos y vemos en qué caso estamos
    decomp = unicodedata.decomposition(car)
    if decomp == "":
        # no tiene
        res = car
    elif decomp.startswith("<compat>"):
        # compatibilidad
        utiles = [x for x in decomp.split()][1:]
        res = u"".join(unichr(int(x, 16)) for x in utiles)
    else:
        # nos quedamos con el primero
        prim = decomp.split()[0]
        res = unichr(int(prim, 16))

    # guardamos en el caché y volvemos
    return res

def normalizar(palabra):
    return u"".join(_norm_car(c) for c in palabra)

assert normalizar(u"Camión") == u"Camion"
assert normalizar(u"Muñiz") == u"Muniz"
assert normalizar(u"Çanakkale") == u"Canakkale"
assert normalizar(u"") == u"II"

El costo de usar esto en el índice, en la búsqueda real, es primero al construirlo, y luego en cada búsqueda. En ambos casos el extra de procesamiento es agarrar las palabras e ir reemplazando cada caracter por lo que devuelva la función anterior. Creo que al armar el índice esto va a tardar un poco (pero se hace una sola vez), y que en cada búsqueda ni se va a notar (que es lo importante de cara al usuario final).

El resultado final sería que tenemos esta funcionalidad requerida, con un costo que podemos pagar.

Por otro lado, hay otra funcionalidad que querría tener, pero no voy a atacar ahora (posiblemente nunca, pero se los dejo por si les interesa), que es la de búsquedas aproximadas. La idea es que (por ejemplo) si busco almoada o cavra, me encuentre almohada o cabra, respectivamente. Obviamente, en estos casos lo que se hace es listar las palabras que más se parecen, ordenadas de mayor a menor similitud.

Hay formas piolas de lograr esto (creo que la mejor es usando la distancia de Levensthein, que fue sugerida por gente que sabe en la lista de PyAr). El problema que encuentro con este tipo de procesamiento, es que se pierde la coincidencia por diccionario, y hay que calcular esta distancia entre la palabra buscada y las guardadas en el momento de la búsqueda en sí.

Lo bueno de este tipo de procesamiento, sin embargo, es que nos ahorra el anterior (ya que encontraría una palabra con 'Ç' aunque escribamos 'C', sólo porque son parecidas). Anyway... se los dejo como tarea para el hogar (o para el PyCamp de este año <guiño>).

CD Pedia en Villa Ventana

Python — Sábado 03 de Enero de 2009, 12:07

Los días año2008[Navidad:] (ok, la semana entre Navidad y Año Nuevo, pero este es un post de Python, así que deberían entender lo otro, ;), nos fuimos con Moni a Villa Ventana, un pueblito a kilómetros de Sierra de la Ventana.

Disfrutando del sol en la pileta del lugar

Pero ojo, que no se confundan por estas imágenes, no todo fue descanso y relajo. También vimos algunas películas, hicimos un asadito, paseamos, y varios etcéteras.

Subimos al Cerro Bahía Blanca

Y también trabajé en la CD Pedia, un proyecto de PyAr que teníamos bastante abandonado, pero que quiero empujar para que salga este nuevo año.

A continuación les cuento una (más o menos detallada) descripción de los cambios que le hice al código, pero basicamente, lo que ahora tenemos es que luego de correr el "generar.py", se puede probar el sistema ejecutando "main.py", con página principal, búsquedas, etc. El mismo generador deja un .iso, con la misma funcionalidad que se prueba en vivo y directo.

También creé una lista de correo para toda discusión sobre este proyecto, y agregué algunos puntos a los issues del proyecto.

Tónces, los cambios:

Paqueticé algunos directorios, y cambié la forma en que se importaban los módulos de los mismos.  También cambié algunas cosas de lugar, todo orientado a que se pueda probar el server sin tener que armar el .iso (si se ejecuta main.py luego de generar.py en los directorios de desarrollo se puede probar todo e ir corrigiendo cosas 'live', sin la complicación de montar el .iso, tener que probar desde ahí, y que los cambios allí no son de producción).

Renombré 'pasos.txt' a 'README.txt', para una más fácil exploración, con instrucciones claras de cómo usar el proyecto en el estado actual.

Cambié la interacción entre los procesadores y quien los llama: ahora los procesadores NO tocan el 'resultado' del WikiSitio, ya que esto hacía que se pierda el control del mismo y aparezcan páginas espureas al final.  Ahora cada procesador devuelve dos cosas: el puntaje de la página que procesa, y una lista de tuplas (otra_página, puntaje) en caso de asignar puntajes a otras páginas.  En caso de querer omitir la página que se le ofrece, el procesador debe devolver None en lugar del puntaje.

Corregí muchos acentos, y normalicé muchas cosas a UTF-8 (había todo un quilombo de encodings, y creo que no solucioné todo), y llevé algún archivo de DOS a UNIX a nivel de fin de línea.

También corregí mucho sobre estilos, tratando de ir hacia la PEP 8 (muchas lineas se pasaban de las 80 columnas, espacios entre los '=', espacios entre el último caracter y el fin de linea, etc.).

Limpieza de debugs: comenté algunos prints, aclaré otros (poniéndole algún título para reconocerlos), saqué algunos repr() (pasé a encodear la info), etc.  Ahora es posible hacer un '> out.tmp' para poder estudiar mejor la salida de todo si se dejan algunos prints que generan mucha info.

Normalicé algunas cosas a nivel config.py: saqué info que no se usaba más, y agregué otras variables necesarias.  Como ahora todo funciona tanto desde adentro del .iso como en el entorno de desarrollo, algunas variables cambiaron en el config.py, y hay un config.py que se crea explicitamente para el .iso.  También hice que algunas variables dejen de viajar como locas entre funciones, y se tomen directamente del config.py (¡ya estaban allí!).

Lo que se toma en cuenta para generar el .iso ahora se toma desde un directorio, no en función de una variable de config: esto permite realizar pruebas mejores a nivel de qué se pone para armar el disco.

Agregué más control de errores donde me fue necesario para depurar los problemas que había (faltaría agregar bastante más).

Tenemos un directorio nuevo, 'utilities', con pequeñas aplicaciones.  Por ahora hay dos solamente: 'verComprimido.py' que nos abre y muestra un .odp, y 'verIndice.py' que nos abre y muestra los archivos de índice creados.  Ambos los armé para mejor debugging.

A nivel del generador de índices, lo corregí en función de los últimos cambios en la etapa de procesamiento, y agregué alguna que otra función útil.

Corregí y cambié algunas cosas en server.py en función de todos los otros cambios: estructura de directorios, índice, decompresor, etc.  También limpié algunas cosas, pero en general no hice ningún cambio importante de funcionalidad más que lo explicado en el siguiente párrafo.

El server.py ahora tiene una página principal adentro, que es usada como punto de partida para ofrecer las distintas funcionalidades, y como punto de retorno si hay algún error.  Esta página hay que hacerla linda en un futuro, ;)

Le agregué al generar.py una opción '--no-iso', útil para generar sólo la info necesaria para probar todo, sin armar el ISO final.

Largamos PyConAr 2009

Python — Jueves 04 de Diciembre de 2008, 09:18

Ok, el nombre no está del todo claro todavía, ese no es muy lindo, pero ya arrancamos con la primer conferencia nacional de Python en Argentina. El nombre viene del término "PyCon", que es el que se utiliza en todo el mundo para este tipo de eventos.

No vamos a discutir toda la organización en la lista de PyAr, sino que abrimos otra, a la cual pueden anotarse todos lo que les interese laburar en la organización del evento.

Por otro lado, tenemos un wiki en el que hicimos una gran lista de cosas que hay que hacer. Son todos títulos por ahora, pero hay que entrar en el detalle y abrir tickets de cada punto hasta que lo resolvamos.

¡Más novedades en el próximo boletín!

3ras Jornadas Python en Santa Fe

Python — Domingo 12 de Octubre de 2008, 19:38

Llegamos el viernes 3 a la noche, luego de un viaje largo, agotador, pero entretenido: mucha charla de mil temas, como siempre en estos viajes.

Lucio se nos había adelantado unos kilómetros (en mi auto íbamos Nubis, eromirou, Chaghi, y el que suscribe), y cuando entramos en Santa Fe pegamos un par de vueltas, y tuvimos que hacer un llamadito para que nos ubiquen, pero luego llegamos bien a lo de Nico César, donde estaban todos.

Ahí comimos, bebimos, charlamos, y nos divertimos muchísimos con las historias de Nico sobre su trabajo. Luego partimos para la casa de Humitos donde pasaríamos la noche él, Karucha, Nubis y yo.

Al otro día, Sábado 4 de Octubre, nos levantamos tempranito, baño, desayuno, y auto hasta la Universidad Tecnológica Nacional, frente al río, mismo lugar donde se habían desarrollado las dos anteriores jornadas.

Mi charla era la primera, así que luego de armar la Cartelera de Trabajos preparé la laptop y me dispuse a dar la charla. Faltaban unos veinte minutos para comenzar, así que aproveché y le mostré a la audiencia dos juegos que me habían quedado en la máquina luego del último PyWeek: aquel donde participé (Gauchito Gil vs The Devil), y el que hizo Riq).

Luego vino Darni, mostrando cómo Hacer juegos en Python es fácil, charla muy bien armada, y para cerrar la mañana tuvimos a Nico César enseñando a parsear HTML (Beautiful Soup: robando HTML con guantes blancos). No lo tenía de showman a Nico, la verdad es que sus charlas son muy divertidas... incluso aunque no te guste el tema en particular que está mostrando, seguro te vas a reir bastante.

Almorzamos organizadores, disertantes y amigos todos juntos en la misma facultad, y le dimos paso al bloque de la tarde. Al contrario del bloque de la mañana, en la tarde hubieron dos series de charlas paralelas. El primer turno no me interesaba demasiado, así que estuve boludeando, pero luego ya me metí nuevamente en el auditorio, porque arrancaba la charla de Lucio sobre Cocos2D. Siempre me gustan las charlas sobre esta tecnología, y esta vez no fue la excepción.

Justo después de Lucio iba yo nuevamente, con Entendiendo Unicode. Y luego de la misma, vinieron las primeras Lightning Talks en Argentina. Que bueno que los organizadores se animaron a realizarlas, porque son buenísimas... pero son bastante complicadas de coordinar, porque son charlitas de cinco minutos, y no es fácil estar cambiando el disertante cada cinco minutos (por el tiempo entre disertante y disertante, ¡y que termine en cinco minutos!).

Luego, el cierre. Se sortearon algo de merchandising que había yo mandado alguna vez a Santa Fe, se dijeron algunas palabras, y nos terminamos de relajar todos. Juntamos las cosas, y arreglamos encontrarnos más tarde en el bar de la terminal de ómnibus, para terminar el día con alguna actividad social.

No fuimos directamente, sino que estuvimos algunos un rato en lo de Humitos, descansando, y luego sí partimos para la terminal. Terminamos siendo como 30, pero no hicimos reunión ni nada formal: sólo charla, cerveza, charla, cerveza, y así. Luego de dos o tres horas, la gente comenzó a partir, y algunos decidimos seguirla en algún pub o boliche.

Esta vez fuimos de nuevo a lo de Humitos, pero más que nada para dejar el auto, y fuimos al centro. La verdad, no fue una buena experiencia: estuvimos media hora pegando vueltas a ver donde entrábamos, luego creímos encontrar algo potable pero nos equivocamos, y luego de estar una hora ahí nos rajamos. Leo, Nubis y Humitos se quedaron pegando vueltas, pero con Karucha nos fuimos a dormir.

Al otro día, nos levantamos, desayunamos tranquilos, y partimos hacia lo de Cachito, donde comimos unos pescados que estaban bien, y una boga a la parrilla que estaba sencillamente espectacular. Luego la típica de ir a tomar un helado (yo no, porque no daba más), y ya pegamos la vuelta.

Python 2.6 y Santa Fe

Python — Viernes 03 de Octubre de 2008, 08:55

En nombre del equipo de desarrollo de Python, estoy feliz en anunciarles la liberación final de Python 2.6. Esta es una versión lista para producción de lo último en la serie Python 2.

Hay nuevos módulos, muchas características nuevas, mejoras, correcciones de bugs, y otros cambios en Python 2.6.  Pueden mirar la página de "What's new" para detalles, así como también la PEP 361.

Python 2.6 es compatible para atrás con versiones previas de Python, pero tiene varias herramientas y características que los ayudarán a migrar a Python 3. Cuando fue posible, se agregaron características de Python 3 sin afectar el código existente. En otros casos, las nuevas características pueden activarse usando los imports de __future__ y parámetros al ejecutar Python.

Python 3.0 está actualmente en estado de Candidato de Liberación, y estará disponible en unas semanas. Tanto Python 2 como Python 3 serán soportados en el futuro previsible.

Pueden descargarse de la página de Python 2.6 las fuentes, instaladores para Windows, e imágenes de disco para Mac. Si encuentran bugs, pueden reportarlos aquí.

Por otro lado, les cuento que hoy mismo a la tarde partimos para Santa Fé, en cuantiosa caravana (bueno, dos autos, pero bien llenitos, más gente en micro), a las 3ras Jornadas Python en Santa Fe a sucederse en el Auditorio de la Universidad Tecnológica Nacional de dicha ciudad.

La jornada en sí es mañana, sábado. Hoy viajamos, mañana está la jornada durante todo el día, habrá algún evento social a la noche (¿sprint? ¿reunión de PyAr?), y el domingo almorzaremos en lo de Chiquito (un clásico), y ya nos volvemos, :)

Scripteando la nave espacial con Python

Python — Sábado 20 de Septiembre de 2008, 06:28

Casi dos años atrás (14 de Noviembre del 2006), Nicolás Giorgetti comentaba en la lista de PyAr que iba a "...ver como paso las fórmulas (quiero calcular Pi desde varias fórmulas posibles) a python.... espero q me ande! (y no queme el micro en el proceso :P)".

A ese mail, yo contesté con algo que titulé como está titulado este post, y quedó ahí. Hoy estuve viendo este post de Luciano Bello, y tuve la idea de rescatar ese mail mio, y ponerlo acá. Va casi sin modificaciones, lo único que hice fue agregarle una parte en bastardilla que indica qué fórmula usé.

Disfrútenlo, :)


Bueno, esto me gusto, :p

Me puse a verlo, e hice el programita que adjunto, usando Decimal, ;)

Si al programa le pasamos un parámetro, setea la precisión del contexto con ese número, si no le pasamos nada, deja el default.

Lo interesante es que me puse a ver con qué precisión calculábamos el perímetro de la galaxia (sí, de la galaxia), teniendo el radio de la misma, en función de la precisión de Decimal usado. El radio de la galaxia es aproximadamente cien mil años luz (el año luz es la distancia que recorre la luz en un año; teniendo en cuenta que la luz hace casi trescientos mil kilómetros por segundo, un año luz es mucho).

Busqué un algoritmo, lo codeé, usando unas fórmulas derivadas de una teoría de multiplicaciones complejas de curvas elípticas descubiertas por S. Ramanujan, aunque la fórmula usada en particular aquí fue descubierta por los hermanos Chudnovsky.

El programa basicamente calcula pi *muchas veces*. Lo calcula con una pasada, lo calcula con dos, con tres, con n, hasta que al aumentar una pasada, para la precisión dada, no hay diferencia. Tener en cuenta de que esto lo puedo hacer porque tarda poco, :)

De los tanto que probé, resultado interesante:

- Precisión de Decimal: 100 (si, cien digitos de PI)

- PI calculado:
3.141592653589793238462643383230971619092801162306759501384170438505849206906727811645883901478701687

- Error al calcular el perímetro de la galaxia: 4e-78 metros

Teniendo en cuenta de que un electron mide aprox 5e-11m, la precisión es considerable

Y el tiempo de cálculo, para los 100 dígitos en la última pasada de N vueltas, es de 74 milisegundos. Eso es para los que dicen que Decimal es lento, :D

Es por eso que digo que podemos scriptear la nave espacial para hacer los saltos en el espacio usando Python, y Decimal, :D.

Se fué otro PyWeek

Python — Lunes 15 de Septiembre de 2008, 11:50

Este fin de semana terminó otra edición de la competencia mundial semestral de hacer un juego en Python en 7 días.

El objetivo de mi equipo fue, con la excusa de hacer el juego, explorar dos técnicas/conceptos. El primero era armar un diseñador de animaciones de esqueletos, y el segundo era construir un motor de inteligencia artificial para jugar contra la máquina.

Con Lucio, la noche del sábado, madrugada y domingo, armamos una versión completa del animador de esqueletos. Luego él le agregó en la semana un editor para superponer skins a ese esqueleto, pudiendo armar animaciones completas de personajes, con sólo ponerlos en distintos tiempos, en distintas formas. La verdad, quedó buenísimo, espero que eso pase a formar parte de Cocos en algún momento...

El editor en acción

Como el tema del juego involucraba cuerdas, lo que hicimos fue una pelea de marionetas. A nivel de AI (artificial intelligence), el juego se basaba en entrenar a un aprendiz peleando contra él, y luego mandarlo a pelear contra nuestros enemigos.

La temática del juego era gauchesca: el Maestro Titiritero es el Gauchito Gil, y tiene que entrenar al aprendiz para que pelee con distintos gauchos, finalizando con el diablo mismo (¿se terminaría la "luz mala"?):

Nuestro aprendiz peleando contra el Diablo

Más allá de esos dos grandes features del juego, volvimos a tener gente importante laburando en arte, tanto gráfica como sonidos. Les dejo, como ejemplo, el fondo de pantalla del menú del juego, pero igual hay muchas otras perlas, como la secuencia semianimada inicial, el malambo vocalizado por Leíto, y cosas así...

Fondo del juego

El juego, más allá de todo lo aprendido, está bien. Veremos qué sucede en un par de semanas, cuando se terminen las votaciones. Les dejo el enlace al juego, para que lo prueben...

8vas. Jornadas Regionales de Software Libre

Python — Domingo 24 de Agosto de 2008, 18:34

Miércoles

Llegué a las 9, media hora más tarde de lo que quería, y elegí el lugar para poner el stand de PyAr en el único lugar que quedaba libre, :p.

Me puse a preparar un poco el stand, y a darle una mano a Gacq con las remeras de Organización. Estuvimos laburando bastante con Alecu, quien llegó tempranito, para armar todo el stand: poner la bandera, armar la cartelera de trabajos, desparramar los folletos, poner los avisos del sorteo de libros, etc...

No llegué casi a terminar de sentarme en el stand, que tuve que salir corriendo al aula 3.5, porque daba mi primer charla ("Entendiendo Unicode"), y porque estaba a cargo del aula para mi charla y la próxima. El aula era chica, y el proyector apareció enseguida, pero el cable de energía era corto y no llegaba al tomacorriente de la pared. Esperé un rato, pero como no me conseguían un alargue, bajé corriendo y saqué mi zapatilla (que la tenía en el stand), y usé eso.

Mi charla estuvo buena. Era la segunda vez que la daba, pero había incorporado un montón de mejoras que me había pasado Achuni, así que fue más coherente internamente, expliqué de entrada dudas que podían surgir, y llené bien la hora de charla, con preguntas y todo. No se cuanta gente vino, pero el aulita estaba llena, :)

Al terminar, me quedé ahí esperando que venga el próximo disertante, pero enseguida vino José (que era el coordinador del piso), a avisarme que el disertante se había equivocado de sede de la Universidad, e iba a llegar al rato. Así que nos quedamos charlando con la gente, pero a los cinco minutos el proyector, sin avisar ni nada, dejó de emitir luz, y no logramos que volviera a funcionar correctamente. Supusimos que se había quemado, o algo, especialmente porque escuchamos un ruido feo y uno de los chicos dice haber visto un fogonazo en el interior del aparato...

Lo llamé a José, los chicos se movieron con la eficiencia acostumbrada, y a los pocos minutos ya teniamos un reemplazo del proyector, incluso antes que llegara el disertante, el cual finalmente llegó unos 25 minutos tarde. Conectó su laptop, y luego de 10 minutos decidió que su máquina no iba a funcionar correctamente con ese proyector, y yo decidí prestarle la mía... para lo cual me tenía que pasar su charla, tarea en la que se demoró 5 minutos, también. Terminó arrancando menos veinte, pero un organizador nos avisó que podíamos extendernos hasta y cuarto, así que finalmente pudo dar algo de contenido.

Yo bajé luego al stand, y estuve ahí charlando con gente, entregando folletos, haciendo preguntitas Python para entregar los números del sorteo de los libros... bah, todas esas tareas que uno hace cuando está en un stand. La cuestión es que antes de que me diera cuenta era la hora para mi próxima charla, y me había perdido el almuerzo.

Subí al piso diez, donde tuve la buena sorpresa de que el aula era bastante grande (menos mal, porque metí 80 personas, :D ). El problema, en este caso, fue que no apareció un proyector hasta luego de media hora, así que estuve charlando generalidades primero, y dando la charla rápido después, pero estuvo todo bien, y la gente se fue contenta. Incluso me quedé como media hora de más charlando y contestando preguntas en el pasillo.

El público de mi charla, antes de que sigan llegando...

Más allá de que estuvo Raymond Hettinger en mi charla, :), tuve una experiencia loca: en la charla genérica que tuve en la primera hora, me preguntaron cómo había conocido Python. Estaba contestando la pregunta, y justo en el momento en que digo "...y entonces, luego de mi mala experiencia con Perl, viene un compañero de trabajo y me pasa el Tutorial de Python...". En ese *exacto* momento, entra por la puerta Ramón Franco, *ese* compañero de trabajo. Fue tanta la casualidad, que juro que busqué la cámara oculta...

Luego bajé al stand, me relajé, hice un mate como para almorzar algo (sí, a eso de las cuatro), y me quedé ahí charlando y leyendo algunos mails hasta que se hizo la hora de irnos, y tuvimos que despejar todo.

Me comentaron que se juntaban en una pizzería cercana, así que luego de una pequeña reunión entre los organizadores, arranqué para allá. La idea era quedarme diez minutos, porque estaba filtrado, pero me senté, trajeron cerveza y comida enseguida (después me enteré que era un menú fijo), se armó la charla y me terminé quedando como dos horas. Igual llegué a casa apenas pasadas las diez, lo cual estuvo muy bien porque estaba bastante agotado.


Jueves

Arrancamos temprano, pero más tranquilos. Fuí el primero del stand en llegar, así que luego de acomodar un poco las mesas me puse a ayudar a los chicos de Organización, llevando algunas cajas, preparando la mesa de registración, etc.

Como a las nueve y media ya me senté en el stand, porque empezó a entrar el público, y ya al toque comenzaron a caer todos los del grupete de Python. Tomamos unos mates, charlamos mucho entre nosotros y con los que se acercaban, y la pasamos bien un rato.

A las 11 nos metimos en la primer charla de Raymond: "Python 3000", la cual estuvo muy buena. Lástima que tuvo que arrancar 15 minutos tardes por problemas con el equipo de audio de las traductoras, y no le alcanzó el tiempo para los últimos tres slides.

Luego salimos corriendo a la charla de Naty Bidart, sobre PyGTK y Glade. A PyGTK lo tengo, pero ultimamente estaba dudando si me convenía aprender Glade o no, así que fui a verla. La charla estuvo interesante, y bien dada, pero era bastante básica, así que aproveché mis privilegios de "comunidad", y nos fuimos a comer todos juntos (fuimos Naty, Mariano y yo a un lugar donde estaban otros "compañeritos", y justo se sumó Javi (sí, El Principito) que había llegado a la zona por la conferencia), me senté al lado de ella, y me saqué todas las dudas "más avanzadas"...

Almorzando en un lugar donde tardan bastante en traerte una tarta...

Comimos rápido porque tuvimos que esperar bastante la comida (yo una simple tarta, aunque estaba muy rica), y volvimos rápido a la segunda charla de Raymond, "Descriptor Tutorial", la cual estuvo muy, muy buena, no sólo porque los conceptos eran super interesantes (aprendimos como manejar una maquinaria de muy bajo nivel de Python), sino tambien porque Raymond es muy pedagógico.

Ya terminada esta charla, volví al stand donde nos quedamos haciendo sociales hasta que se hicieron las seis y cuarto, hora a la que partimos un grupito para el bar donde se hacía la reunión de Python Argentina. Caminamos una doce cuadras, charlando animadamente, y al llegar, subimos al primer piso y nos empezamos a acomodar, y a rediseñar la disposición de las mesas, porque no entrábamos los que ya habíamos llegado.

Encima luego siguió llegando gente, y ya tuvimos que distribuir las mesas como pudimos, porque directamente no entrábamos en el lugar mismo. Pero el corazón es grande, y se resolvió todo bien.

Apenas entramos, cuando nos servían las mesas como estaban

Fuimos 41, lo cual es un record absoluto, y ya al ver la cantidad que éramos, y lo complicado que íbamos a estar, se adivinaba que mucho no íbamos a poder charlar. Pero hablamos un poquitito de PyCon 2009, PyCamp 2009, el próximo PyWeek, y sobre las remeras 2.0. Más info, en el log de la reunión.

Después me puse a vender las remeras que había llevado y se armaron distintas charlas. Estuve un buen rato con esto, porque no sólo es venderlas, sino también controlar lo que son los preanotados, analizar si hay excedentes, cobrar, marcar la venta, y todo complicado porque hay 14 tipos de remeras distintas (entre los distintos tamaños y colores). Pero estuvo todo bien.

Luego Marcelo Fernandez sacó el tema de las Certificaciones de Python, sobre lo cual hubo un thread hace poco en la lista de PyAr, y pegué un par de gritos para que los que se interesaban en el tema nos juntaramos a un costadito para poder hablar. Igual la gente estaba en otra, y no se cuanto me escucharon, pero se armó una charla piola en un grupito de unas diez o doce personas. En general, no nos terminamos decidiendo si las certificaciones eran algo bueno o malo, pero sí entendimos que es un tema muy complejo.

Luego vendí un par de remeras más, charlé con algunos, y luego me fui a casita a desmayarme, :p


Viernes

Llegué tempranito, como siempre, armé el stand y un buen mate, dí una mano en la Organización y me puse a escribir el blog hasta que se hicieron las diez menos cinco, cuando me fuí a ver la charla de Humitos, Alecu y Karucha.

La charla era sobre OLPC y haciendo juegos con PyGame para esa plataforma. Estuvo buena, porque revisaron muchos conceptos... pero lástima que estaba originalmente planeada como taller, pero luego se cancelaron los talleres porque la Universidad de Belgrano no proveyó laboratorios, sólo aulas, así que no se lució tanto...

Esta vez, en lugar de salir, comimos en el stand, ya que no había suficiente tiempo entre charlas como para salir a almorzar por ahí. Luego vino la charla de Humitos, sobre "Colaborando en Python". Estuvo bien, pero la tiene que rellenar con más info, y estar menos nervioso, :).

Humitos dando la charla

Como se quedó un poco corto, tuve unos minutos para bajar, y llegué bien a la charla de Raymond sobre los tipos de datos core de Python. Esta charla ya la había visto en Chicago, pero saqué más cosas nuevas, ya que es muy interesante.

Salí tarde, y me hicieron un tackle para comprar remeras, así que no llegué a ir a la charla de Achuni sobre cómo integrar información de localización con los mapas de Google, la cual me interesaba bastante. Supongo que tendré que buscar los slides por ahí, y preguntarle directamente, :)

A las cinco de la tarde estaba la plenaria de Rik van Riel (desarrollador del kernel de Linux, trabajando en RedHat), sobre por qué las computadoras se están volviendo cada vez más lentas y qué podemos hacer con eso, la cual estuvo sólo medio interesante: el tema estaba muy bien, pero el muchacho este lo hizo bastante aburrido.

Luego, la ceremonia de cierre. Habló Dax, le pasó los elementos ceremoniales a la gente de Chile para que haga la conferencia el año que viene (se hace en dicho vecino pais), y PyAr regaló los libros de O'Reilly que habíamos llevado. Luego, la foto grupal de todos los organizadores:

Los Organizadores

Y ahí terminó, sólo quedaba la joda nocturna. Esta misma recién arrancaba a las 11 de la noche, por lo que algunos nos fuimos a comer algo a la misma pizzería a dónde habíamos ido el miércoles. Cenamos, hicimos algo de tiempo, y recién luego fuimos al bar El Clásico, mismo lugar de la reunión de PyAr del jueves.

Cerveza, algo de comida, bastante joda, mucha mucha charla, y la una de la mañana que arrancó el partido de Argentina por la medalla de oro de Beijing. Yo vi un rato, pero luego levanté a Moni, que estaba durmiendo una siestita, y partimos para casa.

Otro año, otra conferencia. Otro éxito.

Mis charlas

Python — Jueves 21 de Agosto de 2008, 12:59

Como muchos me preguntaban dónde están los slides de las charlas que doy, decidí armar en la sección Enlaces de la barrita de la derecha un agrupado para Charlas donde apunté a las más interesantes que tengo.

Por lo pronto, les dejó tambien acá los enlaces para las de Introducción a Python y Entendiendo Unicode, que dí en las Regionales.

Mañana, ¡las Regionales 2008!

Python — Martes 19 de Agosto de 2008, 04:40

Mañana ya arrancamos con las Octavas Jornadas Regionales de Software Libre, donde Python Argentina tendrá un papel importante.

Como ya es costumbre, vamos a tener un Stand, donde podremos colgar nuestra bandera, repartir folletos, mostrar algunas cosas lindas, etc...

Este año, como dos años atrás, traemos a un keynote: Raymond Hettinger. El dará tres charlas, las cuales recomiendo: "Python 3000", "Descriptor tutorial", y "Under the hood - core containers".

Más allá de esas charlas, tendremos muchas que damos distintos miembros de Python Argentina, miren, miren. Yo voy a dar "Introducción a Python" (mañana mismo a la 11hs, aula 3.5), y "Entendiendo Unicode" (también mañana miércoles, a las 14hs, aula 10.1).

El jueves tendremos la reunión de PyAr número 30 (¡¡30!!), a las 19hs. Tenemos el lugar hasta las 22, pero luego la podemos seguir en otro lado si tenemos resto físico y mental... Más info, acá (¡anótense!).

Tenemos por cortesía de O'Reilly algunos libros sobre Python para regalar. Vamos a hacer un sorteo en la ceremonia de cierre de la conferencia, recuerden pasar a buscar su numerito por el stand. Antes de pasar, recuerden repasar los libros de estudio, ya que para recibir el numerito van a tener que contestar una preguntita de Python (no se asusten, son super fáciles).

Si todo sale bien, hoy me entregan las remeras 2.0. No podemos venderlas dentro de la Universidad, pero no dejen de preguntarme por ellas. Seguramente las entregaré en el almuerzo, a la salida, y en la reunión de PyAr misma...

¡Los espero!

Remera PyAr 2.0, habemus diseñus

Python — Viernes 25 de Julio de 2008, 05:17

Estamos terminando el proceso de las Remeras PyAr 2.0 que les comenté acá.

Tenemos un diseño ganador (aunque no con fondo blanco, sino de colores).

Diseño ganador

La semana que viene ya las mando a hacer, así que estamos juntando órdenes de preventa en esta página. Para anotarse allí sólo necesitan estar registrados en el sitio, pero si la quieren hacer más fácil pueden mandarme un mail a mi y yo los anoto.

Creo que llegamos a las Regionales con remera nueva, :)

Remeras PyAr, segunda versión, arrancamos

Python — Jueves 03 de Julio de 2008, 09:14

Empecé a empujar en Python Argentina el proceso de creación de las Remeras 2.0.

Vamos a seguir un esquema parecido al que se usó en el diseño de la bandera, que fue por votación. En este caso, sin embargo, vamos a hacer que cada persona que proponga un diseño cree una página en el sitio de PyAr, ponga allí una imágen con el frente y el reverso de la remera, y adjunte en la misma página (para bajarlo, pero que no se muestre), el diseño original.

El resto de la gente podrá visitar esas páginas, y agregar comentarios abajo de los diseños, de manera que el autor pueda mejorar (si quiere) su diseño. La gente, también, podrá usar esos diseños como base para propuestas propias. En general, los diseños subidos serán de dominio público.

Luego de un tiempo, se congelarán los diseños, y se someterán los mismos a votación. El que gane tendrá el honor de recibir una remera gratis, o pagar una vuelta de cerveza a todos en la próxima reunión de PyAr, según elija, :)

La fecha límite para proponer diseños es el 11 de Julio... aunque arrancó lento, espero que la gente proponga ideas. Por lo pronto, yo acabo de subir tres diseños, que nos los pongo porque quedarían chicos acá, pero los pueden ver en sus respectivas páginas [-] [-] [-]. El que reproduzco aquí es el diseño de la cuartar remera, que es muy dificil de hacer por los colores y resoluciones que implicaría... pero que me gustó mucho:

Los juegos de PyAr

Pueden ver otros diseños, más las condiciones completas del concurso, en la página principal.

¡A crear!

Powered by LifeType