This past weekend, with help from the folks at Twilio and the Syracuse Student Sandbox, I was fortunate to have the opportunity to organize a Twilio hackathon. There was one rule: Twilio had to be used for at least one feature. Everything else was fair game. The hackathon kicked off around 11 AM and ran until 9 PM. In other words, ten hours of hardcore coding, beer, and awesome people.
My friend, Ross Lazerowitz and I had been flirting with an idea that would allow users to send an SMS to query a database to learn more about the beers they’re drinking (i.e. descriptions, ingredients, alcohol by volume, etc). We love trying new beers, and believed a simple tool like this would be quite useful. Luckily, we stumbled across the BreweryDB API which allows developers to interface with a vast collection of beer data.
How we built it
First, I stood up our cloud infrastructure on Heroku for the Rails application, and Ross and Carter began playing around with the BreweryDB API. Once our Heroku instance was live, I started doing frontend work and stood up a client to talk to the Twilio API. Shortly there after, I was able to pull the parameters from the Body of SMS messages our Twilio number would receive. By this time, Ross and Carter had already mastered interfacing with the BreweryDB API (I mentioned they were smart dudes, right?).
Next, it was all about duct taping the way I had set up Twilio with what Ross and Carter were doing with BreweryDB. Our code was ugly. Really ugly. But it was working (sort of).
Then it was all about boundary checking and validations. This is where Carter excelled. I have a Computer Science degree, but I suck at that kind of thing. Carter is excellent, and had roughly 70% of our use cases accounted for in an hour or so. It was exciting to watch Ross and Carter collaborate on this. Ross would hack away and do testing in the IRB shell, while simultaneously maintaining a fluid dialogue with Carter regarding what needed fixing and thoughts on how to fix it.
In the final hours of the hackathon, we tightened up the front end design (thank you Twitter Bootstrap), and Ross and I went back and forth making our final pushes and pulls to and from Github. Our workflow certainly wasn’t the best (we had a lot of merge conflicts, but we were able to grind through them). I’d encourage others to decide on a proper workflow before hacking away like crazed savages.
Within five minutes of the deadline, we submitted our final version of the application to the hackathon judge, Jon Gottfried, an extremely talented developer evangelist from Twilio.
Well, unfortunately our BeerText.Us application didn’t win the hackathon, but we had a blast and learned a lot from the whole experience.
On Monday, we decided to submit the application to beerit (i.e. the reddit page for beer lovers [r/beer]) to get some feedback. Within minutes, we were getting thousands of hits, and making hundreds upon hundreds of SMS send/receive requests to Twilio. What was even more exciting was the feedback we were getting from users. The service had a lot of problems at first (i.e. error handling, SMSs being received out of order, duplicate responses, etc). Fortunately for us, the beerit community was quick to help us identify most of these issues and offer suggestions regarding how we should address them.
Next, we submitted the application to Hacker News. Again, we got awesome feedback from folks. Clear patterns regarding issues users were having and what they wanted to see in the service were becoming evident.
After going through all of the feedback from commenters, we pulled a late night and made a number of updates to the service. Before we went to sleep, we were confident it was much improved.
When I woke up, I went through the Twilio and Heroku logs, glanced at Google analytics, and noticed a significant dip in traffic (which was to be expected). Then, I got a call from Ross. “Dude, we’re on Lifehacker. That’s my favorite site!”
Following the Lifehacker post, traffic skyrocketed. It more than tripled what we were seeing from the beerit post at its peak. Since then, it has spread to a number of other sites, and traffic continues to rise.
We’re trying to iterate as quickly as possible.
As you can imagine, we’re battling all sorts of issues. We’re doing our best to put these fires out as quickly as possible (and learning a ridiculous amount along the way)! We really appreciate everyone’s feedback, and are excited to offer a service to users that will help them pick and choose new beers to try!
Thanks to the folks at Twilio.
We really owe a great deal of thanks to the folks at Twilio for offering such an awesome service! They’ve been incredibly generous and altruistic. Thanks Twilio team! We love your service.
Sincerest thanks to Jack Aboutboul, our primary Twilio POC and a superstar developer evangelist!