Automágica: durante 2017 estoy trabajando bastante en Automágica, mi software para editar libros: Más información - Posts relacionados

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.


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!


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?

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.


Los Lavalle Menéndez

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.

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.


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.


Goodreads review: Una suerte pequeña (Claudia Piñeiro)

Disfruté mucho de este libro. Como ese chocolate que la gorda no se quiere terminar y va escondiendo en la heladera, lo fui leyendo de a ratos, cuando no tenía otra cosa "importante" que hacer. Leí los fines de semana, antes de dormir, esperando en la cola de algún trámite.

Lo hice mientras pude, cuando llegué a la última parte (el libro consta de 3 partes) tuve que dejar lo que estaba haciendo, suspender un poco la vida, para terminar de conocer la vida de la protagonista.

El libro comienza contando una historia a medias, una historia que tras una penumbra no se alcanza a ver del todo. En estos pasajes se habla de un "él". No sabemos a quién se refiere. Uno de los momentos del libro que más me gustó fuente justamente cuando, antes de la mitad, se revela quién es.

La segunda parte, la de las revelaciones, también es muy atrapante, siendo su último capítulo (tal vez el más largo?) el mejor del libro.

A la mitad de la última parte imaginé cual podría ser el final del libro y acerté :)

Rating: 4/5

Original: https://www.goodreads.com/review/show/1363662354


Hoy tuve una suerte pequeña

Una suerte pequeña, Claudia PiñeiroHoy, casi de noche. Estaba fresco pero me había abrigado. Caminé por la peatonal de Santa Fe haciendo tiempo, paseando un rato. Entré a la librería sin nada en mente, revisé las mesas con los títulos nuevos, pasé la mano por algunas letras de model. Llegué a la estantería con las obras completas de Borges y leí un poema al azar. Al costado, en un anaquel, las novelas de Claudia Piñeiro. La única que no leí es la última que publicó, Una suerte pequeña. La tomo y ya se que voy a comprarla, leo el primer párrafo y ya se me creo esa necesidad de leerla. Empiezo a leer el primer capítulo ahí, parado en la intersección entre dos pasillos. Recibo un mensaje, tengo que ponerme en camino. Voy hasta la caja sin soltarlo. "Me podés decir el precio de este (libro)", digo tratando de disimular mi ansiedad, como un chico que no quiere que la chica se de cuenta que le gusta. "Si es 150 o menos me lo llevo". "200", me responde. "Bueno, lo llevo".

Me pasa con algunos autores, una vez que leo uno de sus libros, tengo que leerlos todos.


Glider Gun en thewalnut.io

This week in walnutland...

Después de mi implementación inicial del juego de la vida en walnut, me dieron ganas de implementar un patrón más complejo: el Gosper Glider Gun.

Me frenaba el hecho de que el setup del estado inicial es bastante a mano aún, pero las ganas fueron más y un día le dediqué una hora a cargar las celdas necesarias.

Cuando le di play, se cortó a los dos pasos: primero pinchaba por temas de memoria y luego de unos cambios por tiempo de ejecución :(

Ahora tenía que escribir una versión más optimizada del juego de la vida de Conway. La versión a la que llegué funcionaba bien con patrones simples, pero con el Glider Gun degeneraba mal. Fisa, uno de los desarrolladores de thewalnut.io me ayudó a debugearlo y antes de que termine el día pude ver el ejemplo corriendo:

Glider Gun