Spotlight fill
A large radial gradient, centred on the pointer, washes the card in accent.
Lab — design ideas, implemented
Interface experiments from this site and around the web, rebuilt from scratch in vanilla JavaScript and CSS. Everything here is live — hover, drag and poke at it.
A soft spotlight follows the pointer across each card while its 1px border lights up nearest the cursor — the effect behind this site’s project cards.
A large radial gradient, centred on the pointer, washes the card in accent.
The same gradient, masked down to a 1px ring so only the border glows.
pointermove writes --mx and --my. CSS does everything else.
exclude.Two versions of one composition are stacked; the top one is clipped to the pointer’s x position, so a single vertical edge follows you across. It powers the footer wordmark on every page.
Details make it work.
clip-path: inset() on the top layer — cheaper than resizing it, and the text never reflows.A split-flap display: every digit is four halves, and one leaf turns on its hinge to uncover the next number. Your local time, flipping every second.
144 analog clocks, two hands each, choreographed into digits. Hands always turn forward to their next pose, so the whole wall ripples like a kinetic sculpture.
prev + ((next − prev) mod 360)), so no hand ever spins back.Something that follows the cursor, four ways: a classic dot that swells to show what a click will do, an echo of fading circles, a glowing comet tail, or ripples that bloom as you move.
A name written stroke by stroke at a steady pen speed, in your choice of two single-stroke cursives — loose and handwritten, or clean and digital — with an optional ink nib on the tip.
pathLength="1" lets one dash offset draw any stroke from 0 to 1.getPointAtLength() places the nib, and strokes that begin where the last one ended flow on without a pen-lift pause.Drag a lens of glass across the page. It magnifies what’s beneath, bends it at the rim and splits the colour at the edge, like light through a real lens.
Look closer
See every detail.
Refraction, magnification and a chromatic edge, all from a single SVG filter.
feDisplacementMap uses it to bend the copy like curved glass.My portrait as thousands of coloured particles. They scatter away from the cursor and settle back into place, and can re-form as the monogram or burst apart entirely.
getImageData; every opaque sample becomes a particle that remembers its home and colour.Text that decodes itself. Every character churns through random glyphs and locks in at its own moment, so each phrase resolves like an intercepted signal.
Software Architect
Hundreds of small needles, all turning to face the cursor like iron filings around a magnet. Click and a ripple rolls outward through the field.
Path2D batches, keeping it to a handful of draw calls per frame.Write a fluent query-builder chain and watch it run. It compiles to parameterised SQL, then each clause plays out on the table: rows join, fail the filter, sort and get trimmed.
[]
? placeholders with separate bindings, just like the real Query Builder.The engine behind a command palette, opened up. Type a few letters in any order-preserving way and see how every result is scored, and exactly why the top one wins.
Scroll to push one order through an ERP, from purchase to a reconciled ledger. The panel stays put while every number, stage and event advances with your scroll.
Stage 1 of 5 · Purchase Purchase order raised
Stage 2 of 5 · Inventory Received and stored
Stage 3 of 5 · Production Pressed into panels
Stage 4 of 5 · Sales Dispatched and invoiced
Stage 5 of 5 · Finance Paid and reconciled
position: sticky panel; scroll progress through the track becomes one number from 0 to 1.Cards that lean towards the pointer like physical objects. Their contents float at different depths, a highlight sweeps across the surface and the shadow shifts the other way.
transform-style: preserve-3d; the emblem, text and tags sit at different translateZ depths, so they shift against each other as it tilts.Shapes that melt into one another like liquid. Drift through a field of blobs, or open a menu whose buttons ooze out of it. Switch the filter off to see the plain circles underneath.
feColorMatrix boosts alpha contrast so the soft edges snap back into a crisp, liquid outline.A map of my work you can explore like a design tool: drag to pan, zoom in on any corner and jump around with the minimap. Career and skills are drawn straight from my résumé data.
translate and scale; zooming solves for the offset that keeps the point under your cursor still.