Formula 1 and Publishing to the Google Play Store – a Lessons Learned Exercise

Race Results Updated!

In May 2013 I published my first app to the Google Play store – Race Results. It’s a free app that lists Formula 1 race results; a labour of love from a techie race fan who wanted to learn a bit more about what it is to publish a mobile app. I’d tinkered with Android app development before, but this was the first time I’d made anything publicly available.

This morning, I released version 1.3 of my app, so I thought I’d write a blog to outline what’s new as well as what I’ve learned over the past 8 months.

New Year, New Updates

Race Results listed the following information on the 2013 season:

  • Race Calendar
  • Drivers Championship standings
  • Constructors Championship standings
  • Results for each qualifying session
  • Results for each race
  • Driver profiles provided by Wikipedia
  • Race track information provided by Wikipedia
  • Constructor information provided by Wikipedia

The 2013 Formula 1 season ended in Brazil on the 24th of November (some would argue that it ended long before that, but I’m not here to grumble. Here’s hoping the Scuderia can do a better job this year…). At peak, the app was installed by 105 people (November 20th), but there has been a slight decline in the numbers since then. Understandable – the season is over, dead and buried. The 2013 information (and thus the app) becomes of interest to stats fans only. So how to keep the app relevant?

The current number of active installs since launch

The current number of active installs since launch

I had initially planned on releasing a new 2014 app, but doing so would means starting from an install base of zero. I had great feedback from the 2013 app, why not just update it? I could easily modify my code to seek results for 2014, but that didn’t seem quite right – a lot of users still have the app installed, these people like stats. What to give them? More stats!

So this version of the app comes with an archive, which provides all of the above bullet points for seasons 2006 – 2013. You want to know who won the 2010 Korean GP? Fernando Alonso. Which team finished third in 2007? Renault. Where was the 2009 German Grand Prix held? The Nürburgring. Of course, the race calendar for the 2014 season is also available.

Gotta love those stats

Gotta love those stats

Planned Updates

There’s still a few things I’d like to do for the next version of the app based on various criteria.

Aesthetically, I want to use the new Hamburger menu UI design, which is becoming more commonplace in apps since becoming a Google standard. This would replace the dropdown menu at the top of the screen. I’d also like to tidy up my season selector dialog popup; I’m sure nicer dialogs are available.

Hamburger Menu in Google+ app on left. Okay-ish dialog popup on right.

Hamburger Menu in Google+ app on left. Okay-ish dialog popup on right.

In terms of content, the first obvious change is to extend the app to cover all seasons, all the way back to 1950. There’s a few reasons I haven’t done this yet, but it’s mostly to do with testing. I need to cater for things like single qualifying sessions (the Q1-Q3 format began in 2006), or the fact that the Constructor’s championship only started in 1958 (the 9th F1 season). There are some fiddly changes too, such as obtaining flag graphics for every race country, team and driver nationality. This will probably be a phased release.

Under the hood, I’m considering changing how I cache data for offline reading. Currently I store all data as JSON files; moving this to a single SQLite database should provide speed improvements to the app as well as provide potential for user defined queries – get that stats fans!

I’m also considering multilingual support – the app developer console informs me that I should think of catering for German, Spanish and Italian users to name three. Translation is a piece of cake in Android – I have a single strings file (values/strings.xml) that I need to provide translated versions of (values-de/strings.xml, values-es/strings.xml and values-it/strings.xml for the three languages mentioned above). There’s a little bit of testing required to make sure that labels render correctly in the spaces assigned (German labels tend to be some 2.8 times longer than English – see here for comparison).

Languages across the install base

Languages across the install base

Of course, I want to look into a tablet version of the app. It should provide a different experience to the phone app, something more immersive to contrast with the “at a glance” usage of the phone app. I’ll probably add some graphs here, as the extra screen space would be best served by pictures rather than more labels. One more for the stats fans 🙂

Roll on 2014

An exciting year ahead. I’m not thrilled by the new 1.6 litre turbo V6 engines, but maybe big changes to the sport are what is needed to break the Red Bull dominance. I’ll always hark back to the days of the screaming 3 litre V10s, big wings, refuelling and hearing the Italian national anthem most Sunday afternoons (get well soon Michael!), but I’m excited about the Alonso-Räikkönen partnership in a Rory Byrne designed car. Fireworks are a possibility, but hopefully so is the title (2007 was too long ago). Forza!