Refresh de pelis de fin de año

Buena temporada para ver películas fue. Muchas vistas, pero con resultados variados... mucho voto negativo, y un sólo +1!

  • Beginners: +0. Linda película sobre la aceptación de lo que uno es. Muy buenas actuaciones, y lindo como está contada.
  • Chef: +1. Linda película sobre la búsqueda de lo que te divierte hacer y vivir. Imperdible si te gusta cocinar o ver cocinar.
  • Drinking Buddies: +0. Relaciones humanas, tan difíciles. Esta peli muesta un lado que no siempre se explicita, entre la amistad y la atracción, muy buena.
  • Edge of Tomorrow: +0. No es Groundhog Day, pero está bien tratado el tema. Y el resto de la peli divierte, pero termina siendo sólo una peli de acción.
  • Guardians of the Galaxy: -0. Todo lo que es construcción de bichos o mundos extraterrestres, está muy bien, y tiene bastantes partes con buen humor... pero el resto es muy childish, no termina de armar una película en serio.
  • Her: +0. Una buena historia, destacando que las relaciones humanas son siempre desde el punto de vista de las partes que componen la relación.
  • I Give It a Year: +0. Una comedia romántica suave. Todo predecible, nada particularmente interesante, pero vale la pena si estás buscando algo pasatista.
  • In a World...: -0. Una comedia semi-romántica, con nada especialmente interesante para destacar.
  • Leonera: +0. Cruda y fuerte como todas las de Trapero, pero es más importante la historia, que está buena.
  • Lucy: -0. Tiene partes muy interesantes, pero es demasiado flashera, demasiado... poco sustentable.
  • Mindscape: +0. Un thriller que te tiene hasta último momento tratando de entender lo que pasa. Me gustan las pelis así, especialmente cuando al final explican todo :)
  • Non-Stop: -0. Tiene algunos giros interesantes, y un suspenso y una resolución que fueron lo que me llevaron a verla... pero realmente, todo termina en un "suave" que no vale la pena :/
  • Out of the Furnace: -0. Con buenos actores, y aunque la historia está bien, deja demasiada cosas sin explicar o a medio sugerir.
  • Passion: -0. La historia podría estar buena... pero está mal "contada", las situaciones están mal llevadas, no tiene ritmo. Y el final... bleh.
  • Primer: -0. Interesante, pero muy rebuscada. Aplica un concepto que está piola, pero le sobra mucho alrededor y finalmente no explica bien lo que pasa.
  • Sabotage: -0. Tiene sus momentos interesantes, el misterio, la dinámica de algunas personas, la violencia cruda... pero no suma. No suma.
  • Sin City: A Dame to Kill For: -0. La fotografía es simplemente maravillosa, impecable, exhuberante... pero no tiene mucha historia, y es muy monótono todo.
  • The Family: +0. Típica comedia de gangsters, sin muchas pretensiones pero divertida :)
  • The Grand Budapest Hotel: +0. Bizarra, divertida, dinámica. Me gustó mucho la forma en que está contada, y la fotografía es GENIAL. Alta concentración de actores buenos, también...
  • The Kitchen: -0. Tiene sus momentos que valen algo, y es interesante la dinámica de filmar todo desde una habitación, pero no mucho más.
  • The Lifeguard: +0. Una linda historia sobre la búsqueda de qué ser, de que hacer con la vida.
  • Wakolda: +0. Interesante historia (no sé cuanto de verídica), buena peli.
  • X-Men: Days of Future Past: -0. Por momentos interesante, especialmente el juego de pasado/futuro, pero más de lo mismo, y aburre que no haya nada nuevo. Demasiado pasatista.

