Juanjo Conti: Hoy empezó la Feria del libro de Santa Fe

Hoy me levanté temprano y fui a la estación Belgrano a ayudar a armar el stand de editoriales independientes para la Feria del Libro. Buena oportunidad para reencontrarse con amigos: Kun y Flor.

La feria empezó a las 18 hs pero yo no pude ir hasta las 20. En realidad no tenía planeado pasar hoy, pero el cumple de un año al que fuí termino temprano y hubo un poco de suerte mágica.

Llegué a tiempo para saludar a más amigos: Sofía, Martina, Pilar, Gonzalo y Gaz.

Completé mi visita fugaz haciendo una compra, una venta y empezando a filmar mis ya clásicos videos de la feria del libro: poetas leyendo a otros poetas.

flyer_feria_stafe_2015.thumbnail.jpg

Juanjo Conti: Galerías de fotos en Nikola

Hubo una época, pre-Facebook, en la que los informáticos instalábamos programas de galerías de imágenes escritos en PHP en nuestros propios servidores y subíamos allí las fotos sacadas con nuestras nuevas cámaras digitales de 4 megapixeles.

El problema con estos programas (había realmente muchos para elegir) es que requiren que uno (el administrador de sistemas) los actualice (entre otros mantenimientos requeridos). Esto es divertido al principio, una molestia después y al final es algo que dejamos de hacer.

Si visitamos alguno de esos sitios hoy, alrededor de las imágenes se pueden ver errores como:

Error

Deprecated: Function ereg() is deprecated in /home/jjconti/galeria.juanjoconti.com.ar/zp-core/functions-i18n.php on line 190

Warning: Cannot modify header information - headers already sent by (output started at /home/jjconti/galeria.juanjoconti.com.ar/zp-core/functions-i18n.php:190) in /home/jjconti/galeria.juanjoconti.com.ar/zp-core/functions.php on line 1897

Warning: session_start() [function.session-start]: Cannot send session cookie - headers already sent by (output started at /home/jjconti/galeria.juanjoconti.com.ar/zp-core/functions-i18n.php:190) in /home/jjconti/galeria.juanjoconti.com.ar/zp-core/admin-functions.php on line 6

En estos días, que ando buscando qué me dejé olvidado en Internet para importarlo aquí, encontré uno de estos sitios que instalé en su momento.

Como el programa organizaba los álbums en carpetas y sub carpetas, con el siguiente comando

tar cvfz albumns.tgz  --exclude="*.php" albums/

pude crear un archivo listo para crear una galería en Nikola.

Crear una galería de fotos en Nikola es extremadamente fácil. Solo hay que agregar carpetas con fotos a la carpeta galleries o a la que se haya definido en conf.py y ejecutar:

nikola build

Fotos.

Juanjo Conti: import_twitpic (plugin para Nikola)

Revisando qué contenido viejo subido a otros sitios podía importar en mi nuevo blog, me di cuenta que en mi segunda era de subir fotos tomadas con el celular mientras ando [1] mis fotos, por pura casualidad, se estuvieron guardando en Twitpic (descanse en paz).

Afortunadamente el sitio (que fue comprado por Twitter y dejado en modo read-only) te deja exportar tus datos. Me bajé un zip que adentro tenía una carpeta. La carpeta tenía todas las imágenes más un archivo de texto con la fecha de publicación de cada una y su texto.

Armado con esto y mi experiencia haciendo el plugin import_goodreads cree import_twitpic.

Este es su README:

README.md

This plugin imports Twitpic pics (including twitted text) as new posts.

This plugin:

  • Creates post as a rst file using the tweet text and the figure directive
  • Copies images to images/POSTS_OUTPUT_FOLDER/POST_SLUG/
  • Uses original tweet date as post date
  • Uses "Twitpic: DATE" as title
  • Adds "Twitpic" as tag plus the ones passed as arguments
  • Adds mentionds as hashtags as tags, but if the site already have a similar tag it use that (to avoid "ERROR: Nikola: You have tags that are too similar")

Note: Twitpic export is a folder cotaining all your images plus a tweets.txt file.

Tiene dos mejoras que eventualmente voy a migrar a import_goodreads y, con suerte, a otros:

  • agrega el parámetro --tags para definir tags extras a agregar a los posts que se crearán
  • antes de agregar un tag, se fija si antes no existe uno similar. De ser así, usa ese.

En la etiqueta Twitpic se puede ver el resultado luego de ejecutar el comando:

