Report from the Facebook Camp Hackathon
This weekend, Facebook held their first international Camp Hackathon event for students from the University of Toronto (U of T) and University of Waterloo (UW). For a full 24 hours from 5:00 PM on January 21 to January 22, over 200 students (including a full coach bus of students from U of T) occupied UW's Student Life Center, designing, developing, and hacking fantastic new software. The goal of the hackathon was completely open-ended. While there had been rumors of a development theme for teams to work on, at the beginning of the event the organizer announced that teams should work on anything they wanted, and focus on learning new skills and developing "something awesome".
The Facebook employees running the event did a great job of keeping the students engaged by providing meals (breakfast, lunch, dinner, and a midnight snack), knowledge (they flew in Rasmus Lerdorf, the inventor of PHP) raffling off prizes every hour, and taking care of issues with power and internet service. Though all the facilities issues were eventually sorted out, the event did get off to a rocky start as the chained and overloaded power bars snaking across the floor of the SLC tripped the circuit breakers numerous times. But the teams took the issues in stride - with most teams working on laptops, the power issues were generally a minor inconvenience.
The food provided by the organizers was excellent. Dinner Friday was chinese, a tradition according to the Facebook team. Later in the night, trays of chicken wings from local favourite Morty's were brought in, helping to fend off those middle-of-the-night hunger pangs. Breakfast the next morning was bagels and croissants with jam, and lunch soon afterwards came from Pizza Pizza.
Around 3PM, hacking stopped and the development teams were asked to give a 2-minute overview of their project to the other teams. Approximately 50 teams gave a presentation, and the collective sum of work produced over those 24 hours is breathtaking (for a complete list of projects, check out the event's Facebook page). Project themes were varied, and included games, academic research assistants, Facebook addons, and more. Some of the highlights included:
- A Windows app that integrated with the Explorer shell to make a user's Facebook photo gallery show up as a folder on their hard drive.(This project was also selected by the Facebook employees as the best project.)
- A superbly well polished web app for collaborative to-do lists. While the concept was simple, the execution was brilliant, and looked like it should have taken a week or more to develop, not just 24 hours. (Voted 3rd best by the Facebook engineers.)
- An HTML 5 and jquery based paint program that supported animations.
- An application for automatically generating music from an image. Surprisingly, this project was not well recieved by the crowd - the idea was met with laughter from many of the other developers and Facebook team, and certainly called into question the idea that teams should work on anything they wanted to.
- A web app for suggesting something interesting to do based on the user's available free time, the time of day, and the maximum distance they were willing to travel.
For my part, I teamed up with a pair of first-year software engineers and developed a multi-platform OpenGL game called Orbits. Our game was somewhat of a cross between Angry Birds and Breakout, requiring the players to launch a projectile and destroy a target, but with the added twist of planetary gravity wells that the projectile needed to "slingshot" through.
Lessons Learned
Hackathons alread are a lot of fun, but I felt that the Facebook Camp Hackathon did a lot of things really well, and has given me some ideas for running future hackathon events to enhance the experience.
The Good:
- Dedicate staff to running the event. Staff should be responsible for making sure everyone has power and internet access, and for brining in the food and drinks.
- Food and drinks, ideally, should be provided for free to the participants. One reason is because it adds an additional motivational factor to encourage people to keep working (when it's 3:30 AM and nothing is working, it can be pretty hard to stay motivated). The other reason is because the participants don't have to spend any time thinking about what they're going to eat, or how they're going to pay for it. Providing lots of free food helps the participants stay on task.
- Teamwork produces better results and keeps people motivated. The Facebook team did a great job of trying to get everyone working on a team with others, and I felt that the quality of work seemed much more impressive than it would have been if everyone was working alone. That said, there shouldn't be pressure to work on a team for those who just want to quietly sit and hack.
- Set aside some time at the end for short project presentations. I really enjoyed seeing what other people were working on and really had a chance to appreciate how much work was done, and how great it was.
- Bring in an expert (or two). While I didn't do any PHP development, knowing that the inventor of PHP was standing over my shoulder was an interesting experience, and was likely invaluable to those teams who needed some of Lerdorf's knowledge.
The Bad:
- If you say "work on anything you want", don't be surprised to get some hacks that are pretty far out there. These teams should be embraced and welcomed, and not made to feel like an outsider with laughter and mockery. Not cool.
The Mixed Bag:
- Music. I like to work with music, but it needs to be quiet enough that I can tune out annoying tunes, and there needs to be enough that I don't have to listen to the same song 3 or 4 times. Providing music means we don't need to break out the headphones, which somewhat hamper the social side of these hackathons.