Last month, I had a chance to participate in Node Knockout, a 48 hour Node.js hackathon. It lasts 2 days, and teams all over the world compete by trying to build a complete game or web application in 2 days. I haven’t participated in a lot of hackathons in the last few years, but having moved to a full time Node.js gig recently, this was a good opportunity to work on all tiers of an application.
Before the hackathon
By the time I found out about Node Knockout, there were no spots left to register. Around mid October, some more spots opened up, and I was finally able to register.
Yay! Finally signed up for Node Knockout after they opened a few more spots http://t.co/TCkbtJXpxx— Latish (@Latish) October 16, 2015
Now I just need to master NodeJS, come up with a killer idea, a great team and execute.— Latish (@Latish) October 16, 2015
I reached out to a few friends who are interested in NodeJS or are working with it fulltime, but they all had prior commitments. I decided to participate as a single member team. I had 2 application ideas that I was thinking about till the last minute, and eventually decided to go with the less ambitious one. I wanted to make a web application to detect duplicate events in Google Calendar, and delete them. The week before the hackathon was a really busy one at work, so I was not able to do any research till the actual event itself.
I spent most of the first day understanding Google’s Calendar API and setting up the bare skeleton of my web application using NodeJS/Express and the corresponding Grunt tasks. I had one major hiccup while integrating promises using the Q library, where the results were non-intuitive, but things were relatively smooth otherwise. I think I worked about 14-16 hours on Day 1, and by the end of it, my mental status could be summarized with the following tweet.
Having figured out all the basics, I programmed most of the meat of the logic early on day 2, and then integrated bootstrap into the application to make it less ugly. I then tested out different scenarios, and ran into a Google API limitation for Delete requests. I was able to solve this by throttling the requests made. At the end of the day, I made a demo video for the judges, and also demoed my entry to other participants and judges.
Judging and Feedback
It was also very surreal to see the demoes from teams sitting in 4 different continents (and various timezones), and a good reminder of how the internet is a great equalizer. As part of the demo, I got to see entries submitted by other teams, and my submission, while functional, was really plain looking and simple. I was really proud of finishing and shipping what I had aimed for, but it did not stand a chance of winning in any category. The closest I got to any rank was being #9 in the Solo category. I was very impressed with the official judges, who went over our submissions over the next week and left constructive feedback. Most of the people pointed out their disappointment at me using the default Bootstrap theme, and it was a good reminder about me needing to improve my UI/UX chops.
Overall, it was a fun and well organized event to participate in. If I do it again, I think I would like to be part of a team, and also do some research on my project before the event.