Keyboard shortcuts

Press or to navigate between chapters

Press S or / to search in the book

Press ? to show this help

Press Esc to hide this help

About this Site

This website is hosted on AWS Amplify. It is built using Nix and Mdbook, and is edited with Neovim. The fonts (which I purchased) are Butterick’s Heliotrope 4 and Triplicate Code B. I find them exceptional.

Because Amplify does not offer mdbook support by default, the site build is accomplished via a custom (but minimal) Docker image that loads Nix, which then in turn provides the build environment as a development shell.

The template used to create this site will be placed on GitHub shortly. It pleases me.

Why mdbook?

In the past, this site was quite different, rendered with Next.js (indeed I taught myself Next.js creating it.) But the maintenance and hosting burdens associated with Next.js eventually made me regret my choice. While I still believe that Next.js (along with React and TypeScript) make an unbeatable platform for web apps, this site is not a web app.

Which is to say: while I’m still happy to code SPAs in Next.js, a personal profile site does not need all that overhead. Nor should it be a 2mb download. Next.js is fit for many purposes, but not this purpose.

Even so, mdbook might seem an idiosyncratic choice to some. There are a lot of static site generators out there, and I’m sure that at least one (if not most) are probably designed with ‘small personal blog and portfolio site’ firmly in mind. Whereas mdbook, of course, was intended to produce, well, books.

It remains true that mdbook is obviously focused quite specifically at rendering markdown into documentation, this focus has, in my opinion, made it peerless in feature set and parsimony. It has an extensive ecosystem of plugins, which allow me to include such niceties as mermaid and graphviz diagrams, and supports footnotes, as well as a lovely ‘print’ export mode (you can save this whole site as a single PDF by clicking the button in the upper-right corner.)

Due to my dalliance with Rust, I have hit lots of mdbook-based docs in my time, and am always pleased to do so. They look good on mobile, they look good on desktop, they’re printable, and they’re searchable.

Finally, the niceties of blogging – an RSS feed, maybe some light tagging – are probably easier to build atop mdbook as I need them than mdbook’s extensive rendering options (mermaid, graphviz, mathjax, plantuml, etc.) would be to build on, say, Soupault. While I admire Soupault, mdbook seems the better way for me, currently, and specifically for the aims of this site.

Finally, I’ve come to the view that blandness in many websites is a feature, not a bug. If you must, consider this my stand against unnecessary differentiation. Homogeny is not the enemy of communication. Cacaphony is the enemy of communication.