Canonical Voices

What Bitácora de Vuelo talks about

facundo


Estos últimos días se liberaron nuevas versiones de dos proyectos en los que estoy involucrado activamente.

A principio de mes lancé Encuentro 3.1 (como ya sabrán, este programa permite buscar, descargar y ver contenido del Canal Encuentro, Paka Paka, BACUA, Educ.ar y otros).

La versión 3.1 trae los siguientes cambios con respecto a la versión anterior:

  • Vuelve a funcionar luego de los cambios de backend de Encuentro y Conectate
  • Ahora con CTRL-F se va directamente al campo de filtro (gracias Emiliano)
  • Se rehizo el manejo de la lista de episodios: ahora verlos y filtrarlos es muchísimo más rápido
  • Mejoras en el empaquetado, debería funcionar para muchas (todas?) las versiones de Debian/Ubuntu (gracias Adrián Alves). 
  • Varias mejoras al encontrar nuevos episodios de los distintos backends, y correcciones en general. 

Más info y cómo descargarlo, instalarlo, etc, en la página oficial.

Por otro lado, ayer se lanzó fades 3 (un proyecto orientado a desarrolladores Python, en contraposición a Encuentro que está pensado para el usuario final), que desarrollamos principalmente Nico Demarchi y yo.

fades (en inglés: FAst DEpendencies for Scripts) es un sistema que maneja automáticamente los virtualenvs en los casos simples que uno normalmente encuentra al escribir scripts o programas pequeños.  Crea automáticamente un nuevo virtualenv (o reusa uno creado previamente) instalando las dependencias necesarias, y ejecutando el script dentro de ese virtualenv.

¿Qué hay de nuevo en esta release?

  • Podés usar diferentes versiones del intérprete: simplemente pasá --python=python2 o lo que te convenga.
  • Las dependencias pueden especificarse en la linea de comando: no hay necesidad de cambiar el script para una prueba rápida, simplemente especificá la dependencia necesaria con --dependency.
  • Modo interactivo: es la manera más rápida de probar una nueva biblioteca. Sólo hacé fades -d <dependencia> y te abrirá un intérprete interactivo dentro de un venv con esa dependencia.
  • Soporta tomar argumentos desde el shellbang. De esta manera podés crear un script y poner al principio del mismo algo como: #!/usr/bin/env fades -d <dependencia> --python=python2.7
  • Puede parsear requerimientos desde un archivo. No hay necesidad de ningún cambio si ya tenés un archivo requirements.txt: simplemente indicalo con --requirement.
  • Si no se especifica el repo, toma PyPI por defecto, lo que resulta en código más limpio y simple.
  • Tiene una base de datos integrada para conversiones típicas de nombres: de esta manera se puede marcar con fades un "import bs4" incluso si ese no es el nombre del paquete en PyPI.
  • Otros cambios y correcciones menores.

Toda la info, en la página de PyPI del proyecto.

Read more
facundo


Buena temporada para ver películas fue.

Y además, le metí pilas a las series (estoy aprovechando que los niños ya duermen bien, y tengo un rato a la noche al acostarme): arranqué con Games of Thrones (ya ví las primeras tres temporadas), metí también la segunda de Tremé, estoy viendo Seinfeld (en orden, luego de años y años de agarrar cualquier capítulo al azar al hacer zapping en la noche) y arranqué con The L Word.

  • After Earth: +0. Buena película de ciencia ficción; a la parte humana le falta, intenta ir por ahí pero le falta actores.
  • Before Midnight: -0. Los diálogos están buenos, pero siendo la tercera de la serie, le falta resolución, le falta consistencia.
  • Europa Report: -0. Conceptualmente interesante, pero el mecanismo de "contar la película por las cámaras del lugar" es trillado y mal llevado. Y hacer efectitos para asustar o sorprender la aberreta mucho, una lástima.
  • Generation Um...: -1. Lenta, disconexa, con una historia que bleh. No la pude ni terminar de ver.
  • Gravity: +1. Notable lo que se puede hacer con solo dos actores :p. Me gustó mucho el lado "real" de una peli en el espacio, que uno normalmente no ve.
  • Hitchcock: +0. Un personaje del que no sabía mucho (ni tampoco soy un fan especial de sus películas) y la historia alrededor de su película (quizás) más famosa. Muy buenas actuaciones.
  • It's a Disaster: -0. Tiene sus momentos interesantes, pero se queda a medias tintas y no llega a ser.
  • La reconstrucción: +0. Un poco lenta, pero muy buena historia. La actuación de Peretti es genial.
  • Machete Kills: +0. Si te gusta este estilo de películas, mirala, zafa. Si no, ni te acerques.
  • Pandora's Promise: +0. Hay que ir con mucho cuidado con este tipo de películas, pero aunque no me crea todas las respuestas, me da un montón de preguntas para el análisis.
  • Paranoia: -0. La historia tiene un núcleo interesante, y las actuaciones están bien, pero la película está orientada mal. Podría haber sido un thriller de suspenso, una de espías interesante, y termina siendo un dramón adolescentoide, :/
  • Riddick: -0. Menos de lo mismo (?). O sea, se pierde parte de la esencia del personaje, y se exageran otras. Demasiada testosterona sin sentido, en mi opinión.
  • Rush: +0. Una gran historia, incluso si no te gusta la fórmula 1 (pero si te gustan los autos, suma, claro que sí).
  • Seventh Son: -1. Una colección de clichés en una película demasiado predecible.
  • Sound City: +0. Es una historia muy puntual, pero es linda, es verídica, y habla de la gente, de la calidad, y de tratar de hacer bien las cosas.
  • The Counselor: -0. Un gran "alrededor" de una historia que le faltó bastante. Una lástima, porque todo eso estaba muy bien, grandes actores, etc... pero sin el soporte de una historia decente como núcleo, no vale pena.
  • The East: +1. Me gustó mucho, no sólo por la temática sino por cómo cuentan los sentimientos y actitudes de las personas involucradas.
  • The Last Days on Mars: -0. Bleh, es una de zombies en el espacio. Nada interesante.
  • This Is 40: -0. Varias partes divertidas, y bastantes donde rozan cosas que pasan en una familia tipo; pero no me sentí identificado (quizás porque la dinámica familiar yanqui es distinta a la nuestra), así que bleh.
  • Trance: +1. Es de esas pelis que a medida que te van explicando qué pasa te vas dando cuenta que entendés menos y menos, hasta que entendiste todo. Interesante.


