R.I.P. Tinkerer, welcome ABlog

Tinkerer is dead, or in the words of its author: retired in favor of Baku.

Baku is much simpler, uses Markdown and is not based on Sphinx. But Sphinx was the reason I chose Tinkerer in the first place, so I looked for alternatives and found ABlog.

ABlog imposes less restrictions on the directory layout of the source files. Which is a good thing because it means the directory structure of the old blog could just be copied and the URLs of the old blog posts stay the same.

Tinkerer uses some custom reStructuredText directives to markup blog posts, while ABlog basically uses just one directive with arguments. A little script to replace the directives from Tinkerer with ABlogs .. post:: directive was quickly written.

Tinkerer markup with directives:

.. author:: default
.. tags:: a tag, and another tag
.. categories:: Example, Post
.. comments::

.. more::

Translated by the script to the ABlog post directive:

.. post:: 2023-07-28
    :author: default
    :tags: a tag, and another tag
    :category: Example, Post
    :comments:
    :excerpt: 1

The post date is generated from the directory structure of Tinkerer which is <year>/<month>/<day>/, so this information is somewhat redundant. But this is neccesary as ABlog allows any directory structure for the blog post sources.

The .. more:: directive becomes the :excerpt: argument and this needs some manual tweaking after conversion. Unfortunenately ABlog doesn’t use the content of the rendered blog post as is to generate an excerpt for the various listings but extracts the first n paragraphs of text from the post. So any special markup like admonitions, code listings, or raw html get lost in post listings.

For instance the canvas element in Chasing a dot on a HTML5 canvas can not be seen in a post listing. Which is the only major drawback I’ve found so far in ABlog.

I’ve ported the hidemail extension from Tinkerer for the :email: role to obfuscate e-mail addresses. Damn those spammers…

For now the blog uses the default Alabaster theme. Maybe I keep that, or maybe I try to write my own theme that resembles the modern5 theme of Tinkerer later.