The /source view of my site is a journey through the years: you scroll back through my career and fall through a different room for each era. 2021-now is a dark sportsbook control room, a wall of screens waking up. 2013-2021 is a pastel town at first light. 2003-2013 is an agency studio at blue hour. 1997-2004 is my actual bedroom studio - two desks, a CRT, a modem blinking mid-handshake. The same career, the same facts, wearing rooms instead of paragraphs.
A scene has to be somewhere
Each room is a Three.js scene, and the rule they all run on is simple: a 3D scene has to be an actual place, not a flat panel. A glowing card floating in the dark reads as a slide; a room reads as somewhere you could stand. So every era is built like a real set - materials that catch the light, a lamp that throws a true shadow, screens that emit their own glow, and a floor, a ceiling, and a little dust. That is where the craft lives: not in the effects, but in making the light and the materials behave, so a place feels lived-in rather than drawn.
A flat panel reads as a slide. A room reads as a place. That gap is the whole job.
The journey ends in 1997, the way that machine actually drew anything: the picture collapses to a single dot of phosphor, and the tube's electron beam traces my logo onto the glass in one stroke before it fades. It is the kind of flourish a client brief never has room for, which is exactly why a personal site earns it.
And none of it touches the pages that matter. The real CV stays a fast, plain, accessible page; every bit of the Three.js loads in its own chunk the main site never pulls. On a phone, or with JavaScript off, /source itself serves a fast static version - the full ride is a desktop indulgence, by choice. Over-build the toy, protect the tool. If there is a principle worth keeping, it is that one: render a place properly, or not at all - a flat hint of one is worse than none.

Top comments (0)