About this site

This site is two things – primarily, it’s a place to put my thoughts, insofar as I am able to complete them enough to actually commit them to source; it also serves as a bit of a playground for me to test new things when the urge takes me.


While it has been through many iterations, the current version is built in Haskell using WAI, Warp, Lucid, and Clay. I write the content in a mixture of direct Haskell (using Lucid as an EDSL) and Djot, although I have written my own extensions in a custom fork of the Haskell implementation. The previous iteration was a static site bilt with Hugo and served with nginx.

The site is hosted on a Digital Ocean droplet. I have used Digital Ocean since about 2014, and continue to do so mostly out of habit. The host (“Pharos”) is configured using NixOS, which is described in my infra repository. Everything is written using neovim on my machine which runs archlinux (btw).

You can find the source of this site on Github and my editor (&c.) configurations in my dotfiles.

Design and Taxonomy

This site has several types of page: there are general pages (like this one), musings (essays and reflections), and projects. While I have changed the structure over time, the site also obeys the Cool URIs idea laid out by Tim Berners-Lee to ensure the URIs will always work. Dorian Taylor has written about this eloquently enough that I see no reason to replicate his work.

Such as they are, the design principles of this site are to keep it as fast and readable as possible with minimal, if any, Javascript. As far as possible the pages are semantically structured such that they can easily be parsed for an alternative representation.


There are several websites which have inspired the structure, tooling, and content of this one: