Blog archaeology

meta

After the recent switch to VitePress, I became curious about how many of the previous iterations I still had access to. I’ve been an obsessive git packrat for years, and I figured that there’d be some secrets in the git repo. So I went spelunking in the history.

What I found was more extensive than I expected. The benswift.github.io repository turned out to be just one chapter in a longer story. A bit more digging on GitHub revealed earlier chapters I’d (pretty much) forgotten about.

The earliest archaeological evidence dates back to August 2012 and the Octopress era: a fork of imathis/octopress that I used for a few months. The repo’s first commit is Brandon Mathis’s initial Octopress setup, and my last customisation was on 8 November that year. I added Ubuntu fonts and a custom GitHub sidebar.

I do remember the Octopress setup. One interesting nugget I’d forgotten showed up in some commit messages mentioning “new ‘detached’ octopress/org blogging works”. Apparently I was already integrating org-mode with my blogging setup back then.

Then came “the Clojure years” (2013–2017). I still really like Clojure in a lot of ways, but have moved all that sort of work to Elixir these days.

First up: November-December 2013. I forked nakkaya/static, Nurullah Akkaya’s Clojure-based static site generator. My first tweak was on 28 November, my last commit on 4 December. Only one week! I was clearly keen to try something new, but went back to something more mainstream.

But I wasn’t done with Clojure. In December 2014 I created a separate repository called “biott”1, built on Cryogen, another Clojure-based static site generator. This one stuck around longer, with commits running from December 2014 to January 2017. It used Cutestrap for CSS, which tells you something about mid-2010s web aesthetic sensibilities.2

The biott repository is now archived. This was my main blog during 2014–2017.

The Jekyll era kicked off in late 2018, when I forked John Otander’s Pixyll theme and moved away from biott/Cryogen.

On 30 December 2018, we get commit c1a4d0225: “initial commit of jekyll files”. A complete restart, moving to a custom setup based on Jekyll’s Minima theme. I remember doing this initial work on my laptop on the kitchen table at my in-laws place. Same day, commit eaf35f115: “migrate content from old blog version”.3 This is the setup that would stick around for six years.

Looking at the commit statistics, 2019 was wild: 1,405 commits out of roughly 3,500 total. That’s 40% of the entire repository’s history in a single year, including:

The reveal.js integration turned out to be the most enduring feature. Every subsequent version, including the current VitePress setup, has had to support it. I give a lot of talks and teach a lot of classes, so I need slide support everywhere.

Fast forward to November–December 2024, and I finally pulled the trigger on migrating to VitePress. The migration took about two days of intensive work (commits 97ae2f706 through 42a26bd25 on 30 November–2 December), with an assist from Claude Code. The last Jekyll version is preserved at the jekyll tag. The new setup uses TypeScript instead of Ruby and Vue components instead of Liquid templates. It also uses modern ES6 modules instead of… well, whatever Jekyll was doing with its asset pipeline.

Across all of those systems, the blog has been my “TODO app”: a place to try new technologies while keeping the posts and slide decks working. The git history records the technical decisions and aesthetic tweaks, with the occasional outburst.

Migrating to VitePress was worth it. The site is faster, and I can use modern JavaScript without fighting the framework. But in six years when I’m “nuking all the things” again, the next framework probably won’t be all that different.

Git also tells me exactly when, and why, I decided the blockquote padding needed to be 0.5em instead of 1em.

Footnotes

  1. “Ben is On The Tubes”. Obviously. ↩

  2. Cutestrap described itself as “A sassy, opinionated CSS Framework. A tiny alternative to Bootstrap.” The repo is now archived. RIP. ↩

  3. The scare quotes around “migrate” are doing a lot of work here; it was more like copying markdown files and hoping for the best. ↩

  4. The programming language I use for livecoding. Every blog framework has had to learn to syntax-highlight it. ↩

Cite this post
@online{swift2025blogArchaeology,
  author = {Ben Swift},
  title = {Blog archaeology},
  url = {https://benswift.me/blog/2025/12/03/blog-archaeology/},
  year = {2025},
  month = {12},
  note = {AT-URI: at://did:plc:tevykrhi4kibtsipzci76d76/site.standard.document/2025-12-03-blog-archaeology},
}