Manuel Kaufmann (Humitos): Python For Ladies

El mes pasado, durante los días 5 y 6 llevamos adelante un curso llamado Python For Ladies en Posadas, Misiones, Argentina. Este curso salió de "una charla casual" con @EllaQuimica y @cynpy cuando estábamos en Villarica, Paraguay.

Había varios desafíos en el medio. Para empezar, nunca había hecho un curso específico para mujeres. Además, sabía que iba a ser complicado organizar el grupo siendo que "no se necesitaba conocimiento alguno" para asistir. Entonces, esto hace que las personas tengan un nivel muy dispar. En muchos casos esto complica la organización, pero por suerte creo que supimos manejarlo y dividimos a los asistentes en dos grupos: uno que se dedicó a investigar algunas librerías como PyQuery, BeautifulSoup, entre otras, para poder resolver un problema puntual que les plantié y otro con el que hicimos una especie de clase con ejercicios.

IMG_20150606_095142.thumbnail.jpg

Empezando el curso

Como siempre, en el curso probé un montón de cosas nuevas que tenía en el tintero o que no sabía cómo encararlas como docente (Jupyter, Spyder, Pysentaishon, además de dinámicas nuevas para mí, etc). Entonces, plantié que el curso no tenga estructura y que vayamos viendo lo que vamos necesitando para resolver lo que tenemos planteado como ejercicio. Y si por el contrario nos descarrilábamos, podíamos volver a seguir el curso tal cual está escrito.

Esto estuvo bueno de a ratos ya que nos permitía investigar y charlar sobre cosas que yo no había contemplado (por ejemplo, la mayoría de las chicas que fueron son genetistas) y lo hacía mucho más dinámico. Pero también, hacía que en muy poco tiempo nos vayamos de tema y tengamos que re-organizar las cosas. Sin embargo, como digo siempre, prefiero que nos descarrilemos hablando de algo que nos interesa a todos a que nos mantengamos estrictos con lo que yo llevé preparado y no sea de su interés ;)

IMG_20150606_154349.thumbnail.jpg

Foto grupal (aunque varias ya se habían ido)

Tuvimos una concurrencia de 15 chicas aproximadamente y para este curso contamos con la ayuda de Catherin Ortiz, nuestra disertante estrella del PyDay Apóstoles, ¿la recuerdan?. Yo le mandé un mail a Catherin y le pedí si podía asistir al curso como Couch y darme una mano junto con Johanna para explicar algunos temas y también para hacer asistencia cuando las chicas se queden trabadas. Catherin, no solo aceptó sino que también preparó alguito de Scrappy y les mostró a las chicas que estaban un poco más avanzadas en el tema todo lo que se puede hacer con Scrappy. ¡Una genia!

Así, trabajamos haciendo ejercicios simples, explicando cómo funciona el intérprete, para qué sirve programar, cómo es el trabajo diario de un programador y un sin fin de temas súper interesantes. A tal punto, que quizás eran más interesantes que lo que aprendieron en sí. Digo, creo que del curso se llevaron un buen punta pié inicial para sumergirse en el mundo de la programación, entendieron para qué sirve y además si puede cubrir (o no) sus necesidades como genetistas.

En lo personal, me fui muy contento con lo que sucedió. Aprendí muchísimo, reporté un bug en Spyder gracias a que algo no funcionó como esperábamos. Me quedé con mucha informacion sobre qué funcionó y qué no volver a hacer o bien cómo mejorar algo que creo yo que no funcionó. Y además, un sin fin de cuestiones de organización dentro del aula de un curso desorganizado.

IMG_20150606_122644.thumbnail.jpg

Las futuras programadoras Python

Siendo que tuvimos la mejores de las ondas del mundo desde la Universidad Gastón Dachary para llevar adelante este curso, tengo que agradecerles públicamente a ellos. Desde el día 0 que fuimos a plantearles la idea de hacer un curso y pedirles un aula, se mantuvieron en contacto directo con nosotros y nos brindaron todo lo que necesitabamos. Sí, nos mimaron.

¡Gracias a todas las chicas que fueron al curso y espero que lo hayan disfrutado tanto como nosotros! También, gracias a Catherin, nuestra disertante estrella, y a Johanna, mi co-equiper infaltable en este alocado proyecto que hemos denominado Argentina en Python.

¡Queremos más mujeres programadoras!

Manuel Kaufmann (Humitos): Guille: artista callejero

