Changelog

27 entries · newest first

How this site has changed over time. Only the stuff that matters to readers – new pages, themes, feeds, search, and the bigger infrastructure moves. For how the site is built, see the colophon.

Post ends: related over prev/next

Removed chronological previous/next links at the bottom of blog posts and notes. Related now shows up to five links (including the AI tools page when relevant). Also hardened the favicon for browsers and Google.

Site changelog

Added this page to track meaningful site changes – not every commit, just the ones that change how the site feels or works.

Paper theme and header polish

Third reading theme: warm paper with quieter monochrome links. Theme button cycles light → paper → dark. Also refreshed the header avatar (clickable preview) and switched the project to pnpm.

Friends page

New /friends page – people I like on the internet, separate from the blogroll.

Privacy page

Short plain-language privacy page covering analytics, newsletter, and theme preference.

Faster search

Split blog and notes search indexes, deferred Fuse.js until needed, and stopped shipping the search index in the global JS bundle.

Bookmarks

New /bookmarks page for links worth keeping, with notes.

AI stack page

Public page for the AI tools and models I actually use day to day.

Search UX upgrade

Live search, keyboard shortcuts, 404 search, prefetch, and a redesigned results UI that matches the rest of the site.

First newsletter issue

Sent the first issue from the self-hosted Listmonk setup. Subscribe on the list page.

Images on Cloudflare R2

Moved blog and note images to R2 (free egress) after Netlify bandwidth got heavy. Local optimize → WebP → upload via the ready script.

Dark mode

Light/dark themes with system preference by default, plus a header toggle to switch.

Blended home feed

Homepage now shows a single feed of recent blog posts and raw notes together.

Combined archive

One archive of posts and notes, with year pages for browsing back through everything.

Colophon

Documented how the site is built, the stack, and the principles behind it.

Dynamic OG images

Per-post and per-page social images generated with Satori at build time – no more one shared default for everything.

Webmentions

Receive and display likes, replies, and reposts from Mastodon and the wider indie web via webmention.io.

Blogroll

A list of blogs and sites I read, with feed URLs where available.

Local image pipeline

Dropped runtime @11ty/eleventy-img in favor of pre-optimizing with Sharp before deploy.

Umami analytics

Switched to self-hosted Umami – privacy-friendly page views, no cookies.

Now page

A /now page for what I'm focused on, reading, and writing lately.

Travel diary

Simple record of trips and kilometers traveled, plus a small bucket list.

Client-side search

Fuzzy search over posts and notes with Fuse.js – index built at compile time, no server.

Raw notes

Shorter notes with their own layout, archive, and feed – separate from longer blog posts.

Books page

Reading, completed, and planned books in one place.

Migrated from WordPress to 11ty

Moved the personal site (and years of posts) from WordPress to Eleventy. Still the foundation of everything here.

Fresh 11ty start

Initialized this Eleventy site on Netlify – Markdown in Git, static HTML out.