PyCamp 2018

Pasó una nueva edición del mejor evento del año, el PyCamp!

Como siempre, lleno de Python, pero también de mil cosas más.

A nivel Python, estuve laburando en fades un poco, pero más que nada difundiéndolo y haciendo que todos, todos, todos, estén al tanto de las bondades del sistemita... un poco denso, estuve, sí :p. También llevé como proyecto a linkode pero acá el que estuvo laburando (en la migración del mismo a Python 3) fue Matías, un capo.

También estuve en largas charlas sobre cual va a ser el futuro de la lista de correo de PyAr (estuvimos analizando opciones), y el diseño del sitio web de gestión para la Asociación Civil Python Argentina. Y después yendo y viniendo por ahí, ayudando a gente en cosas puntuales que necesitaban, charlando, aprendiendo, disfrutando.

La típica grupal

Fuera de lo que es Python o programación en sí, podemos separar las actividades en dos grupos: juegos de mesa y resto.

El primer juego de mesa al que jugué, valga la cacofonía, fue el Belfort, al cual ya jugué varias veces y me encanta. Gané por lejos. Otro repetido fue el Galaxy Trucker, pero en este si juegan Sofia o Fisa no tenés chance. Otro en el que fui vapuleado fue (nuevo para mí) el Age of War. Y también jugué al Timeline (de inventos), gané el primero, el segundo quedé como cuarto.

Actividades sociales por fuera de los juegos de mesa también hubieron un montón. Aprendí a hacer malabares rebotando pelotitas contra el piso (sólo, con dos y tres pelotitas, y grupal, de a 3, 4 o 5 personas, haciendo combinaciones superlocas, armando y desarmando coreografías, fue muy divertido). Aprendí arquería con arcos de verdad (gracias Joaco por las clases). Jugué al basquet (y me raspé una rodilla y rompí una zapatilla). Armé un campeonato de ping-pong, pero perdí en la segunda ronda, 18-21 en el tercer partido, contra el que finalmente ganó el torneo. Hicimos música a cuatro manos en un piano. Montonazazazo de actividades.

Nos agarraste trabajandoHaciendo música

Obviamente, como en todo PyCamp, también hicimos una reunión de PyAr. Charlamos sobre los próximos eventos, algunos anuncios operativos de esos días, y algunos detalles más, pero lo principal fue el balance del PyCamp: qué estuvo bueno, qué estuvo fantástico, en qué cosas debemos mejorar. Nos llevamos un par de ideas para el PyCamp del año que viene, tanto en la preparatoria de las semanas anteriores, como mejoras a hacerle al bot del PyCamp.

Como nota de color, una tarde fuimos a buscar a unos chicos que llegaban a la terminal de Baradero, y al volver nos quedamos en el barro. Estuve 25 minutos tratando de sacar el auto de donde se había empantanado (en dos lugares distintos, imposibles), y al final salí victorioso. Pero me tembló hasta el culo por un par de horas....

Los que fueron magos en algún punto del eventoAlecu y el ventilagón, que fue uno de los proyectos

También, pero más importante, quiero destacar que brillamos en nuestras métricas de diversidad (gracias PSF por las becas para esto): fuimos un 25% de mujeres, y 50% de gente que era su primer PyCamp. Un éxito.

Pero no todo es brillar, especialmente cuando se corta la luz en todo el barrio! Fueron un par de horas, cuando anochecía, pero no nos amedrentamos y seguimos pycampeando casi como si nada hubiera pasado...

Se nos cortó la luzHicimos basquet, malabares, pingpong, espadas... y arquería

Para cerrar, les dejo las fotos mías (más algunas que saqué del grupo de Telegram), las de Yami (fotógrafa oficial), y les prometo el video presentación de todo lo que hicimos (cuando José Luis lo procese, digamos todos "gracias José Luis").

Comentarios Imprimir

Relanzamiento del Blog

Entramos en la tercer etapa de mi blog.

La primera habían sido esos textos que había escrito mientras estaba en Italia haciendo el Máster en el segundo semestre del 2002, y que colgaba de un sitio armado muy a mano.

