A couple years ago, I used Hey World to startup a DIY blog. I wasn’t motivated to self-host at the time, but still wanted to blog. I wanted to keep things simple, so I figured I’d leverage my email provider’s newly announced blog addon.

At some point, I realized I wasn’t really using Hey email, so I was wasting money on that subscription. Also, Scott Hanselman’s post on owning your content was in the back of my mind for a while. ALSO, I was really curious to get hands on experience with static site generators (SSGs) since I was scarred from self-hosting a blog way back in college, which was basically maintaining a custom CMS, and figured this is the newer, easier way to achieve the same result. ALSO ALSO, I figure since I’m a programmer I should go through some extra effort for a project like this.

This used to be in my About page, but I moved it to a post since it’s a pretty specific subject.


Tools


Target Workflow

I really wanted to have a workflow like:

  1. write markdown
  2. git push
  3. automated publish

Content Creation Tech Choices Considered

  • WordPress was briefly considered for its pervasiveness and CMS capability, but ruled out due to it not fitting well into my target workflow.
  • I settled on using an SSG. I didn’t want to mess with learning JavaScript or CSS frameworks, because I’m getting old and don’t have time to do everything from scratch any more, if it’s not work related. I didn’t want a ton of dynamism either since I wanted to keep hosting fairly low overhead.
  • I wanted an SSG based on a language that compiles to machine code. That ruled out the most popular SSG: Jekyll. I didn’t want to take a Ruby dependency.
    • Zola was briefly considered, but Rust felt (and still feels) too complicated for what I wanted to do for this blog.
    • A Swift-based SSG was considered, but there doesn’t appear to be a well supported winner here.
    • Hugo won because it was compiled and writing Go felt like low-enough overhead. Plus I’ve wanted to dabble in it more over the years and this felt like a good excuse.
  • I chose the Hello Friend theme for Hugo because of its relatively simple layout, decent documentation, and color theme. I modified it a bunch, and ended up having to do more surgery than I was intending, unfortunately.
    • UPDATE: The Hello Friend theme was archived by its author 😞, maybe I’ll migrate this blog again…sigh

Publishing and Hosting Tech

For publishing, GitHub Pages made the most sense because I already have an active GitHub account, and really wanted to have a write markdown -> git push -> publish workflow. Creating a repo to host my site, automate publishing, and hook it up to my custom domain was surprisingly low-friction and ergonomic.

Domain, DNS, and email were the trickiest bit. I wanted to keep this simple as well, and just use Google Domains for everything, especially since it had easy forwarding to a personal gmail account. But about 2 months after I migrated from Amazon Route 53 to Google Domains, Google decided to kill their domains business and sell it to Squarespace. I didn’t want a Squarespace account; that felt like bloat since I’m already using an SSG + GitHub Pages workflow. It looks like Squarespace may have backtracked on some of the unpopular decisions they made according to this page, so maybe I’ll go back to it at some point now that it seems to be a separate offering from their hosting service. Until then, I wanted easy email forwarding instead of running an email service, and SimpleLogin is easy enough to use. And, I actually don’t mind using AWS for domains and DNS, it’s probably too complicated for most folks, but for a programmer like me, it’s not too simple and not too complex.