También muchas nuevas anotadas para ver...

  • Air (2015; Sci-Fi, Thriller) In the near future, breathable air is nonexistent. Virtually all of humanity has disappeared and those chosen to reestablish society reside in a controlled state of suspended animation. Two engineers (Norman Reedus and Djimon Hounsou) tasked with guarding the last hope for mankind struggle to preserve their own sanity and lives while administering to their vital task at hand. [D: Christian Cantamessa; A: Norman Reedus, Djimon Hounsou, Sandrine Holt]
  • Alice Through the Looking Glass (2016; Adventure, Family, Fantasy) When Alice wakes up in Wonderland she must travel through a mysterious new world to retrieve a magical scepter that can stop the evil Lord of Time before he turns forward the clock and turns Wonderland into a barren, lifeless old world. With the help of some new friends, Alice must also uncover an evil plot to put the Queen of Hearts back on the throne. [D: James Bobin; A: Johnny Depp, Anne Hathaway, Alan Rickman]
  • Amnesiac (2015; Drama, Horror, Mystery, Thriller) The story of a man who wakes up in bed suffering from memory loss after being in an accident, only to begin to suspect that his wife may not be his real wife and that a web of lies and deceit deepen inside the house where he soon finds himself a prisoner. [D: Michael Polish; A: Kate Bosworth, Wes Bentley, Olivia Rose Keegan]
  • Anesthesia (2015; Drama, Thriller) Philosophy professor Walter Zarrow is wounded during a mugging. In an effort to escape he rings buzzers indiscriminately, waking Sam, a middle aged father of two having an affair in the city. Sam reluctantly answers Zarrow's pleas, and Zarrow loses consciousness in his arms. Through an exploration of why these men, along with the mugger, and an addict named Joe, come together, we explore New York City. The experience of Zarrow, Sam, Joe and Zarrow's assailant ripple quickly out to include the connected lives of a housewife struggling with alcoholism, a stoner teen desperate to lose his virginity, a brilliant but failed writer fighting addiction, two parents confronting the prospect of terminal illness, and a brilliant grad student who wounds herself to feel alive. [D: Tim Blake Nelson; A: David Aaron Baker, Derrick Baskin, Jacqueline Baum]
  • Black Mass (2015; Biography, Crime, Drama) John Connolly and James "Whitey" Bulger grew up together on the streets of South Boston. Decades later, in the late 1970s, they would meet again. By then, Connolly was a major figure in the FBI's Boston office and Whitey had become godfather of the Irish Mob. What happened between them - a dirty deal to trade secrets and take down Boston's Italian Mafia in the process - would spiral out of control, leading to murders, drug dealing, racketeering indictments, and, ultimately, to Bulger making the FBI's Ten Most Wanted List. [D: Scott Cooper; A: Johnny Depp, Joel Edgerton, Benedict Cumberbatch]
  • Chloe & Theo (2015; Comedy, Drama) Theo, an Inuit from the Arctic, travels to New York City to warn world leaders about the catastrophic impact of global warming on the planet. Upon arrival he meets a homeless girl named Chloe, who has an unusual vigor for life, is mildly delusional, and completely obsessed by Bruce Lee. Together, they will save the world. [D: Ezna Sands; A: Theo Ikummaq, Dakota Johnson, Mira Sorvino]
  • Deadpool (2016; Action, Adventure, Sci-Fi, Thriller) Based upon Marvel Comics most unconventional anti-hero, DEADPOOL tells the origin story of former Special Forces operative turned mercenary Wade Wilson, who after being subjected to a rogue experiment that leaves him with accelerated healing powers, adopts the alter ego Deadpool. Armed with his new abilities and a dark, twisted sense of humor, Deadpool hunts down the man who nearly destroyed his life. [D: Tim Miller; A: Morena Baccarin, Gina Carano, Ryan Reynolds]
  • Experimenter (2015; Biography, Drama, History) Experimenter is based on the true story of famed social psychologist Stanley Milgram, who in 1961 conducted a series of radical behavior experiments that tested ordinary humans willingness to obey by using electric shock. We follow Milgram, from meeting his wife Sasha through his controversial experiments that sparked public outcry. [D: Michael Almereyda; A: Winona Ryder, Taryn Manning, Kellan Lutz]
  • Hail, Caesar! (2016; Comedy, Drama, Musical) A Hollywood fixer in the 1950s works to keep the studio's stars in line. [D: Ethan Coen, Joel Coen; A: Scarlett Johansson, Channing Tatum, Ralph Fiennes]
  • Jane Got a Gun (2016; Action, Drama, Western) Jane Got a Gun centers on Jane Hammond, who has built a new life with her husband Bill "Ham" Hammond after being tormented by the ultra-violent Bishop Boys outlaw gang. She finds herself in the gang's cross-hairs once again when Ham stumbles home riddled with bullets after dueling with the Boys and their relentless mastermind Colin. With the vengeful crew hot on Ham's trail, Jane has nowhere to turn but to her former fiancé Dan Frost for help in defending her family against certain destruction. Haunted by old memories, Jane's past meets the present in a heart-stopping battle for survival. [D: Gavin O'Connor; A: Natalie Portman, Ewan McGregor, Rodrigo Santoro]
  • Momentum (2015; Action, Thriller) Alex, a mysterious thief, is pulled in by her former partner for one last heist. She quickly finds it was never just about the diamonds. A brutal murder sparks a cat and mouse chase between Alex and a master assassin. Now she must uncover the lies behind the heist and discover the secrets behind the men who have made her a target. [D: Stephen S. Campanelli; A: Olga Kurylenko, Morgan Freeman, James Purefoy]
  • Now You See Me 2 (2016; Action, Comedy, Thriller) One year after outwitting the FBI and winning the public's adulation with their Robin Hood-style magic spectacles, The Four Horsemen resurface for a comeback performance in hopes of exposing the unethical practices of a tech magnate. The man behind their vanishing act is none other than Walter Mabry, a tech prodigy who threatens the Horsemen into pulling off their most impossible heist yet. Their only hope is to perform one last unprecedented stunt to clear their names and reveal the mastermind behind it all. [D: Jon M. Chu; A: Daniel Radcliffe, Lizzy Caplan, Michael Caine]
  • Rock the Kasbah (2015; Comedy, Music) A down-on-his-luck music manager discovers a teenage girl with an extraordinary voice while on a music tour in Afghanistan and takes her to Kabul to compete on the popular television show, Afghan Star. [D: Barry Levinson; A: Bill Murray, Bruce Willis, Kate Hudson]
  • Sleeping with Other People (2015; Comedy) A good-natured womanizer and a serial cheater form a platonic relationship that helps reform them in ways, while a mutual attraction sets in. [D: Leslye Headland; A: Alison Brie, Jason Sudeikis, Jordan Carlos]
  • Snowden (2016; Biography, Drama, Thriller) SNOWDEN stars Joseph Gordon-Levitt and is written and directed by Oliver Stone. The script is based on the books The Snowden Files: The Inside Story of the World's Most Wanted Man by Luke Harding and Time of the Octopus by Anatoly Kucherena. [D: Oliver Stone; A: Shailene Woodley, Scott Eastwood, Joseph Gordon-Levitt]
  • Spectre (2015; Action, Adventure, Thriller) A cryptic message from the past sends James Bond on a rogue mission to Mexico City and eventually Rome, where he meets Lucia, the beautiful and forbidden widow of an infamous criminal. Bond infiltrates a secret meeting and uncovers the existence of the sinister organisation known as SPECTRE. Meanwhile back in London, Max Denbigh, the new head of the Centre of National Security, questions Bond's actions and challenges the relevance of MI6 led by M. Bond covertly enlists Moneypenny and Q to help him seek out Madeleine Swann, the daughter of his old nemesis Mr White, who may hold the clue to untangling the web of SPECTRE. As the daughter of the assassin, she understands Bond in a way most others cannot. As Bond ventures towards the heart of SPECTRE, he learns a chilling connection between himself and the enemy he seeks. [D: Sam Mendes; A: Daniel Craig, Christoph Waltz, Léa Seydoux]
  • Star Trek Beyond (2016; Action, Adventure, Sci-Fi, Thriller) The plot is unknown at this time. [D: Justin Lin; A: Simon Pegg, Chris Pine, Idris Elba]
  • Star Wars: The Force Awakens (2015; Action, Adventure, Fantasy, Sci-Fi) 30 years after the defeat of Darth Vader and the Empire, Rey, a scavenger from the planet Jakku, finds a BB-8 droid that knows the whereabouts of the long lost Luke Skywalker. Rey, as well as a rogue stormtrooper and two smugglers, are thrown into the middle of a battle between the resistance and the daunting legions of the First Order. [D: J.J. Abrams; A: Harrison Ford, Mark Hamill, Carrie Fisher]
  • X-Men: Apocalypse (2016; Action, Adventure, Fantasy, Sci-Fi) Since the dawn of civilization, he was worshiped as a god. Apocalypse, the first and most powerful mutant from Marvel's X-Men universe, amassed the powers of many other mutants, becoming immortal and invincible. Upon awakening after thousands of years, he is disillusioned with the world as he finds it and recruits a team of powerful mutants, including a disheartened Magneto, to cleanse mankind and create a new world order, over which he will reign. As the fate of the Earth hangs in the balance, Raven with the help of Professor X must lead a team of young X-Men to stop their greatest nemesis and save mankind from complete destruction. [D: Bryan Singer; A: Oscar Isaac, Jennifer Lawrence, Michael Fassbender]
  • Youth (2015; Drama) Fred and Mick, two old friends, are on vacation in an elegant hotel at the foot of the Alps. Fred, a composer and conductor, is now retired. Mick, a film director, is still working. They look with curiosity and tenderness on their children's confused lives, Mick's enthusiastic young writers, and the other hotel guests. While Mick scrambles to finish the screenplay for what he imagines will be his last important film, Fred has no intention of resuming his musical career. But someone wants at all costs to hear him conduct again. [D: Paolo Sorrentino; A: The Retrosettes, Gabriella Belisario, Harvey Keitel]
  • Zipper (2015; Drama, Thriller) Sam Ellis is a man on the rise - a federal prosecutor on the cusp of a bright political future. But what was meant to be a one-time experience with a high-end escort instead turns into a growing addiction. His moral compass unraveling, his new demon threatens to destroy his life, family and career. [D: Mora Stephens; A: Patrick Wilson, Lena Headey, Ray Winstone]

