It’s been a year without writing a blog post, and that means it’s time to reboot my personal website yet again. Here’s what I wrote last year, in a post now lost to time:

I’ve come to realize something about this site. I have two conflicting goals:

  1. Use this as a sandbox to play with new web technologies
  2. Use this as a journal of my experiences in that sandbox

Unfortunately, previous incantations of this site have focused on #1 to the exclusion of #2. That is, I’ve packed the codebase of the site full of fun, interesting things; made cool vue.js components for the frontend; done all sorts of neat, interesting devops stuff; and left myself with a platform wherein writing about any of that stuff is a complete pain in the butt.

In retrospect, writing a static site generator in Rust (not something I use regularly) turned out to be less of a quick-and-easy project than I’d hoped. I spent a while playing with all of that, even writing a little WASM here and there, and had a good time. But I never found myself writing about any of that. Why not?

Reading anything on that site was frankly unpleasant. The generated HTML was simply generated directly from markdown with no styling or templating applied. I always promised myself that I’d work on making things less ugly, but I never did. I’d typically poke around the internet for inspiration, open a stylesheet, become immediately bored, and go work on something else.

Unfortunately this has meant that a few ideas for posts have entered and left my mind over the past year, never having seen the light of day. I don’t like that. I didn’t solve the original problem: writing about stuff was still a pain in the butt. So, here we are, starting again with a new approach.

This time we’re going to try hugo with the terminal theme. I think this theme is very pleasing visually. The font (Fira code) is a personal favorite and really draws me in to the whole “terminal” aesthetic.

I’ve not used hugo before, and I’m not sure what I think of it at this point. Themes seem architecturally critical to how hugo apps are designed, which makes me wonder how much variation there is between different hugo setups. I bet it’s a lot. I haven’t done much with this theme other than install it and write this first post, and everything Just Works out of the box. That’s awesome! Maybe it’ll feel less awesome when I want to do some deeper customization, but I’m stoked for now.

Hugo feels pretty fast, too:

$ hugo server -D
Start building sites … 
hugo v0.96.0-2fd4a7d3d6845e75f8b8ae3a2a7bd91438967bbb linux/amd64 BuildDate=2022-03-26T09:15:58Z VendorInfo=mage

                   | EN  
  Pages            | 12  
  Paginator pages  |  0  
  Non-page files   |  0  
  Static files     | 15  
  Processed images |  0  
  Aliases          |  3  
  Sitemaps         |  1  
  Cleaned          |  0  

Built in 20 ms
Watching for changes in /home/sdx/sdx-static/{archetypes,content,data,layouts,static,themes}
Watching for config changes in /home/sdx/sdx-static/config.toml
Environment: "development"
Serving pages from memory
Running in Fast Render Mode. For full rebuilds on change: hugo server --disableFastRender
Web Server is available at //localhost:1313/ (bind address
Press Ctrl+C to stop

And the hot reloading is snappy, too:

Change detected, rebuilding site.
2022-04-27 21:49:08.088 -0400
Source changed "/home/sdx/sdx-static/content/posts/": WRITE
Total in 4 ms

Since this is a fully-static site, deployment is simple and service (should be) quick and easy. I think this is going to work. I would like to make a few changes to how the home page is laid out, and I’d like to get a constant footer across all of my posts. Those feel like pretty small lifts; I’m interested to find out how wrong I might be.