00
Compiling shaders
Available for contract work

Rendered live. Not recorded.

That form is a raymarched distance field. A mesh has to be re-tessellated to become another shape. A distance field just interpolates — so this is one equation, not five models. GLSL in raw WebGL2, solved per pixel, every frame, on your machine right now. One equation, solved per pixel, every frame. Raw WebGL2 — no Three.js, no video.

MVS SolvesWebGL · GLSL · GSAP · React
RaymarchingSigned distance fieldsCustom GLSLFramebuffersCurl noisePost-processingGSAPScrollTriggerLenisThree.jsReact / NextTypeScriptShader materialsCore Web Vitals

Most front-end devs stop at the CSS transition.

Four running pieces. Open any of them — nothing here is a recording.

Most web motion is a demo that survives exactly one machine.

01

The maths, not the library call

If an off-the-shelf plugin can do it, you do not need me — you need twenty minutes and the docs. I get hired for the brief that has no plugin: the shader, the simulation, the scroll system that has to feel physically attached to the page.

Evidence — the hero above ships no 3D library at all.

02

It degrades or it does not ship

Effects that only work on the machine they were built on are a liability you inherit at launch. Every piece here has a defined failure path: no WebGL2, no GPU headroom, or reduced-motion enabled, and the layout still reads perfectly.

Evidence — kill WebGL and every word on this site survives.

03

Measured, never hoped for

"It runs fine on my laptop" is not a performance strategy. These pages measure their own frame time and move the render resolution to hold the budget on hardware neither of us has tested.

Evidence — press P for live frame rate and render scale.

Motion is the easiest thing on a site to do badly and the hardest to do durably. I do the durable kind.

The work that gets subcontracted out because nobody in-house will take it.

A

WebGL & shader work

Raymarched scenes, custom GLSL, scroll-linked cameras, fluid and particle systems. Written to degrade to plain DOM rather than break on a mid-range Android.

B

Scroll & motion systems

GSAP ScrollTrigger pinning, stacking and scrubbing, SplitText reveals, Lenis smooth scroll — built as one timeline sharing one clock, not five libraries fighting each other.

C

Marketing-site front-end

React, Next.js and Tailwind, or hand-coded static. Core Web Vitals, semantic markup, structured data, and complete HTML from the server every time.

D

Automation & AI integration

n8n and Make pipelines, LLM agent workflows, scrape-to-CRM plumbing. Built to be handed over and run by someone who is not me.

Short answers to the things worth asking before a first call.

Are you available?
Yes — contract and white-label, part-time or full-time. Based in Brea, California, Pacific time, and used to working across European hours.
What do you actually do?
The motion and WebGL layer of the front-end, plus the marketing-site build around it. I take the brief a studio can't staff internally — the shader hero, the scroll sequence, the thing the pitch deck promised.
Do you work through agencies?
Often. White-label is fine, your name on the work is fine, and I'll stay off the client call if that's how you run things.
What do you need to start?
The design file or a reference, the deadline, and who owns the final call on visual decisions. That's genuinely it for a scoped piece of motion work.
What don't you do?
Page builders, template reskins, and anything where "make it pop" is the whole brief. I'm also not the right person for backend-heavy platform work.
How is this site built?
Hand-coded static HTML. Raw WebGL2 for the sculpture above — no Three.js on this page. Every study is a single self-contained file with no build step, deployed on Cloudflare Pages.

Anyone can install a library. I write the maths under it.

Got a brief your team would rather not staff?