Finalmente, el conteo de pendientes por fecha:

(Sep-2010)    9   2   1
(Dic-2010)   12   5   1
(Abr-2011)   23  22  17   4
(Ago-2011)   11  11  11  11   4
(Ene-2012)   17  17  17  17  11   3
(Jul-2012)   15  15  15  15  14  11
(Nov-2012)   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   4
(Abr-2014)                    9   9   8   8   8   3
(Jul-2014)                       10  10  10  10  10
(Nov-2014)                           24  22  22  22
(Feb-2015)                               13  13  13
(Jun-2015)                                   16  16
(Dic-2015)                                       21
Total:      118 121 125 121 110 103 100  94  91  89
Comentarios Imprimir

Todo lo que siempre quisieron saber de la CDPedia y nunca se atrevieron a preguntar

¿Qué es?

La CDPedia es la Wikipedia Offline. O sea, la Wikipedia, lo más fiel posible a su formato y contenido original, pero armada (construida, compactada) de una manera que no se necesita nada de Internet para acceder a toda la info de la misma.

Se llama CDPedia porque la idea original era meterla en un CD. Hoy por hoy generamos cuatro imágenes en cada liberación de CDPedia: un CD, un DVD, y dos archivos comprimidos (uno mediano y otro grande) que se pueden poner en un pendrive o en cualquier disco rígido.

