{
"$type": "site.standard.document",
"content": "---\ntitle: \"Blog archaeology\"\ndescription: \"Spelunking through git history to trace this blog from Octopress in 2012\n through two Clojure experiments, six years of Jekyll, and now VitePress.\"\ntags: [meta]\n---\n\nAfter the\n[recent switch to VitePress](/blog/2025/12/02/switching-from-jekyll-to-vitepress/),\nI became curious about how many of the previous iterations I still had access\nto. I've been an obsessive git packrat for _years_, and I figured that there'd\nbe some secrets in the git repo. So I went spelunking in the history.\n\nWhat I found was more extensive than I expected. The repository I'm currently\nworking\nin---[benswift.github.io](https://github.com/benswift/benswift.github.io)---turned\nout to be just one chapter in a longer story. A bit more digging on GitHub\nrevealed earlier chapters I'd (pretty much) forgotten about.\n\nThe earliest archaeological evidence dates back to August 2012 and the\nOctopress era: a fork of\n[imathis/octopress](https://github.com/imathis/octopress) that I used for a few\nmonths. The repo's\n[first commit](https://github.com/benswift/octopress/commit/8dc0cb0b4b0de3c6f40674198cb2bd44aeee9b86)\nis Brandon Mathis's initial Octopress setup, and my\n[last customisation](https://github.com/benswift/octopress/commit/b317c23438fe4ad8a271e19312b04ca82e901159)\nwas on 8 November that year. I added Ubuntu fonts and a custom GitHub sidebar.\n\nI do remember the Octopress setup. One interesting nugget I'd forgotten showed\nup in some commit messages mentioning \"new 'detached' octopress/org blogging\nworks\"---apparently I was already integrating\n[org-mode](https://orgmode.org) with my blogging setup back then.\n\nThen came \"the Clojure years\" (2013--2017). I still really like Clojure in a\nlot of ways, but have moved all that sort of work to Elixir these days.\n\nFirst up: November-December 2013. I forked\n[nakkaya/static](https://github.com/nakkaya/static), Nurullah Akkaya's\nClojure-based static site generator. My\n[first tweak](https://github.com/benswift/static/commit/b0f10b6dbcb2996caf97acd5d4eb82c0a1b75acc)\nwas on 28 November, my\n[last commit](https://github.com/benswift/static/commit/387b093fb1899ac0e4c839cdee0603d5c4184f8d)\non 4 December. Only one week! I was clearly keen to try something new, but went\nback to something more mainstream.\n\nBut I wasn't done with Clojure. In December 2014 I created a separate repository\ncalled \"biott\"[^biott]---built on\n[Cryogen](https://github.com/cryogen-project/cryogen), another Clojure-based\nstatic site generator. This one stuck around longer, with commits running from\n[December 2014](https://github.com/benswift/biott/commit/f844154c74681e14cdb8e7f9f1a439345f23a76c)\nto\n[January 2017](https://github.com/benswift/biott/commit/c31767fa17bd1e2a6b8a11c902293dca62443132).\nIt used [Cutestrap](https://www.cutestrap.com) for CSS, which tells you\nsomething about mid-2010s web aesthetic sensibilities.[^cutestrap]\n\n[^biott]: \"Ben is On The Tubes\". Obviously.\n\n[^cutestrap]:\n Cutestrap described itself as \"A sassy, opinionated CSS Framework. A tiny\n alternative to Bootstrap.\" The repo is now archived. RIP.\n\nThe [biott repository](https://github.com/benswift/biott) is now archived. This\nwas my main blog during 2014--2017.\n\nThe Jekyll era kicked off in late 2018, when I forked\n[John Otander's](https://johno.com)\n[Pixyll](https://github.com/johno/pixyll) theme and moved away from\n`biott/Cryogen`.\n\nOn 30 December 2018, we get commit\n[`c1a4d0225`](https://github.com/benswift/benswift.github.io/commit/c1a4d022534c9cda11d98f23b94f112330c9a783)---\"initial\ncommit of jekyll files\". A complete restart, moving to a custom setup based on\n[Jekyll's Minima theme](https://github.com/jekyll/minima). I remember doing this\ninitial work on my laptop on the kitchen table at my in-laws place. Same day,\ncommit\n[`eaf35f115`](https://github.com/benswift/benswift.github.io/commit/eaf35f1151f38dd42de232513e6a0a9f73b1880c):\n\"migrate content from old blog version\".[^migration-quotes] This is the setup\nthat would stick around for six years.\n\n[^migration-quotes]:\n The scare quotes around \"migrate\" are doing a lot of work here---it was more\n like copying markdown files and hoping for the best.\n\nLooking at the commit statistics, 2019 was wild: 1,405 commits out of roughly\n3,500 total. That's 40% of the entire repository's history in a single year.\nWhat was I doing?\n\nWell, everything:\n\n- January 2019: integrating [reveal.js](https://revealjs.com) for slide\n presentations (a feature I've used constantly ever since)\n- October 2019: [Jekyll](https://jekyllrb.com) 4.0 upgrade\n- December 2019-January 2020: a complete asset pipeline refactor, switching from\n [jekyll-scholar](https://github.com/inukshuk/jekyll-scholar) to\n [bibtex-ruby](https://github.com/inukshuk/bibtex-ruby)\n- Custom syntax highlighting for\n [xtlang](https://extemporelang.github.io)[^xtlang]\n\n[^xtlang]:\n The programming language I use for [livecoding](/livecoding/). Every blog\n framework has had to learn to syntax-highlight it.\n\nThe `reveal.js` integration turned out to be the most enduring feature. Every\nsubsequent version---including the current [VitePress](https://vitepress.dev)\nsetup---has had to support it. Turns out when you give a lot of talks and teach\na lot of classes, you need slide support _everywhere_.\n\nFast forward to November--December 2024, and I finally pulled the trigger on\n[migrating to VitePress](/blog/2025/12/02/switching-from-jekyll-to-vitepress/).\nThe migration took about two days of intensive work (commits\n[`97ae2f706`](https://github.com/benswift/benswift.github.io/commit/97ae2f70661cff49b5700f9054d589b876e5bb7f)\nthrough\n[`42a26bd25`](https://github.com/benswift/benswift.github.io/commit/42a26bd25f4e1bdc384eee7f0f2790d87b43b51d)\non 30 November--2 December), with an assist from\n[Claude Code](https://docs.anthropic.com/en/docs/claude-code). The last Jekyll\nversion is preserved at the\n[`jekyll` tag](https://github.com/benswift/benswift.github.io/tree/jekyll).\nTypeScript instead of Ruby, Vue components instead of Liquid templates, modern\nES6 modules instead of... well, whatever Jekyll was doing with its asset\npipeline.\n\nSo what does this archaeological expedition actually tell us? A few things.\nFirst, the pattern is clear: [Octopress](https://github.com/imathis/octopress) →\nClojure experiments ([static](https://github.com/nakkaya/static),\n[Cryogen](https://github.com/cryogen-project/cryogen)) → long\n[Jekyll](https://jekyllrb.com) tenure → [VitePress](https://vitepress.dev). The\nblog has always been a place to try new things---two separate Clojure attempts,\nmultiple Jekyll themes, and now a Vue-based system. Each iteration taught me\nsomething. It's basically my \"TODO app\"; the place where I experiment with new\ntechnologies and ideas.\n\nSecond, there's something satisfying about having this entire history preserved.\nEvery commit tells a story---not just \"what changed\" but often \"why I wanted to\nchange it\". The commit messages are a diary of technical decisions and\naesthetic tweaks, with the occasional outburst.\n\nThe git packrat habit means I can see exactly when I added that custom CSS for\nblockquotes (multiple times, apparently), when I first integrated `reveal.js`\n(September 2018), and how many times I've tweaked the font rendering (too many\nto count). It's all there in the log---across multiple repositories, spanning\nover a decade.\n\nBut for all that, the actual _frameworks_ matter less than the content and\nthe features that support creating it. Octopress, two different Clojure\ngenerators, Jekyll with three different themes, VitePress---they're all just\ndifferent ways to serve markdown files with syntax highlighting and\npresentations. The actual blog posts survived.\n\nSo was migrating to VitePress worth it? Yep---it's faster, the tooling is\nbetter, and I can use modern JavaScript without fighting the framework. But in\nsix years when I'm \"nuking all the things\" again, will the next framework be\nfundamentally different? Probably not.\n\nAs long as I keep committing everything to git, I'll be able to look back and\nsee exactly when---and why---I decided the blockquote padding needed to be 0.5em\ninstead of 1em. And honestly, that's kind of beautiful.\n",
"createdAt": "2026-05-13T23:14:42.588Z",
"description": "Spelunking through git history to trace this blog from Octopress in 2012 through two Clojure experiments, six years of Jekyll, and now VitePress.",
"path": "/blog/2025/12/03/blog-archaeology",
"publishedAt": "2025-12-03T00:00:00.000Z",
"site": "at://did:plc:tevykrhi4kibtsipzci76d76/site.standard.publication/self",
"tags": [
"meta"
],
"textContent": "Spelunking through git history to trace this blog from Octopress in 2012 through two Clojure experiments, six years of Jekyll, and now VitePress.",
"title": "Blog archaeology"
}