CI Availability and Moving to GitHub

SourceHut and CIs

Up until recently, I’ve been hosting this site on SourceHut Pages. They’re strong on the FOSS movement, and I love the simplicity of their CI. You get to choose from a variety of runners such as Alpine, FreeBSD, NixOS, Debian, and Ubuntu.

Ever since they’ve switched to physical servers for their runners, I wasn’t able to build my site with nix build. I discovered that the issue lies in deadlocks, possibly from the storage hardware used in their physical runner.

I empathize with their decision to move to physical servers. CIs in general can be pretty wasteful: each invocation will require a full npm install to build my website. That’s warranted in most cases, but I think a solo project could get by with exercising some restraint on triggering deploy runners.

A new build environment

Regardless, I’m moving to GitHub for my website. The code is now open source; my GitHub Actions calls netlify-cli to deploy to Netlify pages. That gives me more freedom to work with glue code in deploy.yaml, and I get the SSR benefits from Netlify.

At the same time, I’ve also simplified the CSS and functionalities on my site. There’s only two types of pages: a blog page (you’re reading it now), and my homepage.

Moving Slow

For years, I never actually came up with anything from scratch. I’d search sites like dribbble and find 4-5 “references”. I’d take the layout from one, the color scheme from another, the typography and spacing from a third. Learning to skillfully combine existing designs takes some practice, but it’s a heck of a lot faster than learning to create compelling designs from scratch.

Joshua Comeau - How I Built My Blog (Original 2021 Edition)

I think admitting this is like bitter medicine. It’s fairly trivial to slap a blog template and call it a day, but to copy a design is hard. Design systems are hard, rolling your own components is hard, and CSS takes time.

I’ve tried the Tailwind/UnoCSS route and hacked a site in a few days. I got results, but my process paid no attention to how I’m going to maintain this code. Revisiting the code made me realize I ought to be more mindful of the process. This time, I’ve decided to build my site without Tailwind1 and with minimal reliance on external libraries. It’ll take me more time to layer things on top of one another, but I think I’ve done the base (homepage and blog posts) decently. Everything that follows are nice-to-haves.

Roadmap

In the future, I hope to add the following functionalities (non-exhaustive):

Further down-the-road, I’d like to turn all of this into a reusable blog template. That deserves a design document of its own I guess.

Footnotes

  1. Tailwind is fine, I just like writing vanilla CSS in general.