La CDPedia es multiplataforma: el mismo CD, DVD o archivo comprimido se puede usar en Linux, Windows, o Mac, sin necesitar nada instalado previamente por fuera de lo que cada sistema trae normalmente.

CDPedia

¿Cómo se usa? ¿Cómo se ve?

Para usarla, lo primero es descargarla. Pueden acceder a la página del proyecto y ahí encontrarán info acerca de las cuatro versiones que tenemos actualmente, con el detalle de cuantas páginas y cuantas imágenes tiene cada una. Para bajarlo, necesitan un cliente de Torrent; para Linux a mí me gusta mucho el Deluge, que también puede usarse en Windows y Mac; otro cliente recomendado para las tres plataformas es qBittorrent.

Si descargan la versión CD o DVD, lo primero que tienen que hacer es grabarlo a un disco virgen, para lo cual necesitan una grabadora y un software para grabar. Si usan Windows y no tienen ninguno instalado, les recomiendo InfraRecorder que es software libre y muy fácil de usar. Pongan el disco generado en el equipo y ejecuten la CDPedia.

Si descargan las versión tarball, directamente descompriman los archivos en el disco rígido. Entren a la carpeta descomprimida y ejecuten la CDPedia.

¿Cómo se ejecuta la CDPedia? Bueno, depende de cada sistema. En Windows con hacer doble click en cdpedia.exe, alcanza. En Linux o Mac, si tienen bien configurado el navegador de archivos, debería funcionar haciendo doble click en cdpedia.py, pero siempre pueden recurrir a abrir una terminal, ir hasta el directorio en cuestión, y hacer ./cdpedia.py.

En cualquier caso al ejecutar ese archivo se va a levantar el Server de CDPedia, y al mismo tiempo se abrirá un navegador apuntando a ese Server local. Luego, es sólo usarla, ya que se explora y utiliza de la misma manera que la Wikipedia Online (con la excepción obvia que la CDPedia es de lectura solamente: no permite editar el contenido como sí lo hace la Wikipedia).

Cómo se ve la CDPedia

(a este y otros screenshots, hagan click para verlos más grandes)

Una decisión estratégica de la CDPedia es tomar el HTML generado por los servers de Wikipedia y usarlos casi directamente (les recortamos unos headers, optimizamos algunas cositas). Exploramos en algún momento tomar la info de la base de datos directamente, pero no logramos generar una página web igual a la de Wikipedia online.

Y eso es una fortaleza de la CDPedia: por la manera en que armamos las páginas, la forma de ver y usar las páginas, de explorar y acceder a la información, es igual a la Wikipedia online, de manera que el usuario no tiene un costo cognitivo en pasar de la versión online a offline. Es más, también se puede considerar a la CDPedia como el paso previo de consumo de contenido a la Wikipedia: una persona se puede acostumbrar a explorar las páginas, leer, cruzar y criticar la información, etc, y recién cuando tiene todo armado va a la Wikipedia Online y al resto de Internet para completar su investigación.

Más allá de la página a nivel contenido, lo que sí modificamos mucho es la barra de la izquierda. No tiene la original de Wikipedia, porque no tiene sentido al ser todo offline, así que reemplazamos los botones y enlaces por otros: hay un botón para ver una página al azar, un campo de texto de búsqueda, el logo de CDPedia, el logo de PyAr, enlace a una página de ayuda, etc...

Algo que también modificamos bastante es como señalizamos los enlaces en la página misma, en el contenido de Wikipedia. Hay principalmente tres tipos, distinguibles en cómo decoramos el texto convertido en enlace:

  • Azul: un link normal, apunta a otra página de Wikipedia que se incluyó dentro de CDPedia.
  • Rojo, subrayado con guiones: un enlace a otra página de Wikipedia pero que no fue incluida en CDPedia por razones de espacio.
  • Azul, subrayado con guiones: un link que los sacaría de CDPedia, ya que apunta a recursos online (útiles solamente si tenés Internet, claramente).
Muestra de enlaces

Otra sección que modificamos es el pie de cada página: ponemos un enlace a la misma página pero online, en Wikipedia misma, por si el usuario necesita la información actualizada. También aquí incluimos el contenido original, ponemos algún disclaimer extra, mencionamos que CDPedia es un proyecto de Python Argentina (y apuntamos al tutorial de Python que está incluido en la CDPedia).

Cabe mencionar que la CDPedia funciona también en Modo Servidor. De esta manera, se puede instalar la CDPedia en el servidor de una escuela, y que todas las computadoras del establecimiento puedan usar la información desde allí. Así logramos el efecto deseado de que los chicos puedan tener acceso al contenido de Wikipedia sin realmente tener Internet, pero sin la complicación o el incordio de tener que instalar CDPedia en cada una de las computadoras. Acá hay más instrucciones para configurarla de este modo.

¿Qué contenido tiene?

