I have planned to have a personal site for a long time and in this (my first!) post I’m going to cover how I selected the technology used to build this site and why.
The main roadblock to having my own site over the years has been a mixture of “analysis paralysis”, the commitment to maintaining it (cobbler’s shoes) and for a large part the fear of it being - well - a bit rubbish.
I’m not a great writer, nor prolific, but I do document a lot of thoughts in emails. Email can be a great resource to dig into, but I hope a personal site of writing will serve as a way to distil those thoughts that are more important to me. I also want somewhere I can experiment freely, without the commercial considerations of professional work.
Left to my own devices, I’m pretty sure I would have put it off indefinitely. But as is so often the way, a casual conversation with a friend turned out to be the motivation I needed.
Thinking about what would be the best solution for him, helped me better consider what I would want. I wanted something that would be:
Low friction to update #
I don’t have a habit of writing a blog, and I know enough about myself that any substantial barrier to publishing new content will result in failure. I want it to be as easy as copy-pasting an email I’ve written. I want to be able to write in Markdown, and I don’t want an editor that’s going to start injecting cruft into the document. I want to be able to write directly in my code editor if it suits me and other times be able to use a GUI if I want to and still have version control.
Low cost #
These days a few static pages of a personal blog needn’t come with running costs to host. I don’t want the “gym subscription” effect that contributes to feeling guilty about not writing more often. I’ve had such a good experience with Netlify hosting simple landing pages, I was looking for something easy to host there, but not necessarily tied to that service.
This basically means the freedom to switch tools easily whenever I need, or want to, or even archive the whole thing if I change my mind. I don’t want an all-in-one solution, but pieces that can easily be swapped out for building, editing, hosting, etc.
Easy to maintain #
I don’t want to commit to maintaining a server and the evolving languages or database versions that come with that choice. I want to be able to have purple patches where I can work on it a lot, but also have the freedom to just leave it alone for long stretches.
Fun to tinker with #
Part of the appeal of having a personal site is having a place where I can just try things out (in public). I’m fortunate enough to have clients with a lot of confidence in me, so I get plenty of creative opportunities in my professional work. Yet there are still times I want to be able to quickly try out a new idea free from commercial constraints, but may also serve as a demonstration of an idea that I can share when necessary.
Picking a stack #
In 2021 there are a lot of options to choose from: headless CMS providers like Contentful or Sanity; hosted platforms like Tumblr or Substack; self-hosting a Wordpress or Ghost site. But these fail on either having to maintain a server, being tied to a service, being restricted in how much you can customise them, potentially incurring too high a financial cost or just subjectively being unappealing.
It would also be true to say that my experience with Netlify was a huge influence. I’ve been so impressed with it that it is my first consideration when hosting any static sites.
So this steered me towards static site generators. I already had some experience building client sites with tools like Jigsaw (PHP), Gatsby (React) and Routify (Svelte). I had success with all of them, and consider them great tools. I also considered Hugo (Go) and Jekyll (Ruby), but in the end, I felt like they all required either too much code out of the box, were subject to change, or meant committing to a single language.
I had been aware of Eleventy being a relative newcomer and had read some glowing reviews but still wasn’t sure I “got it”. Then I watched the creator, Zach Leatherman, demo it and its simplicity frankly blew me away. It felt easy to grasp, very flexible and lightweight and I was excited to try it out. You could literally start your site from a single file with zero config. It also supported Liquid syntax which I use regularly on Shopify themes so the learning curve was much less steep.
I could see that it was simple to deploy to Netlify (and others) via Git, and had support for Netlify CMS (which I’d used) as well as Forestry which I was interested to try out.[^1][^2]
So Eleventy it is, with GitHub and Netlify.
[^1]: Update: I went with Forestry and I can recommend it.
[^2]: Further update: Forestry is now TinaCMS and still recommending it.