Add adventure to your Friday night

Why and how I built Bar Roulette for iOS

Tyler Swartz
Uber Developers

--

An Uber Developers guest post from Bar Roulette

My name is Tyler Swartz and I built the Bar Roulette web app in the spring of 2015. I quickly realized that a native iOS app could offer new features, simplicity, and scalability and leverage the most compelling features of the Uber Developer Platform.

Bar Roulette for iOS combines Uber, Yelp, and Foursquare to take you to a highly rated bar. You simply enter your location and the neighborhood you’d like to go to and Bar Roulette picks a top rated bar… but keeps it a secret! An Uber is dispatched to pick you up and drops you off at your destination, only revealing the bar once you’ve arrived.

Since the web app MVP was the first app I’d ever created, I didn’t know what to expect when I submitted it to Product Hunt in August 2015, but was pleasantly surprised by the community’s positive reaction. The hunt received over 250 upvotes and inspired several news articles (I wrote about this whirlwind experience here).

As traffic to the buggy web version swelled, I knew I had to build something more stable and scalable. I received suggestions for improvement. Even when I explained that Bar Roulette was a web app, people still asked whether it was for iOS or Android.

The global adoption of mobile is a tectonic shift in the tech space and I wanted to be a part of it. However, at this point I didn’t know how to code in Swift and hadn’t built an iOS app before. I’m fascinated by the interesting ways that people use mobile devices to create unique and compelling apps. To jump into the mobile development world I searched for a good online Swift class. I landed on Rob Percival’s Swift 2.0 class. (Sidebar: huge shout out to Rob and Udemy. This was a great class.)

Old design vs new iOS design

New and Updated Features

On January 1st, 2016, I began designing and building Bar Roulette for iOS. In the iOS version, I made a few small but significant changes based on user feedback. The biggest change was to remove the restriction limiting destinations to those near the current location. Users can now choose any neighborhood for the destination bar, providing a little more control over the experience while maintaining the mystery of not knowing the final destination until arrival. This enables the app to reach people with a particular destination in mind or who might not live close to bars.

The second big improvement is that Foursquare is now a source for bars, and the user can filter the potential Foursquare bars by price. The price filtering ensures that users get matched to a bar that meets their expectations for the evening. Are you dressed for artisanal cocktails or $2 PBRs?

Simplicity

Building for iOS is simpler than trying to maintain a web app. The beta web app was built with Ruby on Rails and hosted on Heroku. As a new developer I had a hard time building a web app that was stable across multiple browsers. Because the app’s premise is one end-to-end experience, its success depended on an uninterrupted experience across multiple pages and somewhat heavy client side processing via AJAX that wasn’t ideal for a mobile device. It was slow and would crash. While I don’t doubt that this concept could work as a web app, my developer skills pushed me towards the relative simplicity of iOS.

Scalability

When interest in the original web app spiked, I had a hard time scaling with the Heroku site. This wasn’t due to any fault of Heroku, but simply me not being a network engineer who knows the technical ins and outs of scaling a web app. Specifically, I didn’t know how to efficiently spin up additional workers in Heroku to balance the load.

What I like about the iOS app is that the majority of the processing is done on the user’s device. It’s distributed processing that leverages the processing power of the user’s iPhone. The only piece that I have to maintain and scale is the Parse database that contains the user profiles with their bar history. Parse seems to be quick enough that users rarely see a delay in any of the database requests.

Uber Developer Platform

Finally, building the iOS version meant I was able to continue to work with the Uber Developer Platform and the Ride Requests API. I was excited to think about the platform in new ways as I built out the iOS app. Uber is quickly becoming the mesh that connects cities, and the Uber Developer Platform is expanding with new and unique API functionality, including Delivery and Trip Experiences. While Bar Roulette doesn’t utilize all of the available API endpoints, I plan to continue to explore how Bar Roulette or other apps could be improved by utilizing the new functionality provided by the Uber Developer Platform.

The Uber Developer Platform was straightforward to work with and implement. The Uber team provided detailed documentation, and were quick to respond to my questions on StackOverflow and Twitter.

Summary

Bar Roulette launched in the App Store in April 2016 and I’m excited to see how it goes. For me, building Bar Roulette has already been a very rewarding experience because I’ve learned so much about Swift and how to develop a mobile app. My prediction is that the iOS version and the new features will help with user growth and engagement. I’m excited to see if my prediction is right. Hopefully users will enjoy the more robust experience!

Download Bar Roulette from the App Store or visit the Bar Roulette website.

To get updates from the Uber Developer team in the future, follow our publication or follow us on Twitter.

Please tap or click “♥︎” to help to promote this piece to others.

--

--

Tyler Swartz
Uber Developers

product @reddit, and I write about and invest in startups