berk.ai
← Work

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

01

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
02

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.
03

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
04

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.

05

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
06

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.

07

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.

08

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.

  1. 01

    User

    Pilots a virtual scooter from the Flight Simulator UI

  2. 02

    Flight Simulator

    React interface for controls, maps, Street View, and fleet switching

  3. 03

    Kotlin service

    Processes commands, maintains state, and records rides

  4. 04

    Powerline

    Production vehicle communication layer

  5. 05

    Virtual scooter

    Bird brain that streams GPS/telemetry and applies commands

  6. 06

    Telemetry

    Published vehicle state into Bird's platform

  7. 07

    Bird backend

    Applies Habitat rules, geofences, and operational logic

  8. 08

    Commands

    Speed limits and ops actions return through Powerline

  9. 09

    Virtual scooter

    Updates internal state exactly like hardware would

  10. 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

ReactTypeScriptKotlinDropwizardPowerlineWebSocketsMapboxGoogle Street ViewHabitatGPS simulationState managementTelemetryRecording & replayDistributed systemsDigital twins

Next case study

My story at Bird