PlaygroundInteractive webPersonal brandBuilt in 3 days

Dragon

A plush dragon that watches your cursor and changes costume for each stage of my process. Built in three days to make one claim felt rather than read.

Dragon · live site1440 × 900 @2x00:00 / 00:00
The problem
“I design and I build it in code” is a sentence every hiring manager reads a hundred times a week. Stated, it convinces nobody.
The goal
Make the claim something a visitor feels in five seconds, keep them for thirty, then hand them to the work, without splitting my presence in search in two.
What I did
The character and his four costumes, the motion, the engine that turns a video into a head that follows you, a mini-game, the loading sequence and the search setup.
What it gave
Live in three days. A head that tracks the pointer with no 3D rig at all, 3D props cut from 29 MB to 2.6 MB, and one search identity shared with this site.
RoleEverythingTimeline3 days, Aug 2026Built withHTML · CSS · JS · three.js
01 The trick

The head is a video, and the cursor is the playhead.

There is no rig. The dragon's head is a rendered clip of him turning from one side to the other, and the pointer's horizontal position sets the clip's playhead. Move left, he looks left. The vertical axis only lets his body breathe with you, so he never chases the cursor like a toy on a string.

The scrub is a known trick. What makes it hold up is the detail around it. Every frame of the clip is encoded as a key frame, because without that the head turns in visible steps; it triples the file, about 4.5 MB per costume, and it is worth it. The renderer blinked mid-turn despite the prompt, so blinks were found by counting dark pixels in the eye band and cut out of the scrub range: a blink parked under a resting cursor reads as a bug.

02 The toy

Four costumes, a poke, and a game.

A rail switches four modes, one for each stage of how I work: Research, Design, Code, Ship. Each changes his hoodie, the palette, the headline and the objects around him, and the change is gentle on purpose: colours drift over a second and the objects are re-cast rather than swapped, because a total swap reads as a costume change in a shop. Poke his face and he answers in character: “I read all forty transcripts. You skimmed two.”

Research mode: the dragon in glasses and a purple hoodie on navy, with the line Evidence first.
01 Research. Evidence first.
Design mode: the dragon in a pink hoodie on magenta with colour swatches floating around him.
02 Design. Make it obvious.
Code mode: the dragon in headphones and a mint hoodie on dark green.
03 Code. Build it myself.
Ship mode: the dragon in an orange hoodie on burnt orange.
04 Ship. Ship it for real.
Dragon · Playground panel1440 × 900 @2x00:00 / 00:00
The game. Thirty seconds of catching embers, with a best score kept on your device.

He hatches from an egg that fills with the real bytes loaded, because a half-loaded dragon does not look slow, he looks broken. Left alone for four seconds he looks around by himself. Keys 1 to 4 switch modes, and there is one more code for anyone who grew up with a console.

03 Decisions

What keeps a toy from being a liability.

D1

No CDN, no third party.

three.js is served from my own server under a strict content security policy, and the deploy script refuses to publish if a CDN link or a missing file creeps back in.

CostUpdates to the library are mine to make by hand.

D2

3D props compressed eleven times.

29 MB of models down to 2.6 MB with quantisation alone, so nothing has to ship a decoder to unpack them.

CostSlightly softer geometry, invisible at the size they are drawn.

D3

One person in search, not two.

The page carries the same structured identity as this site, so a search engine reads both addresses as one person rather than two people who share a name.

CostThe identity now has to change in two repositories on the same day, or neither.

04 What it gave

A three-day build with a job to do.

Shipped

3 daysFrom the first render to live
4Costumes, one per stage of the process
11×Smaller 3D props, 29 MB to 2.6 MB
0Third-party requests
05 Play

Move your mouse slowly.

Next case

Tendd