Delivering the beta
Under ordinary circumstances I would have released a first beta of this app weeks ago. I was dissuaded both by the shifting landscape of data as well as by my concern that someone in Tyler might actually try to use it to catch the bus and fail due to its incompleteness. I’m confident now that it sufficiently advertises its failures (lack of Saturday schedules, for example) to prevent this. Thus I present for commentary the first original Hack Tyler app:
The application delivers the following features that I determined to be absolutely necessary in a transit app:
- Tell me when the bus is coming.
- Show me where the bus is going to be (maps).
- Allow me to save my favorite stops.
- Function acceptably on desktop, tablet, and mobile devices.
- Be usable (via PhoneGap Build) as a native Android/iPhone app*.
- Do not require an internet connection.
With these maps, I can provide a visual aid to navigation without compromising the app’s ability to run offline. The code for generating the maps can be found in the maps directory of the repository.
There are a number of worthwhile features that have not yet been developed, including a “Stops Near Me” geolocation feature, a crowd-sourcing mechanism for stop landmarks and a dynamic route/stop map for desktop and mobile users with internet access. You can see the complete list of issues and ideas on the project’s Github Issues page.
The most significant problem with the application is the relatively poor accuracy of the departure times. The coarse schedule information available from official sources requires that I estimate times for the vast majority of the stops. Although the estimations are likely good enough to be useful, the algorithm is crude. Consequently, my next step will be to ask Tyler Transit for more detailed timetable data. As I mentioned in my last blog post, it’s my belief that governments are much more likely to produce information if the utility of it is self-evident. Hopefully the existence of Tyler On Time justifies whatever investment would be required for them to release this data.
Though the basic functionality validates my time investment so far, this project also has a couple of significant stretch goals. First, I would like to build an SMS version of the app for users without smartphones. My friends at the awesome cloud-telephony service Tropo have expressed an interest in partnering on this project, which shouldn’t be particularly challenging to implement once better timetables are nailed down.
Second, I would like to convert the bus data into GTFS format and have Google Maps pick up the results. I suspect this would require an official endorsement from Tyler Transit, however, the value of doing so would be very high. It would allow Tylerites and visitors to get directions that include public transit as a navigation option. It would also allow Tyler On Time to provide “walk, ride, walk” directions to users of the application, like this.
Finally, some notes about the technology being used in the app. The stack was heavily inspired by a very successful sprint the Tribapps team executed for the Chicago Breaking News Live application. Similar to that app, Tyler On Time’s logic is entirely client-side, backed by a small amount of Backbone.js (for url routing) and a tremendous amount of Underscore.js (for everything else). The static files themselves are hosted on Amazon S3. Basic styles and
responsive switchy design come from the Skeleton framework. It has HTML5 semantic markup. The data processing was scripted primarily with Python, GDAL and csvkit. Stop maps were produced using TileMill with a modified version of Development Seed's custom base layer for Washington D.C. and data from the Smith County Map Site and Open Street Map. The whole thing was developed on Ubuntu Linux. Everything is open source.
I expect to keep iterating this application for at least a month, so please leave your suggestions (especially those of you from Tyler). Hopefully by my next post I will have detailed timetable data and be ready to move forward with additional methods of delivering that information to users.
*The application has not yet been deployed to either the Android Market or the App Store, but those with comfortable installing unsigned Android packages can download a beta here.