Anotadas para el futuro:

  • Amy (2015; Documentary, Biography, Music) Asif Kapadia's 90' minutes documentary on the six-time Grammy-winner will feature previously unseen archive footage and seek to tell the London performer's tragic story in her own words. Amy Winehouse died from alcoholic poisoning in July 2011 at the age of 27. James Gay-Rees will produce through Playmaker Films and Universal Music is on board as co-producer. "This is an incredibly modern, emotional and relevant film that has the power to capture the zeitgeist and shine a light on the world we live in, in a way that very few films can," said Kapadia and Gay-Rees. Amy was a once-in-a-generation talent who captured everyone's attention. She wrote and sung from the heart and everyone fell under her spell. But tragically Amy seemed to fall apart under the relentless media attention, her troubled relationships, her global success and precarious lifestyle. As a society we celebrated her huge success but then we were quick to judge her failings when it suited us." [D: Asif Kapadia; A: Amy Winehouse]
  • Hotel Transylvania 2 (2015; Animation, Comedy, Family) The Drac pack is back for an all-new monster comedy adventure in Sony Pictures Animation's Hotel Transylvania 2! Everything seems to be changing for the better at Hotel Transylvania... Dracula's rigid monster-only hotel policy has finally relaxed, opening up its doors to human guests. But behind closed coffins, Drac is worried that his adorable half-human, half-vampire grandson, Dennis, isn't showing signs of being a vampire. So while Mavis is busy visiting her human in-laws with Johnny - and in for a major cultural shock of her own - "Vampa" Drac enlists his friends Frank, Murray, Wayne and Griffin to put Dennis through a "monster-in-training" boot camp. But little do they know that Drac's grumpy and very old, old, old school dad Vlad is about to pay a family visit to the hotel. And when Vlad finds out that his great-grandson is not a pure blood - and humans are now welcome at Hotel Transylvania - things are going to get batty! [D: Genndy Tartakovsky; A: Adam Sandler, Selena Gomez, Keegan-Michael Key]
  • Inside Out (2015; Animation, Comedy, Family) Growing up can be a bumpy road, and it's no exception for Riley, who is uprooted from her Midwest life when her father starts a new job in San Francisco. Like all of us, Riley is guided by her emotions - Joy, Fear, Anger, Disgust and Sadness. The emotions live in Headquarters, the control center inside Riley's mind, where they help advise her through everyday life. As Riley and her emotions struggle to adjust to a new life in San Francisco, turmoil ensues in Headquarters. Although Joy, Riley's main and most important emotion, tries to keep things positive, the emotions conflict on how best to navigate a new city, house and school. [D: Pete Docter, Ronaldo Del Carmen; A: Diane Lane, Rashida Jones, Amy Poehler]
  • Mission: Impossible - Rogue Nation (2015; Action, Adventure, Thriller) Ethan and team take on their most impossible mission yet, eradicating the Syndicate - an International rogue organization as highly skilled as they are, committed to destroying the IMF. [D: Christopher McQuarrie; A: Tom Cruise, Jeremy Renner, Simon Pegg]
  • Point Break (2015; Action, Crime, Thriller) A young FBI agent infiltrates an extraordinary team of extreme sports athletes he suspects of masterminding a string of unprecedented, sophisticated corporate heists. Deep undercover, and with his life in danger, he strives to prove these athletes are the architects of the mind-boggling crimes that are devastating the world's financial markets. Filmed on four continents, North America, Europe, South America and Asia, "Point Break" presents extraordinary feats performed by the world's top extreme sports athletes, and involves some of the most daring exploits ever committed to film. Extreme sports featured include snowboarding, wingsuit flying, free rock climbing, high-speed motocross, and surfing 70-foot waves. [D: Ericson Core; A: Teresa Palmer, Luke Bracey, Édgar Ramírez]
  • The Face of an Angel (2014; Drama) THE FACE OF AN ANGEL tells the story of a journalist and a filmmaker as they lose themselves in a notorious murder case they are covering. Based on true events, a riveting account of the controversial case of a American student accused of murder in Italy. [D: Michael Winterbottom; A: Cara Delevingne, Kate Beckinsale, Daniel Brühl]
  • The Intern (2015; Comedy) 70-year-old widower Ben Whittaker has discovered that retirement isn't all it's cracked up to be. Seizing an opportunity to get back in the game, he becomes a senior intern at an online fashion site, founded and run by Jules Ostin. [D: Nancy Meyers; A: Anne Hathaway, Robert De Niro, Adam DeVine]
  • Time Lapse (2014; Sci-Fi, Thriller) Three friends discover a mysterious machine that takes pictures 24hrs into the future and conspire to use it for personal gain, until disturbing and dangerous images begin to develop. [D: Bradley King; A: Danielle Panabaker, Matt O'Leary, George Finn]
  • A Perfect Day (2015; Drama) A group of aid workers work to resolve a crisis in an armed conflict zone. [D: Fernando León de Aranoa; A: Benicio Del Toro, Tim Robbins, Olga Kurylenko]
  • Crimson Peak (2015; Horror) In the aftermath of a family tragedy, an aspiring author is torn between love for her childhood friend and the temptation of a mysterious outsider. Trying to escape the ghosts of her past, she is swept away to a house that breathes, bleeds...and remembers. [D: Guillermo del Toro; A: Charlie Hunnam, Jessica Chastain, Tom Hiddleston]
  • Pixels (2015; Action, Comedy) As kids in the 1980s, Sam Brenner (Adam Sandler), Will Cooper (Kevin James), Ludlow Lamonsoff (Josh Gad), and Eddie "The Fire Blaster" Plant (Peter Dinklage) saved the world thousands of times - at 25 cents a game in the video arcades. Now, they're going to have to do it for real. In Pixels, when intergalactic aliens discover video feeds of classic arcade games and misinterpret them as a declaration of war, they attack the Earth, using the video games as the models for their assaults -- and now-U.S. President Cooper must call on his old-school arcade friends to save the world from being destroyed by PAC-MAN, Donkey Kong, Galaga, Centipede, and Space Invaders. Joining them is Lt. Col. Violet Van Patten (Michelle Monaghan), a specialist supplying the arcaders with unique weapons to fight the aliens. [D: Chris Columbus; A: Peter Dinklage, Adam Sandler, Michelle Monaghan]
  • Regression (2015; Thriller) A young girl is sexually abused by her father. Thus, begins the disturbing tale of a father and daughter torn apart, thrown into the center of a conspiracy that shocks the nation. [D: Alejandro Amenábar; A: Emma Watson, Ethan Hawke, David Thewlis]
  • Space Station 76 (2014; Comedy, Drama, Sci-Fi) Space Station 76 is a refueling satellite near an alternate-reality Earth, circa 1976. Jessica arrives to serve as the station's new first mate. While she narrates a piece about how she likes the predictability of asteroids, some placidly drifting asteroids are shown colliding in chain-reaction fashion. While at first the station appears normal and the people friendly, Jessica soon discovers that the people on board have issues due to the isolation and stress of being cooped up with one another in a relatively small space far from Earth. This is in addition the usual problems people struggle with, such as infidelity, loneliness, depression, and drug abuse. She tries to make friends and fit in, but, unable to connect meaningfully with anyone, she becomes lonely. She's baffled and disillusioned by the stiff and irritable Captain Glenn, who harbors secrets of his own. She finds herself drawn to Ted, a lonely, married crewman, and his 7 year-old daughter, Sunshine. Ted yearns to reconnect with his unhappy, medicated wife, Misty, but she's too far gone to respond and is driving him away. His daughter Sunshine contends with her unhappy, mentally ill mother and her own isolation issues. Events finally come to a head at a Christmas party when a rapidly unhinging Misty decides everyone needs to play the "Truth Game." Just when it seems like everything's falling apart, a celestial event shakes everyone to their core, reminding them what their real priorities in life should be. [D: Jack Plotnick; A: Patrick Wilson, Liv Tyler, Marisa Coughlan]
  • The Gunman (2015; Action, Crime, Drama, Mystery, Thriller) A sniper on a mercenary assassination team, working for an unknown client, kills the minister of mines of the Congo. Terrier's (Sean Penn's) successful kill shot forces him to go into hiding to protect himself and the members of the team from retribution. This includes abruptly abandoning his girlfriend who has no idea what is going on. The assassination, paid for by a foreign mining company, triggers wide spread chaos and death in an already inflamed Congo. Terrier returns to the Congo years later working for an NGO, but eventually finds himself to be the target of a paid hit squad somehow connected to the ministers assassination. This leads to immediate deaths and the endangerment of the people working around him, and forces him back into hiding. In trying to discover who has put a price on his head, he begins to reconnect to the members of his old assassination team, including his old girlfriend. Always aware there is no path to redemption for his crimes, he is also periodically incapacitated by a type of accumulated and evolving physical brain damage caused by the hard knocks of his occupation. Unexpectedly, given the time that has elapsed, his reconnection to his old assassination team exposes additional intrigues with immediate deadly consequences. All of his years spent in hiding, have merely delayed the twisted end game that now enfolds. [D: Pierre Morel; A: Sean Penn, Jasmine Trinca, Javier Bardem]
  • The Man from U.N.C.L.E. (2015; Action, Adventure, Comedy) In the early 1960s, CIA agent Napoleon Solo and KGB operative Illya Kuryakin participate in a joint mission against a mysterious criminal organization, which is working to proliferate nuclear weapons. [D: Guy Ritchie; A: Alicia Vikander, Henry Cavill, Armie Hammer]
  • The Zero Theorem (2013; Drama, Fantasy, Sci-Fi) A hugely talented but socially isolated computer operator is tasked by Management to prove the Zero Theorem: that the universe ends as nothing, rendering life meaningless. But meaning is what he already craves. [D: Terry Gilliam; A: Christoph Waltz, Gwendoline Christie, Rupert Friend]


Finalmente, el conteo de pendientes por fecha:

(Mar-2010)    4
(Sep-2010)   18   9   2   1
(Dic-2010)   12  12   5   1
(Abr-2011)   23  23  22  17   4
(Ago-2011)   11  11  11  11  11   4
(Ene-2012)   18  17  17  17  17  11   3
(Jul-2012)   15  15  15  15  15  14  11
(Nov-2012)   12  12  11  11  11  11  11   6
(Feb-2013)       19  19  16  15  14  14   8   2
(Jun-2013)           19  18  16  15  15  15  11   2
(Sep-2013)               18  18  18  18  17  16   8
(Dic-2013)                   14  14  12  12  12  12
(Abr-2014)                        9   9   8   8   8
(Jul-2014)                           10  10  10  10
(Nov-2014)                               24  22  22
(Feb-2015)                                   13  13
(Jun-2015)                                       16
Total:      113 118 121 125 121 110 103 100  94  91

Read more
facundo

A partir de mañana


Los Mayos tienden a estar saturados de cumpleaños familiares, incluidos el de Moni el del que suscribe. Moni en general los festeja al menos haciendo algo en casa, yo en general no festejo nada (en general, hay excepciones algunos años).

En esta oportunidad fue una de esas veces, que hubo excepción. Y festejamos, con Moni. E hicimos festejo grande, ya que cumplíamos redondo si tomamos el número en base 10 :)

¡¡Cumplimos 40!!

Moni y Facu soplando las velitas

Ya que décadas no se cumple todos los años (frase estúpida pero no menos cierta), decidimos hacer algo no en casa, sino más tipo fiesta-fiesta.

Buscamos un lugar copado para hacerlo. No queríamos que fuese en un boliche o pub donde hubiera otra gente. Y tampoco queríamos un salón formal formal, tipo cumpleaños de 15 o casamiento. Al final encontramos (aramos, dijo el mosquito) un lugar inmejorable: el Centro Cultural Comunicanto, donde enseñan teatro y canto, hay obras de teatro, etc.

Comunicanto, esquina con pared y mesas


Comunicanto, vista de la entrada


Comunicanto, una de las barras

Y, como decía antes, fue fiesta, de noche. Sin hijos, ya que la idea no era hacerlo familiar, sino parrandoso parrandoso (teníamos barra libre, por ejemplo). Lamentablemente, el tema de "sin hijos" hizo que alrededor de 10 amigos no puedan venir, porque no tuvieron donde dejar a sus correspondientes. Pero bueno, no se puede todo en la vida.

Fiesta, les decía. Principalmente baile baile normal, que aquellos que disfrutan de bailar aprovecharon, :). Pero también tuvimos una sección de karaoke, donde muchos subimos (sí, en primera persona) y cantamos algo. Moni le tenía muchas ganas al karaoke, y estuvo ahí como en el 80% de las canciones, mientras iban rotando invitados :)

Moni y Facu cantando


Moni era la Maestra de Ceremonias del karaoke


Vale y Moni (estábamos todas como locas)


Karaoke grupal

Obvio, también tuvimos los momentos de charla mientras comíamos y tomábamos algo. Y la clásica soplada de velitas con cantito feliz.

Un párrafo aparte se merece la mesa dulce. Se la contratamos no al salón, sino a una chica que hace todo casero (tiene una pequeña casa de comidas altamente recomendable, Amapola Café Bar, pero también hace catering de dulces), y la verdad es que fue una decisión acertadísima, ya que todo lo que probé estaba espectacular.

Mesa dulce, porciones


Mesa dulce, tortas


Mesa dulce, vasitos

Acá están todas las fotos.

Read more
facundo


En gran parte de América latina ya la técnica no es que el Estado mate sino fomentar la violencia letal entre el 70 por ciento que ese modelo quiere excluir. No nos olvidemos de que los 23 países que superan el 20 por cien mil anual de homicidios, 18 pertenecen a América latina y Caribe y cinco a Africa. Tampoco olvidemos que también somos campeones de coeficientes de Gini, es decir de mala distribución de la renta.

Este es el modelo de sociedad que quieren reafirmar los medios masivos concentrados. En toda América latina hay que prohibir constitucionalmente los monopolios u oligopolios televisivos. Sin pluralidad mediática no podemos tener democracia. Los medios monopólicos u oligopólicos están haciendo algo trágico en América latina.

En los países donde hay altos niveles de violencia letal la naturalizan y lo único que proponen es la destrucción de las garantías individuales. En los países donde la letalidad es baja la exacerban al efecto de crear un aparato punitivo altísimamente represivo y en definitiva también letal.

Raul Zaffaroni, en esta nota de Martín Granovsky.

Read more
facundo


Me está costando ponerme a escribir algo en el blog. Más que nada porque no tengo mucho tiempo libre, y cuando lo tengo (y no lo aprovecho con la familia), me alejo un poco de la compu y veo series o pelis, o en la compu estoy sólo programando.

Tampoco tengo nada puntual que escribir, entonces me da fiaca hacer una recopilación de cosas, o detalles que sucedieron, etc.

Pero para ver si logramos vencer esta "inercia a arrancar", vamos a probar un nuevo esquema.  El otro día estaba escuchando una entrevista a Dolina, en el programa de Alivertii "Decime quien sos vos", y me enteré que a él le resulta más fácil, para escribir o producir textos, dictarlos. Entonces, la idea es dictarme yo mismo, grabando con el teléfono, y después voy a transcribir eso.

Obviamente lo voy a editar bastante, lo voy a toquetear, pero la idea es a ver si se logra que fluya más las cosas para contar y no terminar con dos o tres descripciones parcas y nada más.

