This roundup comes a little bit late (by 2 weeks) because I’ve been busy moving all my stuff back into my apartment. A couple weeks ago I attended a hackathon at Box’s headquarters. The hackathon was great; free delicious food (Chicken Tikka Masala wraps), high profile speakers (CEO of Yammer), and a great work environment (except for those really hard chairs that were hard to sit in for durations of more than an hour).
The event
I haven’t been to many hackathons, but when I attend I usually go with friends that I know and am comfortable working with. This time, however, nobody around was available to go. In retrospect, I’m glad I didn’t go with anyone. Going alone served as that extra bit of motivation to go meet and greet others more openly.
There was a huge a variety people there: a few juniors and seniors were still in high school, some college students from across the world (Singapore and Carnegie Mellon) were relaxing from their internships, and even a few full-time software engineers (I could tell by their gray hairs) were trying their hand at the hackathon’s grand prize.
My project was essentially the Mac OSX’s AirDrop ported to a web application with some minor differences. AirDrop provided the user with the ability to share files with another Mac user via a wireless/wired network.
However, AirDrop has a few gnawing stipulations:
- Doesn’t work with Windows or Linux
- Can’t share with people on different subnets and/or networks
- Can’t share with a group of people
Drop Channel is network agnostic; it only cares about your physical location. The canvas provides an area for users to add files to share to anyone within a 50 meter radius. The canvas can get cluttered if many files are being shared, so channels are used for de-cluttering the visual drop space. Channels are labeled by different colors.
Files, as well as file placement on the canvas, are synced with all users who visit the website. To do this, I used Firebase to synchronize everything. Firebase is a backend that makes building real-time apps stupid-easy; it essentially synchronizes JSON data on all clients painlessly.
For handling the files being uploaded, I used Filepicker.io. It is by far the easiest API I have ever used for file management. I included a total of 2 lines of code to handle all file upload interactions (which includes drag and drop file handling, Dropbox, Facebook, and a host of many ways to upload data).
You can check it out here and the source is on my github account.
I didn’t end up winning any prizes from the event sponsors, but made a cool app that I’ve been using frequently myself and made a few friends. Can’t wait until another one!