Coming to Splitwise for Android: Offline mode, multiple payers

When we released Splitwise for Android v3 last November the whole team let out a sigh of relief: We no longer had an Android app that sucked, but rather a native, sleek beast we could all be proud of.

Seems like all our Android users breathed a sigh of relief, too — our average rating in the Google Play store climbed by .3 in a matter of days, and we got tons of excited emails, Tweets and blog comments from our long-suffering Android folk.

Today we’re pumped to announce that we’ve kept our Android-awesomeness momentum going. We released multiple payers a couple days ago (version 3.2.4), and offline mode is being beta-tested right now by some very kind community members. We’ll release it to the masses once we’ve slain all the bugs.

Our hearts do a little dance every step our Android app takes towards feature parity with web and iPhone. As always, we’re so grateful to have you (yes, you) along for the journey.

Take the leap to learn how co-founder and lead mobile dev Marshall got offline mode for Android up and running. Spoiler alert: It was hard.


Co-founder and lead mobile dev Marshall was inspired by Dropbox’s “incredibly helpful” dev blog posts on their Carousel and photo-sharing infrastructure. Their put-it-in-the-queue model is the foundation of how our offline mode for Android works.

Previously, the app was designed to communicate with the server each and every time a you made or edited a bill. In the absence of an internet connection that communication would simply fail.

Now, the app keeps a log of all changes made, and tries to push them to the server in the order they were committed. When you don’t have a connection the app can simply skip over anything it can’t immediately execute, intellegently saving it for later. The best part is it can do all this in the background, meaning you can add a bill and then immediately do some other task, like checking a balance with a friend, without being subjected to an annoying saving toast and lost seconds. This means that even if you never use offline mode for Android, you’ll now enjoy a better, faster add bill experience.

Conversely, our offline mode for iPhone still tries to save the expense on the server. Once the request has failed, the app marks the expense to be saved later. This still makes you sit through the saving screen, waiting for 30 seconds until the request times out.

About this new iPhone/Android difference Marshall was happy to note “this is the first case of our Android app having something significantly more awesome than iPhone”. We know it’s long over-due!

Marshall also lauds Path and the Robolectric testing platform as critical resources during this development cycle.

Android Tokenized Auto-Complete, a New Splitwise Open-Source Project

gmail autocomplete in Android 4
This is what we’re going for.

For the past few months, Splitwise has been hard at work making much-needed improvements to our Android app. We released a faster, less buggy build in late August, and since then we’ve devoted nearly all our developer resources to a pristine 3.0 candidate that we can’t wait to get into your hands.

To achieve Android awesomeness for 3.0, we needed to build a Gmail-style autocomplete field for selecting friends when creating expenses. I was expecting to find this fairly easy to do with the Android SDK. Lots of apps must need this need, and I was aware of the AutoCompleteTextView and MultiAutoCompleteTextView classes. How hard could it be?

The short answer: Pretty darn hard! Hopefully, not anymore. We’ve just released an open-source version of the code on GitHub! Go grab the Splitwise TokenAutoComplete project to have your own wonderful, tokenized autocomplete view up and running in about half an hour. It works on Android versions all the way back to 2.2 (Froyo). More on my process below the fold.  Continue reading Android Tokenized Auto-Complete, a New Splitwise Open-Source Project

The 2010 US Census Population By Zip Code (Totally Free)

US Population By Zipcode / ZCTA
Population by ZIP code / ZCTA from US Census 2010. Why was this so freaking hard to find?

I’m going to kick off a multi-part series on US Census data by offering a totally free download, in XLS or CSV format, of something strangely hard-to-Google: the 2010 US Census population by Zip code (technically, by ZCTA). Splitwise is offering these files free of charge and in the public domain, and I can’t believe how many other sites are charging for them!

But the difficulty I had in creating this data set and using the US Census website has inspired me to write a bit more about how to use one of the world’s most interesting open data sources.

Continue reading The 2010 US Census Population By Zip Code (Totally Free)

Setting up OAuth for the Splitwise API

Let users log into their Splitwise accounts
Users log in to Splitwise, then authorize your app

The Splitwise API is here! With it, any developer can create an app that interacts with a Splitwise account, just like Facebook or Twitter.

Have you ever wished Splitwise had a certain feature so bad that you would be willing to build it yourself? Now you can! Continue reading Setting up OAuth for the Splitwise API

Safari ‘Top Sites’ Pollutes Google Analytics and Mixpanel

Average browser visit time chartIf you are the creator of a website or web application yourself, you might want to install the rack-preview gem for Ruby, or something similar. We discovered Safari Top Sites was polluting Splitwise’s Google Analytics and Mixpanel data.

A couple of weeks ago, while digging into our site analytics, we noticed something strange with Safari. We’d just launched Fat Rabbit and were really interested in making sure we measured all the useful  statistics around user growth and engagement. As we pulled out interesting details about website visits (using a combination of Google Analytics and Mixpanel), we started seeing an odd pattern – the average visit length on Safari was half that of our other browsers and the bounce rate was much higher.

Continue reading Safari ‘Top Sites’ Pollutes Google Analytics and Mixpanel

ImageMagick for iOS – armv7 and armv7s

I’ve been working on some speculative projects for Splitwise this week (fun!). I ran into some issues where I needed to do more image manipulation than is possible in iOS, so I needed to add some magic to my project. Ahem. I mean ImageMagick.

ImageMagick logo
I wish it were actually that magical…

Fortunately for me, Claudio Marforio did the work to build ImageMagick for iOS armv6 and armv7. Unfortunately, I need libraries that work with armv7 and armv7s for the newer iOS devices. With some time spent tweaking build files, I was able to update his script and put together my own version that supports the newer hardware.

For most of you, there’s no need to build your own version. I’m working with Claudio to get this update pushed out to the official ImageMagick ftp, but you can grab a copy now. Update: Claudio published the updated files to the ImageMagick FTP site.

Continue reading ImageMagick for iOS – armv7 and armv7s