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

PyCon España: ¡allá vamos!

¡De no creer! Los sueños se cumplen, los milagros existen, la gente te quiere más de lo que creés, "lo creés, lo obtenés", vos confiá...

A fines de Septiembre me voy a España. Sí, a España. Y encima voy a ser Keynote Speaker de la PyCon 2016 en Almería. Obviamente que todavía no lo puedo creer y que ya empecé a pensar/preparar la charla porque estoy muy nervioso.

Este año se cumplieron 10 años desde que conocí Python en el PyDay Santa Fe 2006 que organizaron mis compañeros de la Universidad de esa época (entre ellos Juanjo Conti y Mariano Galán -dos personas con las que hoy trabajo todos los días) y donde hubo charlas de Facundo Batista y Lucio Torre. Mis pastores desde ese día.

Durante los días siguientes a ese evento pensaba: "quiero ser como estos tipos" y obviamente, nunca llegué y ni llegaré a ser como ellos; pero sí logré ser como soy yo.

Hace casi 3 años soñé un proyecto de enseñanza, educación, descentralización del conocimiento, difusión, amistad de programadores (ni idea lo que soñaba, estaba delirando)... Un proyecto tirado de los pelos, en el que nadie creía cuando decía "voy a hacer..." pero que cuando empecé y pasaba semanas durmiendo dentro del auto, la gente decía "lo está haciendo, este tipo esta loco, pero qué groso" y comenzó a apoyarme emocionalmente, con dinero, con un espacio en su hogar, con comida y con un sin fin de etcéteras. Conocí una infinidad de gente. Muchísima gente demasiado buena y confiada. Aprendí a creer en la gente desconocida nuevamente, a entregarle todo sin un comprobante. También conocí gente mala, dañina, con malas intenciones que casi me arruina todo. Organizamos decenas de eventos por año y le mostramos "la magia de la programación" a gente que nunca lo imaginó. Estuve muy enfermo, tuve accidentes de tránsito y casi pierdo la vida en más de una oportunidad en la ruta. "No siempre la culpa es del otro", he cometido infracciones de forma inconsciente y por ser un pelotudo también.

3 años... de esto y mucho más voy a hablar en esta Keynote de PyCon España 2016 en Almería. A la cual, por cierto, estoy super cagado de ir.

¡Gracias a los organizadores por confiar en mí!


Herramientas de estilo en Python

Hoy se cumplen oficialmente tres meses que hace que trabajo en Mozio. El principio fue complicado porque me tuve que adaptar luego de más de un año de no programar profesionalmente a tiempo completo. Entre todas las actividades de adaptación, la lectura, el estudio a día completo, volver a hablar/chatear en inglés y un sin fin de cosas más; tuve que configurar mi editor de texto: Emacs.

Una de las cosas que me gustó de Mozio es que tienen una wiki con toda la guía de estilo de código de cada lenguaje en el que se programa. Entonces, obviamente, había una para Python. Luego de leerla y comenzar a seguirla (obviamente sigue PEP8, pero también tiene algunas particularidades) me di cuenta que "yo no me tengo que preocupar por eso, yo tengo que codear y lindo". Pero claro, "lindo" es relativo, está muy ligado a los gustos personales y para eso se creó la wiki: para ponerse de acuerdo.

Entonces, había decisiones sobre diferentes cosas de PEP8 y PEP257 en las que los developer de Mozio tomaron una decisión. Ahí es donde se empieza a complicar la cosa ya que necesitás recordar cuáles fueron esas decisiones que incluso pueden ir en contra de tus gustos.

Me puse a investigar cómo seguir todas estas reglas y llegué a una convinación de:

  • isort: ordena los imports
  • autopep8: fuerza al código a cumplir con PEP8
  • docformatter: aplica las reglas de PEP257 sobre los docstrings
  • unify: coherencia entre comillas dobles y simples

¿Qué hice? Como estaba configurando violentamente mi Emacs, busqué un plugin para cada uno de ellos y para el que no estaba, docformatter, me lo creé yo mismo copiando en 99% el código de autopep8.

Ahora, cada vez que guardo un archivo en Emacs se me corren todos estos pequeños programas por detrás y se me formatea todo automáticamente para cumplir con las reglas específicas de Mozio.

Por otro lado, la convención que se tomó para los docstring (en uno de los casos) por los desarrolladores no es la que la PEP257 recomienda y por lo tanto docformatter no cubría ese caso. ¿Qué hice? Lo implementé en este Pull Request y el autor, que por cierto trabaja en la NASA, lo mergió a los pocos minutos.

Nota

En la configuración de mi Emacs encontrás los archivos de configuración y parámetros que le paso a cada comando para realizar lo que yo necesito de forma adecuada.


