Manuel Kaufmann (Humitos): Python en el Machupicchu

¿Qué tendrá que ver batata con luz eléctrica? -me decía mi mamá. Y bueno, tan errado no estábamos ya que unos años más tarde descubrí que con la papa uno puede encender un LED de un par de Volts.

Así mismo te podés estar preguntando vos: ¿Python y el Machupicchu? ¿Qué carajo tiene que ver?. Si estás siguiendo nuestro viaje con Argentina en Python sabrás que hace unos meses estuvimos en la cresta del Machupicchu y el Huaynapicchu, y, si has subido hasta allá, sabrás que no es una tarea fácil para hacer si lo hacés de la forma económica.

Allá arriba nos sacamos unas fotitos con la remera de Django y también de Argentina en Python, pero no por eso te voy a decir que Python estuvo ahí. Sino que, además, cuando bajamos nuevamente hacia Machupicchu Pueblo, veo que pasa un tipo con una remera de un Tux y le digo: "Hey, ¿usás Linux?". El tipo me mira como diciento "Este flaco está del tomate" y me pregunta: "Eh?". "Tu Tux, en la remera". "Ah, Linux, sí, sí. N~ao hablo españole. I'm from Brasil". "Oh, amazing and are you a software developer or so? I love Python".

"Python, ah? I've worked on yowsup. A Python client for Whatsapp. I recommend it to you."

Hoy, unos meses más tarde, necesitaba algo para enviar mensajes a muchos teléfonos de Whatsapp y me fui a buscar esa herramienta y "Oh, my god! It just works!". ¡Qué buena onda! Me resolvió mucho la forma de ponerme en contacto con las personas que se inscriben a nuestros talleres cuando no responden vía email.

Así lo estoy utilizando. Primero, nos registramos:

yowsup-cli registration --mcc 716 --mnc 06 --phone <YOUR-PHONE-NUMBER> --cc 51 --requestcode sms

Validamos nuestro número con el código que nos llega:

yowsup-cli registration --mcc 716 --mnc 06 --phone <YOUR-PHONE-NUMBER> --cc 51 --register <REGISTRATION-CODE>

Y luego, enviamos el mensaje:

yowsup-cli demos -l <YOUR-PHONE-NUMBER>:<PASSWORD-FROM-LAST-STEP> --send <DESTINATION-PHONE-NUMBER> "Hola"

FUCKING AWESOME!

Juanjo Conti: Goodreads review: Los Enigmas de los Viudos Negros (The Black Widowers #5) (Isaac Asimov)

Luego de leer dos libros de los Viudos Negros de Asimov, en el tercero la estructura que se repite en todos y cada uno de los libros es insoportable:

a) Los Viudos Negros hablan de una trivialidad
b) Cenan
c) El invitado plantea un enigma
d) Todos tiran ideas que son descartadas una a una
e) Se rinden
f) Le preguntan a Henry y este tiene la solución

Así mismo... como fan de Asimov no puedo resistir leerlos y tenerlos en el celular es muy práctico. Creo que hay unos cinco o seis libros de los Viudos Negros. Yo solo leí tres. Si consigo los otros, también los voy a leer.

Rating: 3/5

Original: https://www.goodreads.com/review/show/1462923229

Manuel Kaufmann (Humitos): Hablemos de Errante

Como todos saben, Errante es nuestro auto estrella. Sin él, las cosas serían muy diferente y el proyecto Argentina en Python probablemente no existiría. Nos ha acompañado durante más de dos años y con muy pocas intervenciones de mecánicos desconocidos en su cuerpo. Lo habitual, tareas de mantenimiento nada más y alguna que otra cosa que se ha cambiado por desgaste del mismo uso.

Ya en Abril de 2015 desde Paraguay, hicimos una campaña de donaciones que resultó ser un éxito y, no solo pudimos arreglar a nuestro querido Errante aquella vez, sino que juntamos más de lo necesario y utilizamos ese dinero para poder seguir adelante por los otros países que hemos pasado.

En esta oportunidad, nos encontramos en Trujillo, Perú y queremos aprovechar a arreglar a nuestro querido Errante aquí ya que hay un taller oficial de Peugeot -no queremos volver a experimentar lo vivido en Bolivia llevándolo a un mecánico no oficial y que finalmente nos provoque más inconvenientes. Sí, lo sabemos, llevarlo al taller oficial puede ser más caro por lo general, pero creeme que tiene mucho sentido y que al final, no hay mucha diferencia económica. Estando fuera de tu país hay que ser mucho más cuidadoso con las decisiones, las aventuras y los inconvenientes. Creeme.

