Since my last update, I’ve moved to Chicago and started work at Orbitz. Last summer, some of my coworkers told me about the Chicago Transit Authority (CTA) Bus Tracker API, which provides live arrival predictions for each of the 1,700+ buses and 11,000+ bus stops in Chicago. Upon closer inspection, I also discovered that the CTA had recently added an API to track live arrivals for each of the 145 El Train stops.
After working on Android apps during my time at Michigan, I was excited to continue Android development and build out an app that took advantage of the live prediction data.
As the saying goes, “good software starts by scratching a developer’s personal itch” and I began development by wiring up a really simple app that had 3 buttons (home and work), called to the CTA Train Tracker Service, parsed the response and displayed a dialog to with the predicted arrival time
As simple as this first product was, it was actually quite functional, allowing me to save several minutes off my commute each day. With this successful proof of concept, I began to build out a system that would be useful to more people around Chicago (after all, not everyone lives in my neighborhood and works in my building).
My primary goals were:
- Build an app that integrated the Bus Tracker API, Train Tracker API and favorite stops.
- Make it FAST.
- All routes/stops should be stored locally and only need network to get live predictions
- Make it popular, which means it had to be free and ad-free.
I spent the next few months working nights/weekends on and off to build out a 1.0 version of the app. I constantly “ate my own dog food”, using solely my own app when riding the CTA.
After about 2 months of part time work, I finished the first beta. I enlisted a few of my coworkers to try out the app on their phones and give me feedback. This included design tweak suggestions as well as bug reports. At this time, bug reports looked like “Sort by Time – Refresh still sets it back to sort by bus.”
At Orbitz, we practice a form of Agile development, which features frequent releases and constant iteration. I tried to iterate quickly and add features that I wanted to see in the app. A few lessons learned about self-development:
- It’s easy to be ashamed of the quality of your product. Don’t be. Ship and start iterating.
- Ship early and ship often.
- Even if your customers are co-workers who aren’t paying anything for your product, this early feedback is invaluable.
- Instrument like crazy
- In my app, I have lots of settings. In early versions of the app, I had no idea how users interact with my app. Free analytics tools like Flurry are immensely helpful in capturing these interactions.
After beta-testing personally and with office friends, I finally released “FastTimes: CTA” version 1.0 on October 18, 2011. The first week, I got 43 downloads (!). I was estatic. 43 people wanted to use something that I created in my spare time!
Throughout the fall, I shipped several updates to the app, adding features, updating the stop list and improving stability. After joining the Orbitz Android team, I slowed down development somewhat, but have continued to grow the active user base to more than 4,650 active users today.
In the last year or so, the tools surrounding Android have gotten significantly better (although too many still start with “Robo”). Here’s a sample of what I use:
- Dependency injection (@InjectView is awesome)
- Android Unit Tests. Used for testing simple interactions and verifying that sample data yields the correct predictions
- Flurry provides a free tier of event tracking in exchange for collecting aggregate data about your app’s usage
- Easily parse XML/JSON
- This easy-to-integrate tool allows the app to automatically post stack traces to the Bugsense website if the app crashes.
- Git. Use it. Or some kind of version control.
These tools are generally pretty well documented. StackOverflow is of course a great resource if you get stuck. Let me know if you have specific questions about integrating these tools.
One of the most exciting trends in the analytics has been the growth of Android 4.0+ devices to almost 30% of the active installs of the app.
In the 2.0 version, I plan to update the visual style of the app to be more consistent with the Ice Cream Sandwich design style. I also want to expand into more push notifications and increased analytics about app usage.
Special thanks to Rob, Jonathan and Hari for being my beta testers.
“CTA Train Tracker (SM)” , “CTA Bus Tracker (SM)”, and their associated logos are trademarks of the Chicago Transit Authority.
The opinions above are solely my own and do not reflect those of Orbitz Worldwide or its affliates.