Grabador de voz

En tren de contar algo de lo que fue sucediendo, el mes pasado hice el asado geek, que aunque es sólo un asado un domingo, realmente hay que ir a comprar un montón de cosas, y acomodar cosas en la casa, preparar todo, un largo etc. Después es un par de días de reorganizar todo de nuevo.

Se vino también el cumple de Malena, que implicó organizar la fiesta en el salón, la reunión en casa, etc. Y estamos armando una fiesta de cumpleaños con Moni, lo cual también lleva su tiempo de coordinación.

A nivel programación, estoy avanzando con varios proyectos, puntualmente CDPedia, fades, y Encuentro.

Con respecto a CDPedia, había preparado hace unos meses una imagen nueva para Huayra, que me pidió Karucha, pero revisando lo que se había armado nos dimos cuenta que había problemas en la búsqueda (vos ponías una palabra y jamás te traía un resultado).

Empecé a analizar el problema, y ví que no era algo que había salido mal en esa imagen, sino que teníamos un problema a nivel código, era algo a arreglar, así que me puse con eso y encontré que estábamos sacando mal títulos de las páginas (habían cambiado el formato interno).

Lo mejoré, y ahora no sólo saca bien los títulos sino que los saca en una etapa anterior, lo que es más eficiente. También metí un par de mejoras con respecto a la internacionalización.  En este momento estoy generando una imagen beta para ver si está todo bien, y ahí armar un set completo de imágenes, para distribuirlos. Luego, saldrá una beta en portugués, a ver cómo anda :)

El otro programa en el que estoy metiendo tiempo, como decía, es Encuentro. Cuando Humitos estuvo en casa (en esos días antes y después del asado geek) le metimos unas horas a este programa porque él está haciendo lo que es la integración con el backend de CDA, y ayudándolo y probando algunas cosas me di cuenta que la autenticación de Conectate cambió con lo cual no se podían bajar bien los videos.

Eso ya lo arreglé, pero todavía no lo liberé. Mi idea era esperar a Humitos para ver si metemos lo de CDA, pero creo que no lo va a tener para las próximas semanas, así que voy a hacer un release estos días, no sólo con ese fix sino también con otras mejoras y pequeñas correcciones que fui haciendo.

Finalmente, el otro fin de semana pasé un rato por FLISOL y luego me fui para la casa de Gilgamezh donde le estuvimos metiendo tiempo a fades, porque queremos hacer un release pronto con algunos features realmente copados ahí. Ya tenemos planeado con qué queremos llegar a la v3, nos falta poco :)

Read more
facundo


Hace un tiempo les hablé de un árbol que hice para sacar prefijos de palabras.

En el laburo estoy estudiando la forma de hacer un autocompletador. Entonces, luego de leer cosas por ahí, decidí probar ese árbol que ya tenía hecho.

Nunca le había tirado tantos datos, pero la verdad es que salió andando de perlas.

Por otro lado, tenía un detalle que necesitaba solucionar: yo quería que la búsqueda de palabras soportara errores en la escritura. O sea, que si uno buscara "maise", encontrara "maizena".

Encontré un paper bastante loco, Efficient Error-tolerant Query Autocompletion, pero que mostraba la forma de soportar errores al buscar palabras completas, no prefijos. Igual, apliqué ideas de ahí, y en un par de días de laburo conseguí lo que quería. Pero, al cargar el millón y medio de registros que tengo que cargar, ¡explotaba por memoria!

Luego de algunas optimizaciones obvias, se me ocurrió lo de deduplicar los subtrees internos. ¿Qué es deduplicar? Deduplicar es la acción por la cual si tengo un objeto A, y luego tengo otro B, que resulta ser igual a A, puedo usar el A directamente en ambos casos, descartando B (libera memoria), y listo.

Deduplicar diccionarios no es un asunto trivial. Tiré el asunto en la lista de PyAr, y en pocas horas logré que todo funcione correctamente. Ahora no sólo no explota, sino que ocupa bastante poca memoria!

    Memory usage after loading the tree: rss: +586 MB  vms: +586 MB
    Time to load the tree: 327190.99 msec
    <WordTree at 3068071276 [tau=1]: 1478347 words 30015540 (2201293) nodes (unique)>

Millón y medio de palabras, 30 millones de nodos (de los cuales 2.2 millones son únicos), ocupando 590 MB de memoria. Nada mal, ¿no? Que tarde 5.5 minutos en armar toda la estructura es un problema, la semana que viene voy a mirar eso bien.

Todo el código, acá.

Read more
facundo


Hace algunos años me empezó a pasar que leía (o me pasaban) recomendaciones de lugares para comer, tomar algo, jugar al pool, etc, y luego cuando estaba en la calle, no las recordaba y terminaba yendo a cualquier lado al azar.

Se me ocurrió empezar a registrar los lugares en un mapa. La solución que usé fue basada en Google Maps: en la interfaz web creé una capa mía, en la cual empecé a cargar todos esos lugares. Luego, en el teléfono, iba a Google Maps, le decía que me mostrara esa capa, y ahí tenía el mapa con muchas estrellitas (cada lugar que había cargado) y podía ver qué tenía cerca, o para donde iba, etc.

Con el tiempo, se empezó a complicar.

En un momento, Google decidió que la versión del teléfono de Maps no iba a mostrar más "custom layers" (o sea, las capas que creabas vos). En otras palabras, ¡no podía ver más mis datos! Esto lo solucioné instalando una versión vieja de Google Maps en el teléfono (lo cual no es sencillo de hacer, pero funcionaba). Más adelante, Google empezó a complicar el uso de las capas en la versión web también. Y hace algunos meses, dejó de servir esa información, con lo cual aunque en el teléfono tuviera una versión que pedía esas capas al servidor, el servidor no las contestaba.

Esta foto es vieja, pero me encanta

En paralelo, hace un par de años largos que quiero empezar a irme en lo posible de los servicios de Google, y en función de eso en los últimos meses empecé a usar los mapas de OpenStreetMap ("OSM"), por recomendaciones de Nico, Humitos y Marcos Dione. Desde mitad del año pasado también lo puse en el teléfono, mediante la gran aplicación OsmAnd primero, y desde hace un par de semanas con MAPS.ME (que es bastante más rápida al mostrar los datos, y creo que es mejor decidiendo dónde mostrarte los nombres de las calles, lo cual es importante).

La gran ventaja de OsmAnd y MAPS.ME es que usan los mapas de OpenStreetMap (que son mejores en su calidad que los de Google Maps, y además son abiertos y colaborativos), y que además lo usan de forma offline. O sea, te bajás los mapas que te interesan (por ejemplo, el de Argentina) cuando tenés una buena conexión de internet y luego el mapa está en tu teléfono, con lo cual no necesitás internet cuando estás en la calle para consultar estos datos.

Pero, aunque estaba contento con la solución de "mapas" en su forma genérica, me faltaba esto de "anotar mis lugares". Hasta que Humitos me recomendó umap, donde podés justamente crear capas de lugares arriba de los mapas de OpenStreetMap (hay una gran cantidad de sitios que utilizan los datos de OSM y dan servicios arriba de ellos, ejemplos que me pasó Humitos: su propio "puntos de interes", otro con fotos de ciudades, y uno donde la gente registra árboles frutales).

En ese sitio, entonces, creé mi mapa de lugares para ir de parranda (no volví a armarlo de cero, sino que importé lo que exporté previamente de google maps). Para llevar estos datos a mi teléfono, exporté un KML, me lo mandé por mail, y en el teléfono le dije que lo abra con el MAPS.ME.

Y listo, :)

Read more
facundo

Hay días en el laburo...


Hay días en el laburo donde tenés que hacer un trabajo, lo planeás, te juntás con gente, se decide que cosas se van a hacer, se separa todo en tres o cuatro partes, hacés cada una (con tests y todo), todo bien, te hacen los review, entra en trunk, va a producción, todo muy lindo, mirás las métricas, suben y bajan como corresponde, y sos feliz.

Hay otros días en el laburo, donde empezás a ver algo y decís "esto no puede ser", empezás rastrear por qué está ese número ahí y te das cuenta que los logs tienen un problema, entonces lo querés contrastar con las métricas, y te das cuentas que en las métricas falta data, decidís cruzarlo con otro dato y te das cuenta que todavía no están sincronizados los archivos donde eso está, lo tenés que pedir y te tardan tres o cuatro horas en dartelo, y después cuando lo podés cruzar te das cuenta que deberías haber estado registrando algún otro número más, pero que no todo está perdido porque lo podés sacar de forma indirecta, hacés un script para parsear un quintillón de registros, te da un resultado más o menos coherente, pero todavía tenés que resolver como puede ser que el problema realmente esté sucediendo, mirás el código, te das cuenta que esa función está siendo llamada desde siete lados de los cuales solamente te acordabas tres, y de esos siete lados hay dos que no tenes datos de cómo están llamados... 

Está todo roto

En fin, la mayoría de las veces termina todo con un final feliz, pero realmente estás uno, dos o tres días rascándote grupalmente la cabeza con tus compañeros de trabajo hasta que se resuelve el acertijo.

Read more
facundo


They say that metaclasses make your head explode. They also say that if you're not absolutely sure what are metaclasses, then you don't need them.

And there you go, happily coding through life, jumping and singing in the meadow, until suddenly you get into a dark forest and find the most feared enemy: you realize that some magic needs to be done.


The necessity

Why you may need metaclasses? Let's see this specific case, my particular (real life) experience.

It happened that at work I have a script that verifies the remote scopes service for the Ubuntu Phone, checking that all is nice and crispy.

The test itself is simple, I won't put it here because it's not the point, but it's isolated in a method named _check, that receives the scope name and returns True if all is fine.

So, the first script version did (removed comments and docstrings, for brevity):

    class SuperTestCase(unittest.TestCase):

        def test_all_scopes(self):
            for scope in self._all_scopes:
                resp = self._check(scope)
                self.assertTrue(resp)

The problem with this approach is that all the checks are inside the same test. If one check fails, the rest is not executed (because the test is interrupted there, and fails).

Here I found something very interesting, the (new in Python 3) subTest call:

    class SuperTestCase(unittest.TestCase):

        def test_all_scopes(self):
            for scope in self._all_scopes:
                with self.subTest(scope=scope):
                    resp = self._check(scope)
                    self.assertTrue(resp)

Now, each "sub test" internally is executed independently of the other. So, they all are executed (all checks are done) no matter if one or more fail.

Awesome, right? Well, no.

Why not? Because even if internally everything is handled as independent subtest, from the outside point of view it still is one single test.

This has several consequences. One of those is that the all-inside test takes too long, and you can't know what was going on (note that each of these checks hit the network!), as the test runner just show progress per test (not subtest).

The other inconvenient is that there is not a way to call the script to run only one of those subtests... I can tell it to execute only the all-inside test, but that would mean to execute all the subtests... which, again, takes a lot of time.

