Traffic
A commuter transit app I got carried away building at Georgia State, paired with two browser models on how local driving rules create jams and how to route when live maps are noisy.
Trigger a stop-and-go shockwave
Click any vehicle on the 1,600m corridor to tap its brakes, then switch between tight tailgating and cooperative headways.
Why I built TraffiQ
Getting to class across downtown Atlanta meant watching the Downtown Connector, surface streets, MARTA rail, and campus shuttles break down in completely different ways during the same rush hour. Trying to model when switching modes actually saved time pulled me into queueing theory and car-following math.
At Georgia State, that turned into our senior capstone, TraffiQ, a mobile app combining live road traffic, MARTA rail and bus feeds, and GSU’s Panther Express shuttles so students could compare real door-to-door times across driving, walking, and transit. I treated it as a personal project, ended up writing almost the entire codebase myself, and won Best in Class at the CS department showcase despite how scrappy parts of that code look to me now.
The highway simulator above strips away the transit feeds to isolate the core bottleneck physics: each driver only reacts to the gap immediately ahead, yet one tap of the brakes near capacity spawns a backward-moving shockwave long after the first car has accelerated away. Resetting reloads seed 42 with the exact same 36 cars so you can compare tight tailgating against cooperative headways on identical arrivals.
Routing when you don’t trust the map
The other question that stuck with me from building TraffiQ is what “fastest route” actually means when live congestion estimates are noisy. Shortest distance falls apart as soon as a central arterial clogs up, and pure expected-time routing ignores tail risk.
In this small directed graph from A to H, the Explore objective borrows from bandit algorithms: it gives a small score credit for testing an uncertain link (B to E), trading a slightly slower trip today for better travel-time data tomorrow.
Choosing a route under noisy ETAs
Minimizes expected travel minutes using current speed estimates, ignoring variance on congested connectors.