First, a bit of background.
When the Node Knockout competition was announced several months ago, I signed up immediately; it sounded like a helluvalotta fun and lit a fire for me to learn the ins and outs of Node as quickly as possible. I recruited a couple of my buddies and the contest slipped off my radar and out of my mind.
Days before, though, I was reminded that it was fast approaching! Long story short, I had somehow screwed up our registration, but the gracious folks running the show set up a random-team-name account at the last minute, “Zenith-Workloom“. We set to work right away.
I was the only participant who had experience with Node, but the guys were excited to try. We even had a few geek friends show up when we started, just to see what we were doing and how we were going to do it.
All told, I stayed up for a 36 hour period, crushing against the GitHub, Twitter, Facebook and FourSquare APIs, fussing with relative dates, wrestling with MongoDB… really a lot of work. We found ourselves cutting back on our features list with every passing hour, desperate to get things stable before time expired. There is quite a bit to discuss here, but I’ll save that for a blog post I plan to write later this week.
In the end, we ended up exhausted with relatively solid services and 20% of our desired feature set in the front-end. I emphasize this because there is quite a bit of code running in Node that didn’t “bubble up” to our front-end effectively… for example, I couldn’t get GitHub check-ins to sort nicely with other events before “last call”. This is merely a side-effect of a deadline fast-approaching.
There are some amazing entries in the Node Knockout contest… I mean, incredibly awesome. Here are a few of my favorites:
- Simulchart – http://awesometown.no.de/ – Real-time, embeddable data charting.
- Drop Note – http://done-js.no.de/ – Drop a file into your browser and share it instantly.
- Scrabb.ly – http://scrabb.ly/ – Real-time, addictive Scrabble game, (WOW!)
- CloudQ – http://nko-team-discovery-channel.heroku.com/ – Sandboxed Unit Test runner for GitHub projects.
- Serrano – http://starcraft2destroyedmymarrage.no.de/ – Share DOM events and other information with other users simultaneously.
These guys kicked our ass. But here’s the thing that I take away: I watched folks from these teams on IRC, struggling through issues, getting help, providing it… I mean, the community was so f’ing powerful.
Halfway through I realized I was going to learn 1000% more just looking at winning teams’ source code than I was in the contest. I got excited, and have remained so… and I’m still proud of what my team managed to accomplish, even though we’re not realistically in the running.
Along Comes John Resig
I took issue with the following tweet by Mr. Resig:
Disappointed in the entries to the Node.js Knockout; only a handful of the entries work in non-Chrome/Safari browsers.
Wow… really? It prompted my reply:
My point was fairly straightforward: this wasn’t for production, this was for fun. This was to test the limits of Node.js with stunning, whimsical or powerful ideas. Take away the pressure of “selling something” and just “do something”.
After some retweeting in the node.js hashtag, this reply from Mr. Resig crossed my TweetDeck:
@clintandrewhall Teams that made working, fully-functional, cross-browser applications in 48 hours deserve to win – and get my vote.
The more I’ve thought about it, the more upset his statements have made me.
In Defense of Node Knockout Teams
The Twitter medium is the worst place to debate these kinds of points; I mean, Mr. Resig certainly has more to say that 140 characters allows. And his interpretation of a complete application is probably different than others. But I have to take issue with his tweets on their face…
Look, my team’s entry is cross-browser compatible… but that was by the grace of a limited feature-set. Mr. Resig was actually a judge for our entry, and leveled a very fair, honest critique of our missing features… points of view I share. But I’m going to protest on behalf of those other teams who only supported a limited set.
There were people attempting very complicated, near-impossible feats under a very tight timeframe… and several succeeded! For a judge to focus on the browser when the teams had been focusing on Node just seems so argumentative.
It’s one thing if the knockout had been for a week, or maybe if server code had been locked down early with additional time for front-end. But we’re talking 48 hours here, starting from scratch.
But more importantly, Node Knockout entries are graded as follows, (from http://nodeknockout.com/judging):
Entries will be judged on a 1-5 scale across 4 dimensions:
- Utility – Is the site offering a service you’d use again and again?
- Design – How good does it look and feel to use?
- Innovation – How original is the idea and execution?
- Completeness – How “fully baked” is the site? Are there bugs or dead ends?
First, I concede that judges have every right to pet peeves, sticking points, etc… and we were told to keep the judges in mind when we were working. Still, I would hope that an entry would still be judged on its merits more so than those irritations. And to be fair, where in the criteria above is browser compatibility even mentioned?
Perhaps “completeness” could include cross-browser compatibility… but in this context… should it?
Based on Mr. Resig’s logic from his tweet, had my team completed our feature set in our present level of compatibility, we’d have garnered a 5-star vote from him. That’s great! But is he saying that, of the entries I mentioned above, none deserve five star ratings simply because they don’t work in all browsers? Is my team’s simple effort, to compile data feeds chronologically on one page, full orders of magnitude “better” than those ideas simply because our CSS happens to be cross-browser compatible? I certainly don’t think so… my team didn’t even have JS in the front-end…
Look, I’m well-known for being a progressive-enhancement nazi, swinging the “gotta work everywhere” sword in wide archs… but I make an exception here.
This contest was about doing freakishly cool things in Node in 48 hours, not a browser. Having participated first-hand, and seeing the absolutely amazing things that were done, I am in awe. That’s not even to mention the inspiring, multi-continent community that was flash-created in a 48 hour period. Even better, most teams have pledged to open source their code for all to see.
Yet… that someone, let alone one of the judges, would publicly minimize a team’s accomplishments by focusing on the tiniest, almost out-of-context point saddens me.
I don’t think anyone should be “disappointed” by these entries.
Go Explore and Vote
I encourage all of you reading this, if you haven’t yet, visit the Node Knockout entries page and comment and vote for your favorites. Go and see for yourself what amazing things can be done with 48 hours, an idea and a ton of people willing to help.