Skip to main content
All projects

Project · Shipped

Library Walk: A Playable Micromobility Thesis

Date

July 2026

Source · PrivateOpen live site

Overview

A campus micromobility runner that makes the argument instead of illustrating it, built solo for Group 3 in SYN 100 (Seventh College, UC San Diego). You ride a scooter to class down the real route: the Blue Line drops you at Central Campus station, you take the protected green lane down Gilman Drive past live traffic, and the lane ends exactly where Library Walk and the weekday dismount ban begin, so from there the crowd is the infrastructure. Every ending cites its receipt, a crash logs why it happened (speeding through a crowd, rushing the clock, boxed in uphill, forced to the path edge) and surfaces the research finding that matches that cause, not a random one. Perfect world replays the identical route with the lane never ending, the counterfactual as a second playthrough. Custom Three.js / WebGL renderer with anatomically rigged figures and two-bone IK, Verlet ragdoll crashes over those same joints, one height function shared byte-for-byte between JavaScript and the vertex shader, and 61 OpenStreetMap building footprints projected onto the route. The synthesized score holds a fifth for as long as there is a protected lane under you and drops to a fourth the metre it ends. Class Race puts 25 to 40 phones in a lecture hall on one seed from a projected QR code, over a SQLite-backed Cloudflare Durable Object, and the leaderboard is anti-cheat by re-simulation: the client submits a seed and input trace, and the server recomputes the score itself with byte-exact shared physics on Neon Postgres. A 247-check headless smoke suite gates every release.

One project, 3 sites

Built for Cars, Banned for Bikes

SYN 100 · Seventh College, UC San Diego · Summer 2026

One project on campus micromobility as climate infrastructure, shipped as three separate sites. The research site makes the argument, the game makes you feel it, and the course site holds the coursework both were built for. They are meant to be read together.

Stack

Three.jsWebGLGame DevelopmentCloudflare WorkersDurable ObjectsNeonPWASYN 100