I design substrates —which is one way to say I have a hard time building anything as a one-off. Give me a problem and I prefer to build the system underneath it: one architecture that fans out into a dozen surfaces instead of a dozen separate implementations. Lately I've been aiming that at things that don't usually get treated as systems at all — memory, personality, attention.
Currently a software engineer on the production engineering team at Eyeline Studios, building Houdini lighting tools. Before that I built rendering systems for a pixel-art game that don't exist anywhere else. I had to invent things like spherical sprite coverage (sprites of 3D models visible from all angles), dynamic body morphing (yes, in pixel art), full camera freedom (pixel art in rotatable 3D space) — and before that, a USD pipeline connecting Houdini to Unreal more scalable than anything documented at the time.
Looom — a unified authoring substrate, and the thing OmniUI grew into. One recursive node model projected through four render modes (display / wysiwyg / control panel / node) out to web, Qt, PDF, slides, and whatever else. The same record can be a card, a dropdown option, a graph node, or a particle in a swarm. My portfolio site is the proving ground — though it's currently held together with tape and not the live view of my site.
Augir — a game whose main verb is noticing. Characters aren't trait bundles, they're histories; one perception system produces every version of who you end up becoming. Same substrate instinct, pointed at personality and attention instead of panels and pixels.
A local, neurologically modelled AI stack — local models behind a single gateway, with memory built as an actual first-class subsystem instead of the usual bolted-on afterthought. Same idea one more time: the architecture is the whole point, and here it's pointed at how an agent remembers and gets better.
It's a bit of a compulsion at this point. Nodes and graphs are how I end up thinking about basically everything — how a person becomes who they are, how memory compounds, what an interface even is underneath. The domains keep changing. The approach doesn't: understand it deeply, build it better, leave it usable for whoever shows up next.

