We recently attended the NY Open Transportation Meetup and got to see a great presentation by Mike Frumin with MTA’s BusTime program. In my earlier post, I ranted about how tough it is to consume GTFS-realtime feeds as a novice programmer. BusTime has done it right, making the data available in so many possible ways from so many possible technologies. Best of all, the platform was built using open-source technologies and COTS (Commercial, Off the Shelf) equipment, so it wasn’t some giant contract that would have taken a decade to implement and cost taxpayers too much. BusTime isn’t simply a case of opening data, it’s the city’s bottom-up effort to produce that data and make it open from day 1. It’s almost the opposite of what we’ve come to expect from government.
You don’t need a $300 phone with a huge dataplan to access BusTime. They do have a web app that works great on smartphones, but plain old text messaging works too. You simply text the stop code to BusTime, and the server responds with information on when the next bus will arrive. It’s a lower-tech accessible breach in the digital divide, and nobody had to fight for it… they built it in from the beginning.
BusTime’s API is the best part of the system, which makes the real-time bus data available to programmers for inclusion in apps, websites, and transit display boards. Real time data can be called relative to a specific stop, vehicle, or route, and the API will return a wealth of data including latitude, longitude, bearing, distance traveled, distance from a stop in question, etc. If only every transit agency were so forthcoming with real-time data. They can if they want to, as all of the technology behind Bus Time is open source, publicly available, and free for any developer or transit agency to use. How far we’ve come! Unfortunately the subway side of the house is not following the same practices, but that's another blog post.
More about the Tech behind MTA’s BusTime can be found here.
For all of the geeks in the room, here's a screenshot of XML presented by the BusTime API. Look at all that freely accessible data!