La segunda, desde el 2004 hasta ahora, con forma propiamente de "blog", soportado por un software hecho en PHP que primero se llamó "pLog", pero que luego se renombró a "LifeType", que luego de irse quedando cada vez más y más, se murió algo así como hace 5 años.

Llegó el momento de cambiarlo por algo moderno, vivo, y mantenible. Y en lo posible, lindo.

El ciclo de la vida es renovarse

No tenía demasiados requerimientos para el nuevo sistema, pero tenía que ser en Python, liviano, y que me dejara tener toda la estructura (especialmente los textos) en algún repositorio, y con un markup decente. Elegí Nikola, un generador de sitios estáticos que cumple con todos esos requisitos, y encima fue creado por un amigo.

El tema de mantener los textos de forma estándar era un tema: en LifeType se editaban los posts directamente desde la web, y como el editor fue cambiando durante sus años de vida, los formatos de los textos (el markup HTML que tenían alrededor) eran todos diferentes. Eso, sumado a que ya que migraba quería asegurarme de no dejar basura escondida, hizo que me dedicara los últimos dos años (poquito a poquito, sin que me tome demasiado tiempo, y por eso es que tardó mucho) a ir convirtiendo a mano los más de 700 posts al nuevo formato.

Como ya tenía demasiado trabajo con la migración de estos textos, y empecé a estar presionado con la migración a un nuevo sistema (porque tanto LifeType como el server donde tenía todo montado no tenían parches de seguridad hace rato) decidí tercerizar la construcción del nuevo sitio en Nikola. Así que todo esto que ven acá fue realmente construido en su mayoría por Marian Vignau del lado estructural del blog (todo lo que tiene que ver con Nikola, mostrar las propaganditas, meter el widget de twitter, etc, etc, etc) y por Cecilia Schiebel en lo que respecta a diseño y estética.

Uno de los puntos débiles de los sitios estáticos es el sistema de comentarios. Para esto traté de ir a "lo más usado", a una especie de "default en la industria" que es Disqus. Algunas desventajas tenía, como que es medio pesado, y dicen por ahí que hace mucho tracking de la gente que lo usa. Pero no tenía ganas de invertir demasiado tiempo en eso (todavía no estoy seguro de que valga la pena mantener un sistema de comentarios! ¿pensás distinto? demostralo haciendo un comentario :p ), así que intenté ir por ahí. Es más, Marian lo integró al sitio y todo, pero después me di cuenta que los nombres de los autores originales, cuando no eran 100% ASCII, estaban rotos. Y charlando con gente de Disqus me reconocieron que es un bug, y andá a saber cuando lo van a arreglar.

Así que fui por otro lado. Isso. Tiene la "desventaja" de que hay que hostearlo uno mismo, pero es simple, y me saco de encima tener que suscribirme a un servicio de terceros, que trackeen mis lectores, etc. No tenía una forma de importar comentarios que no sea de Disqus o Wordpress, pero como está hecho en Python, lo hice yo mismo (y lo propuse para que lo integren al sistema).

En fin. Bienvenidos al futuro (?).

Nos prometieron autos voladores y todo lo que tenemos son generadores de sitios estáticos

La estructura del sitio en sí tampoco cambió tanto. Seguimos teniendo el texto en el centro, con la barra de la derecha, aunque dejé ahí sólo lo que corresponde a contenido y moví otras cosas (licencia, rss, archivos, etc.) al footer. La búsqueda la provee Duck Duck Go (aunque le cambié recién el dominio de beta a final y está un poco confundido, vamos a darle unos días). Y en general debería verse bien más allá del tamaño de pantalla.

Obvio, me falta corregir un montón de cosas, algunas visibles y otras no, pero ya quería hacer la migración y anunciar esto (los últimos ~5 posts los tuve que hacer en los dos sistemas, encima que tengo poco tiempo, laburar duplicado no escala).

Cualquier detalle que encuentren o lo que sospechen que está roto, chiflen.

Comentarios Imprimir

