.. post:: 2023-07-28 :category: Blog :tags: Tinkerer, ABlog 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 *ABlog*\s ``.. post::`` directive was quickly written. *Tinkerer* markup with directives: .. code-block:: rst .. author:: default .. tags:: a tag, and another tag .. categories:: Example, Post .. comments:: .. more:: Translated by the script to the *ABlog* post directive: .. code-block:: rst .. 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 ``///``, 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 :ref:`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.