El contenido de la CDPedia está fuertemente determinado por dos características intrínsecas del proyecto: la CDPedia es estática y fácilmente distribuible en un disco o pendrive.

Digo que la CDPedia es estática porque una vez armada, no se actualiza. Es por eso una especie de "fotografía de un momento de Wikipedia" que, por definición, siempre va a estar desactualizada.

Cuando se comienza a generar una nueva versión de la CDPedia, se baja la versión más actualizada de todo el contenido de Wikipedia y se empieza a procesar. Este procesamiento puede llevar varias semanas, incluso unos meses. Entonces, cuando se libera una nueva versión de CDPedia, no incluye todos los cambios que se generaron en Wikipedia misma desde que se empezó a procesar.

Es por esto que se trata de liberar una versión de CDPedia al menos una vez por año, para que contenga la información lo más actualizada posible.

Ejemplo de un artículo

También digo que la CDPedia se puede distribuir fácilmente: sólo hace falta quemar un CD o DVD, o incluso pasarse los archivos mediante un pendrive. En casi todas las versiones (menos la más grande), por una cuestión de formato, no entra todo el contenido de la Wikipedia. Por ejemplo, para la versión 0.8.3, tenemos lo siguiente:

  • CD (693 MB): 54 mil páginas y 5% de las imágenes
  • Tarball medio (3.6 GB): 400 mil páginas y 20% de las imágenes
  • DVD (4.3 GB): Todas las páginas y 8% de las imágenes
  • Tarball grande (8.7 GB): Todas las páginas y todas las imágenes

Entonces, a menos que estemos armando el tarball grande, es evidente que tenemos que decidir cuáles páginas e imágenes van a entrar, y cuáles van a quedar afuera.

Esa decisión se toma ordenando todas las páginas por un determinado puntaje (que explico abajo), y se eligen las primeras N páginas (para el ejemplo anterior, las primeras 54 mil para el CD, las primeras 400 mil para el tarball medio, etc). Esas páginas tienen a su vez imágenes, que naturalmente también quedan ordenadas por el puntaje de las páginas: se toma un primer porcentaje de imágenes que se incluyen al 100%, otro porcentaje de imágenes que se escalan al 75%, otro porcentaje de imágenes que se escalan al 50%, y el resto no se incluye.

Analizando las páginas

Como vieron, un tema clave en la selección es darle un puntaje a las páginas. Este puntaje está formado (hoy por hoy) en base a dos factores: levemente por el largo de la página (una página larga tiene más puntaje que una corta), y fuertemente por lo que llamamos "peishranc", que es la cantidad de otras páginas que enlazan a la que estamos evaluando. Entonces, si a una página se la menciona en otras mil páginas es mucho más importante que una página que casi no se la menciona en el resto de la Wikipedia.

Otro gran detalle en lo que es "contenido" es qué hacemos para mitigar el problema de la vandalización. O sea, cómo evitamos en lo posible incluir páginas que fueron vandalizadas. Cuando comienza el proceso de generar una nueva versión de la CDPedia, como les comentaba antes, bajamos todas las páginas de Wikipedia, ¡pero no siempre bajamos la última versión! Lo que hacemos es revisar cuándo fue modificada y por quién: si fue modificada por un usuario normal, perfecto; pero si fue modificada por un usuario anónimo (como sucede en la mayoría de las vandalizaciones) nos fijamos cuando fue modificada: si fue hace más de varios días, la incluimos (asumimos que la gente de Wikipedia ya tuvo tiempo de verificar el cambio), pero si es muy reciente evitamos la última versión de la página, y agarramos la versión anterior (y aplicamos nuevamente todos estos mismos controles).

¿Cómo surgió el proyecto?

Cuenta la leyenda que el proyecto arrancó en el sprint posterior al primer PyDay de Santa Fé, en Junio del 2006, con la idea base de poder distribuir la Wikipedia a aquellos lugares que no tenían o tienen acceso a Internet (en particular teníamos en mente a escuelas de frontera o de ciudades chicas, bibliotecas de barrio, centros culturales de pueblos pequeños, etc.).

El proyecto continuó, y aunque no siempre le pudimos dedicar tiempo, tampoco nos alejamos nunca demasiado. Las mejoras en el proyecto fueron muy por ráfagas. Quiero destacar que fuimos muchos los que colaboramos con el proyecto, a lo largo de los años, ¡casi 30 personas!

Se trabajó mucho en este proyecto durante los PyCamps (los dos en Los Cocos, el de Verónica, y el de La Falda), donde muchas personas le dedicaron un buen tiempo, y también se realizó bastante durante otras reuniones, especialmente durante el 2010 y 2011.

Trabajando en un PyCamp

A modo de ejemplo, dos sprints: uno fue en un incipiente hacklab, donde se experimentó mucho sobre el índice para las búsquedas, y también durante la fundación de Wikimedia Argentina, donde se presentó por primera vez el proyecto y se realizó un gran avance en la primera parte del procesamiento de datos.

En años más cercanos yo traté de involucrar colaboradores en algunos sprints efímeros que armé, con poca suerte. Lamentablemente en el último tiempo fui principalmente sólo yo el que empujó el proyecto (lo cual es una autocrítica, más que un autoreconocimiento).