So, what I really needed? Something that allows me to express the assertion in one test, but that in reality it were several methods. So, I needed something that, from a single method, reproduce them so the class actually had several ones. This is, write code for a class that Python would find different. This is, metaclasses.


Metaclasses, but easy

Luckily, since a couple of years ago (or more), Python provides a simpler way to achieve the same that could be done with metaclasses. This is: class decorators.

Class decorators, very similar to method decorators, receive the class that is defined below itself, and its response is considered by Python the real definition of the class. If you don't have the concept, you may read a little here about decorators, and a more deep article about decorators and metaclasses here, but it's not mandatory.

So, I wrote the following class decorator (explained below):

    def test_multiplier(klass):
        """Multiply those multipliable tests."""
        for meth_name in (x for x in dir(klass) if x.startswith("test_")):
            meth = getattr(klass, meth_name)
            argspec = inspect.getfullargspec(meth)

            # only get those methods that are to be multiplied
            if len(argspec.args) == 2 and len(argspec.defaults) == 1:
                param_name = argspec.args[1]
                mult_values = argspec.defaults[0]

                # "move" the usefult method to something not automatically executable
                delattr(klass, meth_name)
                new_meth_name = "_multiplied_" + meth_name
                assert not hasattr(klass, new_meth_name)
                setattr(klass, new_meth_name, meth)
                new_meth = getattr(klass, new_meth_name)

                # for each of the given values, create a new method which will call the given method
                # with only a value at the time
                for multv in mult_values:
                    def f(self, multv=multv):
                        return new_meth(self, **{param_name: multv})

                    meth_mult_name = meth_name + "_" + multv.replace(" ", "_")[:30]
                    assert not hasattr(klass, meth_mult_name)
                    setattr(klass, meth_mult_name, f)

        return klass

The basics are: it receives a class, it returns a slightly modified class ;). For each of the methods that starts with "test_", I checked those that had two args (not only 'self'), and that the second argument were named.

So, it would actually get the method defined in the following structure and leave the rest alone:

    @test_multiplier
    class SuperTestCase(unittest.TestCase):

        def test_all_scopes(self, scope=_all_scopes):
            resp = self.checker.hit_search(scope, '')
            self.assertTrue(resp)

For that kind of method, the decorator will move it to something not named "test_*" (so we can call it but it won't be called by automatic test infrastructure), and then create, for each value in the "_scopes" there, a method (with a particular name which doesn't really matter, but needs to be different and is nice to be informative to the user) that calls the original method, passing "scope" with the particular value.

So, for example, let's say that _all_scopes is ['foo', 'bar']. Then, the decorator will rename test_all_scopes to _multiplied_test_all_scopes, and then create two new methods like this::

    def test_all_scopes_foo(self, multv='foo'):
        return self._multiplied_test_all_scopes(scope=multv)

    def test_all_scopes_foo(self, multv='bar'):
        return self._multiplied_test_all_scopes(scope=multv)

The final effect is that the test infrastructure (internally and externally) finds those two methods (not the original one), and calls them. Each one individually, informing progress individually, the user being able to execute them individually, etc.

So, at the end, all gain, no loss, and a fun little piece of Python code :)

Read more
facundo


Algunas, varias y sueltas.

A nivel de proyectos, le estuvimos metiendo bastante con Nico a fades. La verdad es que la versión 2 que sacamos la semana pasada está piolísima... si usás virtualenvs, no dejes de pegarle una mirada.

Otro proyecto con el que estuve es CDPedia... la parte de internacionalización está bastante potable, y eso también me llevó a renovar la página principal que te muestra cuando la abrís, así que puse a tirar una nueva versión de la de español, y luego seguirá una de portugués (¡cada imagen tarda como una semana!).

Hace un rato subí a la página de tutoriales de Python Argentina el Tutorial de Django en español (¡gracias Matías Bordese por el material!). Este tuto antes estaba en un dominio que ahora venció, y nos pareció interesante que esté todo en el mismo lugar, facilita que la gente lo encuentre.

Finalmente, empecé a organizar mi Segundo Curso Abierto de Python. Esta vez lo quiero hacer por la zona de Palermo, o alrededores (la vez pasada fue en microcentro). Todavía no tengo reservado un lugar, y menos fechas establecidas, pero el formato va a ser similar al anterior. Con respecto al sitio, si alguien conoce un buen lugar para alquilar "aulas", me avisa, :)

Read more
facundo

Chau ACA


Unos meses atrás, justo cuando yo estaba de viaje en Washington, en el último sprint del laburo del año pasado, Moni tuvo problemas con el auto.

Un día que pasó a buscar a Felu por el jardín el auto no le arrancó. Pero lo importante no es el problema que tenía el auto, esta historia pasa por otro lado.

Moni llamó al Automóvil Club Argentino (que tengo desde hace más de diez años), para que la vengan a socorrer, y a priori no lo quisieron dar servicio. Le dijeron que ella no era la titular (lo cual es cierto, está a mi nombre), y que matanga. Ante la insistencia de Moni, le dijeron que lo iban a hacer sólo por esa oportunidad. Finalmente, la fueron a buscar, hubo un cambio de batería, etc, etc, final feliz.

Pero, ¿qué pasa si Moni vuelve a tener un problema con el auto?

Yo siempre creí que el ACA me cubría el auto, más allá de quien lo manejara. Parece que no. Según le dijeron a ella en ese momento, lo que luego confirmé en el call center, y luego personalmente en una sucursal, es que para que la cubran a ella se debería dar una de dos situaciones.

La primera, es que ella tenga una cédula azul del auto. Moni tiene la cédula verde del mismo (es tan dueña como yo), con lo cual no vamos a sacar la azul, y no tiene sentido que si la cédula es azul le den servicio, pero si es verde no.

La segunda es que haga una extensión familiar del servicio. Averigüé precios de esto, y es casi como sacar un segundo plan del ACA. Hoy por hoy la cuota del ACA es un poco alta, y sube un poquito todos los meses (todos los meses, eso me molesta bastante); duplicar ese costo no tiene sentido.

Bastante disgustado con toda esta situación, sopesé durante bastante tiempo la idea de darme de baja del servicio del Automóvil Club Argentino. Me cuesta un montón, porque me gustan un montón de cosas del ACA, su federalidad, la participación en el crecimiento de tantas ciudades pequeñas del país, etc... pero la verdad es que todo lo sucedido me rompió bastante las pelotas.

Mi viejo tuvo la idea de que exprese todo esto en una carta a la Comisión Directiva del club, a ver qué me decían. Armé un documento y se los presenté a fines de Noviembre. Me contestaron a mitad de Enero, un tal Juan Jorge Agüero ("Jefe Administrativo de Iniciativas y Observaciones de Socios"), en una carta toda escrita en mayúsculas en la que básicamente mandaba fruta.

¿Por qué fruta? Porque contestó un montón de generalidades, con cosas como (convertido a minúsculas por respeto a ustedes) "se procedió a realizar el traslado de su observación al área de auxilio mecánico a fin de que se tomen las medidas correctivas pertinentes..."; claro, no hay ninguna medida correctiva pertinente, así que no me sirve para nada.

En fin, tomé la decisión de irme del ACA.

Me voy a quedar con el seguro de La Caja, sí, que siempre me respondió en tiempo y forma. Tampoco es que voy a ahorrar guita, porque el seguro directo (con el precio del auto actualizado) es sólo un poco menos que el seguro más la cuota social del ACA sumados. Pero el gran diferencial es que el servicio mecánico que me dan ("AuxiCaja") me sirve más allá de quien esté manejando el auto.

Read more
facundo

Cantando juntos


"Vení, cantemos algo a dúo."

Cantando a dúo

¡Rocanrol!

Read more
facundo


Estos meses le puse bastante pila a las películas... mitad que no vi tantas series (no arranqué ninguna nueva) y que tuve bastante tiempo solo en casa (me encanta aprovecharlo para ponerme tranquilo a ver una película, con la luz ambiente y el volumen que se me canta, sin tener que frenarla cada diez minutos por algo).

Ojo, también algunas de estas las vi con la familia, :). Y una en el cine (es obvio cual, ¿no?).

  • Cloud Atlas: +1. Una GRAN historia, contada de una forma bastante compleja. La peli es larga, y trabaja Tom Hanks, pero así y todo lo vale.
  • Elysium: +1. Me gustó bastante, la mezcla de futurismo bien hecho tanto en tecnología como en descripción de la sociedad siempre me atrae.
  • John Dies at the End: -1. De tan bizarra que aburre... tiene dos o tres flashes interesantes, pero no vale su peso en aire.
  • Movie 43: -0. Tiene algunos cortos con partes graciosas, la mayoría es una bizarrada. Si te gustan las pelis bizarras onda chachacha, dale una oportunidad. Lo que no entiendo es cómo pelis como esta juntan tantos actores de primera linea...
  • Now You See Me: +1. Muy bueno como se va armando el nudo y el desenlace... como en todo acto de magia, guarda con las distracciones...
  • Pearl Jam Twenty: +1. Muy buena película! No sólo la historia en sí de Pearl Jam, sino como está contada, mostrada, etc.
  • RED 2: +0. Muy violenta, como esperaba, pero también divertida (como también esperaba); pochoclera, está bien.
  • Red Lights: +1. Muy buenas actuaciones para una historia interesante. Cierra por todos lados.
  • Robot & Frank: +0. Una linda comedia o drama suave. Es interesante, no muy profunda, pero está bien.
  • Sin retorno: +0. Una buena historia, buenas actuaciones, te mantiene atrapado hasta el final.
  • The East: +1. Me gustó mucho, no sólo por la temática sino por cómo cuentan los sentimientos y actitudes de las personas involucradas.
  • The Hobbit: The Battle of the Five Armies: +0. Cierra bien, tiene puentes al resto de la historia, está bien; el detalle es que no es más que una historia para niños
  • The Man with the Iron Fists: -0. si te gustan las películas de orientales con karate exagerado, mirala, está muy bien hecha. Yo ya confirmo que nunca más una de estas.
  • The Numbers Station: +0. Una buena película de acción y suspenso.
  • The Wolverine: -0. Es como todo un poco más de lo mismo... la historia no está del todo mal, pero bleh.
  • Upside Down: +0. Una comedia romántica ligera, pero muy interesante a nivel de ciencia ficción. Un poco apurado todo al final, sino merecía más puntaje...
  • World War Z: +0. Bastante buena para ser una película de zombies...

Escena de Elysium


