I rewrote my blog engine (again): welcome, Cripslock#
Sat Jul 26 20:34:36 2025
'In my experience Miss Cripslock tends to write down exactly what one says,' Vetinari observed. 'It's a terrible thing when journalists do that. It spoils the fun. One feels instinctively that it's cheating, somehow'
In preparation for rearranging and pouring in a bunch of fediverse threads from an archive of the recently defunct Pleroma server at brvt.telent.net, I have rewritten (again) the software that shows you this blog.
Previously, previously, previously
it was that or figure out how to rebuild and reverse-engineer the ten-year old Clojure program it replaces. New features are the topic/keyword/tag thing you see in the sidebar on the right, and a new syntax for making links between one page and another: my intention is that it's going to get more "timeless" posts (mostly, for the moment, about motorcycles), and so I need better ways to expose that stuff. Something a bit like a Bliki.
(A planned new feature is site search, because Google isn't what it once was)
Visually I carried forward all the CSS from the old site so you probably won't notice much difference there. The service itself is written in Fennel because well mostly because why not?. I had to write a Textile parser again, using an ugly combination of Lua patterns and Lpeg, but Markdown is provided by lcmark.
Points of note:
-
my mental model of Textile is divergent in several ways from the Textile spec's model of Textile, and as the rĂ´le of Textile in this software is to display posts that I wrote, my interpretation is deemed locally correct. This is another reason the Textile processing is home-grown and I didn't just, say, use Pandoc to turn it into Markdown.
-
cqueues is fun. Cripslock has an HTTP server and also an inotify thing so it can refresh when posts are added/changed, and it's quite slick to be able to put them in the same event loop. (The side project that I temporarily put down to write Cripslock (which is itself a side project from Liminix which is my hobby when I am not at
$WORK
) mashes up cqueues and glib in an inelegant way, so it was neat to see how it should work) -
the initial topic tagging was done with
grep
andsed
and is probably quite low-quality -
in the ~ 25 years since I started writing this blog (ever since the first post insisting that it was in fact not a blog - hindsight is wonderful, no?) I have never specified licence terms except to add a copyright notice. So, technically, I suppose, that would mean no copying and arguably no copying would also mean no reading - because it's in the nature of transmitting it across the internet that copies end up being made at both ends and quite likely also in the middle. I intend to rectify this, and also, if I can find some well-written canned licences that meet my needs, to make it explicit that I am not permitting its use for training LLMs.