In the great tradition of my people (developers), I have taken to rebuilding my personal website, again. Apart from building your own CMS, this appears to be a rite of passage at least for my generation. It’s on Hugo now, a blazingly fast system built on Golang. Hey, at least I didn’t put it on a Kubernetes cluster! To celebrate the occasion, I’m looking back the tools I’ve used over the years.
My theory is that for most devs, their personal website is just enough production to drive applied learning. It strikes the right balance between technology exploration and only jumping into every third rabbit hole because there’s some self-made pressure to deliver.
Technically my website was “born” on Geocities in 1998, built on Netobjects Fusion. The cool kids today would call it a “Static Site Generator”. Thankfully it has not been preserved in the Geocities Archive. For a while it was on Textpattern, a PHP blogging engine that served as a precursor to Wordpress. In 2004, it moved to Typo3, with a hilariously complicated configuration language that took hours to build a menu as an HTML unordered list.
Funnily enough, despite working for 15 years with Silverstripe CMS, my blog instead jumped to Mephisto and Ruby. It taught me the value (and complexity) of atomic deployments through Capistrano. Then I got busy, and made a fateful switch away from self-hosting towards Tumblr.
Which brings us to the current Hugo implementation. It’s pretty close to the simplest viable option if you want to avoid SaaS lock-in of your content: A static site, with the source hosted on Github, and deployed with a few lines of YAML via Github Pages.
The most amazing part is that the content survived five transitions, first as HTML and then as Markdown. Portable standards are a powerful thing. I like to think that some of the content gained a “digital patina” over the years, with small conversion gaps along the way. But it’s mine, and I love it!