Colophon
How this website is built, and the principles behind it.
Principles
- HTML first, light JavaScript — Content and layout work without JS. A small global bundle handles theme preference, code-copy, and the search shortcut; the search page loads its own script only when you visit it.
- Fast and lightweight — Every page targets a perfect Lighthouse score.
- Own the content — No walled gardens. Everything is Markdown in a Git repo.
Stack
- Eleventy (11ty) — Static site generator (v3). Templates are Nunjucks.
- Cloudflare Pages — Hosting and serverless functions.
- GitHub — Source control. Push to deploy.
- Markdown — All content is written in Markdown with YAML frontmatter.
Images
- Sharp — Resizes and converts images to
WebP locally at build time, via
@11ty/eleventy-img. - Satori — Generates OG social sharing images (1200×630) automatically for every page.
Newsletter
- Listmonk — Self-hosted newsletter manager.
- Cloudflare Turnstile — Anti-spam on the signup form.
Analytics
- Umami — Self-hosted, privacy-friendly. No cookies.
Search
Client-side fuzzy search powered by Fuse.js. The index is generated at build time as a static JSON file — no server required.
Feeds
An Atom feed is available for blog posts. More on the feeds page.
Typography
System fonts — system-ui on macOS, Segoe UI on Windows, Roboto on Android,
Arial as fallback. Code uses the system monospace stack.
Themes
Three reading themes: light, paper, and dark. If you haven’t picked one, the site follows your browser’s preference. Paper is a warm cream look with monochrome links and quieter UI chrome.