No hay tantas nuevas anotadas. Había más, realmente, producto de ir viendo trailers, pero al preparar este post me di cuenta que cuatro ya las había anotado antes :)

  • Avengers: Age of Ultron (2015; Action, Adventure, Fantasy, Sci-Fi) When Tony Stark tries to jumpstart a dormant peacekeeping program, things go awry and Earth's Mightiest Heroes, including Iron Man, Captain America, Thor, The Incredible Hulk, Black Widow and Hawkeye, are put to the ultimate test as the fate of the planet hangs in the balance. As the villainous Ultron emerges, it is up to The Avengers to stop him from enacting his terrible plans, and soon uneasy alliances and unexpected action pave the way for a global adventure. [D: Joss Whedon; A: Scarlett Johansson, Hayley Atwell, Chris Evans]
  • Clouds of Sils Maria (2014; Drama) At the peak of her international career, Maria Enders is asked to perform in a revival of the play that made her famous twenty years ago. But back then she played the role of Sigrid, an alluring young girl who disarms and eventually drives her boss Helena to suicide. Now she is being asked to step into the other role, that of the older Helena. She departs with her assistant to rehearse in Sils Maria; a remote region of the Alps. A young Hollywood starlet with a penchant for scandal is to take on the role of Sigrid, and maria finds herself on the other side of the mirror, face to face with an ambiguously charming woman who is, in essence, an unsettling reflection of herself. [D: Olivier Assayas; A: Juliette Binoche, Kristen Stewart, Chloë Grace Moretz]
  • Fantastic Four (2015; Action, Fantasy, Sci-Fi) FANTASTIC FOUR, a contemporary re-imagining of Marvel's original and longest-running superhero team, centers on four young outsiders who teleport to an alternate and dangerous universe, which alters their physical form in shocking ways. Their lives irrevocably upended, the team must learn to harness their daunting new abilities and work together to save Earth from a former friend turned enemy. [D: Josh Trank; A: Kate Mara, Miles Teller, Toby Kebbell]
  • Home Sweet Hell (2015; Comedy, Drama) Don Champagne seems to have it all: a successful business, a perfect house, perfect kids and a perfect wife. Unfortunately, when his wife, Mona (Katherine Heigl), learns of Don's affair with a pretty new salesgirl (Jordana Brewster), this suburban slice of heaven spirals out of control. Don soon realizes that Mona will stop at nothing, including murder, to maintain their storybook life where "perception is everything". [D: Anthony Burns; A: Katherine Heigl, Jordana Brewster, Patrick Wilson]
  • Match (2014; Comedy, Drama, Music) Tobi Powell (Patrick Stewart), an aging Juilliard dance professor with a colorful and international past, is interviewed by a woman and her husband (Carla Gugino & Matthew Lillard) for a dissertation she's writing about the history of dance in New York in the 1960's. As the interview proceeds, it becomes increasingly clear that there are ulterior motives to the couple's visit. Explosive revelation is followed by questions about truth versus belief. MATCH is a story about responsibility, artistic commitment...and love. [D: Stephen Belber; A: Patrick Stewart, Carla Gugino, Matthew Lillard]
  • VANish (2015; Action, Crime, Horror, Thriller) A kidnapped young woman is forced on a road trip full of murder and mayhem that takes place entirely in her captor's getaway van. [D: Bryan Bockbrader; A: Maiara Walsh, Tony Todd, Danny Trejo]
  • Vice (2015; Action, Adventure, Sci-Fi, Thriller) Julian Michaels (Bruce Willis) has designed the ultimate resort: VICE, where anything goes and the customers can play out their wildest fantasies with artificial inhabitants who look, think and feel like humans. When an artificial (Ambyr Childers) becomes self-aware and escapes, she finds herself caught in the crossfire between Julian's mercenaries and a cop (Thomas Jane) who is hell-bent on shutting down Vice, and stopping the violence once and for all. [D: Brian A Miller; A: Ambyr Childers, Thomas Jane, Bryan Greenberg]
  • Danny Collins (2015; Comedy, Drama) Inspired by a true story, Al Pacino stars as aging 1970s rocker Danny Collins, who can't give up his hard-living ways. But when his manager (Christopher Plummer) uncovers a 40 year-old undelivered letter written to him by John Lennon, he decides to change course and embarks on a heartfelt journey to rediscover his family, find true love and begin a second act. [D: Dan Fogelman; A: Melissa Benoist, Al Pacino, Jennifer Garner]
  • Ex Machina (2015; Drama, Sci-Fi) Caleb, a 26 year old coder at the world's largest internet company, wins a competition to spend a week at a private mountain retreat belonging to Nathan, the reclusive CEO of the company. But when Caleb arrives at the remote location he finds that he will have to participate in a strange and fascinating experiment in which he must interact with the world's first true artificial intelligence, housed in the body of a beautiful robot girl. [D: Alex Garland; A: Oscar Isaac, Alicia Vikander, Domhnall Gleeson]
  • Into the Woods (2014; Adventure, Comedy, Fantasy, Musical) Into the Woods is a modern twist on the beloved Brothers Grimm fairy tales in a musical format that follows the classic tales of Cinderella, Little Red Riding Hood, Jack and the Beanstalk, and Rapunzel-all tied together by an original story involving a baker and his wife, their wish to begin a family and their interaction with the witch who has put a curse on them. [D: Rob Marshall; A: Anna Kendrick, Daniel Huttlestone, James Corden]
  • Pan (2015; Adventure, Comedy, Family, Fantasy) The story of an orphan who is spirited away to the magical Neverland. There, he finds both fun and dangers, and ultimately discovers his destiny -- to become the hero who will be forever known as Peter Pan. [D: Joe Wright; A: Amanda Seyfried, Rooney Mara, Hugh Jackman]
  • Predestination (2014; Action, Drama, Mystery, Sci-Fi, Thriller) PREDESTINATION chronicles the life of a Temporal Agent sent on an intricate series of time-travel journeys designed to ensure the continuation of his law enforcement career for all eternity. Now, on his final assignment, the Agent must pursue the one criminal that has eluded him throughout time. [D: Michael Spierig, Peter Spierig; A: Ethan Hawke, Sarah Snook, Christopher Kirby]
  • Terminator Genisys (2015; Action, Adventure, Sci-Fi, Thriller) After finding himself in a new time-line, Kyle Reese teams up with John Connor's mother Sarah and an aging terminator to try and stop the one thing that the future fears, "Judgement Day". [D: Alan Taylor; A: Emilia Clarke, J.K. Simmons, Arnold Schwarzenegger]

Escena del trailer de Ex Machina


Finalmente, el conteo de pendientes por fecha:

(Ene-2009)    1
(May-2009)
(Oct-2009)
(Mar-2010)   16   4
(Sep-2010)   18  18   9   2   1
(Dic-2010)   12  12  12   5   1
(Abr-2011)   23  23  23  22  17   4
(Ago-2011)   11  11  11  11  11  11   4
(Ene-2012)   21  18  17  17  17  17  11   3
(Jul-2012)   15  15  15  15  15  15  14  11
(Nov-2012)       12  12  11  11  11  11  11   6
(Feb-2013)           19  19  16  15  14  14   8   2
(Jun-2013)               19  18  16  15  15  15  11
(Sep-2013)                   18  18  18  18  17  16
(Dic-2013)                       14  14  12  12  12
(Abr-2014)                            9   9   8   8
(Jul-2014)                               10  10  10
(Nov-2014)                                   24  22
(Feb-2015)                                       13
Total:      117 113 118 121 125 121 110 103 100  94

Read more
facundo

Vacaciones en el sur


Este verano volvimos a Piedra del Águila, en modo vacaciones pero también visita a mi hermana y cuñado, que viven allá desde hace unos años.

El viaje es largo, especialmente para los niños, pero haciéndolo en dos tirones (o sea, en dos días, durmiendo en algún hotel en la mitad del viaje) se hace soportable. Pero tampoco es para hacerlo seguido, y es en parte por eso que pasaron tres años desde la última visita.

En aquella oportunidad pusimos carpa en el terreno de los chicos, y los ayudamos a empezar a construir las habitaciones. Esta vez las habitaciones estaban totalmente terminadas y habitables, más el taller donde funciona la imprenta, más el garage (que usamos como habitación nuestra), más un montón de comodidades (como el horno de barro!).

Primeras habitaciones de la casa que están haciendo Diana y Gus a pulmón.

Hicimos bastante fiaca durante las vacaciones... yo, por ejemplo, dormí siesta todos los días (normalmente no duermo), leí un montón, charlamos mucho, comimos demasiado. Aprovechamos bastante el horno de barro: hicimos pollo y cordero, siempre con verduras que al horno de barro quedan geniales, incluso el choclo.

Malena jugando con las gallinas (que pensaban que ella les iba a dar de comer...).

El horno de barro que construyó mi hermana; ahí hicimos cordero, pollo, pan y muchas verduras.

Muy atípico cielo, una gran tormenta que apenas nos mojó un rato (pero pegó fuerte ~100km más al norte).

También paseamos bastante. Hicimos algunas actividades cortitas y cercanas, como subir hasta el águila representativa del pueblo, pasar una tarde en el perilago, una caminata al cerro que está al lado de la casa de los chicos, pasamos una tarde en un lugarcito muy lindo aguas abajo del embalse Pichi Picún Leufú, e incluso hicimos una caminata bastante complicada para llegar a una bahía que nos habían contado, con visita incluída a los restos de una ciudad abandonada.

Quizás la que más se destaca de todas las actividades que hicimos en Piedra del Águila fue escalar la pared vertical de una formación que corona un cerro de las afueras de la ciudad.

Fuimos guiados y supervisados por Esteban Martinez, que ya había subido y colgado las sogas de seguridad. La caminata hasta arriba del cerro no fue simple (ni la bajada, especialmente para mí, que llevé casi todo el tiempo a Malena a upa), pero llegamos a una pequeña superficie casi horizontal al costado de la pared. Allí fuimos escalando por turnos, trepando a la roca con la fuerza de piernas y brazos, mientras que alguien desde abajo mantenía tensas las cuerdas de seguridad, por las dudas que nos cayéramos (y con estas cuerdas, luego bajábamos descolgándonos). La verdad es que estuvo buenísimo, aunque las primera vez te da un poco de cagazo el estar solamente agarrado/apoyado con manos y pies a varios metros de altura...).

A mitad de la caminata hasta el cerro (lo que realmente escalamos es la parecita vertical de arriba de todo).

Ya casi arriba de todo, Gustavo y Diana viendo como Esteban prepara los equipos.

Casi llegando a la cima, parece más fácil y menos divertido de lo que realmente es :).

Haciendo la parte de seguridad mientras escalaba Felipe.

Por otro lado, no sólo nos quedamos en casa de los chicos o hicimos paseos cercanos. En dos oportunidades nos tomamos el día entero, saliendo temprano y volviendo tarde, para hacer una recorrida a algún lugar más lejos y conocerlo.

En uno de esos días nos fuimos al Chocón, a unos 150km al norte de Piedra del Águila. Fuimos principalmente al Museo Municipal, donde está expuesto el Giganotosaurus Carolinii (hasta el momento considerado el dinosaurio carnívoro más grande de todos los tiempos, aún superior al Tyrannsaurus Rex) que se descubrió justamente en esa zona por Rubén Carolini a fines del siglo pasado.