nikola import_twitpic -o posts/twitpic/  -t "Desde el camino, Fotos" dumps/twitpic/
[1] La primera era fue con un Nokia 6132 y mucho ingenio.

Juanjo Conti: Escribir para recordar

Cree la gente, de modo casi unánime, que lo que a mí me interesa es escribir. Lo que me interesa es recordar, en el antiguo sentido de la palabra (despertar). Ignoro si recordar tiene relación con el corazón, como la palabra cordial, pero me gustaría que fuera así. La gente incluso suele decirme: "Ahí tiene un argumento para una de sus novelas", como si yo anduviera a la pesca de argumentos para novelas y no a la pesca de mí mismo. Si escribo es para recordar, para despertar el alma dormida, avivar el seso y descubrir sus caminos secretos; mis narraciones son en su mayoría trozos de la memoria del alma, y no invenciones.

Mario Levrero, El discurso vacío.

Juanjo Conti: Author pages in Nikola v7.7.0

Since version 7.7 Nikola renders author pages for sites with more than one author. Let me talk a little about this.

The first Nikola site I set up was for a group of friend wanting to publish tech stuff online (for example, how to build a 3D printer with recycled elements). I noticed that author names in posts weren't linked to any page. And because this is a very common feature in blogging systems, I implemented it.

The feature can be enabled in conf.py with:

ENABLE_AUTHOR_PAGES = True

As with tags, you can configure the pages path and if you want to list links to the posts or the posts themselves:

AUTHOR_PATH = "reporters"
AUTHOR_PAGES_ARE_INDEXES = False

