Colophon

Deallocated Objects started on WordPress in 2010. In 2014 I rewrote it as a little Rails app, and that app ran on the same Linode until 2026, when I moved it to a static site. Every old URL still works, including a handful from the WordPress days.

How It’s Built#

The site is generated by a small TypeScript script run with Bun. It reads the posts (the old ones exactly as the Rails app rendered them, new ones as Markdown with a bit of YAML up top), and writes plain HTML files.

  • markdown-it turns new posts into HTML, with footnotes, smart quotes and callouts.
  • Shiki colors code at build time, in light and dark themes.
  • Search is a JSON index built with the site, searched in your browser.
  • Related posts come from shared topics plus a little TF-IDF over every post’s text.

Readers get no frameworks. Each page is HTML with the CSS inlined, plus one small script for copy buttons, image zoom and search. It all works with JavaScript turned off, except search and the random post button.

How It Looks#

The design is the 2014 one, rebuilt with modern CSS: the same blue header and the same 680 pixel column, now with dark mode, bigger type and a layout that works on today’s phones. The logo is the original 2014 icon, traced from its PNG into an SVG so it’s sharp on every screen.

Text is set in Source Sans 3, the current version of the Source Sans Pro the site has always used. It’s served from this site, never from Google.

How It’s Served#

The files are served by nginx on a small DigitalOcean server in New York, over HTTPS with HTTP/2. There’s no database and no app process.

The site is also built for AI agents. Every post is available as Markdown, there’s an llms.txt, and agents that ask for text/markdown get it. I wrote about all of that in Making My Blog Readable By AI Agents.

What’s Changed#

The changelog lists every change to the site.