Tuesday, July 22, 2014

Awesomeness of a Hackathon

Last weekend (18-19 July) , I experienced my first ever hackathon. A few months ago Shan asked me if I was interested to join the CodeXtremeApps (CXA14) Competition this year. As I had just recently developed a liking for programming and dabbling with the Arduino and Raspberry Pi, I thought to myself why the hell not and along with Manu (a colleague of Shan’s), we were registered as Team Narwhal. We had intermittent ‘discussions’ about the project and even designated lunches to discuss the project we planned on working on; but it wasn’t until a few weeks leading to CXA14 that we discussed what we actually wanted to do.

The plan was to design an image capturing system to let you know what was in your fridge whenever you wanted to know. We thought it was a great idea and went about ordering the parts that we needed. When we finally met up to try out the circuitry and the plans we had for the hackathon, we discovered that the camera Shan had bought was a defective piece and heated up whenever it was plugged into the Arduino (oops!). On that day we came up with a hilarious list of names along with Manu’s lovely wife Manju and finally decided on BreakNeck (ask us why later).
Breakneck- Prototype 1

Fast-forward to the day of the competition. We were to meet at SMU at 2pm to register, so Manu went ahead and registered our team and sat through the briefing. When we reached, we found out that we were to be on lockdown mode after 7pm on Friday until 3pm on Saturday. We were quite shocked, considering none of us were really prepared to stay the night and we didn’t really pay too much attention to the details outlined in the documents sent to us by the organizers (oops again). Once we got over our initial shock, we sat down and explored the different project themes our BreakNeck could fit into. While discussing, Manu had a brilliant idea. He had recently moved houses and had to call Singapore Power to cut out the power at the house. Shan piped in that there are SP staff who come in once in two months to check on the power meter of every single unit and bill them on a pro-rated basis. I of course, had no idea that this even happened and was very surprised that the method was so resource intensive and not accurate.
Thus came about a new idea for BreakNeck- use the image monitoring system to capture snippets of the power meter readings on a regular basis and then upload them to a server which would then be able to read the values! Like seriously, why people hadn’t done this already was beyond me! We quickly arranged for a RasPi camera (Thank You 12 Geeks!) and started cracking. By 7pm we decided the path we were taking and broke down our tasks to satisfy the task at hand. We even had a wish list for stretch goals we wanted to implement. The plan was to have an initial prototype by 9pm. Our camera was working perfectly fine (Shan’s had terrible experiences with killing RasPi cameras), I was in charge of processing the images and getting a reading out of them and Manu was in charge of the server development and creating a pretty interface.


Everything seemed to be going perfectly fine. Shan was able to capture images with the camera; I managed to use SimpleCV to do an Optical Character Recognition of the images we were going to get and Manu had a basic server which was able to display pretty graphs. We had dinner and worked a little more. We had a couple of breaks to go out (luckily the helpers allowed us to go out and get dessert). It was fun to see that there were so many things to learn and so many people who were so focused on getting their things working yet having fun while at it. Around 11pm, I started feeling rather sleepy but kept working nonetheless. Things were still going smoothly although Shan seemed to having a bit of trouble with the Raspberry Pi. As I completed my part of the image processing, I was waiting to receive the images from Shan and we contemplated implementing FTP over the mobile networks. I recall feeling very exhausted and tired and thinking to myself that just a year ago, it didn’t seem too difficult to stay up all night and work on things like a report or watch movies.

As the night stretched on, I could feel my eyelids dropping. There were a couple of people who were dozing on their tables. A couple of friends of ours were well prepared with sleeping bags and went to bed. I saw Manu and Shan working vigorously and felt like I wasn't doing much, so I decided to work on the project some more and play around with mock images of power meters. I started feeling very sleepy and decided to rest my head for a while. When I woke up I noticed an hour had passed. This cycle repeated itself until around 6am in the morning when I finally decided to leave the room. I sat on a bench outside and woke up half an hour later finding myself lying down on said bench. There were a few other people who lay asleep on the nearby benches which made me wonder about the magic of sleep.


In the day session, we decided to move things to the cloud. As Manu set up the web server on Amazon, Shan debugged his camera and GSM connection; I tried implementing the code on the webserver only to realize that it ran a different OS than what I was used to. After a lot of whining from my side, Manu kindly switched to running an OS that I was more familiar with. For the first time in a long time, I encountered a segmentation fault while running my program and I was startled. We eventually managed to get a version of our prototype running and as the judges trickled in to see our set-up I started feeling more nervous.


 Once the judges left, we went around exploring other projects which I must say was rather fun. It’s amazing to see projects people can come up with and implement within 24 hours! Once the judging was completed, we all dispersed and waited to hear about who had been shortlisted for the final round of judging (Update: We got selected with 13 other teams).


So what am I taking back from this experience? Well, I would definitely say that it gave me a sense of accomplishment. I now know that through amazing team work it is possible to achieve goals and come up with a working prototype in 24 hours. I know that I can learn on the fly and do things I once couldn’t imagine myself doing- I hadn’t even thought I was capable of doing something like OCR a few days back. I know that I had an amazing team who were so encouraging and patient even though I was quite annoying at times.

Would I encourage anybody to take part in a hackathon? YES! It was one of the best experiences I have had in a while and I think it’s a great way to learn and achieve things that you weren’t sure you could. Who needs sleep when you know that somewhere down the road you will come up with something that is awesome or atleast something you tried to develop. It’s knowing that even though a prototype doesn’t work, it’s the knowledge you get from it that makes a difference!

So please, if you have a chance to take part in a hackathon or arrange one- DO IT! I was surprised to hear Manu say that he was able to come up with something he’s been planning on working on for a year in 24 hours. If that isn’t the awesomeness of a hackathon, I don’t know what is!




No comments:

Post a Comment