Smoking with Sinatra – A Case Study

We didn’t have as much time as we would’ve liked to build the first ArtPrize iPhone app. But when Karlin and I pulled our stools up to the whiskey bar of short deadlines and high expectations, Sinatra bought us a drink.

During development of the native iOS app, we were architecting a REST API that would provide us with artist information, a means to vote, authenticate users, and determine the current status of the event (week 1 voting, top 10 voting, etc.). Since production development on the API had yet to begin, we turned to Sinatra for a quick, yet clean, DSL that gave us a deployed running server that the first build of our app could talk to.

In less than half a day, we had a Sinatra app running and deployed remotely that would support ArtPrize logins and event status. Later we added detailed artist info, venue info and voting. Instead of using a database, managing migrations and persistent test data, we stored all data in memory using Ruby hashes and arrays. Every new deploy or restart automatically reset all of our test data. This made it very easy to tweak the API, make a new build of the mobile app, and get everyone testing again as quickly as possible.

Though I haven’t been directly involved since the first year, Atomic Object has continued to update and support the iPhone ArtPrize app each year, as well as creating an Android app. I was happy to see our little (~500 lines) sinatra mock API server is still maintained, and used for testing.

Thanks for the whiskey, Sinatra.