Bird · Hackathon
Bird Flight Simulator — a virtual fleet for real platform testing
A hackathon project that became a production engineering tool — virtual Bird scooters connected through Powerline, piloted from a game-like simulator so teams could test the real mobility platform without physical hardware.
Role: Hackathon lead / Simulator UI
- 🏆 Bird Hackathon Winner
- 🛴 Virtual fleet for real Powerline
- 🌍 Ride any Bird city from a desk
- Digital twins
- Connected vehicles
- Platform testing
Origin
The story
One of my favorite engineering challenges at Bird had nothing to do with riders. It had everything to do with testing.
Bird's operational platform continuously interacts with hundreds of thousands of connected vehicles around the world. Scooters stream telemetry. Operations teams configure geofences. Powerline distributes commands. Scooters react in real time.
But this creates a difficult engineering problem: how do you test an entire connected mobility platform without physically standing next to a scooter?
The answer became one of our hackathon projects. We built an entire virtual fleet. The project won Bird's internal hackathon and eventually became an extremely useful engineering tool.
Journey
A scooter without a scooter
The problem with physical hardware
Imagine an engineer changes the configuration for a slow-speed zone. How can they verify that the scooter detects the zone, the backend recognizes the location, Powerline sends the speed limit, the scooter applies the command, and telemetry reports the updated state?
Doing this with physical scooters is slow, expensive, and difficult to automate. We wanted something much better.
- Scooter detects the zone
- Backend recognizes the location
- Powerline sends the speed limit
- Scooter applies the command
- Telemetry reports the updated state
Simulate the scooter, not the backend
Instead of simulating the backend, we simulated the scooter. We launched virtual Bird brains that connected directly into Powerline exactly like physical scooters.
Each virtual scooter established a Powerline connection, streamed GPS coordinates, published telemetry, received commands, maintained internal state, and behaved like a real scooter.
The backend couldn't tell the difference. As far as the platform was concerned, they were real vehicles.
“The backend couldn't tell the difference.”
Building the Flight Simulator
Once we had virtual scooters, another question appeared: how do you actually ride them? That became the Flight Simulator.
Instead of walking outside and physically riding a scooter, engineers could control virtual scooters through a game-like interface. The experience felt remarkably similar to piloting a remote drone — except the drone existed only inside Bird's infrastructure.
- Throttle and steering
- Battery status and temperature sensors
- Telemetry and state visualization
- Map view and Street View
- Navigation controls
Deep Powerline integration
The simulator wasn't replaying mock data. Every interaction flowed through Bird's production communication layer.
Every message traveled exactly the same path that a real scooter would use. That meant the simulator automatically inherited Habitat configuration, geofences, slow-speed zones, no-ride zones, operational commands, firmware behavior, and backend rules.
If production behavior changed, the simulator reflected it automatically.
Riding anywhere in the world
One of my favorite capabilities was that the simulator could operate in any city where Bird had deployed scooters.
Engineers could instantly test Los Angeles, Santa Monica, Paris, Berlin, Austin, or any other supported city. Maps and Street View provided real-world context while the virtual scooter moved through production geofences exactly as a physical scooter would.
- Los Angeles
- Santa Monica
- Paris
- Berlin
- Austin
Recording reality
The simulator wasn't only useful for manual testing. Every ride could be recorded, and that recording became a deterministic test case.
Imagine discovering a bug where scooters slowed down too early entering a slow-speed zone. Instead of physically repeating the ride over and over, engineers could update Habitat configuration, replay the ride, observe behavior, adjust configuration, and replay again.
The same ride could be executed repeatedly until the desired behavior was achieved. The simulator became both a debugging tool and an automated testing environment.
One interface, many scooters
The UI wasn't limited to one vehicle. I designed the simulator so engineers could instantly switch between different virtual scooters.
That made it possible to test multiple cities, compare behaviors, monitor fleets, inspect telemetry, and validate different configurations — all from a single interface.
In effect, engineers could pilot an entire virtual fleet from one screen.
Looking back
Looking back today, I realize we weren't really building a simulator. We were building a digital twin.
Long before "digital twins" became a widely used engineering term, we had created virtual vehicles that behaved like real scooters inside a production mobility platform.
That allowed engineers to safely test complex operational scenarios without requiring physical hardware. The project dramatically reduced the friction involved in validating changes across one of the most complicated parts of Bird's infrastructure.
“Looking back today, I realize we weren't really building a simulator. We were building a digital twin.”
Demo
Watch the Original Demo
This presentation was recorded during Bird's internal hackathon.
It shows the Flight Simulator in action — piloting virtual scooters through real cities, streaming telemetry over Powerline, and exercising Bird's production platform without physical hardware.
Context
The problem and my role
Problem
Bird's operational platform continuously interacts with hundreds of thousands of connected vehicles. Verifying geofences, Powerline commands, telemetry, and Habitat configuration with physical scooters was slow, expensive, and hard to automate.
Role
Led development of the Flight Simulator experience — the interactive UI, vehicle controls, telemetry visualization, recording and replay, mapping, Street View synchronization, fleet switching, and integration with Bird's internal systems — backed by a Kotlin microservice that talked to Powerline and the production backend.
Constraints
- Physical scooters were too slow, expensive, and awkward for automated platform testing
- The backend had to treat virtual vehicles as real scooters — no mock backend shortcuts
- Simulation needed to inherit Habitat configuration, geofences, commands, and firmware behavior automatically
- Engineers needed to ride, record, and replay scenarios across any Bird city
- A highly stateful React client had to stay consistent with stateless services, stateful virtual scooters, and production backends
System
Architecture
System map
From simulator controls to production scooter paths
Every interaction flowed through Bird's real communication layer — the backend couldn't tell virtual scooters apart from physical ones.
- 01
User
Pilots a virtual scooter from the Flight Simulator UI
- 02
Flight Simulator
React interface for controls, maps, Street View, and fleet switching
- 03
Kotlin service
Processes commands, maintains state, and records rides
- 04
Powerline
Production vehicle communication layer
- 05
Virtual scooter
Bird brain that streams GPS/telemetry and applies commands
- 06
Telemetry
Published vehicle state into Bird's platform
- 07
Bird backend
Applies Habitat rules, geofences, and operational logic
- 08
Commands
Speed limits and ops actions return through Powerline
- 09
Virtual scooter
Updates internal state exactly like hardware would
- 10
UI
Reflects live telemetry, sensors, and map position
Execution
What I built
- Built virtual Bird brains that connected to Powerline exactly like physical scooters — GPS, telemetry, commands, and internal state included.
- Designed a game-like Flight Simulator UI with throttle, steering, sensors, telemetry, maps, Street View, and navigation controls.
- Implemented a Kotlin microservice to process simulator commands, maintain scooter state, communicate with Powerline, record rides, and sync with Bird's backend.
- Routed every interaction through production communication paths so Habitat, geofences, zones, commands, and firmware behavior were inherited automatically.
- Enabled operation in any Bird city with map and Street View context over real production geofences.
- Added ride recording and deterministic replay for debugging and automated regression testing.
- Supported instant switching across a virtual fleet from one interface.
- Synchronized a highly stateful React application with stateless services, stateful virtual scooters, and production backend systems.
Tradeoffs
Technical decisions
Simulate the vehicle, not the platform
- Decision
- Connect virtual Bird brains to Powerline as if they were physical scooters, instead of mocking the backend.
- Why
- Testing Habitat, geofences, commands, and firmware behavior only matters if the messages travel the real production path.
- Tradeoff
- Virtual vehicles inherit production complexity and operational constraints, but that fidelity is exactly what makes the tests trustworthy.
A game-like cockpit over distributed systems
- Decision
- Build an interactive React Flight Simulator with throttle, steering, sensors, maps, and Street View on top of a Kotlin Powerline service.
- Why
- Engineers needed an intuitive way to ride virtual scooters without standing next to hardware, while still exercising the real stack.
- Tradeoff
- A highly stateful UI must stay synchronized with backend and scooter state without becoming brittle or laggy.
Record once, replay forever
- Decision
- Capture rides as deterministic recordings that can be replayed after Habitat or configuration changes.
- Why
- Physical reproduction of bugs is slow; recorded rides turn edge cases into repeatable debugging and automation assets.
- Tradeoff
- Recordings need enough fidelity to remain meaningful as the platform evolves.
One UI for an entire virtual fleet
- Decision
- Design fleet switching so engineers can jump between virtual scooters, cities, and configurations from a single interface.
- Why
- Comparing behaviors across markets and vehicles is much faster when the cockpit can change targets instantly.
- Tradeoff
- Fleet-wide context increases UI and state-management complexity, but multiplies testing throughput.
Value
Product impact
User impact
Gave engineers a remote cockpit to ride virtual scooters, inspect telemetry, and validate geofence and Habitat behavior across any Bird city without physical hardware.
Business impact
Reduced the cost and friction of testing one of Bird's most complex infrastructure surfaces, turning a hackathon idea into a durable digital-twin testing capability.
Results
Outcomes
- Won Bird's internal hackathon and evolved into a practical engineering tool used beyond the event.
- Let engineers validate geofences, Habitat changes, Powerline commands, and telemetry without physical scooters.
- Turned recorded rides into repeatable test cases for configuration debugging and automated validation.
- Created an early digital twin of Bird's vehicle fleet inside the real production platform.
Notes
Notes from the system
A digital twin before the term stuck
Virtual scooters weren't demo fixtures — they were Bird brains on Powerline. The platform treated them as real vehicles, so Habitat, geofences, and commands applied automatically.
Stateful UI, live production loop
The interesting architecture problem was keeping a responsive React cockpit consistent with stateless services, stateful virtual scooters, and Bird's production backends in a continuous bidirectional feedback loop.
Reflection
Lessons learned
- “The highest-fidelity test of a connected platform is often a digital twin of the device, not a mock of the backend.”
- “When every message travels the production path, configuration changes and platform bugs become visible without leaving your desk.”
Tools
Stack
Next case study
My story at Bird →