Blog archaeology
3 Dec 2025
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:
- January 2019: integrating reveal.js for slide presentations (a feature I’ve used constantly ever since)
- October 2019: Jekyll 4.0 upgrade
- December 2019-January 2020: a complete asset pipeline refactor, switching from jekyll-scholar to bibtex-ruby
- Custom syntax highlighting for xtlang4
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#
-
“Ben is On The Tubes”. Obviously. ↩
-
Cutestrap described itself as “A sassy, opinionated CSS Framework. A tiny alternative to Bootstrap.” The repo is now archived. RIP. ↩
-
The scare quotes around “migrate” are doing a lot of work here; it was more like copying markdown files and hoping for the best. ↩
-
The programming language I use for livecoding. Every blog framework has had to learn to syntax-highlight it. ↩