Una gran característica de la CDPedia, indiscutiblemente el proyecto más grande y más largo de Python Argentina, es que siempre se mantuvo orientado a los mismos objetivos: tener una Wikipedia offline con fines sociales (distribuir en escuelas sin conexión a Internet, que el conocimiento sea libre, etcétera), que sea divertido de hacer (es decir, hacerlo en Python), y mantenerlo libre (no sólo el producto final, que recomendamos copiarlo y repartirlo, sino el código en sí).

¿Se logró cumplir el objetivo social?

Como decía arriba, uno de los objetivos de la CDPedia es difundir el conocimiento, lograr que gente que no tenga acceso a Internet igual pueda acceder a la información de la Wikipedia, que es tan valiosa. Siendo PyAr una comunidad relativamente pequeña, era difícil escalar a tener un impacto nacional en el común de la gente.

En su momento queríamos que se viralice persona a persona: que alguien la baje y haga un par de CDs y los reparta, que los que reciben cada CD hagan a su vez varias copias y las repartan a otras personas, a escuelas, bibliotecas de barrio, etc. Pero no tuvimos mucho éxito con esa movida.

Pero resulta que Martín Varsavsky se casó, y Jimmy Wales le regaló para el casamiento la posibilidad de que se distribuya una Wikipedia offline en Argentina. Preguntó cuáles habían, la CDPedia era la que mejor se ajustaba a lo que se necesitaba, y vino Jimmy a Buenos Aires, le mostramos la CDPedia, y luego hubo una reunión en Educ.ar para terminar de acordar esto (fueron Jimmy por Wikimedia, Enrique Chaparro por Wikimedia Argentina y Alecu por PyAr).

En gran parte porque Educ.ar quería meter la CDPedia en un disco de ellos (con carátula de ellos, algunas otras páginas, etc), se logró que dicha institución becara a dos chicos de PyAr, Diego Mascialino y Hernán Olivera, para trabajar part time en esto.

Así que agarraron la versión 0.6 que recién había salido (Alecu y yo nos habíamos apurado a cerrar muchos detalles para tener algo funcionando presentable a Jimmy Wales), y entraron a darle. Esto le dio bastante impulso al desarrollo del proyecto, sumado a que también aporté regularmente al proyecto, y a que luego de que se terminara la beca Diego siguió trabajando en CDPedia, y que se sumó como "laburante regular" Santiago Piccinini.

Con todo este trabajo, y un nuevo empujón en el PyCamp del 2011, pudimos terminar de cerrar la versión 0.7, que se entregó a Educ.ar y se distribuyó a todas las escuelas del país.

Sin embargo el mayor hito a nivel de distribución masiva de la CDPedia es que en algún momento fue incluida en las notebooks que el Estado argentino distribuye a los chicos de escuelas de todo el país como parte del programa Conectar Igualdad. Y también se la muestran a alumnos y docentes en los talleres que hacen como parte del programa.

¿Se puede espiar abajo del capot?

¿Cómo se arma la CDPedia? ¿Cómo se logra cumplir todo lo que expliqué arriba?

Es bastante sencillo: hay que bajar el código con git desde la página del proyecto en github, y luego correr un script que hace todo solo: el cdpetron.

Este script tiene bastantes opciones (especialmente para no repetir partes del proceso: que no vuelva a listar todas las páginas, que no vuelva a bajarlas, que no limpie todo antes de comenzar, etc), pero lo básico es que se le especifica de dónde tomar el código, donde bajar y dejar páginas e imágenes, y en qué idioma trabajar.

Incluso hay una manera de correrlo en modo test, para que haga solo una parte del trabajo y poder arrancar pronto a probar cosas, ideal para mezclarlo con la opción de generar una sola de las versiones:

$ utilities/cdpetron.py --test-mode --image-type=beta . /tmp/dumpcdpedia es

El comando anterior tarda relativamente poco (menos de cinco minutos en una máquina normal y con buena conexión a Internet) y nos deja todo el proceso realizado, pero con pocas páginas.

Ver lo que obtuvimos es sencillo, porque más allá de generarnos el tarball o el .iso correspondiente, podemos probar la CDPedia directamente del directorio donde realizamos el proceso, haciendo:

./cdpedia.py

...lo cual levantará el server y nos abrirá el browser, tal cual si lo hiciéramos de la versión final (pero con la ventaja que podemos pararlo, cambiar el código para probar el algo, levantarlo de nuevo, ver los resultados, etc.)

¿Y cómo es el proceso que realiza? Bueno, la estructura interna (y el proceso para obtenerla) de la CDPedia está muy influida por la necesidad de optimizar al máximo la compresión y el acceso a la información, de manera de poder meter en cada formato (CD, etc...) la mayor cantidad posible de artículos e imágenes.

Podemos delinear el proceso que se realiza en en el siguiente gráfico:

Proceso de la CDPedia

