Tram Hunter: the blog post

I think this post has been a long time in the making, but I thought it might be time to share this little story.

Tram Hunter is a project I started nearly 2 years ago. It’s an Android client to the Yarra Trams TramTracker web service, which their iPhone client leaverages to provide real-time tram arrival information to users of trams in Melbourne.

I’m not sure what it is about Trams, but I’m almost enchanted by them. They’re slow, many are really old and usually it’s a pretty rough ride, but they also have much more character than buses and trains.

A friend and I made a mashup of Google Maps with tram stops once, and using timetable information, we plotted approximated locations of trams along a line. The trams even moved along the line, although it wasn’t really realistic, it was fun to watch. I spoke to Yarra Trams about what we had done, and I was invited to come and see the Operations Centre in South Melbourne, which was quite interesting. They offered me a job working with their development team on some .NET/Windows web services stuff (which turned out to be the TramTracker service), but I just couldn’t leave VPAC at the time.

Tram Hunter Stop Details

Real Time Departures

Tram Hunter Menu

Application Menu

So once Android was finally released, I bought their ADP1 development phone as quickly as I could. It cost a fortune, as the Australian dollar was quite weak at the time, but was pretty exciting. The idea of an Open Source phone to finally kick start some innovation in the mobile industry really appealed to me. I started messing with the Android API soon after.

I started working on Tram Hunter but got a bit stuck. I ended up shelving the project because I couldn’t figure out a problem I had, and moved on to other projects. It wasn’t until later (and I had moved to London), I was speaking to a friend of mine who was doing some Android development and he offered to help with the project. I proceeded to clean up the code, so it was in a compile-able state for someone else to look at. Somehow I managed to solve the issue and get something working. Everything seemed to just fall into place, and I had a working first version done.

I came across another project by accident by a couple of guys looking to do the same thing. I emailed them, and suddenly we had three developers and another joined soon after. I opened a Google Code project, put all our stuff into SVN and released version 0.1 to the Android Market. I later started a Google Groups mailing list for the project also.

The Tram Tracker iPhone application is slow and takes many taps to get to the information you want. Their interface has been designed to mimic the information screens at tram stops which is a nice idea, but actually provides an irritating user experience.

In comparison, the goal of Tram Hunter is to bring as many useful features as we can, without compromising the interface. I wanted to provide users the ability to get the information they want, with the least amount of clicks.

By using all the standard Android UI features, we gain a lot without needing to write a lot of code. Google Maps, location information by GPS, Network and Wifi, UI and search are all provided in the API so we don’t need to write this stuff ourselves. It also means it’s fast and simple.

Since the first version, we’ve introduced a few new features and have been fixing bugs. We’re on version 0.5 right now, and there’ll be a new one just around the corner.

The latest stats from the Android Market show 4325 total installs, with 3128 active installs (72%). Not bad considering the slow uptake of Android in Melbourne, and the limited number of tram users in Melbourne.

In version 0.4 of Tram Hunter, I introduced some code which (when only specifically enabled by the user) would send some usage information to a Google App Engine site I have set up. Tram Hunter will provide information about the user’s handset and Tram Hunter settings (e.g. What device is being used, what version of Tram Hunter is installed, which mobile network are we using, etc). It will also send information about which stops a user is requesting, and their location when they make the request.

Melbourne Heat Map

I’m currently in the process of generating heat maps, to indicate the location of Tram Hunter requests. Unfortunately, the code isn’t finished so I can’t release them out in the open yet. I have some Google App Engine bit to sort out first, but I’ll be releasing all the interesting statistics to the Android community.

UPDATE: The heat map is now running well on App Engine. The totally new Tram Hunter web site is now up and running with lots of cool graphs and stuf.

What’s next?

For Tram Hunter, I’m still taking feature requests and bug reports at our issue tracker, but I think development of this is starting to slow down.

I have been throwing around the possibility of porting it to Maemo/Meego to support the Nokia N900 (although something similar already exists) and possibly to BlackBerry devices. BlackBerry also uses Java, so it should be quite easy to reuse a lot of code.

I’m also looking into developing another application for timetable information. I have had many requests for an app for buses and trains, so I’m looking to leaveraging some Google Transit code and proving users with an ability to download specially formatted timetables to their handset and use many of the features of Tram Hunter, but in an offline fashion. The idea is that it’ll be generic enough that it can be used for any type of timetable information for anywhere in the world, as long as people are willing to help port the timetable information.

Posted in Geek by Andy Botting at September 14th, 2010.

5 Responses to “Tram Hunter: the blog post”

  1. Rob says:

    Where is an available forum for us to voice our praise (and constructive criticism 😉

  2. Alex Peters says:

    Andy, this is a fascinating write-up. Thanks for taking the time to share.

    I’m particularly intrigued by Yarra Trams’ reaction to your initial work. That they made the time to actually meet with you, evaluate your work and even throw a job offer your way reflects rather well on their management team in my opinion. Then again, I was also floored when I discovered that they had a public API in the first place.

    Thanks to you and the others for completing a very well-working piece of software, open-sourcing it and being responsive to bug reports and feature requests.

  3. Andy Botting says:

    @Rob: You can leave your feedback here, in the Android Market or at our project site at

    @Alex: No problem. I use open source for everything, so I’m happy to be able to give something back. Open source means better code, as far as I’m concerned.

    Don’t think for a second that Yarra Trams care about outside developers. I believe that their API is only open because it’s probably like that by default in the .net stuff they use.

    They ignored most of my emails, except when they realised I’d created something interesting. They tried to call me about 3 months after I moved to London to have a meeting to discuss my app, but once they realised I wasn’t in Australia, they changed their mind.

  4. Peter H says:

    Is there a full list of the “quotes” somewhere?Also, re the bus/train version you mention above, there are already a couple of these for Europe (which include melbourne). I use the Offi Station one which is quite good ( Not as good as Tram Tracker of course, but handy for the buses (and I use Train Trapper for Metro). Tram Hunter is fantastic though, and your quotes retain that tram-style charm 🙂

  5. Jen says:

    Would love to see a blackberry version. My son has it on his android phone and I am VERY jealous.

    Great job, thank oyu

Leave a Reply

6 × = twenty four