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

Aplicando rock a mi Emacs

Hace tiempo que uso Emacs. Hace no tanto tiempo que lo tengo configurado como me gusta y eso es porque nunca entendí la lógica de elisp, que es lo que se necesita saber para poder configurar algunas variables y hacer unos hook. Sin embargo, con el tiempo le fui agarrando la mano y fui pudiendo instalar a mano un montón de plugins que cada tanto, los actualizaba y alguno de ellos explotaba. Por eso, con el tiempo, se me fueron pasando las ganas de ir buscando nuevas cosas para enchular mi emacs y me dedicaba a utilizarlo como lo había dejado hace algunos años (por lo menos 2).

Anoche me dije: "voy a volver a ver qué cosas nuevas hay para Emacs y actualizar mi entorno de desarrollo". Así fue que llegué a elpy y a un blogpost de realpython.com que está genial.

Aunque no uses Emacs ni te guste, te recomiendo pegarle una mirada a ese post de Real Python ya que te puede dar algunas ideas.

Mucho de lo que cuentan ahí yo ya lo tenía configurado, pero a lo bestia: utilizando hooks y cosas raras para que funcionen y -como no sabía casi nada de elisp, estaba todo atado con alambre y a veces crasheaba como loco. No hay nada peor que estar codeando esa idea que te llevó días poder llegar a tener y que no te funcione tu editor de código como vos querés. En esos momentos, iba deshabilitando los diferentes plugins y así me fui quedando con muy pocos.

Hotkeys

Emacs es un mundo, posta. No estoy seguro si estos hotkeys son específicos de elpy, pero son los que me llamaron la atención y que voy a empezar a usar:

M-down:
M-up: desplaza la región seleccionada una línea hacia arriba o hacia abajo
M-left:
M-right: deplazan la región seleccionada un nivel en la identación hacia la izquierda o la derecha
M-z <char>: borra hasta la primera aparición de <char>
C-c C-f: busca un archivo dentro del proyecto actual (lo adivina con heurística) utilizando un poco de fuzzy
C-c C-s: hace un grep -r en el proyecto actual con lo seleccionado
M-.: va hacia la definición de la función / método / clase sobre la que tenemos el cursor
M-*: vuelve a donde estábamos antes de presionar M-.
C-c C-z: abre un intérprete de Python en un buffer o bien recupera el existente
C-c C-c: manda el buffer actual al intérprete de Python para que lo ejecute
C-c C-d: abre la documentación de Python de la función / método / clase sobre la que tenemos posicionado el cursor
C-c C-t: ejecuta los tests del proyecto
C-c C-r f: formatea el código utilizando yapf o autopep8
C-c C-r i: autoimporta módulos que falten y ordena los que ya están importados

Conclusión

Hay mucha información sobre cómo instalar estas cosas, blog posts y documentación oficial. Yo tengo hecho algo que no recomiendo porque es oldschool y ahora es mucho mejor utilizar paquetes de META.

Les recomiendo que cada tanto le peguen una mirada a la configuración que tienen de su editor de código y vean configuraciones de otros, pero no las copien así nomás, ya que de esa forma van a tener un montón de cosas configuradas que no van a saber usar. Sino que la idea es ir configurando de a poco las cosas que vamos viendo interesante y tratar de sacarle el jugo.

Mi configuración de emacs

Tengo un repositorio en Github con toda la configuración de mi emacs, por si te interesa ver algo en particular: https://github.com/humitos/emacs-configuration


Audio en RaspberryPi

La RaspberryPi se convirtió en esa cosa super poderosa que está prendida todo el tiempo y que brinda un montón de servicios. Sí, ¿para qué tener prendida mi notebook para ver un video? Para eso está kodi. ¿Para qué voy a tener un router y configurarlo extensivamente y así y todo que no sirva todo lo que quiero? Para eso está pyfispot. Y, finalmente, ¿para qué voy a tener la pc prendida solo para escuchar música? Para eso está mplayer y mps-youtube.

IMG_20160208_144255.thumbnail.jpg

La RaspberryPi colgada, como siempre...

Cuando utilizo kodi siempre lo hago conectado a un TV con entrada de HDMI, así el video y el audio se configuran solo sin ningún problema. Luego manejo todo desde el celular con yatse. Sin embargo, a veces -como ahora- no tenemos un televisor pero sí queremos escuchar música como si estuviésemos con kodi: nuestras notebooks apagadas pero la raspi reproduciendo música. Ok, instalé mplayer para eso y pude reproducir la música que tengo localmente en la raspi sin problemas. Lo único que tuve que hacer fue decirle a la raspi que quiero utilizar el Audio Jack Analógico y no el HDMI:

sudo amixer cset numid=3 1

Luego le doy permisos para usar el audio a mi usuario:

sudo usermod -G audio -a alarm

Sin embargo, como dije antes, esto me permite escuchar sólo la música que tengo localmente y con kodi nosotros escuchábamos música de YouTube también. Ahí es que llegué a mps-youtube, lo instalé y ya lo estoy usando:

