11436 SSO

AngelHack: 5 Hackers, 5 Stages of Hackathon Psyche!

Jun 28, 2012

Last weekend, we tried our hand as competitors at AngelHack, an ambitious hackathon conducted simultaneously in four cities. We had a bunch of questions we wanted to answer, including:

- How hard is it to build an app in a weekend? What can we actually build?

- What can we learn about the current state of application development?

On Thursday, realizing that the weekend was almost here, we assembled a team of five motivated hackers from among our ranks who were willing to give up their weekend to see what sort of apps we could build on top of the latest and greatest developer tools from ourselves and others in this space. We began by outlining what we wanted to get out of the event in broad terms, such as "build a mobile app" as well as various technologies we wanted to try, such as jQuery Mobile, PhoneGap, and of course, our very own Usergrid. All those loose goals began to point in a direction, so we began to brainstorm ideas.

We settled on an iOS app, “Foursquire”, a Social-Local-Mobile game of "geo-jousting" built on top of the Foursquare API.

The rules of the event were clear that in 24 hours we had to build and demo an app from a "fresh start"—no code or assets could be created before 2pm on Saturday. Those rules also encouraged planning. So upon arriving at AOL's awesome west coast headquarters, we spent the first four hours setting up our workspace, whiteboarding flows, and learning about the frameworks and tools we were going to use. Suddenly, it was 2pm, and we kicked it into gear.

What did we build?
At the end of Saturday, we had worked out the game mechanics and settled on what we thought was a minimum-viable demo. (We were wrong, and should have cut the number of screens in half.) We had basic graphic styles defined, and Matt working until 2:30 a.m. rendering out high-fidelity screens for every step of the flow. Having that art resource proved invaluable - it left nothing to chance about what we needed to build, and we had production quality art that we could use to cut our video demo.

On the backend, Tim and Ed had proven out the "connect with Foursquare" using GitHub hosted pages, Heroku, and tying all that data into our Usergrid mobile backend. They even had Foursquare calling our application with a push API for checkins of authorized users. Everything was looking good.

During the weekend, we went through the five stages of hackathon psyche: excitement, planning, panic, relief, demos.

What did we learn about the current state of app development?
There are lots of cool services, and lots of features that are available as services (for example, Urban Airship). There are LOTS of moving parts still in mobile development. There’s a plethora of awesome choices, but we found we were using the google to figure out how to piece things together.

Social networks that use standard OAuth 2 are awesome. Kudos to Foursquare for a top notch implementation and some of the best OAuth docs we've seen—concise, pragmatic terms that let you figure out how to use it quickly.

PhoneGap is about the fastest way to get a native (hybrid) app built, but there are still a lot of rough edges.  For all the time saved by not having to deal with Objective-C, we felt that we were losing time struggling with the lack of good tools for debugging JavaScript on the device.  If we’d stuck with native code, we wouldn’t have been able to get as much done, but we’d have had an easier time debugging.

Understandably, it might be a bit of a moving target, but we were disappointed at the lack of up-to-date sample code on the Web for mobile OAuth flows.  Looks like most API providers these days are leaving building a mobile OAuth flow as an exercise to the reader and the frameworks like PhoneGap provide some basic mechanisms but no one has stepped up and owns the problem for the developer.

Heroku is good place to put code that needs to run in the cloud. We were lucky to have a good Ruby code on the team, but the payoff was that using API services from Foursquare, Urban Airship, and Apigee Usergrid meant that our custom backend app needed only about 100 lines of code.

Not having to use ActiveRecord rocked!

The future of apps as we see it, is smart clients connected to a lean backend via a clean API.
jQuery Mobile is a strong up-and-comer. We were pleasantly surprised by at how far it's come in the last year.

One final note, kudos to the organizers and AOL for providing a great location to work and to the Ground-up Cafe inside the AOL building for staying open all weekend. Blue Bottle Coffee should always be available at hackathons.

Scaling Microservices