Java · 2026
GPS Tracker Dashboard
A real-time dashboard that merges ten live GPS streams without a single piece of shared mutable state.
- When
- Mar 2026 to May 2026
- My role
- Solo coursework, Event Driven Computing
- Stack
- Java · Sodium FRP · Swing
- concurrent streams
- 10
- rolling window
- 5 min
- automated checks
- 19
Problem
A live tracking dashboard has to react to a continuous stream of location updates from many devices, and let the user change what they are watching while it runs, without the tangle of shared state that makes real-time interfaces fragile.
Approach
The app merges ten concurrent GPS streams from Microsoft's Geolife dataset. Instead of imperative handlers that mutate state, it describes relationships between streams with the Sodium FRP library, and the framework handles propagation.
Users set a latitude and longitude filter while it runs; the filter is a cell sampled with snapshot, so every event is checked against the current value. Distance travelled is tracked over a rolling five-minute window, a left-priority merge makes real events always win over clear signals, and altitude is converted from feet to metres on the way through.
Everything is covered by 19 automated checks, including the timing-sensitive eviction of old readings from the window.
Impact
A dashboard that updates cleanly as data arrives, where the bugs you would normally write in event-driven code are hard to express in the first place.
What I took from it
Most of reactive design is making invalid states unrepresentable. Once the dataflow graph was right, whole categories of bugs simply could not happen.