Obligatory Blog Post About Blogging Infrastructure
- published
- reading time
- 2 minutes

So, you scrolled to the first blog post.
Abstract
It’s easy to get lost thinking about how you might set up a blog instead of actually doing it and writing some posts. Particularly if you work in tech. To those of you in the planning spiral: I’m providing the following objectively correct1 opinions as an easy way out of your decision paralysis. You’re welcome.
Hosting Infrastructure
There are a myriad number of free static site hosts out there2, but if you’re like me, a tiny voice in the back of your head is afraid of committing to any platform that won’t support your wildest dreams. So we’ll use AWS.
Using AWS for static site hosting is kind of like using the Large Hadron Collider to peel an orange, but it probably supports almost anything you would ever want to do with a site. Usually, this flexibility comes at premium prices, but Cloudfront currently offers a free fixed-price distribution that makes the basics virtually free:

This is probably the most reasonable pricing of any AWS service.
Yes, there’s even an allotment for Lambda@Edge in the free-tier distribution, which means you can set up freaky JavaScript-less server-side dynamic content generation if that’s what your heart is telling you to do.
Blogging Framework
Hugo. Yeah. Hugo has a community, usually “just works”, but is somewhat controversial in the blogosphere. There seems to be some friction merging features upstream. For instance, I’m an recovered (graduated) academic and Hugo successfully scratches my itch to write mathematics in a TeX3:
– but another LaTeX feature I miss is good citation support. Other people want good citation support in Hugo, Hugo supports Pandoc, and Pandoc supports good citations! Problem solved, right? Unfortunately, the
PR
that adds the --citeproc flag that enables the good citations to the hardcoded pandoc argument list was opened in 2022 only to be closed, unmerged, 4 years later. It doesn’t seem uncommon to maintain your own Hugo fork to bypass obtaining the approval of Hugo maintainers, which is a pretty steep technical barrier for the majority of users.
-
highly personal and context sensitive ↩︎
-
Github Pages is pretty good. ↩︎
-
Hugo doesn’t quite ship with this enabled. You should copy the config and the magical render-passthrough template from the examples section in the docs if this is something you want. ↩︎