Caminando por las calles de San Salvador de Jujuy, me crucé con un artista callejero que me impactó. Era un tipo de unos 40 años (ponele) que estaba tocando la viola sentado en el banco de una esquina. En "su banco" tenía un equipo de unos 10W por dónde salía el sonido de su guitarra eléctrica, un celular con el que lanzaba una pista de blues y una batería de 12v con la que alimentaba su equipo de audio.

Claramente, estos datos los pude recolectar ya que me impactó y bajé el ritmo de mi caminar para poder escuchar durante un ratito mientras seguía mi camino...

Pasaron unos días, fuimos de un lado a otro hasta que volvimos a pasar por la misma esquina cerca de las 20hs y ahí estaba él. Tocando, sintiendo y disfrutando la gente que lo miraba y lo escuchaba muy atenta. Esta vez, no lo dudé. Me detuve, me quedé escuchando y esperando que termine el tema que estaba tocando. Ahí me acerco y le digo: "Hola, mi nombre es Manuel. Estoy viajando y trato de hacer un registro de lo que voy viendo, de lo que me lla..."

Filmá nomás

-dijo guille y empecé...

Juanjo Conti: Soledad en Santa Fe #VivirEsHoy

Anoche fuimos a ver a Soledad a ATE Casa España. El recital es la presentación del disco Vivir es hoy. Cuando saqué las entradas, hace más de un mes, mi idea era tenerlo bien escuchado para disfrutar más del show, pero se me pasó, lo escuchamos una tarde mientras Ceci corregía exámenes de matemática pero después me olvidé de seguir machacando. De hecho estaba medio perdido con la fecha, pensaba que era el 28 de julio pero los carteles en la calle me avivaron de que era un mes antes.

Después de misa y con una tormenta que asomaba, manejé hasta el centro. La dejé a Ceci en la puerta (ya llovía) y di un par de vueltas hasta que estacioné a tres cuadras. Miré el reloj: 9:05. Apuré el paso. Pero como no había comido nada paré en un kiosco a comprar un chocolate. Cuando entré, todavía no había empezado, compartimos el chocolate contentos. Luego se apagaron las luces y empezó la música.

Saqué la cámara para tirar algunas fotos pero desde la fila 16 no salían muy bien, así que me puse a filmar unos fragmentos. Luego del primero se me ocurrió una idea. Tengo un amigo, Juan, que es super fanático de Soledad. Cuando le conté que iba a verla me pidió que le guarde el ticket de mi entrada de recuerdo. Entonces ahí, luego de filmar algunos segundos de una canción, se me ocurrió que podía filmar un pedacito de varias y luego compilarlo en un video, subirlo a YouTube y mandarle el link.

¡En un momento se me quedó sin memoria la cámara! No pude grabar una de las canciones con más fuerza. Fue el segundo tema luego del cambio de ropa. ¿Alguen recuerda cuál era? (no era del último CD) Borré algunos videos que ya había bajado a la computadora y me aseguré poder grabar el final (o al menos lo que yo pensaba que era el final).

Por suerte el audio salió muy bien y con una mínima edición quedó algo presentable:

Luego de que guardé la cámara llegó la parte más emocionante. Cuatro personas subieron al escenario y Soledad cantó su Aleluya. El rockero que tenía al lado lloró a moco tendido.

Una nota final. El tecladista de Soledad, Bruno Orgaz, es del mismo pueblo que Juan y yo. Y la rompe:

Tweets:

Juanjo Conti: Screensaver Ninja

Este año estuve programando algo totalmente distinto a todos los programas que hice en el pasado: una aplicación de escritorio para Mac OS X. En el camino tuve que aprender un nuevo lenguaje, Swift, y adaptarme al entorno de desarrollo XCode.

La semana pasada se publicó la versión 1.0 de Screensaver Ninja, un protector de pantalla que permite mostrar páginas web e ir rotándolas, customizarlas con JavaScript y CSS y mantener las sesiones que se inicien allí aisladas de la de los otros browsers de la computadora.

Screensaver Ninja

Estoy muy contento desarrollándolo. Tanto el equipo de trabajo como el ambiente es muy bueno.

Algunas fotos de Screensaver Ninja en acción.

Manuel Kaufmann (Humitos): Make your GPX anonymous

Sometimes I want to make my .gpx files anonymous because it's data that I recover by myself using OSMTracker for Android and I don't want the whole world knows when I was there.

Yeah, maybe I'm a bit crazy. Nice to meet you ;)

Today, I found [1] a real simple solution for this: xmlstarlet

Once you have it installed, you can excecute:

