Developing Stay.com 2.0 – an app post-mortem

You’re only as good as your last app. And the last one we’ve developed here at Cutehacks is Stay.com for Android and iOS. We developed the Android version and helped finalize the  iOS version. Here is a small write-up of some of our experiences developing and launching Stay.com 2.0. Overall it was a great success, but as you’ll see – we learned a few things along the way.

A short intro to Stay.com

If you don’t already know Stay.com here is a small introduction: Stay.com lets you create your own personal travel guides which you can download to your phone and use while offline. This saves a lot of money as roaming fees are still ridiculously high around the globe. Here are some screenshots:

The app is available for  Android and iOS, and if you want to know more check out this short video explaining the service.

What went wrong

We spent about five and a half months developing Stay.com for Android. We were two full time developers. We learned a lot along the way and I’ve selected three areas where we met problems.

Wrong#1 – Ignoring the Android look

Stay.com was developed for Android and iOS in parallel. At the start of the project we were asked by the designers what kind of modifications were needed to adapt the design, which was iOS focused, to Android. We estimated that no big changes were needed and promised we could make the iOS inspired design work on Android as well. We delivered on the promise, and launched a great looking app that handled the different resolutions of Android and followed the design close to pixel-perfection.

What we, or I guess I should say I, didn’t expect, was the negative reviews this provoked from some of the users downloading and rating the app on Google Play. I honestly didn’t know there were Android fanboys out there that cared. Some excerpts:

  • “…a converted iOS app on Android is an insult…”
  • “…it’s just an iOS app…”
  • “…iOS look on Android is not cool…”

Clear and honest feedback right there. And looking at things as they are now with Ice Cream Sandwich in use, updated fonts and proper design guidelines, I’d say they have a point. In my defense, the guidelines were not published when we started the project.

However, we’ve seen the errors of our ways and have have released several updates of the Android app that fixes most of these issues. Here are a few screenshots that shows some of the design changes:

Wrong#2 – Memory and performance

Another area that took us by surprise was the memory handling on Android. In short: the maximum heap size allowed for each app is limited and device dependent. If you try to allocate memory above this limit, your app is killed – just like that.  This is clearly not the way to do it, and I was surprised to find this behavior on a modern mobile OS like Android. We ended up having to rewrite some of our caching algorithms for  images, databases, and offline maps in order to run Stay.com on inferior Android devices. If you’re wondering how to do memory profiling on Android I recommend you watch this video - several times.

We also experienced performance issues with the default Android database. Every app can easily create a database where it adds, edits and retrieves data in a sensible manner. It turns out that inserts are really slow. If you want any sort of adequate performance you need to pay special attention to how you manipulate the database. For example, when inserting multiple rows in the same table make sure you do bulk inserts and not one row at a time.

Wrong#3 – Facebook SDKs

I’m not a big Facebook fan. In truth, up till we developed Stay.com I didn’t even have an account. Yeah, I know. One of the things we discovered during the implementations of some of the more advanced features of Stay.com and its Facebook integration was: the Facebook APIs suck. For the Android app we use both the official Facebook SDK for Android, as well as some of the REST APIs. We found them poorly documented, unstable, broken, non-compliant and confusing. Especially the REST APIs. Odd! The only tip I can give you are to keep an eye out for changes mentioned on the developer pages and search for tips and tricks on Stack Overflow.

What went right

Right#1 – Crash logger ACRA

A few days before we were ready to launch in Google Play, after we were done with most of the testing and debugging, I came across a post where someone mentioned this crash logger tool called ACRA. And just as an afterthought, we added it to the build. This turned out to be a great idea.

ACRA works in a very simple way. When the application crashes the user is given the chance to report back what just happened. If the user sends a report, a lot of debug data ends up in a Google spreadsheet of our choosing. ACRA is easy to integrate and has helped us expose a lot of bugs in our code. I highly recommend ACRA.

Right#2 – Trello, Git and GitHub

