A while back I worked with Evan Martin and Joe Hughes on Proximo, an Android app that provides an interface to NextBus. This in turn is built on ProximoBus, my alternative JSON-based interface to the NextBus API that makes it far easier to wrangle in modern programming languages.
In the process of working on that app I learned that the Android development environment suffers from Java's propensity for making simple things complicated. The app quickly turned into a big pile of crazy threads, services and "aidl" files that remind me of everything I hate about desktop application development.
Yesterday I noticed that AC Transit now has a public data feed on NextBus, so I briefly considered extending Proximo to support multiple agencies so that we could ship an "All agencies in the SF Bay Area" version of the app. But I took one look at that code and was put right off. Instead, I decided to try to re-implement the Proximo functionality in the browser, using HTML5 technologies.
The result is ProximoWeb: it does everything that Proximo-the-Android-app does except "favorites", because your browser already has a feature for that. It uses CORS to communicate with the ProximoBus API backend, the offline application cache to make it available when your mobile device has no service (although the predictions can't work in this case, of course) and localStorage as a cache to prevent continually re-fetching the data.
The web development environment still leaves a few things to be desired, but overall this was much easier than the Android app. JavaScript's concurrency model is far simpler: everything's just asynchronous and you provide callbacks, with no threads required, and therefore no complicated concurrency concerns. jQuery makes the DOM manipulation far easier than it used to be too, so I don't feel so annoyed by having to essentially invent my own UI widgets.
Right now it's essentially a direct copy of the Proximo functionality, but it's exciting to me that it should now be a lot simpler to add features that I wanted to add to Proximo but didn't want to invest the time, such as finding stops by geolocation, or presenting maps of stop/bus locations. HTML5 is getting more exciting all the time!