xmlstarlet ed \
   -P \
   -N x=http://www.topografix.com/GPX/1/1 \
   -u '//x:time' \
   -v 1970-01-01T00:00:00Z \
   input.gpx > output-nulltime.gpx

And what will put 1970-01-01T00:00:00Z on all the <time> tags.

That's all! Now, they are ready to be uploaded to the OSM community and nobody will know where you was there :)

[1] https://help.openstreetmap.org/questions/2130/gpx-file-no-time-tag

Manuel Kaufmann (Humitos): OSMTracker on the road

Mapear mientras vas en el auto está completamente prohibido. Si bien no hay ninguna ley que lo prohiba, es altamente peligroso. Pero claro, cuando vas con un acompañante todo es mucho más fácil: esa persona puede ir mapeando.

Hasta ahí, genial. Pero luego te das cuenta que está todo el tiempo presionando el botón de "Grabar Voz" y menciona todo lo que pasa a nuestro al rededor. También, cada tanto se equivoca, presiona otro botón sin querer y así se pierde de mapear algunas cosas. Además, todo el tiempo mira el celular y también lo acerca a la boca para hablarle y así que la grabación salga mejor.

¡Eso ya es cosa del pasado!

OSMTracker soporta crear nuestros propios layouts haciendo un pequeño archivo XML muy sencillo. Así que, me puse manos a la obra y me hice un layout que lo único que tiene es un botón que ocupa toda la pantalla y que es super accible para presionar: no hay otra cosa. Entonces, es simplemente hacer tap en la pantalla.

one-big-button.thumbnail.png

Mi propio layout de un solo botón

osmtracker-on-the-road/driving.xml

<layouts>

  <layout name="root">
    <row>
      <button type="voicerec" label="Grabar audio" icon="mic.png" iconpos="bottom" />
    </row>
  </layout>

</layouts>

Este archivo hay que copiarlo en la carpeta "layouts" (hay que crearla) dentro del directorio de "osmtracker" en el celular. Luego, hay que ir a las opciones de OSMTracker para activar este layout.

Además, si a eso le sumamos unos auriculares manos libres (esos que tienen micrófono) ya te queda perfecto. No solo no tiene que mirar más el celular, sino que tampoco lo tiene que acercar a la boca para hablarle

Manuel Kaufmann (Humitos): Edición OpenStreetMap offline

Durante mis viajes con Argentina en Python una de las cosas que me gusta hacer es colaborar con la comunidad de OpenStreetMap. Siento que esto es bastante útil ya que estoy todos los días en movimiento y visitando lugares que, en su mayoría, no está correctamente mapeados o falta información.

Sin embargo, en la mayoría de los casos, la cantidad de información que tiene los mapas de OpenStreetMap es la mejor que tenemos disponible hoy en día. Incluso, mejor que Google Maps. Como todo, no es perfecto y siempre encuentro algo que falta: en mayor o menor medida.

Utilizo mucho osmtracker para realizar mis trazas GPS y añadir puntos a estas trazas. Luego, las importo en JOSM, las corrijo, las adapto y las subo a OSM.

El problema

Uno de los problemas que tengo con esto es que siempre necesito estar OnLine para hacer mis ediciones ya que, primero, necesito bajar la zona del mapa en la que necesito laburar. Eso es algo que no tiene ningún problema en realidad, pero para mí sí lo es. Esto es porque muchas veces no tengo internet (ya que suelo estar en lugares donde no es tan accesible) y, cuando tengo internet, necesito hacer otras cosas.

Entonces, la mayoría de las veces que tengo tiempo disponible para colaborar con OpenStreetMap es cuando no tengo internet.

Hoy, en la Python Paraguay #1 Meetup aprendí a cortar los mapas de OSM en pedazos utilizando osmconvert y aproveché ese conocimiento que adquirí para resolver este problema.

La solución

Básicamente lo que hago es, cuando tengo internet:

  1. Bajo los mapas de Latino América del mirror geofabrik

    wget -c http://download.geofabrik.de/south-america-latest.osm.pbf
    
  2. Descargo el archivo .poly del país en el que me interesa trabajar utilizando esta web: http://polygons.openstreetmap.fr/


