Building a website with Hugo

meta coding
⚠ Geek content ahead! ⚠
This post is about geeky tech stuff.
If you're not into that, maybe skip this one! (What's this?)

I’m so excited about this new website, I can hardly even express it. Over the last week I’ve been furiously, obsessively, hyperfixatedly putting this thing together, and I am so happy about it.

I’ve been on the web since around 1997. To me, that era of the late 90s to early 00s was the golden era of the web. All those little websites that were entirely mad, entirely chaotic, and entirely human. I guess it helped that everyone was a nerd too, so it felt easier to connect to people.

I’ve recently been feeling nostalgic for the web of that time, and I’ve since learned I’m not alone in that feeling. A few months ago someone pointed me in the direction of the 512KB Club, which showcases websites that are less than 512KB in size, and although I love that, that didn’t exactly scratch the itch for me. Then last week, I stumbled upon the idea of the Indie Web, which led me to the idea of the Small Web… and well, let’s just say I was overjoyed to discover that there is a movement of people building little personal websites in the old-school hand-crafted way. That there exists a rebellion against the huge siloed internet giants that do all the hard work for you, and take away all of your creative freedom, while simultaneously turning you into a data object. Armed with this knowledge, I’ve spent the last week voraciously learning and building myself a brand new website.

Markdown and flat files, my new favourite CMS.
Markdown and flat files, my new favourite CMS.

A little backstory about me and the web

I had my own personal website back in the early 00s, and it was home-grown. That’s how I learned to code - HTML and CSS turned into JS, which progressed into PHP and MySQL, which turned into Linux and bash when I got SSH access to my first web server, and then I spent my summer holidays installing various distributions of Linux just to see what they were like to configure. That’s how I spent my teenage years. (My favourite distro was Slackware, with xfce as my window manager.)

In 2005 I went to university to get a Masters degree in Computer Science. Facebook arrived while I was there, and I let my personal domains expire, because what was the point in maintaining all that now, when everyone was so excited to be on Facebook? After uni, I started out on my career as a Software Engineer, and discovered I had no desire to code outside of working hours.

Many years later I took up sewing and knitting, and discovered the online craft communities that still wrote blogs about it. When I started my own blog about it, I went to Wordpress. I stayed on Wordpress for 8 years. Eventually, when on a career break, I migrated to a self-hosted version of Wordpress so I could do more advanced things. I wrote myself a gallery plugin in PHP (and found it tremendously frustrating working with Wordpress’s tooling). This was when the itch began to make my place on the web more mine, and take it back to something simpler that wasn’t all composed of somebody else’s bloated platform and frameworks. And then I learned about the Indie Web. And here we are.

So I’ve been building this website.

After seriously considering rolling my own blog platform (which is what I had back in the day), I decided to go with a static site generator for simplicity. I picked Hugo, primarily driven by my existing skill set. And I’ve really enjoyed working with Hugo! I get to be in control of all the stuff I care about. I started out with a theme, for about 5 minutes, before realising I desperately wanted to write all my own templates. So these are all my own templates. I had to learn a lot of new HTML and CSS stuff - things like flexbox didn’t exist when I learned CSS.

I love how simple and clear the Hugo setup is (caveat: I mean clear and simple to someone who is happy on the command line). I love that I get to just write in Markdown, and then Hugo transforms my content using my templates. It does just enough automation, and gives me full control.

Some other things I’ve customised so far:

The whole site is backed up in GitHub. Images are configured to go in LFS, because I’m going to have many hundreds of them, and I wanted a scalable solution for storage that didn’t involve any extra scripting. This way, I can treat my images as any other file in the repo, and just fork out a little cash once I have too many to fit in the free tier storage. I might live to regret the LFS decision as apparently it’s pretty much irreversible without obliterating your git history, but OH WELL! Life on the edge. I didn’t have commit histories on Wordpress anyway.

I’m currently publishing static files directly to my webserver with rclone, but I’ll move that to GitHub Actions soon. Once I do that I’ll be able to blog from my phone, if I’m brave enough to publish without testing! Although naturally I am considering a staging site of sorts too.

I picked Krystal as my hosting provider, because they’re a UK-based independent and they have a B-Corp sticker on their website. They feel like a breath of fresh air after the clunky, bloated provider I used to use. Since choosing Krystal, I’ve become aware of free hosting solutions that have built in CI/CD and staging support, like Netlify and Vercel, but to be honest I’m wary of adopting another specialist platform. I want to stay on the DIY side of the line. I like my little public_html directory that I can ssh into. I feel comfortable with that.

What’s next?

I’ve still got a lot of tinkering to do - as I write, I haven’t finalised all my styles, and I haven’t migrated my content over - but gosh, I am so happy with my new space on the web that’s all mine. I’m over the moon, and so excited to be part of this new world. I feel so much more free to write here, far more than on Instagram or Wordpress (and not just because no one’s reading - ha!). It feels free because it’s my space, and I’m very much not thinking about SEO, or algorithms, or hashtags, or engagement. I’m writing to write, I’m not writing to be read. And that is so freeing.

Here’s to the small web!

Want to share your thoughts?
✎ Reply to this post by sending me an email, or message me on Instagram.