Todo el Chocón está coloreado con la temática dinosauril, y está muy bien que así sea (todas las ciudades deberían explotar más sus capacidades turísticas, siempre hay algo que mostrar). Pero no sólo eso tiene la ciudad, sino unos paisajes hermosos al Lago Ramos Mexía, y obviamente la represa.

La familia a los pies del simpático dinosaurio que cuida la entrada a El Chocón.

Dinosaurio reconstruido, en el museo.

Tres bestias feroces.

Otro día nos fuimos al Lago Huechulafquen. Fuimos desde Piedra del Águila para el sur por la RN237, hasta el Río Collón Curá, y de ahí subimos por la RN234 y la RN40 hasta Junín de los Andes. Ahí almorzamos, y seguimos camino al lago. En este último tramo tardamos bastante, porque no sólo es de ripio, sino que hay caminos de cornisa sinuosos y en pendiente, nada trivial de recorrer pero tampoco algo imposible, sólo se tarda más de lo calculado (y también porque nos clavamos una siesta a la mitad de la recorrida :p ).

Obviamente, los paisajes pagan todo eso con creces.

Vista desde donde paramos a tomar unos mates.

Malena, haciendo un enchastre de si misma al jugar con la tierra finita del lugar.

Felipe

Vista del volcán Lanín desde la ruta.

La vuelta la encaramos un par de horas antes de que anochezca, es que quería hacer sí o sí todo el camino hasta Junín de los Andes y también la ruta desde ahí hasta el cruce con la 237 antes que sea noche cerrada, por seguridad y comodidad.

Los cuatro junto al monumento representativo del nombre del pueblo.

Entre una cosa y la otra se fueron pasando los días y tuvimos que regresar a casa. Hace rato que no nos tomábamos más de una semana de vacaciones, y lo disfrutamos un montón, pero también te dan ganas de volver a casa, :)

Read more
facundo

Sueño fatal


El otro día soñé que me moría.

Bah, el sueño no era sobre que me moría... me moría durante el sueño, como un detalle de los sucesos. Era un nudo argumental, digamos, no lo central de la historia.

Quiero recalcar que no fue una pesadilla, sino un sueño normal. Bah, normal...

La historia iba de que había un virus suelto, o una maldición, o algo así, que se contagiaba por contacto y si en un determinado tiempo no contagiabas a alguien más, te morías. Recuerdo que alguien me contagiaba, y luego de contagiar a algunos, me descuidé y se me pasó el tiempo en cuestión. Me dí cuenta de eso, me dí cuenta que me iba a morir... y en el momento de la muerte fue como un "ffffssssup!" y nada más, yo seguía estando ahí (tenía conciencia de mí, sabía donde estaba, qué pasaba), sólo que no estaba vinculado a mi cuerpo. La historia seguía más bizarra aún: por un motivo que no recuerdo quería comunicarme con alguien que estaba vivo, entonces aprendía y practicaba (con la ayuda de un par más) a mover objetos "del mundo físico", hasta que en un momento alguien nos convocaba para ir a no sé donde, y ya no me acuerdo más.

En fin, lo que resalto fue que es la primera vez que me muero durante el sueño, y que no fue para nada traumático :p

Read more
facundo


Hace rato que debía este post, pero no fue hasta la semana pasada que pasé a buscar todos los audios por la biblioteca de ETER.

El curso estuvo bueno, dio un pantallazo general y superficial de mucho contenido que se profundiza en la carrera de Locución. La mayoría de mis compañeros estaban ahí porque no se decidían si encarar la carrera o no, o (como yo) porque les interesaba la temática en sí, con actividades en mayor o menor medida relacionadas al hablar en público, o la radio.

Estaba dividido en dos patas principales: la de Foniatría (dada por Ariel Aguirre), donde básicamente uno aprende a preparar y usar el instrumento (que no es sólo la boca, o cuerdas vocales, sino todo el cuerpo), y la de Locución (dada por Cristina Taboada), donde íbamos realizando distintas actividades en un estudio de verdad, aprendiendo no sólo a locutar sino también a interactuar con el operador, usar el estudio, y muchos detalles más.

De la parte de Foniatría no me queda más que algunas fotocopias a modo de apunte, pero de la parte de Locución tengo todos los audios que fuimos realizando, porque el operador los grababa:

  • Presentación: la primera vez que entramos en un estudio, con la idea de contar un poco de uno mismo y por qué estábamos ahí.
  • Cuento para niños: había que llevar un cuento infantil, para practicar lo que es una lectura muy colorida, con muchas inflexiones, apuntando a un público infantil.
  • Hablando raro: un juego donde había que leer un determinado texto con distintas voces (a mí me tocó 'gangoso', 'sensual' y 'neutro', pero habían muchos más como 'riéndose', o 'gritando', o 'enojada/o', etc.)
  • Que profesional: las mismas palabras con muchos significados distintos.
  • Texto difícil: un texto bastante complicado de leer... no llega a ser un trabalenguas, pero hay mil trampitas por ahí.
  • Leyenda Sioux: Un radioteatro, donde entre varios representábamos una historia bastante conocida; a mí me tocó ser el Relator.
  • Vecinos: Otro radioteatro, pero este sólo entre dos personas, representando una situación en el pasillo de un departamento.
  • Publicidades: Varios textos cortos que había que leer con el punto neutro pero alegre de las publicidades, hecho a dúo con la profesora.
  • Recitado: la consignar era llevar la letra de una canción con la idea de recitarla, y también una música (que no sea de esa canción) para poner de fondo.

Este último se lo dedico a mi hermana, porque es una letra que a nosotros siempre nos gustó mucho, ella hizo un grabado con esa temática (tengo una impresión colgada en la pared, y tuve una remera mucho tiempo), y también porque ella está cumpliendo un poco con la consigna de la canción, lo que me llena de alegría.

Read more
facundo

Logging levels


Cuando empecé con el concepto de loguear, me parecía demasiado tener niveles. Con el tiempo y la experiencia me di cuenta que son imprescindibles, :)

En la biblioteca estándar de Python hay un módulo logging que trae varios niveles prefijados. Son estos, con una pequeña anotación de cómo los uso, más un ejemplo de la vida real (tomados de mi programa de Encuentro o de fades).

- CRITICAL: creo que nunca lo usé :)

- ERROR: problemas de todo tipo; cosas que no deberían pasar, y si pasan son un inconveniente; muchas veces el programa no continúa, o continua de forma parcial o limitada, luego de este tipo de linea logueada. En este ejemplo logueo que no se pudo bajar la lista de los backends durante una actualización (también en este caso se le avisa al usuario mediante una ventanita, y el programa sigue, aunque la actualización no se concretó):

    try:
        _, backends_file = yield utils.download(BACKENDS_URL)
    except Exception, e:
        logger.error("Problem when downloading backends: %s", e)
        tell_user("Hubo un PROBLEMA al bajar la lista de backends:", e)
        return

- WARNING: para indicar que sucedió algo que en general no debería pasar; en general no son cosas malas, sino más bien anómalas, y no presentan una situación problemática. En el siguiente ejemplo estoy dejando registro que ignoro la opción 'quiet' que pasó el usuario (porque también pasó la opción 'verbose', que es más importante):

    if verbose and quiet:
        l.warning("Overriding 'quiet' option ('verbose' also requested)")

- INFO: información general del funcionamiento del programa, cosas que son imprescindibles saber y que siempre queremos que sean registradas; en general no involucran gran cantidad de lineas, pero permite seguir el flujo de ejecución del programa desde un nivel alto. Normalmente los programas que se entregan a los usuarios o corren en los servidores están configurados para realmente mandar a disco desde este nivel. En las siguientes dos lineas muestro lo primero que loguea Encuentro al arrancar: con qué versión de Python está siendo ejecutado y qué versión de sí mismo es:

    log.info("Running Python %s on %r", sys.version_info, sys.platform)
    log.info("Encuentro version: %r", version)

- DEBUG: toda la información necesaria para analizar en detalle la ejecución del programa. Puede involucrar grandes cantidades de información, y hasta ser un problema con respecto al uso de disco o afectar la performance, pero en general no se corren los programas en este nivel, sólo durante el desarrollo o en casos de tratar de analizar un problema específico. No es raro, por ejemplo, pedirle al usuario que ejecute el programa con un parámetro especial que configura los logs en este nivel y que trate de reproducir el problema que tuvo, para luego hacer un análisis forense de la situación. En el siguiente ejemplo estoy dejando constancia que fades tuvo que instalar pip a mano en el virtualenv:

    logger.debug("Installing PIP manually in the virtualenv")

Me ha pasado en sistemas muy complejos de necesitar un nivel más abajo que DEBUG para loguear toda aquella información que podría llegar a ser útil para un análisis del comportamiento del programa, pero que normalmente sería un exceso de datos (lo cual complica desde la lectura de los registros hasta el mismo manejo de los archivos). Entonces, usábamos un nivel TRACE, que casi nunca se prendía, para este propósito.

La macana es que el módulo de logging no tiene un nivel TRACE, pero lo creábamos a mano:

    TRACE = 5
    logging.addLevelName('TRACE', TRACE)

Fíjense el 5 ese: es que DEBUG es 10, entonces queda "más abajo". Claro, para que funcione todo, teníamos que usar un Logger custom:

    class Logger(logging.Logger):
        """Logger that support our custom levels."""

        def trace(self, msg, *args, **kwargs):
            """log at TRACE level"""
            if self.isEnabledFor(TRACE):
                self._log(TRACE, msg, args, **kwargs)

Para más información sobre la infrastructura de logging de Python y consejos generales sobre qué, cómo, o cuándo dejar registro de lo que sucede, pueden ver mi charla sobre el tema (estos sons los slides, y en algún momento se publicará acá el video de esta misma charla que dí en la PyCon de Rafaela).

Read more
facundo

Decime quien sos vos


El título de este post es robado a un maravilloso programa de Eduardo Aliverti.

Es un programa de radio que sale desde hace años por Radio Nacional los domingos a las 10hs. Se basa en una entrevista de Aliverti a alguna personalidad, armando un diálogo tranquilo, profundo, inteligente.

La dinámica es bastante minimalista: sólo Aliverti charlando con el entrevistado. Nada más. La producción es de Roxana Russo, de extensísima carrera, y directora de la carrera de Periodismo en ETER (escuela donde terminé el curso de Locución y Técnicas Vocales hace un par de meses, :) ).

En palabras de ellos mismos:

        "Decime quién sos vos" es un programa de entrevistas tan distendidas como agudas e intimistas donde convergen personalidades emblemáticas del pensamiento, la cultura, el arte, el espectáculo, el deporte.

¿Por qué les cuento esto? En parte porque el programa se merece ampliamente una recomendación: es uno de los (casi ningún) programas de radio y televisión que escucho religiosamente.

Pero también porque van a poder bajarlo de forma fácil usando Encuentro, a partir de la versión 2.1 que acabo de liberar.

