A running log of what I'm actually building, messy progress updates, half-finished experiments, and the odd rabbit hole I fell down along the way. Less polished portfolio, more working notes.

Following on from the earlier shader experiments, this one’s a proper build rather than a small effect: a full-screen, drag-to-pan image gallery that loops forever in every direction.

I wanted to learn the technique behind a lot of shader-driven sites, where the cursor pushes an image around and the distortion eases back afterwards. I built it with OGL, one small step at a time. This is what I ended up with and what tripped me up.

This update is less about new features on the surface and more about the plumbing underneath finally catching up with itself: two real ownership bugs, a full rebuild of how analysis actually runs, merging two repos into one, and the first proper spec for the next big feature.

This one covers a fair bit more ground than usual, from building out collections and the library UI properly, through to a proper deep dive into whether the key detection was actually any good, which it turned out wasn't as much as I'd hoped.

Following on from the first post, this one covers the two chunks of work since: getting the upload flow and browsing UI properly built out, then closing the gap that left behind, actually analysing the samples rather than just displaying empty columns for BPM, key, and length.
I've wanted to properly learn shaders for a while, mostly out of frustration with how much of the interesting visual stuff on the web (the distortion, the little reactive touches you see on portfolio sites) was a black box to me

If you produce music, you'll know the problem already: thousands of samples scattered across drives, half-remembered filenames, and no good way to find "that one weird vocal chop from three years ago" without scrolling through folders for twenty minutes.

So, this is the first post on here, and I still haven't fully decided what this site is going to become. Right now it's mostly an excuse to actually document the stuff I build outside of client work, rather than let it quietly rot in a private GitHub repo that nobody, including future me, ever looks at again.