Down the Rabbit Hole hero — image coming soon
SELECTED WORK

Down the Rabbit Hole

A Wikipedia Rabbit Hole You Can Actually See

CLIENT Self-initiated
YEAR 2024 — ongoing
ROLE Creative Technologist
Full-Stack Creative Coding
TOOLS p5.js, Wikipedia API
toxi.physics2d, MediaPipe
OVERVIEW

Have you ever fallen into a Wikipedia rabbit hole at 3am? That specific, slightly unhinged feeling of discovery is what I wanted to build. Down the Rabbit Hole is an interactive web app that turns a Wikipedia search into a living, explorable graph. Type in whatever's on your mind, and the Wikipedia API pulls in related articles as connected nodes on screen — click one, and the graph rebuilds around it.

APPROACH

I wanted to push back on the feed — an interface where every branch of the graph is a choice you made, not one made for you. It's a real force-directed graph, not a static layout: nodes are VerletParticle2D objects connected by invisible springs, so the graph settles into an organic, evenly-distributed shape instead of a rigid grid.

It's a real, live, publicly-deployed piece — not a screenshot of one. I've already shipped two versions: v1 got the core pipeline working (API calls, graph physics, node interaction), and v2 was a visual pass — bigger type, better spacing, an image panel showing the current article's thumbnail.

visit the live app → (opens in a new tab)

Graph screenshot — coming soon

I'm not done with this one. Two things are in motion right now: a visual redesign in Pencil — the graph logic underneath stays exactly as-is, this is a skin, not a rebuild — and v3: hand-gesture navigation, replacing the mouse click with a pinch. Point at a node, pinch to open it, built with MediaPipe Hands tracking a webcam feed, mapped onto the same selectNode() logic that already powers mouse clicks.

It's a small change on paper, but it changes what the piece is: less "web app," more "instrument you gesture at."

v3 gesture nav preview — coming soon
v1 → v3 SHIPPED & ITERATING
Live DEPLOYED APP
MediaPipe HAND-GESTURE NAV (V3)