I spent most of last week at CodeMash in Sandusky, Ohio. I felt a little foolhardy setting out on the drive during the worst part of a snowstorm, but there was no way I wanted to be late and miss out on anything.
Now in its fifth year, CodeMash is a language-agnostic, polyglot-friendly software development conference that aims to expand participants' minds by opening them to new platforms and technologies that they hadn't been exposed to. There's a lot of .NET and Java, a fair amount of Ruby, a mix of web and desktop and mobile (iOS, Android, and even Windows Phone 7 were well-represented), and if you look hard enough there are even some Python talks. There seemed to be a lot of interest in Scala as well. All are welcome--the official anti-discrimination statement even covers your choice OS and text editor!
CodeMash features a "Precompiler" day much like the PyCon tutorial days, with four-hour sessions that allow deep dives and intense focus.
In the morning, I attended the introductory iOS development session, a fast-paced "type-along" that walks through the creation of a simple iPhone app and some basic tricks. I've been a Mac user for years, but since I'm mostly focused on Python and the web, I've never even cracked open Xcode, nor really spent more than a few moments glancing at Objective C code, so this was a pretty rewarding experience for me. I will say, however, that spending four hours in Objective C makes me really appreciate exactly how much Python has spoiled me--Python is so clean and readable, and Objective C is a twisted nightmare by comparison. (You have to wrap square brackets around method calls? Seriously??) But the session was fun, so I had a great time and learned a lot.
I spent the afternoon in Jim Weirich's excellent "Git Immersion" session. The first hour was a Powerpoint-driven thought experiment that began with the question, "How would you build a version control system?" Starting with the idea of taking a snapshot/backup of the codebase, Jim carefully layered on one concept after another, gradually and organically building up the pieces until we had arrived at a beautiful, powerful, and elegant system, and suddenly we understood git, in a natural, logical, "of course that's how it should be" way. Really a profound moment. Even rebase made sense! The next portion of the class was a self-paced series of exercises that I enjoyed working through, occasionally sharing my lightbulb moments with my neighbors. Lots of "aha!" and "oh, that's cool" murmurs. The session wrapped up with a quick discussion of some of the more advanced features like bisect and reflog, and I walked out feeling great, really turned on and excited to use this powerful tool.
The next couple of days were, quite honestly, a little bit of a letdown after the engrossing Precompiler activities. I got the feeling that there was the same content-to-talk ratio regardless of the length of the talk. Then again, it's possible that I just picked a bunch of losers, which seems consistent with my experiences picking checkout lines. The keynotes were kind of lackluster as well, though apparently I missed the good one while escaping the long lunch line for other arrangements.
The stand-out talks that I attended were Jon Stahl's "Agile From the Top Down" (about how your senior management should be doing Agile too), Joe Nuxoll's "Rules for Good UX Design" (which ought to be required if you're building, well, anything), Richard Harding's "Celery: Harnessing the Power of RabbitMQ" (a welcome burst of manic energy and humor at the end of a draining three days of learning), and Gary Bernhardt's "A Modern Open Source Development Environment" (Gary's talks are always a treat).
The "Mobile Smackdown" session was a fun idea as well; three devs--representing iPhone, Windows Phone 7, and Android--gave competetive walkthroughs of building a basic Twitter client in 15 minutes. While the iPhone's Objective C code was clearly the ugliest looking code, I noted with some interest that it looked like the Windows Phone 7 dev hardcoded some things that the iPhone didn't, and that the Android guy didn't quite get done in time. (In fairness to the iPhone, The giant pile of Windows Phone 7 XML also made me want to puke pretty badly.) Plans are already afoot for holding a three-way simultaneous coding duel in the plenary space next year.
CodeMash also seems to be a pretty swell place for social interaction--open spaces were buzzing, folks were meeting, and (I hear) that parties were pretty crazy. I had great fun playing mini-golf and Guitar Hero with coworkers. I mostly stayed away from the late-night party scene, opting on Tuesday night to write show notes for From Python Import Podcast and on Wednesday and Thursday to take in the band and awesome jam session. We were graced by the awesome presence of The Womack Family Band, who did a phenomenal job of not only kicking ass, but incorporating musically-oriented conferencegoers into the act--witness Matt "Snowdog" Gibberman playing drums on "Back in the USSR"! I was pretty happy to pick up their CD and get autographs.
Overall, CodeMash was great, well worth the treacherous, snowy drive, and though I wish I could have done even more Precompiler sessions, I'm already looking forward to next year.