Aquí en Trujillo visitamos el taller mecánico ayer por la mañana y nos dieron un presupuesto para cambiar filtro de aire y gasolina, además de hacer alineación y balanceo. Además, a eso teníamos que sumarle el presupuesto para arreglar la ventilación del habitáculo interno, ya que el ventilado no gira en absoluto -está muerto.

Hoy lo llevamos para salir a mostrarle un ruido que hacía la cubierta delantera del acompañante para que nos den un diagnóstico y un presupuesto. Lamentablemente, nos encontramos con que hay que cambiar un repuesto ya que suponen que el tiene puesto (no original por que en Argentina no se conseguía en aquél tiempo) no es el correcto, sino que le han puesto el mismo del lado del conductor y del acompañante, pero deberían ser diferentes. Por eso, nos dicen que el amortiguador quedó descentrado y hace ese ruido al pasar por un lomo de burro / rompe muelles.

IMG_20160116_095811.thumbnail.jpg

Amortiguador y soporte lado conductor visto de abajo

IMG_20160116_100730.thumbnail.jpg

Amortiguador y soporte lado acompañante visto de abajo (se puede ver claramente que no está ubicado en el centro)

Lamentablemente ese repuesto no lo tienen en stock y hay que pedirlo a Lima que estaría llegando el Martes. Además, otro problema, es que hay comprar las dos piezas (conductor y acompañante) sí o sí y suman unos USD ~200. Sin embargo, me dicen que "no es para preocuparse y que podría hacerlo cuando llegue a Guayaquil o Quito en Ecuador que también hay servicio oficial". Decidimos tomar esa opción y quedar en contacto con ellos por cualquier respuesto o asistencia que necesitemos.

IMG_20160116_155853.thumbnail.jpg

Despiece del amortiguador