Jupyter, no me vuelvas loco

Este es un post de mierda, pero que quizás te salve una par de horas en caso de que tengas el mismo problema: "jupyter intenta utilizar un binario de python que no existe más"

En algún momento de mi vida creé 2 virtual envs, uno con la versión de 2 de Python y otro con la 3 en los que instalé Jupyter. Luego de unos cuantos meses, borré esos dos virtual envs y volví a crear uno solo para python 3 en el que instalé Jupyer con pip.

mkvirtualenv -p python3 jupyter
pip install jupyter

Sin embargo, cuando ejecutaba jupyter notebook me daba un problema de que no encontraba el binario:

File "/home/humitos/.virtualenvs/j/lib/python3.4/site-packages/jupyter_client/manager.py", line 189, in _launch_kernel
  return launch_kernel(kernel_cmd, **kw)
File "/home/humitos/.virtualenvs/j/lib/python3.4/site-packages/jupyter_client/launcher.py", line 123, in launch_kernel
  proc = Popen(cmd, **kwargs)
File "/usr/lib/python3.4/subprocess.py", line 859, in __init__
  restore_signals, start_new_session)
File "/usr/lib/python3.4/subprocess.py", line 1457, in _execute_child
  raise child_exception_type(errno_num, err_msg)
FileNotFoundError: [Errno 2] No such file or directory: '/home/humitos/.virtualenvs/jupyter-py3/bin/python3'

Por algún motivo está buscando el binario de python3 en un entorno virtual llamado jupyter-py3 (creado hace varios meses y borrado hace unos momentos).

Luego de una tediosa búsqueda encontré un archivo (/home/humitos/.local/share/jupyter/kernels/python3/kernel.json) en una parte del caché de mi sistema con este contenido:

{
    "language": "python",
    "argv": [
    "/home/humitos/.virtualenvs/jupyter-py3/bin/python3",
    "-m",
    "ipykernel",
    "-f",
    "{connection_file}"
    ],
    "display_name": "Python 3"
}

¿Qué hice? Lo borré. Problema solucionado.


Entrevista: Fantásticas mentiras bailables

Durante la semana pasada estuve chateando un poco con "El Laucha". Un personaje mítico que conocí hace varios años atrás en un viaje de Rosario a Paraná, si mal no recuerdo. En ese entonces yo estaba con ganas de empezar a estudiar fotografía, y el flaco lo resumió en:

La fotografía es algo muy sencillo. Son tres cosas nomás: velocidad de obturación, diafragma y el ISO. El resto es ojo.

—El Laucha

Eso me quedó grabado durante mucho tiempo y finalmente le terminé dando la razón cuando estudié un poco más en serio fotografía. Me volví medio fanático de la Nikon D3000 que alcancé a comprar y me estudié todo. Bueh, esas tres cosas de técnica. Finalmente, lo que me faltaba era ojo porque de la cámara me sabía todos los trucos :(

Ese primer contacto con "El Laucha" por Facebook me hizo recordar toda esta historia y transportarme a Paraná y a las juntadas con mis amigos de circo por unos instantes. Finalmente, cuando coincidimos en tiempo pudimos chatear un poco más tranquilo e ir al grano. El motivo de la conversación: una entrevista desde un programa de radio llamado Fantásticas Mentiras Bailables donde yo debía contar un poco la historia de ser programador, circense y ahora estar viajando por latino américa. ¡Me encantó! Acepté enseguida por varias razones.

flyer.thumbnail.jpg

Flyer del día en el que salíamos al aire

  1. Iba a salir en un programa de Santa Fe, Argentina y nunca había sucedido eso.
  2. Si bien no había tenido la oportunidad de escuchar el programa con anterioridad, había escuchado hablar muy bien de él.
  3. Quería volver a charlar, aunque sea unos 10 minutos con mis amigos de esos pagos.
  4. No creo tener derecho a "decir que no" a una entrevista si alguien está interesado en lo que hacemos.

Coordinamos todo inmediatamente, a los pocos días hicimos una prueba por Skype, nos quedamos sorprendido de la buena calidad y dijimos: "Dale pa' delante que esto sale muy bien". Unos pocos días después de la prueba, intercambiamos algunas palabras más por chat y finalmente, la entrevista:

System Message: ERROR/3 (<string>, line 49)

Unknown directive type "template".

.. template:: bootstrap3/audio
   :src: entrevista-manuel-kaufmann_fantasticas-mentiras-bailables.mp3

Espero que si te habías quedado con las ganas de escuchar esta entrevista, ahora lo puedas hacer. Y si no sabías nada, te estés enterando y la disfrutes. Creo que la única persona interesada en su momento fue Juanjo, y yo le prometí que la iba a subir. Aquí está.