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.

Juanjo Conti: Nikola, intento... 3? 4?

Como cada año, vuelvo a intentar pasarme a Nikola. Esta vez, la patada inicial vino por otro lado.

Tengo un grupo de amigos, el LugCOS (originalmente Linux Users Group del Centro Oeste Santafesino) que hace un par de años (desde que nos reencontramos gracias a Whatsapp) vienen reclamándome que vuelva a poner en línea nuestro viejo sitio. Uno quería subir artículos de electrónica, otro una guía sobre cómo armar una impresonar 3D con piezas recicladas de la basura y el resto simplemente me pinchaba por deporte.

Una noche, mientras nos comunicábamos, cual grupo de radioaficionados modernos, me volvieron a mojar la oreja. No aguanté más.

De cero a Nikola en diez minuotas

Entré al Getting Started de Nikola y a lo caballo con anteojeras seguí las instrucciones. Funcionaron de una. Tenía un blog andando en mi máquina. ¿Y ahora? Necesitaba que esté en Internet.

Algo que tenía en claro que no quería, y es por esto que retracé tanto levantar un sitio para el grupo, era encargarme del hosting del mismo. Se me ocurrió, entonces, usar Github Pages y tener en un sistema de control de versiones tanto el código fuente de la página como su versión compilada.

Tunning

El resto fue tunnear un poco el sitio:

Una comunidad con barrera de entrada muy baja

Mientras acomodaba un poco el theme a las necesidades de un blog multi-usuario pregunté cómo se hacía en Nikola para linkear a los posts escritos por un author. Quería que cuando se mostrara el nombre de un autor, por ejemplo bajo el título de cada post, este esté linkedo a todos sus artículos. La respuesta fue que no se generaban páginas por autor, por lo que no se podía. Se me ocurrió que podía hacer una contribución.

Ya había estado aportando cambios menores como pequeños fixes en la documentación, pero esto era algo más grande. Hice un fork del repo y trabajé unas horas en privado. Cuando no supe como seguir, ralsina me sugirió que haga un pull request agregándole WIP (Work in progress) al título: https://github.com/getnikola/nikola/pull/1972.

En pocos días la feature estaba funcionando gracias a los comentarios de los desarrolladores de Nikola, el fin de semana terminé los cambios que me sugirieron y hoy se mergió.

Continuará

Puede ser que este sea el año en el que me pase a Nikola. Realmente quiero hacerlo desde hace rato, quiero una forma simple (para una definición de simple dada por un programador) de publicar mi contenido en la web, pero también quiero otras cosas. Me gustaría por ejemplo, importar "posts" que escribí en distintas plataformas. Este es el plan:

Algo que siempre me tira para atrás es que mi posts de WordPress no se ven muy bien en Nikola apenas los importás. I'll try to not overthink it too much.

Marcos Dione: ayrton-0.5

I forgot to mention: last night I finally got to release ayrton-0.5. This has a major update to the language, thanks to our new parser, craftily thieved out of pypy. Other similar changes might come soon. Meanwhile, here's the ChangeLog:

  • Much better command detection.
  • CommandNotFound exception is now a subclass of NameError.
  • Allow Command keywords be named like -l and --long-option, so it supports options with single dashes (-long-option, à la find).
  • This also means that long-option is no longer passed as --long-option; you have to put the dashes explicitly.
  • bash() does not return a single string by default; override with single=True.
  • Way more tests.
  • Updated docs.

Get it on github or pypi! You can always find everything about ayrton in its GitHub page.


python ayrton