Cuando no tengo internet:

  1. Abro el archivo .poly con JOSM.

    visualizar-poly.thumbnail.jpg

    paraguay.poly abierto en JOSM

  2. Creo una capa nueva.

  3. Dibujo un cuadrado con la herramienta "Dibujar nodos (A)" cubriendo la zona en la que me interesa trabajar dentro de ese país.

    zona-a-trabajar.thumbnail.jpg

    Cuadrado dibujado para trabajar offline en esa zona

  4. Guardo esa capa como .poly

  5. Utilizo osmconvert para recortar el mapa de South America utilizando el archivo de polígonos que acabo de crear:

    ./osmconvert \
           south-america.osm.pbf \
           -B=paraguay.poly \
           --out-osm \
           -o=south-america-my_region.osm
    
  6. Abro el archivo south-america-my_region.osm desde el JOSM y trabajo offline con los GPX que guardé con osmtracker.

    zona-offline.thumbnail.jpg

    Zona para trabajar offline (recortada del archivo de mi pc -sin conexión)

  7. Una vez finalizado el trabajo, lo guardo.


Cuando vuelvo a tener internet:

  1. Abro con JOSM el archivo que guardé.
  2. Voy a Archivo -> Actualizar Datos (Control + U)
  3. Subo los datos de la capa que agregué yo

Los agradecimientos

Esto me permite trabajar cómodo desde cualquier lado y offline sin preocuparme si voy a tener internet o no cuando llegue a un lugar donde esté cómodo y pueda trabajar tranquilo escuchando música y tomando mates :)

Por favor, dejá un comentario con feedback sobre los pro- y cons- de esta forma de trabajo y otras alternativas en caso de que conozcas.

Gracias a @51114u9, a @proyectosbeta por el apoyo de siempre en todo lo referido a OpenStreetMap y a toda la comunidad de @PythonParaguay ya que esta idea salió en la Meetup de hoy ;)

Juanjo Conti: Tarta de frutilla

Este post lleva en borrador años. Cada vez que queremos hacer esta tarta o la torta bombón o la torta de merengue, tenemos que entrar a buscar la receta de la masa. Le doy publicar así me facilito el camino para la próxima.

Esta noche hicimos con Ceci tarta de frutilla. Es la primera vez que hacemos este postre y como armamos la receta sacando ideas de varios lados, la subimos al blog para poder buscarla la próxima vez (esta era la idea original evidentemente).

Ingredientes:

  • Para la masa
    • 100 g. de manteca
    • 100 g. de azúcar
    • 1 huevo
    • esencia de vainilla
    • 250 g. de harina
  • Para el relleno
    • 1 pote grande de crema de leche
    • 5 cucharadas soperas de azúcar
    • 1/2 kg. de frutillas en lo posible del mismo tamaño.
    • 1 sobre chico (4 porciones) de gelatina

Pasos previos:

  1. Lavar las frutillas y sacarles el cabito.
  2. Cortarlas al medio y colocarlas en un bol espolvoreadas con azúcar.
  3. Guardarlas en la heladera.

Preparación de la base:

  1. Enmantecar y enharinar una tartera (usamos una de 36 cm. de diámetro).
  2. Pisar la manteca (si no está a temperatura ambiente), incorporar el azúcar y batir.
  3. Agregar el huevo y una cucharadita de esencia de vainilla. Volver a batir.
  4. Incorporar el harina y mezclar con espátula.
  5. Armar un bollo de masa.
  6. Poner el bollo entre dos films.
  7. Estirar la masa con un palo de amasar hasta superar el diámetro de la tartera.
  8. Retirar el film de arriba y dar vuelta la masa sobre el molde.
  9. Acomodar los bordes y utilizar el palo de amasar para cortar los bordes sobrantes.
  10. Retirar el film.
  11. Pinchar toda la superficie con un tenedor y marcar los bordes.
  12. Dejar reposar en la heladera media hora.
  13. Prender el horno a fuego máximo. Cuando esté caliente, poner la tartera y dejarla entre 10 y 15 minutos.
  14. Va a estar lista cuando se haya dorado. Se puede probar clavándole un escarbadientes y verificando que salga limpio.
  15. Sacar la tartera y dejar enfriar.

Preparación de la crema chantilly:

  1. Batir un poco la crema para airearla.
  2. Agregar el azúcar.
  3. Seguir batiendo hasta lograr el punto.

Final:

  1. Cubrir la base con la crema chantilly.
  2. Distribuir prolijamente las frutillas sobre la crema. Hacerlo en forma concéntrica, de afuera hacia adentro.
  3. Preparar la gelatina según las instrucciones de la caja y ponerla en el freezer aproximadamente 5 minutos.
  4. Cuando tenga cuerpo revolver bien para que quede pareja y no se endurezca y distribuirla con una cuchara sobre la tarta.
  5. Llevar a heladera.