Skip to main content
Lab
04 experiments

Tactile, interactive 3D.

Experiments in 3D objects you can manipulate — hand-tracked games, generative form, and editorial type. Each one is a small, shippable study in making the web feel physical.

3D Type preview2026

3D Type

Editorial type, extruded and alive — a word that tilts toward your cursor.

Build note +

Pure CSS 3D, no WebGL. The word is stacked into a dozen layers translated along Z to fake the extrusion, on a plate that eases toward the pointer with a per-frame lerp. Lightweight enough to ship anywhere — and it lives inside this portfolio, so the site is its own demo.

CSS 3DTypeScriptMotion
Stakk preview2025

Stakk

Isometric 3D Tetris you can play with your hands — webcam hand-tracking and a global leaderboard.

Build note +

Three.js for the isometric board, MediaPipe Tasks Vision to map webcam hand gestures to moves, and Supabase for real-time global rankings. The hard part was making gesture input feel as precise as a keyboard — I added gesture debouncing and a confidence threshold so accidental motions don't drop a piece.

Three.jsMediaPipeSupabaseViteTypeScript
Rubik 3D · CV Edition
2025

Rubik 3D · CV Edition

A browser Rubik's cube you rotate with your hands via webcam — or with the mouse.

Build note +

Three.js renders the cube; cubejs handles solve state; MediaPipe hand-tracking maps pinch-and-twist gestures to face rotations. Designed the interaction so the cube reads as a real physical object — momentum on release, snap-to-face on settle.

Three.jsMediaPipecubejsViteTypeScript
Deploy soonCode
steady-state preview2025

steady-state

A generative art study — calm, evolving form rendered in a warm, editorial palette.

Build note +

A single-file canvas sketch exploring slow, steady motion instead of the usual high-energy generative look. Restrained palette and typographic framing to match my editorial signature rather than the neon default.

CanvasGenerativeJavaScript
Deploy soonCode