El primer paso es bajar de la Wikipedia misma todas las páginas (lo que realmente tiene dos sub-pasos, un listado general de todas las páginas que nos interesan, y luego efectivamente bajarlas). Esas páginas son pasadas por diferentes preprocesadores que hacen distintos trabajos. Algunas las filtran y eliminan páginas que no queremos, otras les asignan puntajes, otras las modifican mejorándolas para nuestro objetivo, otras extraen información que va a ser útil luego.

Al final de ese preprocesamiento tenemos dos grandes resultados intermedios: los HTMLs "útiles", más un montón de metadata. Aquí se abren tres grandes ramas de trabajo.

La primera es el manejo de las imágenes. Se buscan los enlaces en las páginas, se descargan todas las imágenes necesarias (que pueden no ser todas, dependiendo de la versión generada), se reducen las que corresponden (algunas se incluyen al 75% o 50% de su tamaño) y finalmente se arman los llamados "bloques de imágenes".

Por otro lado, con los resultados intermedios se generan los "bloques de artículos".

Y finalmente, se procesan todos los títulos de las páginas más algo de metadata y se hace pasar por un complejo algoritmo matemático que nos pre-arma la información para generar los "bloques del índice".

A esta altura tengo que explicar qué son estos "bloques" de imágenes, artículos o índice. Es una estructura no demasiado compleja pero muy bien pensada para el objetivo de la CDPedia que es funcionar sin usar demasiada memoria y poco espacio en disco. Básicamente tenemos bloques de información comprimidos de forma independiente: es un equilibrio entre comprimir todo por separado, o comprimir todo junto; logramos mejor ratio de compresión que comprimiendo la info por separada, y no tenemos que descomprimir algo demasiado grande al no estar todo junto. Para decidir qué bloque consultar hay un hasheo y selección, y luego dentro de cada bloque hay un índice binario de contenidos, pero no mucho más.

Finalmente, con estos bloques, más algunos recursos estáticos (imágenes, CSSs, algo de JSs, el tutorial de Python comprimido, etc.), más el código de Python propiamente dicho para servir la CDPedia, se arman los tarballs o .ISOs.

¿En qué situación está el proyecto actualmente?

El proyecto avanza, pero lento.

Hay varios bugs abiertos, incluso algunos que son críticos porque se muestran un par de cosas feas luego de un cambio de formato de las páginas de Wikipedia, pero yo personalmente no estoy haciendo foco ahí, sino que estoy empujando un par de cambios más grandes.

Uno de ellos es lograr la internacionalización de la CDPedia. Cuando esté terminado, se van a poder crear CDPedias no sólo a partir de la Wikipedia en español, sino también de la Wikipedia en otros idiomas: portugués, aymara, guaraní, alemán, ruso, etc...

El otro cambio es más bien la construcción de una infraestructura en particular. Mi idea es tener una generación continuas de CDPedias, que se arme la CDPedia en español, y automáticamente luego se arme la de otro idioma, y otro, y otro, y otro, y luego de varios meses, vuelva a arrancar con la de español.

Trabajando

Pero, como decía, hay mil cosas para hacer.

Unos chicos en un PyCamp hicieron una app para Android que, luego de copiar los datos a mano, correría la CDPedia en cualquier teléfono o tablet (yo traté recientemente de usarlo y tuve unos problemas y no lo pude hacer andar del todo).

Otro detalle que necesita trabajo es que el código en sí está bastante feo... mezcla inglés y castellano, no cumple PEP 8 ni PEP 257, tiene poco y nada de pruebas de unidad, etc.

Si tienen ganas de participar de cualquier manera, lo principal es que se pongan en contacto con el grupo en general, a través de la lista de correo o del foro asociado (son espejo uno del otro, usen el que sientan más cómodo). Lo mismo si desean hacer cualquier consulta, o ponerse en contacto para cualquier inquietud.

CDPedia necesita amor. Programadores con ganas de trabajar y aprender, tiempo de programador para continuar llevando este proyecto tan interesante y valioso por buen camino.

Comentarios Imprimir

Escapándose

El jueves pasado jugué a mi primer "juego de escape". Fuimos a Eureka con mi amiga Silvana y dos compañeras de trabajo de ella.

Un juego de escape es como un juego de aventura gráfica, pero de forma reducida y en la vida real. En Eureka lo explican así:

Estas encerrado con tu equipo en una habitación y tenés 60 minutos para escapar. La única forma de lograrlo es ir develando pista por pista y avanzar hasta encontrar la llave que les permitirá abrir la puerta y salir de la habitación. Es una carrera contra el tiempo y el momento perfecto para dejar fluir tus habilidades como detective.

Nosotros jugamos a Enigma. Básicamente entramos a una habitación, y la persona del lugar nos dio algunas reglas básicas: tienen una hora, lo que se abre se abre sin esfuerzo (no hay que sacudirlo hasta que se abra, digamos, sino que hay que resolver algo que lo abre), hay una puerta que va a permanecer cerrada, etc.

Luego se fue, cerró la puerta por donde entramos, y empezó el juego. Una tele nos dió una explicación de escenario (o sea, nos puso en el contexto de lo que había que resolver... me hizo acordar mucho a los videos del japonés en Lost), y luego empezó a contar el tiempo.