Luego del problema de la ventilación me dicen que es "el módulo" de esa parte del circuíto eléctrico y que sería simplemente cambiarlo por el repuesto nuevo. Tampoco afectaría a ninguna otra parte de la electrónica y se puede seguir viajando sin problemas. Al igual que el otro repuesto hay que hacerlo importar; serían 30 días y no saben el precio aún. No podemos esperar ese tiempo ya que la semana que viene es el taller en Piura. Decidimos seguir adelante sin ventilación -nos estamos muriendo en la ruta :(

Por todos estos pequeños inconvenientes que estamos teniendo con Errante, porque lo queremos, porque queremos seguir adelante visitando más países y compartiendo Python, Software Libre y su filosofía es que te pedimos una mano con donaciones económicas. ¡Gracias a tu ayuda va a haber muchos más talleres de Django Girls, Python y muchas cosas más!

Juanjo Conti: 2 libros de cuentos disponibles para bajar en ePub

Mientras termino la edición de un nuevo libro de cuentos que se va a ir a la imprenta, publico en formato ePub, de forma gratuita y sin DRM los dos últimos libros de cuento que edité/publiqué con Automágica. Espero que los disfruten! Ideales para leer en el celular mientras hacés cola, en el subte o el colectivo:

Santa Furia (.epub)

La prueba del dulce de leche (.epub)

PS: si algo no se ve bien, avisen! Comentarios, correcciones y críticas son siempre bienvenidas!

Nota técnica

Los archivos fueron generados en base a las fuentes Latex utilizando pandoc.

Juanjo Conti: Cuentos leídos

Después de una entrevista en la radio, le propuse a los conductores que pasen un cuento mío por programa y aceptaron.

Ese mismo día pregunté en Twitter si había algún locutor/a que quiera hacerme el favor de leer algunos textos míos porque yo leo falta. Seis segundos después obtuve una respuesta. Alguien que no conocía, alguien con quien nos seguíamos desde hacía solo un día, se ofrecía para el trabajo.

Estos son los cuentos leídos que se transmitieron antes de que termine el año:

PD: estoy preparando un nuevo libro de cuentos para imprimir en febrero y ya se puede precomprar http://booklaunch.io/jjconti/carne-de-los-dioses

Manuel Kaufmann (Humitos): El subtítulo correcto sin hacer ni un click

¡Me cansé! Siempre me hichó un poco las bolas tener que ir a subdivx para buscar el subtítulo correcto para el video que quería ver, bajar ese .rar horrible, descomprimirlo y probarlo para ver si estaba bien sincronizado. Eso, no solo que llevaba un rato, sino que encima a veces estaban mal sincronizado y puteaba.

Hoy, en primer lugar uso Kodi para reproducir videos en un TV y también en la notebook. Además, de ser re-cool, me permite utilizar mi celular con Yatse como control remoto y lo veo chocho tirado desde la cama. Además, en 2 o 3 swipes me permite bajar el subtítulo del video que estoy viendo desde un par de sitios en la web.

Así y todo, todavía eso me parece engorroso. Por eso es que encontré algo más fácil y mejor aún: subliminal. Así lo uso:

fades -p python2 -d subliminal==1.1.1 -x subliminal download -v \
  -p addic7ed -p opensubtitles -p podnapisi -p thesubdb -p tvsubtitles \
  -l en -l spa <ejemplo.mp4>
-v: para que me muestre el debug del subliminal y ver si algo falló
-p: indica desde qué fuentes bajará los subtítulos
-l: lenguaje del subtítulo

Le pongo en Español e Inglés porque muchas veces no encuentra ningún subtítulo en Español y entonces, ante la necesidad, prefiero verlo con subs en Inglés. De paso cañazo, aprendo algo nuevo.

Pero otra vez, para cada archivo del que quiero un sub tengo que ejecutar este comando: ¡eso suena a script!

#!/bin/bash

# Download subtitles from all movies in a directory
MOVIE_TYPES="*.mp4 *.avi *.mkv"
FADES_BIN=/home/humitos/fades/bin/fades
PATH_MOVIES_1=$1

for MOVIE_TYPE in $MOVIE_TYPES; do {
  find "$PATH_MOVIES_1" -name $MOVIE_TYPE -type f -print | \
  xargs -I '{}' $FADES_BIN -p python2 -d subliminal==1.1.1 -x subliminal download -v \
   -p addic7ed -p opensubtitles -p podnapisi -p thesubdb -p tvsubtitles \
   -l en -l spa \
   '{}'
}; done

Y lo utilizo así:

download_subtitles.sh /media/Toshiba/series

Esto lo que hace es buscar en el PATH que le paso como primer argumento todos los archivos .mp4, .avi y .mkv de forma recursiva y para cada uno de los archivos ejecuta el comando que descarga el subtítulo.

¿Cómo funciona? ¡Ni puta idea, pero rockea!

Facundo Batista: Python y el manejo de dependencias


(there is an English version of this post, here)

Python tiene una biblioteca estándar muy extensa ("viene con las pilas incluídas"), pero es frecuente la necesidad de usar otros módulos que están afuera de la misma, casi siempre desde el Índice de Paquetes de Python (PyPI).

La manera original de instalar esos módulos es a "nivel de sistema" (sudo pip install foobar), en el sistema operativo de forma general, habilitándolos para ser utilizados por cualquier programa que se ejecute.

Más allá de necesitar permisos de root o administrador para instalar las dependencias de esta manera, el primer problema con el que nos encontramos es el de conflictos: el caso típico de dos programas que necesitan la misma dependencia pero en versiones distintas, lo cual no puede lograrse al instalar las dependencias en forma global.

Por eso es que es tan normal en el mundo de Python usar "entornos virtuales". Se crea un entorno virtual para cada programa, se instala las dependencias necesarias para cada programa en cada entorno virtual, y como lo que instalamos en ese entorno es sólo accesible desde dentro del entorno, no hay más conflictos.

En este punto, sin embargo, aparece el problema de la administración de los entornos virtuales: crearlos, instalarles cosas, activarlos para usarlos con cada programa y desactivarlos luego, recordar los nombres de cada entorno para cada programa, etc.

Para automatizar esto nació fades.

fades les permite utilizar todo el poder de los entornos virtuales sin tener que preocuparse por ellos.

¿Quieren ejecutar un script que necesita la dependencia foobar?

    fades -d foobar script.py

¿Quieren un intérprete interactivo teniendo foobar instalado como dependencia?

    fades -d foobar

¿Necesitan ejecutar el script pero con varias dependencias, alguna en una versión específica?

    fades -d foo -d bar -d baz==1.1 script.py

¿Tienen todas las dependencias en un archivo de requerimientos?

    fades -r requirements.txt script.py

Esto es sólo lo más sencillo que podés hacer con fades. Los entornos virtuales son una herramienta poderosísima, y automatizar y simplificar su uso hace que fades tenga bastantes opciones, algunas que usarán todos los días, y otras que les van a resultar muy útiles en casos puntuales.

Empiecen a usar fades de a poco (acá tienen toda la documentación) y van a encontrar que van a tener resuelto el tema de la administración de dependencias en programas y scripts, usando entornos virtuales pero sin la complejidad de tener que hacerlo directamente y a mano.