The Shit of Theseus
The world's most instrumented shitbox
The Car
A $1500 2001 Ford Laser — the kind of car that was never exciting, even when it was new. Twenty-five years and several questionable owners later, it's held together by zip ties, optimism, and a surprisingly resilient 1.6L Zetec engine.
Why "Shit of Theseus"?
The Ship of Theseus is a thought experiment: if you replace every plank of a ship one at a time, is it still the same ship? Our car asks the same question, except instead of planks it's head gaskets, radiator hoses, and suspension bushings.
By the time we reach Melbourne, there's a real chance that more of the car will be replacement parts than original. At what point does it stop being the car we started with? We don't know. But we're going to find out.
The Telemetry
This isn't just a car.
It's a rolling data centre held together with hope, duct tape, and zip ties.
Everything you see on this site is captured and uploaded automatically from the car.
No manual uploads.
No post-processing.
No "we'll fix it later".
It's fully automated, open source, and running on a Raspberry Pi bolted under the passenger seat like it absolutely belongs there.
The code lives at github.com/albatrossflavour/shitbox
Because if you're going to over-engineer something, you may as well publish it.
The Hardware
The brains of the operation is a Raspberry Pi running a single Python daemon that orchestrates everything.
Connected to it:
MPU-6050 IMU
6-axis accelerometer and gyroscope at 100 Hz.
- ±4g accel
- ±500°/s gyro
- Continuous ring buffer
- Event detection state machine
It watches for:
- Hard braking
- Big cornering forces
- High G events
- Sustained rough road vibration
When it sees something interesting, it triggers a capture.
GPS via gpsd
1 Hz position, speed, altitude and satellite count.
- Below 3 km/h is floored to zero to eliminate GPS drift
- Tracks gpsd down, no fix, and full lock
Because if we're going to break down, we want coordinates.
BME680 Environment Sensor
Temperature, humidity, pressure and VOC gas resistance.
- Sampled at 1 Hz
- Lets us track engine bay heat soak and ambient misery
INA219 Power Monitor
Monitors bus voltage and current draw.
- Early warning if the car's electrical system starts having opinions
- Also tells us if the Pi is about to brown out mid-drama
USB Dashcam
720p at 30fps via ffmpeg.
- Continuous 10-second segments
- 50-second rolling buffer
Meaning the system always has the last 50 seconds of video before anything happens.
Which is very important for mechanical regret analysis.
Big Red Button
GPIO 17. Arcade style.
Press it and:
- The system grabs the pre-roll
- Records 30 seconds after
- Muxes into a single MP4
- Chirps via piezo to confirm
Debounced at 50ms because rally roads are not gentle.
OLED Dashboard
128×64 monochrome display.
Shows:
- GPS fix and speed
- Peak G-force and event count
- Sensor health
- Network state
- CPU temperature
Failed sensors invert white-on-black so we can spot problems without SSHing at 110 km/h.
The Software
Everything runs as a single systemd service:shitbox-telemetry
Because of course it does.
Three concurrent paths:
High-Rate Path — 100 Hz
IMU into ring buffer.
State machine watches for threshold crossings.
Captures pre-event IMU data and triggers video capture.
Low-Rate Path — 1 Hz
GPS, environment and power metrics written to SQLite in WAL mode.
Offline first.
Disk first.
Network second.
If we're in the middle of nowhere, nothing is lost.
Capture Path
ffmpeg writes rolling segments.
When triggered:
- Pre-event buffer grabbed
- 30 seconds post-event recorded
- Stitched using concat demuxer
- No re-encoding, just muxing
GPS and speed overlay burned in.
Result: a 60-second clip showing what happened before and after.
Timelapse
One frame per minute above 5 km/h.
Compiled into a daily timelapse.
GPS-stamped so we can replay the route.
Sync
When network appears:
- Prometheus remote_write with Snappy
- WireGuard tunnel
- rsync to NAS
- NFS mount into nginx
Designed to run fully offline and catch up later.
Because mobile signal in rural Australia is more of a suggestion than a service.
The Route
Port Douglas to Melbourne, May 1st – 9th 2026. Seven overnight stops across 4,000+ km of outback and alpine roads.
Steve
I'm here to raise money for cancer research.
I'm also here because pointing a $1,500 car at the horizon and seeing what happens feels like exactly the right kind of stupid.
By day I'm a program manager, which mostly means I deal with budgets, timelines and logistics. So for this rally I'm keeping an eye on the money, the planning and making sure we don't forget something important 800 kilometres back up the road.
I'm also in charge of the music and the beer. If the playlist's good and morale's high, I'm doing my job.
Tony bolts sensors to things and worries about graphs. I make sure we've got fuel, a plan, and something decent playing when the car starts making noises it shouldn't.
We're aiming to get from Port Douglas to Melbourne, raise as much as we can, and come back with a few stories worth telling.
If you'd like to support the organised half of this operation, and more importantly cancer research, donate.
Tony
I build systems for a living. Normally they sit in racks and behave themselves. This one is bolted to the dashboard of a 2001 Ford Laser and will almost certainly try to kill us.
I built the telemetry because:
- The car can't be trusted
- Data makes me feel less helpless
- If something breaks, it should at least leave a dataset
- I know nothing about cars and needed to contribute somehow
My dad died of cancer in 2011.
My mum is living with terminal cancer now.
At some point cancer stops being an abstract "1 in 2" and becomes hospital corridors, phone calls, and dates you don't forget.
This rally is something I can do. It's not a fix. It's not a cure. It's just action.
If you're entertained by a $1,500 car running better monitoring than some enterprise environments, and you'd like to help fund cancer research, donate.