~/fades/bin/fades -d mps-youtube -x mpsyt

No hace falta que diga nada más. Es muy fácil de usar y tiene una ayuda integrada.

Versión obsoleta en Ubuntu 14.04

Si estás utilizando la versión LTS de Ubuntu, es probable que tengas una version obsoleta de mplayer, por lo que debes actualizarla. Sin embargo, en mi máquina no actualiza a una versión capaz de funciona correctamente con mpsyt por lo tanto instalé mpv y lo configué en mpsyt con este comando:

set player mpv

pilas-engine: curso colaborativo

En Santa Cruz, Bolivia empecé a pensar en una idea de hacer un curso/workshop de pilas-engine colaborativo. Sí, una especie de taller como los de Django Girls que venimos haciendo, pero en el que desarrollemos un juego entre todos.

Lo que me gustaría trabajar acá es el concepto de auto-aprendizaje, trabajo en equipo y organización de un proyecto. La idea para lograr esto sería realizar un taller de un día entero de duración donde empezamos presentando pilas-engine y sus conceptos básicos, hablamos un poco de Trello para gestionar las tareas que discutiremos entre todos y finalmente github para compartir nuestro código con los demás.

Los asistentes trabajarían en pequeños grupos (estratégicamente seleccionados) en las tareas que les correspondan, teniendo en cuenta que todos estamos haciendo el mismo juego y no que cada grupo está haciendo el suyo. Lo importante de esto es que luego debemos juntar el código de todos los grupos y poder jugar todos juntos (de modo multijugador) al mismo juego que escribimos entre todos.

Como todo, esa es la idea inicial, luego habrá que ir puliéndola para que quede algo realmente hacible.

Entonces, lo primero que me puse a investigar era qué juego podíamos implementar entre todos. De nuevo, teniendo en mente que debemos programarlo en un sólo día. Ahí encontré Circle Game, que cumple con casi todas mis necesidades.

circle-game.thumbnail.jpg

Circle Game

Este juego es una versión circular de la viborita, en donde uno es un círculo y solo puede comer círculos más pequeños que uno mismo. Cada vez que come un círculo, crece un poquito más. Si un círculo más grande te toca, perdiste.

Seguir leyendo…


Me voy a República Dominicana

Todavía no lo creo. El 20 y 21 de Febrero se llevará a cabo la primera conferencia de Python en el Caribe: la PyCaribbean, ¡y yo voy a estar ahí! No sólo que voy a estar ahí, sino que voy a estar hablándole a un montón de gente sobre el trabajo que hemos venido realizando durante estos años con Argentina en Python.

No lo puedo creer por varias razones. Para empezar, nunca dí una charla de Python en una conferencia fuera de Argentina. Además, la charla va a ser sobre nuestro proyecto, algo que creé yo, que no es software y que logró captar la atención de los selectores de charlas. Y no solo eso, sino que también me otorgaron Financial Aid para que pueda asistir. Lo cual hubiese sido imposible de otra forma. Más allá del dinero, tuve que hacer muchos trámites y planear meticulosamente nuestra permanencia en los países que hemos visitado para poder obtener los diferentes permisos (tiempos de permanencia como turista) -de hecho, ayer fuimos a Ecuador únicamente por este motivo.

Entonces, voy a ir a Santo Domingo a tratar de contagiar la locura que tenemos en Python Argentina por Python, la comunidad, el compartir y que todo eso hace que haya dos tarados viajando en auto por diferentes países por más de 2 años. ¿Cómo te lo explico en 30 / 45 minutos?

La charla ya está lista. Terminada y practicada. La hice con la ayuda de todo el material que tenemos (fotos, videos, historias, experiencia) y las sugerencias de @EllaQuimica. Además de varios comentarios que he recibido a través de nuestra encuesta. De a ratos creo que está muy buena y por momentos que es una basura. Es así, los nervios y la ansiedad no me dejan pensar claramente. De todas formas, no quiero adelantarles nada para no quemar las espectativas y luego, si graban la charla, la puedan ver completa.

Viajo el 16 de Febrero de Lima, Perú hacia Santo Domingo, República Dominicana y a los pocos días voy a estar participando de una Meetup de PyLadies allí. ¡Buenísimo! Luego viene la PyCon y finalmente me quedaré unos días más para conocer un poco la ciudad, su movimiento y lo más que pueda sobre la comunidad de Python de allí. Llevo una esponja bien grande para absober la mayor cantidad de ideas que pueda. Finalmente, estaría regresando el 26 de Febrero a Lima y el mismo día viajando para encontrarme con Johanna que se queda en Perú cuidando la casa: el Errante.

Es así amigos. Siempre lo dije, "Python te puede llevar a lugares inesperados" y lo ha hecho durante mucho tiempo. Pero lo mejor de todo es que sigue sorprendiéndome, no me deja a pié y además su hermosa comunidad se comunica con nosotros para ofrecernos su ayuda cada vez que lo requerimos.

¡Gracias a ustedes!