// lab
A pile of
half-finished ideas.
Tech demos, animation experiments, AI prototypes, things I'm poking at after the client work is done. Some live, some concept. Most will end up as components in client builds; the ones that don't make it become memories.
8 live · 0 wip · 0 on the list
-
// live demo Particle Storm
A few thousand particles, mouse attraction, GPU-friendly motion. Three.js with InstancedMesh + a custom update loop that respects prefers-reduced-motion.
- Three.js
- InstancedMesh
- requestAnimationFrame
Open the demo
-
// live demo Shader Bloom
A fullscreen GLSL fragment shader — time-driven plasma with mouse-reactive distortion. Pure ShaderMaterial inside a Three.js plane.
- Three.js
- GLSL
- ShaderMaterial
Open the demo
-
// live demo Spline Scene
An ambient 3D scene designed in Spline, embedded via the official spline-viewer web component. Lazy-loaded so the runtime JS only fetches when the canvas comes into view.
- Spline
- spline-viewer
- Web Component
Open the demo
-
// live demo Cursor Physics
A spring-driven custom cursor with magnetic snap to interactive elements and click ripple. Vanilla JS, no library.
- CSS transforms
- requestAnimationFrame
- Spring math
Open the demo
-
// live demo Scrollscape
A pinned Three.js icosahedron whose rotation, scale, camera dolly, and wireframe color all scrub off a single scrollY input. No GSAP, no ScrollTrigger.
- Three.js
- position: sticky
- scrollY-driven
- Vanilla JS
Open the demo
-
// live demo AI Pulse
Token-by-token streaming UI with a breathing pulse on the request indicator. Production-ready shell wired to a pre-recorded response so it runs without an API key in the browser.
- Vanilla JS
- ReadableStream
- Anthropic SDK (prod)
- Netlify Functions (prod)
Open the demo
-
// live demo Rive Room
A Rive state machine playing on canvas via the official @rive-app/canvas runtime, loaded from CDN at idle. Currently a community .riv — swap URL for custom.
- Rive
- @rive-app/canvas
- State machine
- CDN runtime
Open the demo
-
// live demo View Transitions
Tile grid that morphs into a detail panel using the native View Transitions API — shared-element animation, CSS-controlled easing, clean fallback for unsupported browsers.
- View Transitions API
- CSS animations
- Native browser
Open the demo
// nerd-sniping welcome
Got a demo idea?
If there's a library / API / effect you want to see riffed on, send it. I'll see if it makes the list.