This site is hosted on an OpenBSD server on vultr, built using plain text files processed by soupault and auto-rsync’d to the server as part of a pre-commit hook.

The source files are available on my git server and GitHub.

I also use entr (on Nix) or caretaker (on Arch) during development to auto-rebuild as I edit the source files.

Regarding the design, the focus is on simplicity and a small footprint. It’s the kind thing to do, for the user and the planet. No Javascript, just static HTML. I used to specify fonts, e.g. one of my favorites, IBM Plex, but in an effort to keep things light and tidy, I now just use system fonts. and are not part of the website proper, but are rather generated using GitHub Pages. The talks are built using slidev, which translates markdown files into beautiful web-first slide decks (I now only use PowerPoint under great duress), and the notes use quartz, which translates Obsidian-style markdown files (see a theme here?) into a website of interconnected notes a la Zettelkasten.

Nix Workflow

As of 2023-10-10 or so, I use a Nix-based workflow with flakes and The basic steps are similar to what is included below in the Non-Nix section, though more conveniently packaged and portable.

It’s delightful.

I may write it up at some point, but for now, look at flake.nix in the source code. One of the great things about Nix is that it’s self-documenting and self-contained.

On my non-Nix laptop running Arch, I still use the workflow below, though at some point I’ll probably install Nix on Arch and unify my approach.

Non-Nix Workflow

The workflow is terminal-based and pretty basic.

It amounts to:

cd src/site
$EDITOR site/ contains the following:

$TERMINAL -e caretaker &>/dev/null & disown
$TERMINAL -e python3 -m http.server --directory build &>/dev/null & disown
$TERMINAL -e $BROWSER http://localhost:8000 &>/dev/null & disown

This will open three new terminals running: a caretaker instance for auto-rebuild (I recently activated caching in soupault, rebuilds are lightning quick), a web server for preview, and a browser pointing to the server.

At that point I will usually throw the terminals running the server and caretaker to another desktop to achieve a clean editing environment.

When it’s ready to go live, I use an alias called glazy: git add . && git commit -m "update" && git push. This will trigger the pre-commit hook, which rebuilds the site again and activates rsync to send the built site to the web server, before pushing the source files to GitHub and my git server.