Juanjo Conti: Primera experiencia con thewalnut.io

Esta semana se publicó la versión beta del sitio web thewalnut.io (creado por amigos de #machinalis). El sitio permite visualizar graficamente algoritmos y compartirlos con otros usuarios. Es una herramienta de aprendizaje y de comunicación. Una puede comunicar una idea de forma gráfica más fácil que con palabras o pseudocódigo. Y puede basarse en lo que otro construyó para experimentar, modificando, y así crear conocimiento.

En concreto

Ir de cero a la visualización de un algoritmo cualquiera no es trivial; es necesario llevar a cabo cuatro pasos:

  1. Describir un mundo: esto se hace mediante un DSL y require definir el estado del mundo (se hace con el keyword state y puede ir desde una variable booleana a una estructura de datos compleja), definir los roles para los agentes que interactuarán con el mundo (se hace con el keyword role, definiendo un sensor y actuadores), definir una función performance (no la estuve usando) y una función de fin de condición (le di el valor False porque quería hacer una simulación sin fin).
  2. Escribir un agente que interactúe con ese mundo: se puede hacer con Python3 o JavaScript. En el agente va la lógica para definir qué actuador se ejecuta ante cierta percepción del mundo.
  3. Plantear problemas para ese agente: se hace mediante una interfaz gráfica. Esto incluye principalmente el estado inicial del mundo.
  4. Escribir un visualizador: al igual que el mundo, se describe mediante un DSL propio.

Para lograr entender lo anterior, hice mi propio ejemplo desde cero. El objetivo era entender todas las partes y completarlo en un día.

El juego de la vida

1) Creé un mundo genérico para autómatas celulares.

2) Escribí un agente (no muy optimizado) que implemente el algoritmo del Juego de la vida de Conway (usando Python3; también se puede usar JavaScript).

3) Planteé el problema más sencillo que se me ocurrió, Blinker (Parpadeador).

4) Escribí un visualizador para visualizarlo.

Logre hacerlo funcionar luego de varias iteraciones.

Con esto andando, implementar cualquier patrón fue fácil.

Gilder

Lo siguiente fue jugar cambiando las reglas originales creando un nuevo agente:

celularautomata

Fork

El círculo se completó cuando alguien (redelmann) hizo un fork de mi mundo, planteó un nuevo problema, cambió el agente para que tenga una nueva propiedad y escribió un nuevo visualizador (visualizarlo):

ForkeadoEn este momento, en el sitio es un poco confusa la forma de correr simulaciones y forkear mundos y termina habiendo muchas copias con con nombres repetidos, pero confío en que el caos se va a ordenar pronto.

Manuel Kaufmann (Humitos): Preparándome para el #geekso

Como todos saben, todos los años cerca de Febrero o Marzo se realiza el #asadogeek organizado por Facundo Batista. Donde miembros de diferentes comunidades de software/programación y amigos de Facundo nos juntamos a comer un terrible asado que él mismo hace utilizando una técnica milenaria sin precedentes.

Me informan de diferentes fuentes que: esto no puede quedar así y hay gente que también quiere su evento geek. Es por eso, dicen las malas lenguas, que se está gestando un nuevo evento invernal, para competir con el #asadogeek de Facundo llamado #geekso.

¿Quién? ¿Cuándo? ¿Cómo? ¿Dónde? Bueno, todo eso está por verse, pero si yo fuese vos, me quedaría sintonizado a las grandes redes sociales, miraría por la ventana durante las mañanas y escucharía las charlas casuales de las viejas más chismosas del barrio. De esta forma, te aseguro que no te quedarás afuera. Y sí, si no seguís estos pasos te podés quedar afuera, los cupos son limitados: como en las mejores cosas.

Hoy, para empezar a sacar ventaja, me preparé mi propio guiso de lentejas (que sería el plano fuerte del #geekso) para presentarme como "ayudante de cocina" en semejante evento. Imaginate hacer un guiso de lentejas para 30, 40, o 50 personas. Vas a necesitar un ayudante, ¿no? ;)


Aquí va la receta de una de las que más sabes, de esto y de todo: nuestra señora madre, Ña Claudia.

Ingredientes

  • 2 cebollas
  • 1 cebolla de verdeo
  • 1 morrón/pimiento verde/rojo
  • 2 zanahorias medianas
  • 3 batatas (camote) medianos
  • 3 papas medianas
  • 2 chorizos colorados (picantes/españoles)
  • 400g de carne/pulpa
  • puré de tomates
  • 500g de lentejones
  • condimentos (ají, ajo, pimentón dulce, azúcar, sal, orégano, laurel)
IMG_20150718_120849.thumbnail.jpg

Cebollas coloradas

IMG_20150718_120900.thumbnail.jpg

Cebolla de verdeo / Cebollín

IMG_20150718_121138.thumbnail.jpg

Pimiento verde

IMG_20150718_121539.thumbnail.jpg

Zanahoria

IMG_20150718_123136.thumbnail.jpg

Batatas/Camote

IMG_20150718_122756.thumbnail.jpg

Papas

IMG_20150718_122353.thumbnail.jpg

Chorizo colorado/picante/español. PRO TIP: Si al querer pelar el chorizo está muy pegado: envolvelo en papel higuiénico y mojalo. Esperá 3 minutos y pelalo con facilidad.

IMG_20150718_124542.thumbnail.jpg

Carne/Pulpa (bueno, ahí estaba -me olvidé de sacarle foto antes de meterla a la olla)

IMG_20150718_130935.thumbnail.jpg

Puré de tomates

IMG_20150718_121830.thumbnail.jpg

Lentejas (remojadas del día anterior)

IMG_20150718_122107.thumbnail.jpg

Condimentos

Preparanción

Dejar remojando los lentejones desde el día anterior (mejor 24hs, aunque puede ser solo una noche).

Picar todos los ingredientes en el orden mencionado anteriormente e ir agregándolos en una olla mediana a grande que contenga un poco de aceite caliente. Sin apuro, a fuego tranquilo y escuchando La Familia de Ukeleles

A medida que vamos agregando los ingredientes a la olla podemos ir condimentando de poco y revolviendo.

Una vez que tenemos todo picado y se está rehogando en la olla hace ya más de 20 minutos/media hora, agregamos el puré de tomates y un poco de agua. Más condimentos.

Probamos un pedacito de batata/camote y decidimos qué le falta. Le agregamos.

Vamos dejándolo de lado por 20/25 minutos y siempre le vamos agregando agua hirviendo (hervida en un recipiente aparte) de a poco para que no se quede sin agua.

Vamos sumergiendo un pedacito de pan en la salsa y vamos probando cada uno de los ingredientes hasta que tengan la consistencia justa.

¡Listo! ¡A comer!

PRO TIP: comer poco luego de que esté terminado y dejarlo reposar hasta el día siguiente. ¡Es mucho más rico!


Así me despido y exijo ser invitado al #geekso y servir como "ayudante de cocina" :D

IMG_20150718_125155.thumbnail.jpg

A mitad de cocción...

Facundo Batista: Todos somos Joac


(Disclaimer: este texto está sobradamente copiado de la declaración de OpenData, porque tenía ganas de escribir algo parecido, y no me salía, y ellos lo expresaron muy bien)

Sobre el allanamiento de domicilio a Joaquín Sorianello ocurrido el viernes a la noche.

A horas de los comicios de primera vuelta para elegir a las autoridades de la Ciudad Autónoma de Buenos Aires, nuestro amigo y colega Joaquín Sorianello denuncia el allanamiento de su domicilio, realizado por la la Policía Metropolitana bajo las órdenes de la jueza Dra. María Luisa Escrich.

El motivo aparente es haber informado sobre una vulnerabilidad grave en los servidores de la empresa Magic Software Argentina (MSA), dueña y operaria del sistema de voto y escrutinio electrónico a ser utilizado en las elecciones porteñas. Esta falla de seguridad permitiría el envío de información apócrifa a los sistemas donde se computa el escrutinio provisorio, vulnerando así la voluntad popular.

Joaquín es un reconocido programador, experto en redes informáticas, muy querido y respetado en distintas comunidades de software libre en las que participa, no sólo por su conocimiento técnico sino también por sus profundos valores y su calidad humana. Su descubrimiento, de una gravedad institucional que no se condice con la pobre difusión pública que tuvo, fue logrado gracias a su loable sentido del deber cívico, y fue informado en primer lugar a la propia MSA para que tome las medidas correctivas. Lejos de obtener premio alguno por colaborar con la transparencia que la ocasión demanda, Joaquín fue víctima de un allanamiento, como si hubiese cometido un acto criminal.

La celeridad y falta de sentido común con la que este allanamiento se realiza resulta al extremo injustificable además, dado que, 6 meses atrás, el Presidente del Tribunal Superior de Justicia de la Ciudad, José Osvaldo Casás, presentó su renuncia al cargo a partir de las falencias ya visibles del sistema de votación.

Es por eso que más allá de alguna que otra acción privada que siempre será insuficiente, me solidarizo con la situación de Joaquín y de otros colegas afectados por este bochornoso accionar de la justicia porteña. Consideramos que el espacio para quienes quieren mejorar las instituciones y la transparencia del pilar fundamental de la democracia, como lo es la voluntad del pueblo a través del sufragio, tiene que existir y ser valorado.

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.