Refresh notes: agents, particles, and shipping the code
The 2024 portfoliowas a list of things I'd done. This one is more like a working sample of how I build right now, and right now is interesting, because the way I prototype changed in the last twelve months.
The short version: agentic engineering became actually useful, not just demo-useful. I treat models the way I used to treat a fast junior engineer who never sleeps and has no opinions about indentation. They can hold a whole repo in their head, propose three architectures before lunch, and write the boring plumbing that I'd otherwise procrastinate on. The trick is knowing what to delegate and what to keep: taste, naming, the seams between systems, the moment you decide what the product even is. That stays mine. Everything underneath gets faster.
One downstream effect: every case study on the home page is now a live React component, not a screenshot. The byte-to-pixel viewer, the silent film store, the SMS bot, the chess engine. They all run in the browser, in the page, with real interactions. A portfolio should ship the code, not a picture of the code. Agents made that economically possible; the byte-to-pixel demo alone would have been a week of yak-shaving in 2024.
And then there's the background. The thing the whole site is sitting on is Particle Life, a tiny attraction-and-repulsion sim where ~2,000 particles in a few dozen color types start at random and self-organize into structures that look biological. Each color has an asymmetric attraction matrix to every other color, the simulation runs in a Web Worker at 60Hz so your scrolling stays smooth, and the points are drawn as a single gl.drawArrays(POINTS) call on the GPU with a small motion-trail framebuffer ping-ponging behind it. Position buffers move from worker to main thread as transferable ArrayBuffers, zero copy: the buffer literally changes ownership across the postMessage boundary, and the main thread hands it back into a pool when the next frame arrives.
I had two reasons for putting it there. The honest one: a portfolio for someone who builds tools should feel alive, not static. A particle field that occasionally clusters into something that looks almost intentional is more honest than a stock hero image. The technical one: it's a real thing, on the real critical path of the page, that has to stay smooth on a phone while the URL bar is collapsing and the user is scrolling through ten case studies. Building it correctly forced me to solve the same problems I'd solve in any production app: main-thread budget, layout stability, GPU compositing, mobile viewport units. The decoration is the demo.
So: poke around. Drag the chess board. Edit some bytes in the JPEG and watch the pixels glitch. Watch the particles try to figure themselves out. If anything in here makes you want to build something together, my email is at the bottom.