Home

Made of its source

01The Field

One full-screen canvas that never unloads. Every particle is a character taken from this site's own source files at build time. A compute shader written in TSL moves them on the GPU with three.js's WebGPU renderer, falling back to WebGL2. Headings, the loading counter's ring, Tim's portrait and the envelope that carries a sent message are all shapes the glyphs spring into: text is drawn into a canvas with the page's real font, images are sampled by brightness.

02The Lens

Every section renders twice: the page you read, and an inert copy styled as its blueprint, with outlines, live element sizes and the component's real source behind it. The copy is clipped to a circle that follows the cursor and the original is masked out of it, so they always line up. Hold space and the circle opens to the whole screen.

03Never still

When nobody touches anything, the page keeps living: a third of the glyphs keep re-typing, shapes breathe on a slow wave, a light reads across them every seven seconds, an invisible visitor stirs the dust, and three simulated readers wander the page.

04The score

The sound is synthesised live with Web Audio, no files: a pad of detuned triangles through a lowpass, one chord per section, scroll speed opening the filter, the held Lens sinking it an octave into a darker room, and glass pings on a pentatonic scale. Off until you turn it on.

05Live

The ticker in the bottom-left dock is real: Bordeaux time, what Tim is listening to (Discord presence through Lanyard) and his latest public GitHub activity.

06Built with

  • Nuxt 4, TypeScript, static generation
  • three.js WebGPURenderer + TSL compute
  • GSAP ScrollTrigger + Lenis
  • motion-v springs
  • Web Audio
  • Archivo, Omnibus-Type
  • Departure Mono, Helena Zhang
  • Vitest + puppeteer checks