Facebook Hackathon Finals Post-Mortem

FB panorama

Last week my friends and I had the pleasure of flying up to Facebook HQ to represent UCLA in the Facebook College Hackathon Finals along with 17 other teams, including one from Brazil and one from Ukraine. The highlights included a campus tour from Chuckr, a Q&A with Mike Shaver, team-by-team check-ins with Zuck, lots of feedback from interested Facebook engineers, sweet backpacks, a great workspace, and about ten times more food and drinks than were strictly necessary for survival over a 24-hour period. We didn’t win, but our hack was solid in concept and code (if less crowd-pleasing than our previous one) and I’m proud of what we accomplished.

We built Pond, a web app that plays the best music for the people you’re with. We envisioned a service that plays a mix of tunes that everyone in the room would enjoy with absolutely no playlist-making or dial-twiddling required. This is a real need we have and a real gap in the music streaming space: Pandora has the DJ thing down but doesn’t want anything to do with your social connections, and Spotify and Rdio know who your friends are but pretty much only let you see what they’re listening to at the moment. Pond does things differently by synthesizing data from the Facebook Open Graph and the Echonest music intelligence platform in a way that generates mixes that contain music you and your friends want to hear, arranged thoughfully based on the properties of that music.

Pond

Pond’s UX is dead simple: select some friends, let it think for a minute, and you’re presented with a beautiful visualization of a socially- and musically-informed song similarity graph. The first song starts playing immediately, and the app will traverse through the graph for as long as you let it, but you can also select a new node at any time if you want to change up the mood of the music. Is Beach House too low-energy for your apartment party? Point Pond to your favorite Macklemore song and it’ll understand that your intent was to inject some excitement. Rather than describe in excruciating detail how it’s all put together, I’ll just give you our tech stack alphabet soup: EC2, Redis, Python (Flask/Celery/Numpy), Node.js, and D3.js. The music playback is powered by Rdio.

After pretty much 24 hours of straight coding, we were done. Pond solved our real-world problem, looked nice, and performed well. The Facebook engineers seemed pleasantly surprised that we delivered on our promise to make a novel social music app that didn’t suck. As our team’s backend guy I had delivered a JSON API that was reasonably well-designed and inherently scalable and I more or less successfully reconciled our data pipeline’s need to have hundreds of HTTP requests in flight at once with the rate limits and other restrictions enforced by Facebook and The Echonest. My teammates solved similarly challenging problems such as simultaneously maintaining the state of a fairly big chunk of D3 code and the Rdio web playback API and dealing with all sorts of third-party authentication and authorization issues.

Where we could have done better was in reminding ourselves of what constitutes a great hackathon demo. Above all, a hack must provide instant feedback that delights its users. That’s how we won the Facebook hackathon at UCLA last spring, but on the seriousness scale Pond is a little closer to “proto-Minimum Viable Product” than “hack.” It doesn’t even feel right to call it a hack; there were most definitely some hacks in the code, but so much time was spent on business logic that would never really be used and the concept didn’t have that off-the-wall craziness factor that makes everyone in the demo audience smile. But truth be told, I’ll never forget stumbling through our pitch to Zuck when he stopped by our team’s tables.

I want to thank Facebook University Recruiting for showing us a great time. We had a lot of fun. Thanks also to our contacts at The Echonest and Rdio for getting us alpha access and upping rate limits in literally the 11th hour, and to the various Facebook engineers who took an interest in what we were making. A shout-out is due to Khan Academy’s Jace Kohlmeier for intoducing me to the fascinating world of recommender systems. And the biggest thanks of all go to Samir Mody, Angela Navarro, and Prasanth Veerina, the other ¾ths of Team Out and About. Win or lose, I wouldn’t want to hack with anyone else.