Portfolio Site

Every easter egg, micro-interaction and quiet engineering decision hiding in this site

Personal · Designer & Developer · 2026

This site is a portfolio, but it is also the thing I have iterated on the most. Almost every surface has a second state, a reaction, or a decision that only shows up when you go looking. It seemed more honest to build the argument than to write it down. Below is the complete map — first the things you can find by poking at the page, then the work underneath that you are supposed to never notice.

Two modes, one system Calm and Happy are not a colour swap with a class name. They are two complete visual systems sharing one set of semantic tokens. Every colour in the site resolves through a variable — --bg-card, --text-primary, --color-accent, --border-subtle and around fifty more. Nothing in the stylesheet names a colour directly.

Switching mode redefines that palette on, and the entire interface follows: cards, borders, shadows, tag pills, the reading progress bar, the sticky header's blur backdrop. That indirection is what makes the second personality affordable.

Happy mode adds a six-colour rotating palette for tag pills, a retro offset shadow under every card, and a coral accent that carries through hover states, focus rings and the scroll indicator — all by redefining tokens, not by writing a parallel stylesheet. The mode is remembered in localStorage, so the site opens the way you left it.

That is the only thing this site stores about you, and it never leaves your browser. The switch is rate-limited. Each change re-clones a two-hundred-element SVG garden, recalculates canvas textures and fires a celebration. Hammering the button used to stack all of that. Now a 400ms cooldown — the length of the colour transition — makes the switch feel like a deliberate event instead of something you can break.

Go find them The garden The garden is one inline SVG, but it behaves like a place. Nine plants and five creatures, each with growth, sway and retreat animations at slightly different durations so nothing falls into visible lockstep. Leaving Happy mode does not delete it. Stems retract into the dunes, leaves furl, blooms close — the entrance animation played backwards, so the garden withdraws rather than blinking out.

Fading on scroll. As you scroll, the garden loses opacity and gains sepia, settling at a quarter opacity and fully desaturated. It is decoration, and decoration should recede when you are reading.

The sepia is applied as a compositor filter on a promoted layer, so the effect costs about a tenth of a millisecond per scroll frame — I measured it before deciding it was worth keeping, and again when I suspected it was not. Halftone photography The About Me photos are not images with a filter over them. Each is sampled and redrawn.

Back to all work

Skip to content

Crafting complex digital products and systems

What I do
Product Strategy Project Management UX/UI Architecture AI Engineering Enterprise UX SaaS E-commerce
/ / /
Email copied to clipboard!