Goodbye Hugo, Hello Astro!

1172 words, 6 min read

To my one faithful repeat reader - your eyes do not deceive you, the blog has changed! Over the weekend, I successfully distracted myself from *hand motions* all this by rebuilding my blog!

This makes for three iterations of the blog now - first WordPress, then Hugo (served via Cloudflare Pages), and now Astro (still served via Cloudflare Pages). I’ll now spend a bit talking about the changes I made, and what I learned along the way.

From Hugo to Astro

The first time I rebuilt my blog, I was moving from a very bloated WordPress site that, if my memory serves, a pretty complex and custom block-based layout. My priorities were to find a format that heavily emphasized written word, and that I could hack on if need be. At the time, I was learning golang, and the fact that Hugo was written in that language made it a top choice.

I was also relatively unfamiliar with templating engines. We had just started using dbt at work, and I was pretty enchanted but what templating lets you achieve; so, since Hugo extends the golang template format, this seemed like a good way to kill two birds with one stone. I started out using a prebuilt theme - the smol theme (which you can find here).

It was a very minimalist theme, but it really did some good things with minimalism, including minimizing package size. I eventually replaced this with my own theme - still very monochromatic, but with even fewer navigation elements (honestly, mostly because I didn’t know how to do it). A few iterations came of this as well; I tried out a box-grid layout for the front page, and then I eventually ended up with a vertically stacked layout.

In the meantime, over the past year I’ve spent a lot of time doing web design, actually. In addition to the theme changes for my old Hugo theme, I also built Precis, which server-side rendered HTML using Python and Jinja and Tailwind CSS and DaisyUI for CSS. So, I spent quite a bit of time thinking about how to build UIs, and how CSS works.

I also tried out using Vue.js + Vite for my Venmo Calculator project (and vanilla CSS). I struggled a bit with Vue, the template language being heavily HTML-based, but I found that I sometimes wanted some syntactic sugar. I had had the same feeling when building Precis - Jinja HTML is kind of hard to read, and I’d like to find a more natural entree into componentizing. This all being said, I wouldn’t be surprised if I did Vue wrong; I may yet revisit it in the future for a project that has more complicated client-side requirements.

Toward the end of the year, I built Local Libary. I chose Astro because I had heard good things about it, and I saw that it had just (ie, like a year ago) support for server-side rendering (SSR). Astro was the framework that really clicked for me; I had a great time building Local Library with it; and so I chose to use it for rebuilding my blog.

Things I Learned

In no particular order, here are some things I learned while rebuilding this site:

Not all the things I learned were good, though -

New and Improved Features

Since porting the website, I’ve also introduced a few new features, or improved spins on existing ones:


This work is licensed under CC BY-NC 4.0