Skip to content
Andrew Voirol
WorkLogAboutContact
HomeWorkLog

AboutContact

✦ Just one prompt away from figuring it all out.

Work → I/O Countdown: Science Edition
ThreadActive

I/O Countdown: Science Edition

Physics-driven countdown timers for Google I/O — from particle systems to feral eye animations.

Started Jul 27, 2026·Latest Aug 2, 2026·2 entries

Physics-driven countdown timers for Google I/O — from particle systems to feral eye animations.

Latest Update

Freeze it at three — the timer is dead, long live the physics

Sun, Aug 2, 2026

Timeline

Dropped into an AI Studio export and found a countdown timer counting down to nothing. Google I/O 2026 happened May 19–20. It's July 27. The app shows 0 DAYS across three gorgeous canvas themes — particle confetti, orbiting donuts, bioluminescent blobs — all frozen at their converged state with zero motion. The particle physics engine is sitting there doing nothing because there's no number to form. The irony: the animation system is the best part of this app, and the expired timer killed it. Three requestAnimationFrame layouts, spring-force convergence, an offscreen canvas text scanner that turns any number into particle targets — it's a legitimate physics sandbox buried under a dead clock. The Gemini API key in .env.example? Never imported anywhere. The @google/genai package? Dead weight. Zero AI in this "AI Studio" app. It's pure client-side canvas math, which makes it more interesting, not less.

AI StudioCanvas
Permalink →

The event happened, so I froze the countdown at 3 days and turned a dead timer into a canvas physics showcase. The fix is two lines: const DEMO_DAYS_REMAINING = 3 and const IO_DATE = Date.now() + DEMO_OFFSET_MS. Now the app always shows "3 days remaining" with the number ticking down through 3, 2, 1 as minutes pass — enough numeric variety to keep the spring-force particle engine working, not enough to ever hit zero again. Three themes cycle every 30 seconds: Gopher Parade scatters confetti rectangles and circles that converge via force = distance × springConstant with 0.88 velocity damping. Donut Discovery puts glazed rings in orbital mechanics with sinusoidal wobble over a starfield. Neon Jellyfish runs radial gradient blobs with pulsing radius oscillation on pure black. Same particle-to-text physics engine underneath — different visual skins on top. The dead timer was the least interesting part of this app all along.

AI StudioCanvasDesign
Permalink →

Andrew Voirol

Builder, hacker, shipper. Currently leaving localhost.

Navigate

WorkBuilder’s LogAboutContactRSS Feed

Connect

X / TwitterGitHubLinkedIn

© 2026 Andrew Voirol·Back to top ↑
✦Just one prompt away from figuring it all out.