Node Ice’s Node Knockout Mostly Non-technical Postmortem

This past weekend, I participated in the 48-hour Node Knockout competition with @calebcornman, @endangeredmassa, and @kfalter (if you don’t know, I am @xonev). It was quite the experience. We created the first iteration of what I think is a pretty cool commenting system called markover (feel free to click on that link, vote, and help us win the competition).

The reason I (and the rest of the team) think it is better than most commenting systems out there is that it is better than most of the commenting systems out there. Our comments are presented to you in real time alongside whatever article you are reading. Not only that, but every comment can be associated with specific parts of the article (including text and even images).

Of course, due to the fact that it was a 48-hour competition, we aren’t completely satisfied with all that we did, but I think that we accomplished a good amount in the time we had. Following is the story of what we did and how we did it.

It all started on a dark summer night (as nights are wont to be) at the Hashrocket office in downtown Chicago. Three programmers and a designer gathered to beget the greatest Node Knockout application mankind had ever seen! The only foreseeable problem was that they all weren’t in the same boat as to what exactly this application was going to be. Did they have ideas? Of course. Were some of the ideas pretty good? Absolutely. Did some of them already exist in superior forms to what these brave creators thought could be accomplished in 48 hours? Most definitely. (I think all of those were mine.) But the real problem was they had less than two hours until the competition started and they hadn’t even hashed out any of the major implementation details. Nevertheless, undaunted, they selected the idea which perched atop the pile and set forth (errr, sat down) to build a better tomorrow for commenters everywhere.

The first night everyone was relatively fresh and the building began at a breakneck pace. The fearless paragons of application construction split up tasks, identifying potential problem areas and tackling those first. Of course, @kfalter began design of the site, @calebcornamn decided he would tackle authentication (which turned out to be much more difficult than any of them expected), @endangeredmassa volunteered to battle with setting up the back-end, and @xonev got stuck with the UI coding (which, to his credit, he only complained about a little bit). The first night went swimmingly – the API for creation and retrieval of comments began to take shape, mock-ups of the interface were created, Facebook and Twitter authentication were investigated, and a silly little commenting pop-up dialog was formed. The courageous band even got some sleep.

The next day, the pace continued, but, as the day wore on, the group began to wear around the edges. @endangeredmassa mercilessly revealed bugs in @xonev’s code, @calebcornman slowly came to the realization that neither Facebook nor Twitter easily fit the needs of the application’s authentication, @xonev’s jokes began to make less and less sense (which is pretty bad considering how much sense they were making at the beginning), and @kfalter continued on merrily designing, unconcerned by the obvious downturn events were taking.

On the third and final day, everything started to come together. Everyone except @xonev was relatively fresh due to getting a more-or-less reasonable amount of sleep the second night. @xonev had only taken a half-hour nap. Around noon, he began to descend into delirium, singing snatches of Michael Jackson songs and often forgetting what he had been working on. Fortunately, the core of what he had been working on was already implemented and the others were able to pick up the slack. In the final hours, @kfalter, @endangeredmassa, and @calebcornman all worked furiously to put finishing touches on the application – @kfalter putting in place the demo and “splash” pages and @endangeredmassa and @calebcornman fighting with deployment issues. Meanwhile, @xonev was either wandering around from computer to computer, barely able to think straight enough to ask what he should be working on or threatening to push some nonexistent code that would supposedly break everything.

Fortunately, despite @xonev’s threats, everything came together in a reasonably working order. Granted, there were some desired features that were missing from the submission – things such as comment threads, closer tying of comments to context (highlighting the actual text commented on instead of just the section commented on), and IE and Firefox support (Firefox was working at some points throughout the weekend, but @xonev was too useless to remember to check it out toward the end of the competition) – but there is clearly potential displayed in what was submitted and the possibilities of future development.

So that’s the story of what happened with our Node Knockout experience this past weekend. I learned that sleep is important – I really was useless at the end. I should have taken naps more frequently or perhaps dedicated a chunk of time here or there for sleeping. I think that going with an hour-and-a-half nap every so often would have been beneficial. That way I could’ve gotten a full sleep cycle in, which I am sure would have assisted with refreshing the ol’ noggin. I also think that we should have spent more time before the competition going over exactly what we were going to attempt to do and how we were going to attempt it. I’m actually somewhat surprised at how well it turned out considering the amount of planning that occurred beforehand. I think it speaks to the flexibility and skills of the team.

In conclusion, I just want to say that I would recommend this type of competition to anyone who likes to build stuff. It was a ton of fun to work with a few other people to put together an application in a frighteningly short amount of time. It was also great to build something that just might turn into something bigger in the (hopefully near) future.

Disclaimer: any and all opinions, jokes, and facts included in this blog post are those held, told, and perceived (respectively) by @xonev and do not necessarily reflect the opinions, sense of humor, or interpretation of events of anyone else mentioned or not mentioned in this blog post.