Making of FiveTimer for Android

I had just come back from Iceland and a summer of otherwise developing an Android app for the trip. With all the design and programming paradigms still in my head I decided I should try to make another one. I’ve always wanted to port FiveTimer from iOS to Android, but the time or opportunity never presented themselves. I decided to undertake it as soon as I got back.

That was about 15 days ago. The whole process took just over two weeks! Rather than taking everything over at once or at random, it was broken down by most to least essential. Wunderlist was a huge help in doing this breakdown, in the end FiveTimer was 44 discrete tasks.

By the first week I had a basic timer that had some scramblers. At the middle of second week I had more scramblers, a statistics viewer, a timer with 15 second countdown, and hold to start. In the last few days I was scrambling to make sure that the app looked decent in all screen sizes and the 3×3 and Square-1 scrambles didn’t make the UI hang too much (threads are cool).

Through this whole process I was uploading a .APK to my site for a few beta testers to give me feedback on. Without whom the initial release of FiveTimer would be pretty sub-mediocre. A small localization error for example would crash the app whenever the timer was stopped, this was due to the time strings being formatted with a comma instead of a period, never would have caught that one on my own. A huge hand goes to the beta testers.

In the final weekend I noticed how much my table was flexing when I would slam the cube down as if I was on a stackmat. It struck me then that why should we be touching the screen to stop the timer at all? Drop to stop was implemented, and then with a sensitivity slider a day later. It was a “why haven’t we been doing this the whole time” kind of moments.

Even when the app went into production there were still changes to be made and bugs to squash. An “add time” button was a welcomed addition for example. FiveTimer for Android is actually well ahead of its iOS counterpart right now and I intend to carry over the add time and drop to stop, let me just do a few solves first.

Presenting FiveTimer for Android

cubeI’ve been wanting to port FiveTimer to this platform for a while and it’s finally here. It has all the features that it has in iOS:

  • Scrambles for all WCA puzzles.
  • Puzzle support for all WCA puzzles, 2×2-7×7, Megaminx, Pyraminx, Square-1, and Clock.
  • Hold to start or tap to start.
  • 15 second countdown.
  • Export full session, current, or best average of five or twelve.
  • Session saving and restoring between puzzle.
  • Arbitrary puzzle profiles.
  • Contrasted, minimal interface.

So it’s a port, (ok minimal mode is missing). Same old same old right? Features that are not in iOS:

  • Session exporting. In iOS you can only email the session, in Android you can send the session string to any app that will receive it. My favorite is Dropbox in this instance.
  • Drop to stop. Kind of a silly name in retrospect, but if your device you’re timing with is on a table, you can slam the cube down as if you’re timing with a stackmat and the timer will stop. This uses the device’s accelerometer to detect a sudden Z change and stop the timer. I’m really psyched about it. The tweet above was an accidental reference to this. Wait until you see a video, you’ll be wowed I’m sure.

It’s $0.99 on the Google Play Store. I feel like some one is going to complain instantly in their head about the price to which I have this response. It’s a dollar, you pay once, you own it forever, you’ll get all future updates, you can use it whenever you want, you can uninstall and resinstall it indefinitely. Consider for a second the things you buy which cost more and you get much less out of, a candy bar, a soda, a movie ticket. It’s just a dollar. Thanks, I hope you enjoy it.

What’s New in FiveTimer 1.2

cube

(cool, the title rhymes) So there’s a lot less that I had hoped would be in this version as described in this post, but significant enough to push a version+0.1 release. Here goes:

  • New icon – yeah the old one was not so great, I think this one is at least a little better.
  • Support for iOS 6 – iOS 6 changed a lot of things under the hood, even without some of the added features this was very important.
  • New screen resolutions, iPad compatible – I never got complaints or requests for this but it’s been something I’ve been wanting to do.
  • New Feature: Minimal Mode – I’m very excited about this. The idea behind this mode is that you should only focus on the current solve on hand, there have been countless times where I have the intention of doing an average but because I get a bad start I just keep deleting and resetting. Now you can hide the controls and just do solves, if you mess up or are curious what your average is, you can always bring the controls back up.
  • Support dropped for iOS 3.2 – i.e. dropped support for 1st generation iPod touches and iPhones.
  • Bug Fixes – The standard deviation that was written in emails was for the entire session not that set of times. The start or stop button would not properly bind on first install. iOS6 bug fixes, it just really changed things.

The best part is FiveTimer is still just 99¢ in the iOS App Store. I have plenty of ideas for 1.3, including one more mode, 15 second countdown, and a few more. As always if there’s a feature you want to see send me a message here. Enjoy.