Meter "Decime quien sos vos" en Encuentro me llevó *muchísimo* trabajo (incluso tuve que hacer una biblioteca para parsear SWFs en Python), pero la posibilidad de buscar fácilmente entrevistados para poder bajar el programa lo valía.

Entonces, ahora es muy fácil escuchar entrevistas de calidad a (entre otros) Pepe Soriano, Hector Larrea, Teresa Parodi, Carlos Ulanosvsky, Horacio Fontova, Lalo Mir, Horacio Verbitsky, Lito Vitale, Adrián Paenza, Walter Malosetti, Luis Salinas, Roberto Perfumo, Abelardo Castillo, Gonzalo Bonadeo, Luis María Pescetti, Alejandro Dolina, Lito Cruz, etcétera, etcétera, y recontra etcétera.

Bajen/instalen el nuevo Encuentro, refresquen la metadata, y además de todo lo que pueden encontrar ahí, filtren u ordenen por este nuevo programa, y van a ver que el contenido es invaluable.

Que lo disfruten, :)

Read more
facundo

PyCon 2014 en Rafaela


Acaba de pasar la sexta PyCon Argentina. Como dice el título, se hizo en Rafaela, provincia de Santa Fe.

Fuimos con Nico Demarchi en auto, salimos el miércoles a la tarde y llegamos una y monedas de la mañana, volvimos el domingo durante el día, arrancando a media mañana. Creo que es el límite de lo que haría en auto... más distancia ya iría en micro o avión.

Yo tenía que llegar el miércoles a la noche porque el jueves abría el día de talleres con Introducción a Python (modo charla extendida, ya que tenía dos horas). El jueves dí dos charlas más: Cómo debuguear en Python, y Cómo los logs me salvaron el alma.Y para cerrar (justo antes de los sorteos y foto grupal), le conté a la gente un poco cómo íbamos con el proyecto de armar la Asociación Civil de PyAr.

Mis charlas salieron bien, aunque la de debugging no me gustó del todo como la había dado (pero luego recibí buen feedback). Para el taller de Intro a Python usé por primera vez a Pysenteishon, un software muy copado y piola para ir pasando los slides desde el teléfono (¡gracias Emiliano por hacerlo!). Y para las charlas del jueves estuve por primera vez descalzo dando la presentación (era algo que quería probar desde hace rato, y aproveché que el escenario del auditorio tenía piso de madera).

Dando la charla en patas

También fuí a muchas charlas, había muchas cosas copadas para ver, y creo que me salté uno o dos timeslots nada más en toda la conferencia. Las keynotes estuvieron bien, pero no me entusiasmaron particularmente. Y todo lo fue lugar y organización estuvo genial, la verdad que se pasaron. Lo mismo con la gente con la que me (re)encontré: es un placer ser parte de una comunidad así.

Yo llevé la cámara... pero la verdad es que colgué sacando fotos. Pero la grosa de Yami sacó un montón, están todas acá. Y una de las últimas que sacó es justamente la grupal, esta que muestro acá:

Foto grupal

Y como siempre que uno no viaja durmiendo o solo, está el efecto de "PyCon extendida". Es que uno viene charlando de mil cosas, de lo más variado, pero también de proyectos, ideas, etc. Con Nico nos venía rondando en la cabeza una idea para facilitar el uso de dependencias en programas Python, estuvimos charlando con gente en la conferencia, nos dieron feedback, la idea fue mutando... y en el viaje de vuelta se nos terminó de ocurrir algo piola, que no debería ser demasiado loco de implementar; ya les traeré la novedad.

¡Pero no sólo un proyecto me traje! (como si tuviera pocos y/o mucho tiempo libre, ¿no?). Tengo ganas de hacer una "maquinita de timelapse" con una Raspi (una cajita que uno puede colgar en cualquier lado y dejarla ahí algunas horas o un par de días y arme un video de esos donde se ve todo rápido, por ejemplo este). El otro proyecto es armar una valija o caja robusta con todo lo necesario en un PyCamp (router, computadora para caché de repositorios, energía, y varios etcéteras), de manera de tener todo listo y de fácil armado, onda llegás y enchufás. Ya veremos cómo se van desarrollando ambos proyectos...

Read more
facundo

Como loco con las películas


Gran cantidad de películas vistas, principalmente porque tuve un par de viajes en el medio (y en uno en particular, tanto en la ida como en el regreso, tenía enchufe en el asiento, así que pude ver varias pelis sin preocuparme de la duración de la batería de la laptop).

Y también porque vi varias en casa. Como contrapartida, vengo atrasado con las series... pero bueno :)

  • A Good Day to Die Hard: -0. Algunos momentos de humor. No mucho más, demasiado repetido todo.
  • Branded: -0. Demasiado volada. Tiene una idea interesante, y una historia, pero no se llevan bien del todo.
  • Dark Shadows: -0. Una gran colección de actores para una historia que ni fú ni fá.
  • Emergo: -0. Tiene algunas cosas muy interesantes, pero todo ese tipo de películas donde tenés una imagen quieta durante un minuto y de repente se mueve o pasa algo, me aburren profundamente.
  • Extraterrestre: -0. Algunos momentos tiene, y la historia de la película no está mal, es una mirada nueva. Pero en general me aburrió :/
  • Hit and Run: -0. Una comedia romanticona más, principalmente de persecuciones y disparos. Berreta, pero con sus momentos de humor.
  • Into the Mind: +0. La historia no vale demasiado... pero la fotografía es absolutamente genial.
  • Intruders: +0. No es la gran cosa a nivel de terror, pero tiene giros interesantes, y me mantuvo atrapado hasta el final.
  • Iron Man 3: +0. Un poco más de lo mismo, pero dentro de eso, la película está bien, y es un correcto cierre a la historia.
  • Meeting Evil: -1. Dos escenas. O tres. Nada más.
  • Metegol: +1. La historia está buena, y la animación es inmejorable, muy buena peli.
  • Muppets Most Wanted: +0. Es *obviamente* para chicos... pero es linda.
  • Oblivion: +0. Una buena película de ciencia ficción y acción. Podría ser mejor con alguna que otra mejor actuación, si fuese menos previsible, y sin un par de errores conceptuales en la historia. Pero zafa, cumple.
  • One for the Money: +0. Comedia romántica con algo de acción... muy muy liviana, pero divertida.
  • Savages: +0. La historia no es la gran cosa, pero muy bien contada! Buenas actuaciones, buena fotografía, buena dirección.
  • Side Effects: -0. Un poco lenta, algo predecible, y con un final bleh. Tiene sus momentos interesantes y algunos giros, pero no alcanza.
  • Side by Side: +1. Muy buena película que muestra la evolución en la tecnología del cine. Muy bien armada la película, maravillosamente contada.
  • Skyfall: +0. Es una buena película de James Bond (con floja participación de chicas Bond, sin embargo). Si te gusta, bien, sino a otra cosa.
  • The Adjustment Bureau: +1. Muy buena historia, muy bien explicado lo que tiene sentido explicar (dejando afuera lo que no tiene sentido, claro), muy interesante todo el concepto.
  • The Amazing Spider-Man: +0. La peli está buena, pero está muy pegada al original, con lo cual es como ver un remake de la película de hace sólo ~10 años, y eso le resta muchísimo.
  • The Bourne Legacy: -0. Una peli de persecuciones. No vale la pena. Sí, tiene algo alrededor, pero nada nuevo contra las Bournes anteriores. En resumen... te entretiene, pero no vale la pena.
  • The Call: +0. La peli no está mal, las actuaciones muy buenas y la historia.... bien hasta el final. O sea, hasta cuatro minutos antes del final :/
  • The Debt: -0. La historia tiene un trasfondo interesante... pero me aburrió demasiado.
  • The Last Stand: -0. "Hagamos una con Arnold, que está viejo, repitiendo clichés; pongamos a una parejita linda como ayudantes, y algunos actores buenos para que le den estructura". La peli es de esas que los malos, los buenos y los buenos están todo el tiempo disparando para ver quien la tiene más larga.
  • The Paperboy: -0. La historia está buena... demasiado sórdida, quizás, sin mucho sentido; es como una pequeña imagen de algo que no llegó a crecer, se nota que le falta profundidad en muchos aspectos (al final te enterás que es basada en una novela, eso lo explica).
  • Total Recall: -0. No me gustó... por lo fantasioso. O sea, si va a ser una película de ciencia ficción, todo bien, pero que sea más o menos en serio. Si van a agarrar un libro de Philip K. Dick y lo van a llevar a la pantalla estilo Underworld, no da...


De este lado, también un montonazo de películas nuevas! Parece que se pusieron las pilas con temas interesantes. Ojo, también hay algunas que son viejas y me las recomendaron hace poco.

