Editor's note: Each spring, Big Nerd Ranch hosts an epic 72-hour app-building competition, suitably named Clash of the Coders. We sharpen our technical skills and vie for the Clash trophy to earn ultimate bragging rights. This year the competition kicks off at the end of day on Wednesday, May 1, and runs through Saturday, May 4.
Our wonderful blog editor Tasha asked me to write up a recap of last year's Clash of the Coders contest. And you know what? I've just been dreading it.
I mean, I'm not waking up with night sweats or anything. It's just a blog post, after all. Here's the problem: Chris Stewart and I won last year. We have a comically large trophy to prove it. For the moment, it sits right in front of Chris' desk.
Now, Chris is a pretty quiet guy by nature. I'm not, which is why I run around telling people I'm going to write blog posts. I think both of us would rather the trophy talk for us, though, and let us be quiet. It's bigger than we are, and that affords it a certain reticent, persuasive dignity.
Anyway, I'll start from the beginning.
Here's how our team came together:
Chris and I sit next to each other.
Since Chris had just been hired full time, I knew our team would get the new employee bonus score. Even though I had already worked with him when he was an intern.
A good team only really needs to come up with two creative concepts:
A spiffy team name.
A good idea for a program to write.
We took care of the name first. As the creative dynamo in the team, I demanded that we name ourselves Franklin. My reasoning was straightforward: Why not Franklin? Chris, flummoxed, had no rejoinder.
That taken care of, we set ourselves to the more important problem: what program to write.
I've only ever used one creative process for coming up with ideas: brainstorming. Well, brainstorming followed by prototype iteration, where you come up with a whole bunch of crappy ideas and whittle them down, making them more concrete as you go.
Well, we didn't do that. Instead, every morning Chris would ask me: "Got any ideas for Clash?" And I'd say no.
One day, Chris came into the office and said he had an idea: an Android layout file viewer. You'd edit a layout file on your computer, and our program would automagically detect it, send it over WiFi to a program on your Android device and display it.
In last year's Clash, part of the deal was that you had to use some nifty new tech stack. Two parts of this idea weren't nifty: the Android program, and the automagic detection program (which would need to be in Cocoa). The nifty part would be the autodiscovery networking layer, which would all be written in node.js. Neither of us had written any desktop Cocoa or any appreciable amount of node.js, but we expected those parts to be straightforward, if unfamiliar. The Android part, on the other hand, would be hairy. Android doesn't have an API for loading new layout files at runtime. We'd have to hack it together somehow.
For the Clash itself, we divvied up the work and got going. I worked on the dynamic layout file loading and WiFi discovery (which I just hacked together with UDP multicasting), and Chris worked on pretty much everything else.
From the beginning, we knew that either it was going to work, or it wasn't. Luckily, at midnight the very first night we saw some of the most uncertain pieces of the project start to work. So we never really stressed out about the competition. We got our eight hours of sleep Wednesday and Thursday night, and during the day everything chugged along nicely.
I can't speak for Chris, but the only time I personally really felt anxious was after we were done. We were pretty happy with our project, which we ended up calling Roger. Once I saw Roger in action, I knew it was cool enough that we might win. Which drove me crazy, because I really wanted to.
And we did win. Chris was awarded a nifty Thunderbolt display and a few iPads, if I remember right. I got a piano, which I play just about every day I'm at home.
Who'll win this year? Last year I signed up for a team and planned for the event, all without really thinking about winning or losing; we just went for it. This year, I've waited until the last minute to team up with TJ Usiyan, and the playing field has nearly doubled. What will we make? I have no idea, but win or lose, I know I'm in for a great competition.