You’re in a rush. Weaving through the maze of slowpokes on the sidewalk, you’re bypassing everyone—sluggish seniors, torpid tourists, short-legged schoolchildren—launching over them like an Olympic hurdler.
Today, there are no pedestrians.
There are only obstacles to be overcome.
And—look at you, Speedy Gonzalez—you arrive just in time.
You’re no Urban Olympian, however. You were just sprinting so you wouldn’t miss your bus.
But even though you followed the schedule and arrived early, you’re left to wait five… ten… fifteen minutes. In the blustery Baltimore breeze.
“Is my bus running late? Or did it come early,” you wonder.
How would you know, though? You’re not some sort of public transit oracle. Or at least you weren’t. Until now.
BALTIMORE TRANSIT 2.0
If you’ve ever taken a bus, you know just how fun it is to be stuck outside in the cold wondering when the next one will come. That’s why the state of Maryland spent $2.7 million dollars developing a real-time bus tracking system for Baltimore, so that riders would finally be able to overcome the city’s “notoriously unpredictable” bus service.
The state’s approach made sense for the most part:
Due to budget constraints, the Maryland Transportation Authority (MTA) couldn’t afford to deck out their buses with fancy new tech. So instead, they retrofitted their buses’ 25-year-old tracking system with an “interim solution” for real-time passenger information.
The buses rely on old GPS and radio signals to report location data. The system is primitive, and as such, the data can be somewhat unreliable.
Still, it’s an improvement.
While the MTA had provided commuters with a nominal bus tracker, it didn’t take the next step: unlike the real-time information generated by most other large transit systems, Baltimore’s data wasn’t made available in a developer-friendly format.
This means that Baltimore’s real-time tracking data isn’t compatible with the most popular commuter apps, like Google Maps or Transit App (our pride and joy).
With Baltimore’s data bungled up in a format no-one else can use, consumers are forced to use the MTA’s proprietary web interface to access the data.
We’re not gonna mince words. It ain’t pretty.
The project—delayed for years, and with millions of dollars behind it—is treating its users to an interface that looks like it was ripped from a 1996 GeoCities template.
In the time it would take you to wrangle out real-time bus predictions from their website, it’s quite possible that your bus would have already whizzed by!
When reporters asked the MTA why they opted to only show the info on their mobile webpage instead of developing an app (or better yet, formatting the data for third parties like us), the MTA responded that it would have been too expensive.
“We know in many cases, the information needed to create an application is made public so private firms can attempt to develop an application at their own expense. However, it would cost approximately $600,000 more to be able to format the data from our 25-yr-old CAD/AVL system into GTFS for use by outside developers.”
The engineers at the MTA did a great job bringing real-time transit data to their riders—despite their ancient system. But just because they spin their data out in a weird way shouldn’t require an additional six hundred thousand dollars of taxpayer’s money to get it into a format that third party developers can use. It’s not like the data is inscribed on stone tablets.
When we heard about the real-time project from our Baltimore users, we reached out to the MTA to see if there was a way we could access the real-time data. We thought we could’ve lent them a hand somehow.
But we didn’t hear back. So we waited.
A few days after the MTA’s torturous tracker was released, a group of civic hackers lead by Chris Whong decided to take matters into their own hands.
Without any assistance from the MTA, Whong figured out how to extract real-time bus positions, and began converting the data into a documented, standards-based API. It was proof that Baltimore’s wonky data could be used after all.
We were thrilled: Baltimore’s real-time data was actually salvageable! Which meant that we could give Baltimore the real-time bus tracking app it had waited way too long to get.
With Chris’ help, we were able to pull the real-time vehicle positions from the MTA system ourselves. Using that data, we generated approximate bus arrival times with our in-house prediction engine. We then compared those predictions with the MTA’s tracker to verify our accuracy.
And—with just an afternoon of work—Baltimore finally has the real-time tracking app it deserves. $600,000 under budget 😉
Here’s what it looks like:
When MTA buses are reporting live location data, countdowns appear with a wave symbol, and bus locations “pulse” on the map. When they’re not reporting, these symbols disappear and we revert to displaying scheduled bus times.
All this information is available as soon as you open the app, which is pretty handy, since the only other option is to plunge into the hairy depths of the MTA webpage.
The MTA promises that in the next 100 days they’re going to sort out the tracker’s quirks, so that buses will be reporting live data more frequently. Since the program’s still in beta, not all buses will be reporting their real-time locations at first. However, you can track the MTA’s progress by how frequently wave symbols are appearing.
Public transit is the backbone of Baltimore. More than half of the city’s residents don’t have access to a car, so providing them with reliable transit information should be a top priority.
This little hack of ours will immediately benefit the 20,000+ Baltimoreans already using Transit App every month. And hopefully, with real-time tracking, we’ll be able to help even more riders.
This isn’t the first time our team has found a way to bypass bureaucracy to bring citizens better tools for urban mobility. Whether it’s mapping the insane transit system in Nairobi, integrating the Hyperloop, or reverse engineering a better bus tracker for Baltimore, we are on a mission to make the daily commute less painful for everyone. One city at a time.