An Obsidian Sync Built Around the Merger I Already Had
VaultLink: self-hosted Obsidian sync. Edit in any editor, online or off, then come back to a converged vault. The app that justified reconcile-text.
Project articles and technical notes filed under #web.
VaultLink: self-hosted Obsidian sync. Edit in any editor, online or off, then come back to a converged vault. The app that justified reconcile-text.
A static jQuery site I built in high school to drill past exam questions. 659 questions, a decade of past papers, still online and still used.
Notes on perfect-postcode.co.uk. Every numeric feature is u16-quantised in a row-major array, so filter eval is two integer compares per row.
A single-file WebGPU drawing toy. You stroke a colour, agents follow it, and a 3×3 matrix per vibe gives each preset its personality.
reconcile-text merges Markdown notes from three editors I don't control, with no history. Why git, CRDTs, and diff-match-patch each failed me.
My BSc thesis library. The mobile GPU shaped the architecture: tile-based passes, deferred shading, shaders generated per scene and device.
A mobile multiplayer browser game where client and server linked the same TypeScript module. One source of truth, one fewer class of bug.
A visual goal tracker whose lasting idea was the sync model: an immutable trie so structural diffs are trivial and only deltas cross the wire.
Pick a colour, transform every nearby colour as a function of distance. A proof-of-concept grader I built to try one interaction idea.
My first browser game. Tiny, archived for honesty.
A Webpack script that turns a folder of photos into a static site with responsive image variants. Mostly here as an excuse to talk about walks.