Una novedad es que empecé a incluir de qué va la peli (argumento, fecha, género, actores, director), lo que puede servirle a alguien para a priori descartarla o decidir de buscar más info. Obviamente, no los escribo yo, sino que los estoy sacando de IMDB; sí, ya sé, está en inglés... pero es mejor que nada.

  • 7 cajas (2012; Action, Thriller) It's Friday night in Asunción, Paraguay and the temperature is sweltering. Víctor, a 17-year-old wheelbarrow delivery boy, dreams of becoming famous and covets a fancy cellular phone in the infamous Mercado 4. He's offered a chance to deliver seven boxes with unknown contents in exchange for a quick US$100. But what sounds like an easy job soon gets complicated. Something in the boxes is highly coveted and Víctor and his pursuers quickly find themselves caught up in a crime they know nothing about. [D: Juan Carlos Maneglia, Tana Schembori; A: Celso Franco, Víctor Sosa, Lali Gonzalez]
  • All Is Lost (2013; Action, Adventure, Drama) Deep into a solo voyage in the Indian Ocean, an unnamed man (Redford) wakes to find his 39-foot yacht taking on water after a collision with a shipping container left floating on the high seas. With his navigation equipment and radio disabled, the man sails unknowingly into the path of a violent storm. Despite his success in patching the breached hull, his mariner's intuition and a strength that belies his age, the man barely survives the tempest. Using only a sextant and nautical maps to chart his progress, he is forced to rely on ocean currents to carry him into a shipping lane in hopes of hailing a passing vessel. But with the sun unrelenting, sharks circling and his meager supplies dwindling, the ever-resourceful sailor soon finds himself staring his mortality in the face. [D: J.C. Chandor; A: Robert Redford]
  • Autómata (2014; Sci-Fi, Thriller) Jacq Vaucan is an insurance agent of ROC robotics corporation who investigates cases of robots violating their primary protocols against harming humans. What he discovers will have profound consequences for the future of humanity. [D: Gabe Ibáñez; A: Antonio Banderas, Birgitte Hjort Sørensen, Melanie Griffith]
  • Camp X-Ray (2014; Drama) A young soldier escapes her suffocating small town by joining the military, only to find that she isn't going for a tour of duty in Iraq as she hoped. Instead, she's sent to Guantanamo. Met with hatred and abuse from the men in her charge, she forges an odd friendship with a young man who has been imprisoned at Gitmo for eight years. [D: Peter Sattler; A: Nawal Bengholam, Peyman Moaadi, Lane Garrison]
  • El Ardor (2014; Drama, Western) A mysterious man emerges from the Argentinean rainforest to rescue the kidnapped daughter of a poor farmer after mercenaries murder her father and take over his property. [D: Pablo Fendrik; A: Gael García Bernal, Alice Braga, Claudio Tolcachir]
  • Focus (2015; Comedy, Crime, Drama, Romance) A veteran grifter takes a young, attractive woman under his wing, but things get complicated when they become romantically involved. [D: Glenn Ficarra, John Requa; A: Margot Robbie, Will Smith, Rodrigo Santoro]
  • Interstellar (2014; Adventure, Sci-Fi) In the near future Earth has been devastated by drought and famine, causing a scarcity in food and extreme changes in climate. When humanity is facing extinction, a mysterious rip in the space-time continuum is discovered, giving mankind the opportunity to widen their lifespan. A group of explorers must travel beyond our solar system in search of a planet that can sustain life. The crew of the Endurance are required to think bigger and go further than any human in history as they embark on an interstellar voyage, into the unknown. Coop, the pilot of the Endurance, must decide between seeing his children again and the future of the human race. [D: Christopher Nolan; A: Ellen Burstyn, Matthew McConaughey, Mackenzie Foy]
  • The Hunger Games (2012; Sci-Fi) In a dystopian future, the totalitarian nation of Panem is divided between 12 districts and the Capitol. Each year two young representatives from each district are selected by lottery to participate in The Hunger Games. Part entertainment, part brutal retribution for a past rebellion, the televised games are broadcast throughout Panem. The 24 participants are forced to eliminate their competitors while the citizens of Panem are required to watch. When 16-year-old Katniss's young sister, Prim, is selected as District 12's female representative, Katniss volunteers to take her place. She and her male counterpart, Peeta, are pitted against bigger, stronger representatives, some of whom have trained for this their whole lives. [D: Gary Ross; A: Stanley Tucci, Wes Bentley, Jennifer Lawrence]
  • La Vénus à la fourrure (2013; Drama) An actress attempts to convince a director how she's perfect for a role in his upcoming production. [D: Roman Polanski; A: Emmanuelle Seigner, Mathieu Amalric]
  • Laggies (2014; Comedy, Romance) In the throes of a quarter-life crisis, Megan panics when her boyfriend proposes, then, taking an opportunity to escape for a week, hides out in the home of her new friend, 16-year-old Annika, who lives with her world-weary single dad. [D: Lynn Shelton; A: Keira Knightley, Chloë Grace Moretz, Sam Rockwell]
  • Mad Max: Fury Road (2015; Action, Adventure, Thriller) An apocalyptic story set in the furthest reaches of our planet, in a stark desert landscape where humanity is broken, and almost everyone is crazed fighting for the necessities of life. Within this world exist two rebels on the run who just might be able to restore order. There's Max, a man of action and a man of few words, who seeks peace of mind following the loss of his wife and child in the aftermath of the chaos. And Furiosa, a woman of action and a woman who believes her path to survival may be achieved if she can make it across the desert back to her childhood homeland. [D: George Miller; A: Tom Hardy, Charlize Theron, Nicholas Hoult]
  • Mortdecai (2015; Action, Comedy) Juggling some angry Russians, the British Mi5, his impossibly leggy wife and an international terrorist, debonair art dealer and part time rogue Charlie Mortdecai must traverse the globe armed only with his good looks and special charm in a race to recover a stolen painting rumored to contain the code to a lost bank account filled with Nazi gold. [D: David Koepp; A: Johnny Depp, Olivia Munn, Aubrey Plaza]
  • Primer (2004; Drama, Thriller, Sci-Fi) At night and on weekends, four men in a suburban garage have built a cottage industry of error-checking devices. But, they know that there is something more. There is some idea, some mechanism, some accidental side effect that is standing between them and a pure leap of innovation. And so, through trial and error they are building the device that is missing most. However, two of these men find the device and immediately realize that it is too valuable to market. The limit of their trust in each other is strained when they are faced with the question, If you always want what you can't have, what do you want when you can have anything? [D: Shane Carruth; A: Shane Carruth, David Sullivan, Casey Gooden]
  • Relatos salvajes (2014; Comedy, Drama, Thriller) A story about love deception, the return of the past, a tragedy, or even the violence contained in an everyday detail, appear themselves to push them towards the abyss, into the undeniable pleasure of losing control. [D: Damián Szifrón; A: Liliana Ackerman, Luis Manuel Altamirano García, Alejandro Angelini]
  • Stealing Beauty (1996; Drama, Romance) After her mother commits suicide, nineteen year old Lucy Harmon travels to Italy to have her picture painted. However, she has other reasons for wanting to go. She wants to renew her acquaintance with Nicolo Donati, a young boy with whom she fell in love on her last visit four years ago. She also is trying tosolve the riddle left in a diary written by her dead mother, Sara. [D: Bernardo Bertolucci; A: Carlo Cecchi, Sinéad Cusack, Joseph Fiennes]
  • The Hobbit: The Battle of the Five Armies (2014; Adventure, Fantasy) Bilbo and Company are forced to be embraced in a war against an armed flock of combatants and the terrifying Smaug from acquiring a kingdom of treasure and obliterating all of Middle-Earth. [D: Peter Jackson; A: Benedict Cumberbatch, Luke Evans, Evangeline Lilly]
  • The Imitation Game (2014; Biography, Drama, Thriller, War) Based on the real life story of legendary cryptanalyst Alan Turing, the film portrays the nail-biting race against time by Turing and his brilliant team of code-breakers at Britain's top-secret Government Code and Cypher School at Bletchley Park, during the darkest days of World War II. [D: Morten Tyldum; A: Benedict Cumberbatch, Keira Knightley, Matthew Goode]
  • The Maze Runner (2014; Action, Mystery, Sci-Fi, Thriller) Thomas wakes up in an elevator, remembering nothing but his own name. He emerges into a world of about 60 teen boys who have learned to survive in a completely enclosed environment, subsisting on their own agriculture and supplies. A new boy arrives every 30 days. The original group has been in "The Glade" for two years, trying to find a way to escape through the Maze that surrounds their living space. They have begun to give up hope. Then a comatose girl arrives with a strange note, and their world begins to change. There are some great, fast-paced action scenes, particularly those involving the nightmarish Grievers who plague the boys. [D: Wes Ball; A: Dylan O'Brien, Aml Ameen, Ki Hong Lee]
  • The Scribbler (2014; Thriller) THE SCRIBBLER follows Suki (Katie Cassidy), a young woman confronting her destructive mental illness using "The Siamese Burn," an experimental machine designed to eliminate multiple personalities. The closer Suki comes to being "cured," she's haunted by a thought - what if the last unwanted identity turns out to be her? [D: John Suits; A: Katie Cassidy, Garret Dillahunt, Michelle Trachtenberg]
  • The Book of Life (2014; Animation, Adventure, Comedy, Family, Fantasy, Romance) From producer Guillermo del Toro and director Jorge Gutierrez comes an animated comedy with a unique visual style. THE BOOK OF LIFE is the journey of Manolo, a young man who is torn between fulfilling the expectations of his family and following his heart. Before choosing which path to follow, he embarks on an incredible adventure that spans three fantastical worlds where he must face his greatest fears. Rich with a fresh take on pop music favorites, THE BOOK OF LIFE encourages us to celebrate the past while looking forward to the future. [D: Jorge R. Gutierrez; A: Diego Luna, Zoe Saldana, Channing Tatum]
  • The Judge (2014; Drama) Hank Palmer is a successful defense attorney in Chicago, who is getting a divorce. When His brother calls with the news that their mother has died, Hank returns to his childhood home to attend the funeral. Despite the brittle bond between Hank and the Judge, Hank must come to his fathers aid and defend him in court. Here, Hank discovers the truth behind the case, which binds together the dysfunctional family and reveals the struggles and secrecy of the family. [D: David Dobkin; A: Robert Downey Jr., Robert Duvall, Vera Farmiga]
  • The November Man (2014; Action, Crime, Thriller) Peter Devereaux is a former CIA agent who is asked by the man he worked for that their person who in Russia who is presently close to a man running for President, who is believed to have committed crimes during the Chechen war, can give them the name of someone who can prove it. His friend says that she will only come to him. So he goes and she gets the info and tries to get out but the man finds out and tries to get her. Peter arrives and gets her but as they are getting away they're shot at. She is killed but tells Peter the name before she dies. Peter kills the men who attacked them but when he sees the leader, Mason, a man he trained, he realizes the CIA is involved. He tries to find the person and the only person who might know where she is, is Alice Fournier, the social worker who helped her when she came to the West. A CIA bigwig comes and orders that Devereaux be taken out and wants Mason to take care of it. An assassin whom the Presidential candidate sent to make sure no one wrecks his chances of becoming President. Devereaux finds Alice and tries to protect while trying to find the girl. [D: Roger Donaldson; A: Pierce Brosnan, Luke Bracey, Olga Kurylenko]
  • Tomorrowland (2015; Mystery, Sci-Fi) Bound by a shared destiny, a bright, optimistic teen bursting with scientific curiosity and a former boy-genius inventor jaded by disillusionment embark on a danger-filled mission to unearth the secrets of an enigmatic place somewhere in time and space that exists in their collective memory as "Tomorrowland." [D: Brad Bird; A: Britt Robertson, George Clooney, Judy Greer]
  • Under the Skin (2013; Drama, Sci-Fi, Thriller) A female drives a van through the roads and streets of Scotland seducing lonely men. [D: Jonathan Glazer; A: Scarlett Johansson, Jeremy McWilliams, Lynsey Taylor Mackay]


Finalmente, el conteo de pendientes por fecha:

(Ene-2009)    1   1
(May-2009)    5
(Oct-2009)   14
(Mar-2010)   18  16   4
(Sep-2010)   18  18  18   9   2   1
(Dic-2010)   13  12  12  12   5   1
(Abr-2011)   23  23  23  23  22  17   4
(Ago-2011)   12  11  11  11  11  11  11   4
(Ene-2012)   21  21  18  17  17  17  17  11   3
(Jul-2012)       15  15  15  15  15  15  14  11
(Nov-2012)           12  12  11  11  11  11  11   6
(Feb-2013)               19  19  16  15  14  14   9
(Jun-2013)                   19  18  16  15  15  15
(Sep-2013)                       18  18  18  18  17
(Dic-2013)                           14  14  12  12
(Abr-2014)                                9   9   8
(Jul-2014)                                   10  10
(Nov-2014)                                       24
Total:      125 117 113 118 121 125 121 110 103 101

Read more