Zola
5 posts
-
Generated illustrations, without the blog looking generated
Every post here now has a hand-drawn-looking picture and a share card with its title in it, drawn by an image model for about three cents each. How the house style is held steady across posts, what the model gets wrong, why the title is drawn by the model but normalised by Typst, and what the research on AI-made pictures says about doing this at all.
-
Citations by DOI, and the warning I read past for a month
A reference manager moved its database, a build script swallowed the error, and every build for a month reported success. Rebuilding the pipeline around DOIs and crossref, and why Zotero stays as the other half.
-
Audio on a static site: build-time TTS and the script it reads from
This post has an audio version in a clone of my own voice, generated at build time with Fish Audio S2.1 Pro and committed next to the PDFs. What the dyslexia research says, why the pipeline emits a readable script before it makes any sound, the four things the script got wrong, and why the whole thing is shelved for now.
-
Images on a static site: tradeoffs, limits, and a 150-line Rust optimizer
Why images on this blog live in git next to the post instead of in object storage, how many that can hold, the small Rust tool that turns anything into a WebP, and what six months of using it changed.
-
Zola has no plugins, so this blog grew a Rust CLI
Why the blog runs on Zola, what Zola refuses to do, and how that one refusal decided the shape of everything else: a Rust CLI that owns citations, PDFs, audio and the newsletter, every generated file committed to git, and a build that is one script. Read through organisational path dependence, with four things I would do differently.