Colophon

During the last update to this site on Monday, 02 November 2026, between the garden and microfeed, 23,877 of 40,515 total words were published, representing 58.9% of the writing intended for publication residing in my Obsidian vault.

Short Version

The whole site uses three fonts, and loads just two of them.

Long Version

This site is under development because the curse of the smallweb is to never be satisfied. This colophon refers to the version of the site that began publishing in October of 2026, which came with a big reset, especially of the garden.

This site is built in a custom static site engine called Spindle, which is open-source and available to use, but should probably not be approached by anyone who isn't a trained professional. It's in perpetual alpha and I make breaking changes quite often, but it runs this site — and several other corporate sites in production that I maintain — pretty well.

All of the pages of this site are a mix of Spindle's own syntax or Markdown straight from Obsidian. Markdown support is not a feature of Spindle — its own markup is syntactically different — but this site's configuration has a ~50 line parser that translates Markdown, including tables and wikilinks, to Spindle's syntax tree and builds them.

Spindle is Lua-based and was inspired by toying around with the idea of self-modifying Markdown: what if you had a simple markup language that allowed you to change the meaning of # on the fly? What if you had a little control flow, as a treat? What if you could define re-usable templating in the same scope as the content for detailed control over every page?

The site is as simple and optimised as possible while still being, like, 20% more fancy than the average static site. Everything text-based, like the markup, stylesheets and vector icons are vendored and minified directly into the HTML as a single payload, usually around 20 to 30 KB per page. I'd like to get that down further by simplifying the icons. The only additional requests are for binary blobs, the fonts and imagery or sometimes music files, which means most pages only make two or three additional requests.

All of its resources are hosted on-domain, either directly alongside the HTML or via its image hosting bucket, which is on a subdomain. This lets me guarantee there is no tracking, whether directly by me or subversive, like font providers and payload CDNs quietly turning sites that rely on them into a data dragnet.

Almost all dynamic elements are implemented in CSS and do not rely on Javascript, with the exception of the music page and the dark mode toggle.

Garden & Galleries

The garden was inspired by Katherine Yang's home page, with its adorable sidebar of little sticky notes, which got me thinking about building a virtual wall of them. I had a lot of fun trying a bunch of silly little yellow stylings and settled on a simple, flat design.

These sticky notes come from my Obsidian vault and are the 'permanent' folder of my Zettelkasten; notes that have been refined or written up from the slipbox. They're not necessarily finished, but they are refined beyond simple idea capture... even if some of them are silly.

I also wrote a fun little hashing algorithm that creates each tag's dot colour by hashing the tag name. It's not perfect and it frequently makes some ugly colours, but I'll be updating it to choose more consistently pretty colours. I've since made some improvements, but a lot of the current tags are hard-coded to their original colours because I developed a bit of a soft spot for some of them.

The artwork and photography galleries use a fun system I created to show and hide the enlarged imagery using grid-auto-flow: dense and :target styling. I'm pretty pleased with it and I think it remains accessible, despite a small amount of teleportation.

The expanded version of the artwork is stored as a sibling element to the clickable gallery item, and tracked using a #fragment. Styling these with the :target selector allows me to show and hide elements based on the the URL fragment. I'm a big fan of usually multi-page things being single pages, like the microfeed, and this gallery is an extension of that design principle.

The gallery elements that reveal themselves are pre-designed to allow for full markup pages to be contained inside, like smaller galleries of additional images, subtitles or even full project write-ups. There are also 'disguised' outbound links, like the Stanley or Selectron project links on the CGI page, so I can feature artwork-heavy projects within the galleries.

Music

The music page is the most Javascript-heavy component on the entire site, and that's purely because I wanted to ensure visitors couldn't hit play on multiple audio sources at once and cause themselves an absolute headache.

I'm still not happy with the music page. It might just need more material to justify the layout, but right now it looks weird and spaced out and ugly. Inspiration will strike soon, I'm sure.

Dark Mode

I had a whole odyssey on the day after this new design was published because the site had never flickered during any kind of testing, but immediately started doing so when hosted. So, I wrote up some notes on how I implemented the dark mode and why that turned out to be happening.

Content Reset

On looking over the entire site, I found I have a tendency to over-explain myself, like I'm doing right now, and my favourite online presences just don't. I don't need to tell you what everything is because most design should be self-explanatory.

I think this comes from working in e-commerce, this urge to try and justify and over-explain everything. If you've ever sold something online and dealt with people shopping on the internet, imagine if your job was only designing websites for those people. It starts to leak out into the other things you do.

I decided I should tackle this by simplifying individual pages, reducing the word counts and ramble-on explanations, simplifying the structure and unpublishing a number of things in the interest of having a nimbler site. I don't think any of it will be missed because I don't miss it and I wrote it for myself.

and so on...

There's several things I'd still like to do. Garden notes are still ugly on small devices. The garden's sticky note wall is dynamically sized and has some edge case outcomes that I dislike. The music page is just badly designed and I hate it.

Otherwise, it's not an entirely terrible website.