Actualización y nuevo proyecto

fades

Después de casi un año, con Nico liberamos una nueva versión de fades.

¿Qué hay de nuevo en esta release?

  • Revisar si todo lo pedido está realmente disponible en PyPI antes de comenzar a instalarlo
  • Ignora dependencias duplicadas
  • Varias mejoras y correcciones en los mensajes que fades muestra en modo verbose
  • Prohibimos el mal uso de fades: instalarlo en legacy Python y ejecutarlo desde adentro de otro virtualenv
  • Un montón de mejoras relacionadas al proyecto en sí (pero no directamente visibles para el usuario final) y algunas pequeñas otras correcciones

Pruébenlo.

Loguito de fades :)

infoauth

infoauth es un un pequeño pero práctico módulo de Python y script para grabar/cargar tokens a/desde disco.

Esto es lo que hace:

  • graba tokens en un archivo en disco, pickleado y zippeado
  • cambia el archivo a sólo lectura, y sólo legible por vos
  • carga los tokens de ese archivo en disco

En qué casos este módulo es útil? Digamos que tenés un script o programa que necesita algunos tokens secretos (autenticación de mail, tokens de Twitter, la info para conectarse a una base de datos, etc...), pero no querés incluir estos tokens en el código, porque el mismo es público, entonces con este módulo harías:

tokens = infoauth.load(os.path.expanduser("~/.my-tokens"))

Fijate que el archivo va a quedar legible sólo por vos y no en el directorio del proyecto (así no tenés el riesgo de compartirlo por accidente).

CUIDADO: infoauth NO protege tus secretos con una clave o algo así, este módulo NO asegura tus secretos de ninguna manera. Sí, los tokens están enmarañados (porque se picklean y comprimen) y otra gente quizás no pueda accederlos fácilmente (legible sólo por vos), pero no hay más protección que esa. Usalo bajo tu propio riesgo.

Entonces, ¿cómo usarlo desde un programa en Python? Es fácil, para cargar la data:

import infoauth
auth = infoauth.load(os.path.expanduser("~/.my-mail-auth"))
# ...
mail.auth(auth['user'], auth['password'])

Para grabarla:

import infoauth
secrets = {'some-stuff': 'foo', 'code': 67}
infoauth.dump(secrets, os.path.expanduser("~/.secrets"))

Fijate que como grabar los tokens es algo que normalmente se hace una sola vez, seguro es más práctico hacerlo desde la linea de comandos, como se muestra a continuación...

Por eso, ¿cómo usarlo desde la linea de comandos? Para mostrar la info:

$ infoauth show ~/.my-mail-auth
password: ...
user: ...

Y para grabar un archivo con los datos:

$ infoauth create ~/.secrets some-stuff=foo code=67

Fijate que al crear el archivo desde la linea de comandos tenemos la limitación de que todos los valores almacenados van a ser cadenas de texto; si querés grabar otros tipos de datos, como enteros, listas, o lo que quieras, tendrías que usar la forma programática que se muestra arriba.

Esta es la página del proyecto, y claro que está en PyPI así que se puede usar sin problema desde fades (guiño, guiño).

Comentarios Imprimir

De trabajo en Hungría

Estuve una semana en Budapest, trabajando en un sprint con otros compañeros de equipo y de otros equipos, en general.

El viaje largo, pero sin sorpresas... sólo el detalle que me perdieron la valija en el viaje de ida :(. Cuando fui a hacer el reclamo, se fijaron y la ubicaron en Frankfurt (donde era la escala) y me dijeron que llegaba esa noche. Incluso me dieron un pelpa para que el hotel pueda recibir la valija por mí. Obviamente, cuando hice el checkin les comenté la situación. A las diez de la noche golpearon la puerta de la habitación y era alguien del hotel con mi valija \o/.

Así y todo tuve que salir vestido como venía (pantalón finito y zapatillas náuticas) a pasear durante la tarde... y me cagué de frío, aunque tenía polar y campera. Salimos a pegar una vuelta con Naty, Matías y Guillo, y caminamos un par de horas a la tardecita, antes de que caiga el sol, porque luego teníamos el coctel de bienvenida de la empresa. Aunque era "de día", estaba muy nublado, y eso, hacía mucho frío...

El auto tapado de hielo, ese frío hacíaEl agua se congelaba a mitad del chorro (?)

En general no paseé demasiado, porque los días eran grises y fríos, y cuando terminábamos el día laboral (entre las 17:30 y las 18) ya era de noche. Excepto el viernes, que terminamos a las 16hs, y encima salió el sol. Y el sábado, claro, que salí a pegar una vuelta durante la mañana y mediodía. A diferencia de los primeros días, ya teníamos como 12°C, estábamos como queríamos (?)

Los primeros días nos poníamos toda la ropa que teníamosNerdeando en un bar de cerveza artesanal; indoor las temperaturas eran otras, claro

El sábado hice paseo por la zona del Danubio, subí un montecito donde estaba la Estatua de la Libertad (levantada originalmente en 1947, en recuerdo a la liberación soviética de Hungría durante la Segunda Guerra Mundial, finalizando la ocupación nazi), fui al mercado central de la ciudad, y caminé bastante para un lado y para el otro.

La gente, en general, educada. La mayoría no sabe inglés, incluso en zonas turísticas y en lugares como para comer o comprar cosas "de turistas", así que a veces uno vuelve a la típica charla de señas y sonidos varios. O se termina hablando en italiano, como nos pasó en una heladería :p.

Estatua de la Libertad

Claro, los otros días también estuvimos caminando por acá y por allá, pero en general de noche y con todos los negocios (excepto los relacionados a comer y beber) cerrados... Budapest realmente es una ciudad distinta antes y después de las 18 horas (porque a las seis cierran la mayoría de los negocios, y ya es de noche...).

Pero bueno, eso obviamente no impidió que saliéramos a comer, y yo me dediqué a los gulashs. El gulash, originario de Hungría, justamente, es simplemente un estofado de carne, y de ahí salen muchas variantes... con papa, sin papa, con spätzl chicos, grandes o directamente sin nada de eso, con cebolla o sin, etc... siempre con carne, cocida varias horas, apenas picante (por eso se lo acompaña con alguna salsita para apicantarlo, como hacemos nosotros con el locro), y MUY RICO.

A varios gulashs, le entré

Todas las fotos, acá.

Comentarios Imprimir

Eventos, eventos! Python en el primer semestre

Tenemos algunos eventos de Python Argentina en el primer semestre del año. Vayamos cronológicamente.

El miércoles 4 de Abril, 19hs, hacemos un meetup de Python Argentina en Devecoop. Tendremos un par de charlas técnicas, quizás hagamos un "Consultorio Python", veremos cómo lo armamos. Si no están anotados en el meetup de Python Buenos Aires, regístrense así reciben las noticias de estos meetups y se anotan fácil y etc.

Del 28 de Abril al 1 de Mayo tenemos una nueva edición del PyCamp, nuevamente en Baradero. Ya está abierta la inscripción, considerando incluso descuentos para socios de Python Argentina. Pueden buscar toda la info en la página del evento.

También tenemos dos PyDays, ambos en Mayo. Sí, dos, por ahora... habrán más en el año. El primero en La Plata, todavía pendiente de definir cual sábado, y el segundo en Corrientes, el sábado 19. Ya les traeré más noticias cuando nos acerquemos a las fechas.

Por otro lado, estamos armando la PyCon Argentina de este año en Buenos Aires. Fecha todavía no tenemos (estamos buscando el lugar, todavía) pero será Septiembre, Octubre o Noviembre.

Todo esto es en parte gracias a la Asociación Civil de Python Argentina, que nos permite tener un marco estructural con el cual movernos y que no nos venga la AFIP a meter en cana por mover guita por ahí... así que si querés apoyarnos en general considerá hacerte socia/o vos o ayudanos pasando este folleto en donde trabajes para que esa empresa/cooperativa lo considere también. Gracias!

Comentarios Imprimir