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

Welcome, BillMonk Refugees! (In Which We Import BillMonk Data)

Welcome BillMonk refugees!

[Edit: As of Friday, September 14th we now have our Simplified Debt feature live, which is known on BillMonk as debt shuffle. Information on Simplified Debt can be found here. We updated the importer Tuesday, August 21 to handle debt shuffles and multiple payers. If you imported before this, go through the import again and it will pick up the debt shuffles correctly and won’t import duplicates. ]

Like many of you out there, I’ve been waiting for BillMonk to load.

Why am I waiting? I’ve been testing our new importer for BillMonk data.

In the last week, BillMonk has sadly gone from slow to unbearable. While this is painful for their users, we hope we can provide a fairly painless process to move from BillMonk to Splitwise.

For those of you eager to try it out, go export from BillMonk and import to Splitwise. Otherwise, let me tell you a little more about the benefits and limitations of our importer. Continue reading Welcome, BillMonk Refugees! (In Which We Import BillMonk Data)

Take (time) off with TestFlight

If you’re like me, you probably have this interaction at least once a month:

It’s 11:30 pm. You’re unwinding after a grueling day of coding. Cue cell phone.

CEO: I just met [VC/Angel Investor] and I need to show them our app. Is the latest code up on TestFlight?

Me: No, it’s two weeks old. Do you need this right now?

CEO: Yes! I talked to this investor a few weeks ago and need to show some progress.

Me: Ugh. Ok, let me pull out my laptop and update the build.

…ten minutes of fumbling…

CEO: Can we just keep this more up to date? [VC/Angel investor] had to move on.

Me: Sure, whatever, it’s up to date now. Can I go to bed?

I got sick of these phone calls, so I decided to see if I could find some solution to change the conversation. TestFlight has an API and with a little elbow grease, you can get this whole process down to one step.

Continue reading Take (time) off with TestFlight

The New Monthly Summary And Google Charts

An example of the new monthly summary graphics in action.

If you are a Splitwise user, you might have noticed this month that we added pie charts to our monthly summary emails. Ryan and I figured out how to do this the night before the emails went out – we were surprised how easy it was to do with the Google Charts API. Technical gibberish after the jump.
Continue reading The New Monthly Summary And Google Charts