Additionaly, this is not required, you can add a little bio to each (or some) authors and hide others (this is, don't generate pages for them):

AUTHOR_PAGES_DESCRIPTIONS = {
    DEFAULT_LANG: {
        "Juanjo Conti": "Python coder and writer.",
        "Roberto Alsina": "Nikola father."
    },
}
HIDDEN_AUTHORS = ['Guest']

If you want to link to these pages in your own theme, you can use something like this (Mako example):

% if author_pages_generated:
    <a href="${_link('author', post.author())}">${post.author()}</a>
% else:
    ${post.author()}
% endif

You can see the feature in action in Nikola blog: author page example, all authors page example.

Hope you enjoy it!

Juanjo Conti: Importar tweets al blog

Estos días, en mis ratos libres, además de leer The Martian, estoy haciendo algunas aportes a Nikola.

Algo a lo que le vengo dando vueltas es a la idea de importar tweets a este blog.

Hubo una época (o mejor dicho "hay", porque aún no termina) en la que Twitter mató a muchos blogs: más fácil, más rápido, más corto. Fast food para la era de la información.

Tengo la teoría, y de esto no estoy seguro, de que puedo rescatar mucha historia personal de tweets que escribí y ya olvidé.

Con la página de Twitter podés ir para atrás en tu historia pero, superado cierto límite de tweets ya no podés llegar al principio. Desde hace poco, Twitter te permite bajarse un archivo con todos tus tweets (incluso está acompañado por una aplicación web local con la cual es fácil navegarlos).

Bueno, quiero tomar ese archivo, seleccionar los tweetsccon algún valor e importarlos como posts (tal vez agregados por día? por tema?) en este blog.

Abrí un Issue para esto:

Issue #107

I'm planning to implement import_tweets. Version V0.1 will:

  • read from Twitter provided json files for a user
  • present each tweet asking the user if adding it or not
  • have a non-interactive parameter
  • have a parameter to filter replies
  • generate rst posts, one per day with tweets
  • (probably) download images and include them in the posts
  • Ideas or suggestions?

Manuel Kaufmann (Humitos): Django Girls: tecnología + python + mujeres

Durante el evento Taller de programación para chicas/mujeres que se realizó en Cochabamba, Bolivia se notó un hermoso trabajo en equipo por parte de diferentes comunidades y grupos amigos de la zona (ver fotos).

Fue la primera vez que organizamos este tipo de evento desde el proyecto Argentina en Python y yo, personalmente, estaba muy nervioso. Había estudiado y leído mucho sobre cómo hacer este evento. Por parte de Django Girls puedo decir que tienen un montón de documentación escrita y de fácil lectura que ayuda muchísimo. Además, tienen un equipo de apoyo -que aunque no lo usé, veo como se mueve y es para aplaudirlos.

DSC_9348_02.thumbnail.jpg

En plena acción durante la mañana

Entonces, como notamos que en Cochabamba había una movida muy linda sobre libertad de expresión, un trabajo hermoso para acercar la tecnología a las personas y una promoción de activismo muy fuerte por parte de la mujer; creímos que era el lugar más que indicado para sumar esfuerzos y sacar algo lindo.

Así fue que el Sábado 22 de Agosto se llevó a cabo este evento en donde participaró el Barrio Hacker proveyendo su red WiFi, el HackLab Cochabamba que puso a disposición su laboratorio para los asistentes, el proyecto mARTadero que hizo un terrible trabajo de difusión y que además gestionó el espacio físico, la fundación Adelante Bolivia que nos brindó hospedaje por más de 2 semanas y la Oficina Jurídica para la Mujer que nos donó el almuerzo para todos los asistentes. ¡Increíble trabjo por parte de todos!

Como si esto fuese poco, Daniel Cotillas Ruiz, un español cochabambino -como lo definí yo, estuvo haciendo de las suyas con su cámara filmadora y realizó un trabajo hermoso de recolección de experiencias por parte de varias de las asistentas que fueron al mARTadero ese día y participaron del taller. Aquí les dejo una perlita que vale la pena ver de principio a fin prestando mucha atención a lo que dicen las chicas.

No está demás comentar que tuvimos una asistencia plena en el evento. A tal punto que fueron 10 personas más de la capacidad máxima del lugar e hicimos lo que pudimos para reubicarlos. Con un total de 25 personas durante todo el día, me tomo el atrevimiento de decir que este Workshop Django Girls fue un éxito que se escribe en femenino.

DSC08757-1.thumbnail.jpg

El grupo completo

Quizás para algunos, 25 personas no parezca gran cosa, pero les puedo decir que hemos acercado la programación a 25 campos diferentes y no sólo al de la informática. Creo que había una sola mujer que se dedicaba a la informática, el resto eran diseñadoras gráficas, ingenieras eléctricas, sociólogas, abogadas, estudiantes de arte, comunicadoras sociales, docentes, odontólogas, química (aparte de @EllaQuimica ;) y unas tantas ocupaciones que ya no recuerdo. Entonces, hemos sembrano una semilla en esos ambientes diferentes a los cuales estamos acostumbrados a trabajar. No mostramos Python, mostramos la programación como una herramienta poderosa de expresión y comunicación; así como también para solucionar diversos problemas complejos de una forma simple.

Juanjo Conti: import_goodreads (plugin para Nikola)

Ayer creé un nuevo plugin para Nikola como parte de mi esfuerzo por centralizar en este nuevo blog estático, distintos contenidos creados a lo largo de los años en distintas plataformas web.

Hoy, luego de algunos ajustes, lo mergiamos.

https://plugins.getnikola.com/#import_goodreads

Este es el README:

README.md

This plugin import Goodreads read books from Goodreads RSS to an existing site.

It:

  • uses the date the user ends to read the book as post date
  • includes user review
  • includes user rating
  • includes a link to the original review
  • uses author name, book title and "Goodreads review" as tags
  • writes output by default in posts/

To Do:

  • include book cover (dowloading the image)
  • add parameters to customize tags and content generated

Estaría bueno que no tenga código repetido con otros plugins: sí.

Estaría bueno que tenga más parámetros: sí.

¡Pero para ser la versión 0.1 está bastante bien!

El resultado en este blog se puede ver en el tag Goodreads review.

Juanjo Conti: Los Lavalle Menendez

La consigna de la semana pasada en el taller consistía en tomar el siguiente texto para construir otro, empleándolo al inicio, promedio o final:

En el fondo del bar el patrón se distrae repasando un vaso. Desde allí mira a la calle y a los dos clientes que beben cerveza con los ojos fijos en el campo. De pronto irrumpe una camioneta que frena bruscamente. Un hombre se baja con apuro. Deja la camioneta en marcha y con la puerta abierta. Se asoma al bar y desde la entrada dice...[1]_
[1] Parte de un poema publicado en La mordida del pájaro de papel.

Juanjo Conti: Borges contra los audio books

Se habla de la desaparición del libro; yo creo que es imposible. Se dirá qué diferencia puede haber entre un libro y un periódico o un disco. La diferencia es que un periódico se lee para el olvido, un disco se oye asimismo para el olvido, es algo mecánico y por lo tanto frívolo. Un libro se lee para la memoria.

Jorge Luis Borges, El libro.