La habitación era grande, y había varios elementos interesantes (tranquilos, no les voy a spoilear el juego, esto es lo que uno ve al entrar): una máquina con botones, perillas e interruptores, una mochila colgada, una computadora que decía "entren el código de los misiles (tienen 10 intentos)", un mapamundi con leds marcando algunas ciudades, un tablero con tres relojes, un par de mesas y sillas, y algunas cosas más (algunas importantes, otras no).

Y desde ahí para adelante es como jugar una aventura gráfica: hay que explorar, entender qué tenés que hacer, vas encontrando cosas, vas tratando de descifrar donde se usa lo que encontraste (si se usa), algunas cosas salen fáciles, a veces te trabás, no sabés como seguir y vas repasando lo que tenés y como puede servir, etc.

Estuvo muy bueno.

Comentarios Imprimir

Cerrando etapas

El tiempo pasa, nos vamos volviendo tecnos.

No me voy a poner a hablar de la inevitabilidad del paso del tiempo, de que la flecha de la entropía sólo apunta para un solo lado, ni de esas cosas. Quiero hacer foco en que hay que aprovechar el tiempo que tenemos.

Esta genial foto es de una de las últimas clases de natación donde llevé a Malena.

Male y Facu en el agua

Fuimos todo el año, una vez por semana. Empezó tímida, y terminó pasando más tiempo abajo del agua que arriba, totalmente acuática. Para mi fue un placer llevarla y disfrutar esa evolución con ella, lo mismo que hice con Felipe dos años atrás. Y ya está, ese tiempo pasó y nunca más los meteré en el agua con ellos agarrándose a mi. Más allá de la nostalgia anticipada, lo importante es que cuando tuve la oportunidad, la aproveché :)

Sé que van a haber mil otros momentos donde los lleve de la mano a territorios para ellos desconocidos. La clave es estar ahí, darles la mano, acompañarlos, y disfrutar ese proceso.

Otra foto del paso del tiempo: Felipe, en su acto de graduación del Jardín, donde él mismo estaba emocionado mientras otros compañeros pasaban a buscar sus diplomas (todavía no le había llegado su turno), y luego estudiaba la medallita que le habían dado...

Felu graduado
Comentarios Imprimir

fades y un hito personal

¡¡Salió la versión 4 de fades!!

Mucho mucho laburo le pusimos con Nico a esta versión (y tuvimos bastante ayuda de otros colaboradores, en particular durante el último PyCamp).

¿Pero qué es fades? Es un sistema que maneja automáticamente los virtualenvs de sistemas Python en los casos que uno normalmente encuentra al escribir scripts y programas pequeños, e incluso ayuda a administrar proyectos grandes.

Crea automáticamente un nuevo virtualenv (o reusa uno creado previamente) instalando las dependencias necesarias, y ejecutando el script dentro de ese virtualenv.

Todo lo que se necesita hacer es ejecutar el script con fades (en lugar de Python) y también marcar las dependencias necesarias. Más detalles en la documentación misma.

fades

¿Qué hay de nuevo en esta release?

  • Nueva opción para usar iPython en el interprete interactivo: --ipython (gracias Ariel Rossanigo)
  • Ahora es posible ejecutar un programa dentro del virtualenv con -x (gracias Ricardo Kirkner). Por ejemplo es posible crear un proyecto de django sin tener django instalado en tu sistema usando: fades -d django -x manage startproject foo
  • Podés ejecutar fades como un módulo de Python. Simplemente hay que ejecutar python3 -m fades (gracias Javi Mansilla)
  • Soportamos Python 3.3 para ejecutar fades
  • Si sos un usuario especial y no te alcanzan las opciones que tenemos para el entorno virtual, tenemos cosas para vos! Podes pasarle opciones a virtualenv con --virtualenv-options, también a pip con --pip-options, e incluso es posible eliminar un virtualenv con --rm <uuid>
  • Tenemos un logo!! (el que se ve arriba, claro)
  • Los tests de fades se ejecutan con fades! No hay necesidad de instalar nada previamente
  • Se pueden crear virtualevs con --system-site-packages
  • Varios bug fixeados y otros nuevos ;)

Para instrucciones de cómo obtenerlo o instalarlo, miren en la página del proyecto o la de PyPI.

Por otro lado, con Nico habíamos decidido que era importante para fades que puede ser instalado con apt-get install en Debian y Ubuntu.

Entonces, me puse con eso, pedí en el laburo si algún Debian Developer quería darme una mano para meter fades en Debian, y se copó uno de los mejores: Barry Barsaw. Me estuvo ayudando un montón, contestándome preguntas simples y complicadas.

Nosotros ya teníamos un .deb, pero no del todo bien armado. Al final, terminé dando vuelta completamente todo pero quedó todo más simple, más limpio, y con mejor forma. El .deb que generamos es un lujo, y además fades terminó entrando en Debian, en unstable al principio y luego en testing, :D. Es mi primer programa que entra en Debian, y para mí es todo un orgullo :).

El camino natural es que entre en Xenial Xerus (Ubuntu 16.04), que es LTS, así que seguramente liberaremos la v5 la primer quincena de febrero.

Rock.

Comentarios Imprimir