- Services
- Product DesignEngineering
- Tools
- TypeScriptReactCanvasLLM APIs
- Industries
- AICreative Coding
- Year
- 2026
- Status
- live
The web, doing things the web isn't supposed to do.
WebGL, shaders, physics and the kind of interaction that only exists because someone wrote it.
Custom GLSL materials, scroll-driven 3D, and simulations that run inside the same animation loop as everything else on the page. Sixty frames a second is a requirement, not an aspiration.
This site is the portfolio piece: a procedural aperture, a grain that sticks to the surface under rotation, and a physics floor under the footer.
- Skills
- WebGL and shader workScroll-driven 3DPhysics and simulationGenerative systems
- Deliverables
- Interaction prototypesPerformance profiling
- Industries we work in
- AICreative CodingDev ToolsMobileRealtime
- Projects shipped
- 00
- Team size
- 2 to 5, per project
Selected work across the studio
Nothing in the twelve lists creative development as its lead service yet. It shows up inside the others rather than on its own, so the work below is the studio’s rather than this page’s.
More about creative development
The work that lives between design and engineering and is usually dropped by both: WebGL, canvas, scroll choreography, physics, generative systems. The parts of an interface that have to be *felt* to be evaluated, which means they cannot be specified in a document and signed off.
No. Animation is the visible half. The other half is making it survive a mid-range phone, a slow connection and a visitor who has asked their operating system to stop things moving — which is where most of the engineering actually goes.
It is allowed to cost something, and the cost is budgeted rather than discovered. Every build here is checked against a JavaScript budget and a Lighthouse threshold, and a feature that blows it either gets cheaper or does not ship.
Three.js and hand-written GLSL, GSAP, Lenis, Matter.js — libraries chosen for being small and unopinionated. No Spline, no Rive, no drag-and-drop scene tool, because the output of those is a file we cannot debug at two in the morning.
Usually yes, as a self-contained component with its own budget and its own kill switch. That is the safer shape anyway: the interesting thing is isolated, measurable, and removable if it turns out not to earn its place.
On a link, on your own phone, early and repeatedly. We put a deploy in front of you long before it is finished, because the alternative is you approving a video of something that behaves differently in your hand.