GLOBAL – Continuing our series of interviews with leading developers for Nokia phones, we talk here to Sebastian Brannstrom, the creator of Podcatcher and (here) CoverUp. CoverUp a hugely popular utility for filling in the album art blanks in your Symbian smartphone. Here’s the story of its creation and implementation.
How did you get the idea for CoverUp? What did it develop from?
The Symbian ‘Music player’ has been capable of showing album art in playback mode for a long time. Like most people, I had never bothered to assign art to music I ripped from my CDs. I believe the N97 was the first device to not only show album art during playback, but also when listing music in the phone library. Suddenly, album art was not only a superficial thing, but an effective navigational aid. With the staggering 32GB of storage that the N97 had, scrolling through an endless list of album names was a pain without album art.
So I manually went through all the albums on my N97 and downloaded and attached art to them. Needless to say, this took a very long time. Already, then, I had the idea to write a tool that automatically downloaded and set album covers based on artist and album names. But at the time I was busy with other things, and the prospect of writing this in Symbian C++ was not very appealing.
In fall of 2010, Symbian^3 and Qt had arrived. I attended Nokia World, where they not only held many sessions about Qt development, but they also handed out N8s to all developers. The N8 came with the new glorious landscape album ‘cover flow’ that just screamed for album art. I really wanted to try out Qt so a few weeks later I dusted off the cover art idea. Since I have a lot of developer experience, Qt was very easy and quick to get started with, and I wrote a prototype version of CoverUp that downloaded art on a rainy November Saturday.
How long has it taken to create so far, in man hours? Hundreds?
At least a hundred hours, but probably less than two hundred.
What have been the hardest and easiest parts of development? Any major roadblocks you’ve had to overcome?
I have had a great time developing CoverUp. Qt is a fantastic toolkit and I find Qt Creator very productive. The first version of the Nokia Qt SDK was a bit rough and required quite a bit of command line work, for instance to package the application for the Ovi Store. But this has improved a lot since, and I could make version 2 almost entirely inside the IDE.
While creating the Qt app was easy enough, the secret ingredient of CoverUp is its ability to update the music library with the downloaded art, and this turned out to be pretty difficult to do. Since Symbian^3 is open source, I had access to everything I needed, but the music library APIs turned out to be completely undocumented. So I basically had to reverse engineer Music player and after many hours of trial and error I finally got it working.
The only reason I could do it at all is my many years of experience with Symbian C++. Of course, this has given me a competitive advantage, so I don’t complain. The combination of the simplicity of Qt and the richness of the Symbian C++ APIs is very powerful.
Also, since these APIs are not entirely compatible between versions, I could not make a S60 5th edition version of CoverUp without assistance from Nokia. Luckily, I was awarded one of the much coveted Nokia Developer Champion places for 2011, which meant I got access to their excellent technical support that gave me everything I needed.
What are the tools you’ve used? i.e. What language and/or toolkit do you write in?
The user interface is Qt 4.6, with bits and pieces from 4.7 and 4.8 manually grafted in, specifically some hashing code and QScroller for kinetic scrolling.
The album art engine is Symbian C++ with a lot of extra headers and libraries I originally borrowed from the open source Symbian^3 code base. I have since replaced them with libraries I got from Nokia support.
I write my Symbian C++ code in Carbide and compile it to a DLL. To test this, I have a small Avkon app. I also wrote a few scripts to help me move the DLL and its dependencies to Qt Creator so it can be deployed to devices.
How do you test CoverUp as it develops? How many testers do you have and how do you manage them and their feedback? Do you have an automated change management or fault logging system of some kind, or is it all on scraps of paper?(!)
The Qt SDK provides a phone “simulator” which is OK for testing the Qt code flow, but it does not give a very accurate idea of what things will look like on a real device. The EPOC emulator is more accurate, but it is too slow for practical use, so I tend to test on devices. I have an N8 and a 5800 that I use for that. Deploying and debugging apps over USB works pretty well now using TRK.
Something I use a lot is the Remote Device Access tool at Nokia Developer. It allows you to run your app on any Nokia device to see how it behaves. This is how I could make sure CoverUp 2 works well on the E6, with its non-standard screen resolution and small size.
Because I depend on capabilities that cannot be user granted, the application must be ‘signed’ to work. My Ovi developer certificate only works for my phones, so I cannot easily let other people test the app. This is a problem with the Symbian security model, to be honest.
For revision control, I use Mercurial, together with the excellent bitbucket.org service, which also provides an issue tracking system and a wiki. It is absolutely fantastic and it’s now free, so there is no reason not to use it!
For my open source project Podcatcher, I use the Nokia Developer Projects site, which is also good.
How has CoverUp evolved since your first versions – why and how?
I released version 1 in early February 2011 for Symbian 3 devices only. It allows you to automatically download and set art for all your albums at once, or manually for a specific album. Sales were initially pretty sluggish, so I experimented with price, and after I got some good reviews on websites and in the Ovi Store, I saw pretty healthy sales. This encouraged me to keep building.
Version 2 was ready in early May, and added support for S60 5th edition as well as the E6, thanks to help from Nokia. A new and much requested feature was to set album art to manually downloaded files, i.e. for albums which could not be found automatically. I also redesigned the user interface significantly, adding a welcome screen on first launch, and created a caching system to improve performance. Version 2 was positively received by customers and it has sold well.
I have had plenty of feedback and feature requests from users, so a version 3 is somewhere on the horizon. I am also thinking about a MeeGo version for the N9!
Where next for CoverUp? Any major new features coming up?
Most likely a MeeGo version. There are things I’m considering adding, such as album title editing and the option of saving album art into the audio files themselves.
What’s your #1 tip (or tips) for someone wanting to get started in mobile app development?
Great apps are built around simple ideas. Pick a simple idea and make it awesome.