We use a lot of tools, but I’d like to focus on three of the ones we used when developing Stay.com.

Trello is a low-impact collaboration tool. It’s free, simple and online. You create a board for your project, you add some lists to the board, and in each list you add some cards. We used two boards when developing Stay.com – one for the Android client and one for iOS. We’re using Trello for all our projects now. We love it.

Git is a version control system. If you’re still using something like Perforce, Subversion or CVS, you need to get out more. Here are two reasons for using Git:

  • branches cost nothing
  • it works offline

Now, if you like being sysadmin it’s fairly easy to setup and maintain your own server where you can host your repositories. But if you just want something that works, go with GitHub. We’ve now upgraded to their business plan and I have to say that makes administrating different repositories, teams and access control very easy. Thumbs up!

Right#3 – Small teams, small companies

Developing Stay.com 2.0 for iOS and Android involved teams in different companies:

Somehow, this all went great. I think the combination of small teams in small companies really melded well together. Weekly meetings, IRC and Skype, shared source code, Basecamp, Trello and a mishmash of other tools helped collaboration.

Conclusion

Overall the development and launch of Stay.com 2.0 was a great success. The user feedback has been great and we’re proud of what we developed. The app has a 4 star rating on Google Play and 4+ on iTunes. Although the initial launch was in mid-June 2012 – we’re still working full-time on the Android and iOS versions, continuously fixing bugs and adding new features.

17 responses to “Developing Stay.com 2.0 – an app post-mortem

  1. Nice article Espen. When will you create the app for WP?

    • Whenever Stay.com want us to :) I think it would be fun. But as the cost of development for iOS / Android and WP is about the same, it’s a matter of cost vs userbase.

  2. Thanks Espen :)
    And I fully agree: Small companies working together on something is the most efficient way to get stuff done.

  3. Conclusion:
    You should at least make a Qt / Meego App when you post this on planet.qt-project.org ;)..

  4. Pretty insightful, thanks a lot for writing this down! Out of interest, did you share any code between the two ports?

  5. Interesting. Instead of Trello + GitHub, I like Assembla better.

  6. Do you have any suggestions for getting Stay.com to run on the Kindle Fire HD. It side loads with the APK and runs once. If you log off then when you start again it lets you log in and then crashes. If you do not log out it crashes on start. removing the cache and data lets you start but you have lost your maps. I have it on my Iphone but would loke it on the bigger screen. The log in is with a stay account – I do not want to be on Facebook.

    • Hi Dave,

      What version does the Kindle have of Android? We had some issues similar to this with Android 4.2 – but that is fixed in the latest version of Stay.com version 2.4.11. Try that and see if it still crashes? If it DOES crash, leave your email address (or some other unique message) in the crash comment and reply back to us here.

      • Thanks for the reply. The Kindle Fire HD is shown as version 7.2.3 of their software. The Wiki listing shows (The OS is based on a forked version of Android Ice Cream Sandwich (4.0).) I do have Stay version 2.4.11 loaded. I used 1Mobile marketplace to get the APK file since Stay is not in the Amazon App store. After trying to start Stay I get an error notification showing Bluetooth beaming service.

        davewhsd@gmail.com

  7. Hi espen,
    The Bluetooth notification may not have anything to do with the crash. I now have several Stay crashes without a bluetooth notification. The splash opening screen comes up and then crashes. I have been looking for log or console files but have not been able to find them.
    davewhsd@gmail.com

  8. espen,
    I have done some additional testing. Deleting the cache does not allow startup. Clearing the data and db allows the app to run. I can browse with no problem. If I log in to my Stay account the app crashes. I can not try login with Facebook since I do not want a Facebook account. I could log in with Google but that option is not available.

    Thanks,
    davewhsd@gmail.com

  9. Hi,
    did you develop the app in Qt? I can’t find the information in the article.

    • No, the application is developed using the respective native offerings on Android and iOS. Qt on these platforms is only coming now (5.2) and Stay has been around for a few years already.

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s