CodeMash 2010 wrap-up

CodeMash continues to be one of my favorite conferences to speak at and attend, both because of its convenient location — the Kalahari indoor waterpark in Sandusky, OH, just a four-hour drive from Grand Rapids — and because of its unconventional mix of topics. The concept is to bring together a variety of development styles and platforms: .NET/Java/scripting, server/client/mobile, open-source/commercial, etc. In the last few years, there’s been an increasing Mac/iPhone presence, maybe not enough to count as its own track, but certainly enough to draw attendees from some of the other technologies. And that’s the point of CodeMash: sharing ideas, and seeing what the other guys and girls are up to.

Aside: based on multiple trips to CodeMash, WWDC, JavaOne, and miscellaneous other conferences, I’m struck by how the Microsoft technologies attract far more female developers than Java or Mac/iPhone do, with the open-source scripting languages (Ruby, PHP, etc.) a distant second. Absolutely no idea what’s up with that, but suffice to say if you see a woman at CodeMash, and she’s not Dianne, then she’s quite likely a .NET developer.

This year, three of the four members of the Java Posse were in attendance at CodeMash, doing an atypically-listless panel on Wednesday night, and a bunch of sessions. I felt I should go see all my friends’ sessions, so I went to Dick Wall’s on “Funky Java” and Scala, Carl Quinn’s on tools, and Joe Nuxoll’s on Photoshop for engineers. I came away from these interested in Dick’s company’s DNA science, reminded of Hudson’s value to well-managed teams, and sadly weary of Photoshop bling and what it takes to achieve it in code. Maybe I’m just burned out by the App Store shininess arms race.

I also assisted Daniel Steinberg with his 4-hour Cocoa tutorial, built around a big example project that he wisely saved off as 20 “stages” that attendees could download and review. Daniel also did a 1-hour Cocoa session which served as outreach to developers looking at the Mac platform and not yet ready to jump in.

Attending friends’ sessions filled up most of my dance card, but I did hit a few other things. Probably the most valuable one I went to was Jim Weirich’s “Source Control for People Who Don’t Like Source Control”. The gist of this was to present the design of a hypothetical source control system with modern features and clever ideas… that turns out to be Git. Given that I have a natural aversion to anything loudly and obnoxiously touted by the Linux community as superior (usually based only on the fact that it is from the Linux community), I’ve never really given Git a serious chance, and this was an eye-opener. Git may, indeed, not suck. FWIW, his talk is available as a Pragmatic Screencast.

As for my own talks, I did a half-day iPhone tutorial that ditched the slides entirely and worked entirely from Xcode. It’s a sensible, hands-on approach that I’ll be using from now on. I did three projects: a trivial web browser, a tab-based collection of converters (since those are so damn popular in the App Store), and a conference session browser (as a navigation app). I chose these because of a conscious desire to focus on the repeated creation of view controller classes and their corresponding GUIs, which is the bread-and-butter of iPhone development. It’s good exercise to really get used to creating views in IB, wiring everything up, setting the File’s Owner class, etc. Lots of beginner problems come from missing connections, particularly VCs that aren’t wired to views, so I thought it would be good pedagogy to focus on that stuff first, even at the expense of rhapsodizing about Obj-C or covering more iPhone frameworks.

I also did a session on iPhone tricks and tips that was a mixed bag: I pulled it together kind of late, so some of the media tips were kind of pedestrian (like setting your audio session category to adjust mixing and ring/silent behavior). Still, there were a couple wows worth remembering, specifically using multiple targets to build “lite” and “full” versions, and using keychain to persist data in a way that survives wipes. Slides here

The session I think I was happiest with was “Oh Crap! I Forgot (Or Never Learned) C!” This was actually the last gasp of a book I was writing last year called Just Enough C To Program the iPhone, a language book that used the iPhone SDK as a workbench. The idea of the book was to help the scripters and Flash developers who got lost in the pointer stuff in our iPhone book, as well as first-time programmers who wanted to develop iPhone apps right away, even if they had never programmed before. In short, it would serve as the prerequisites for our, or anyone else’s, iPhone book. But it’s not happening: it’s one of those projects where everything was fine until it wasn’t.

Still, I sometimes find I enjoy the directness, the concreteness of programming in C.

So that’s something I tried to bring out in this presentation: not just that you might have to use C for some reason, like calling into native code from your higher-level language, but that C’s performance, popularity, and even its primitiveness are traits to be admired and enjoyed. The last third of it really got into the traditional C “hard parts”: pointers, malloc()/free(), pass-by-value, arrays as syntactic sugar over pointers, when struct members take the dot versus the arrow operator, memory math, etc. Slides here.

The iPhone tutorial is a consistent big draw, but I just might propose a half-day “C re-education camp” tutorial for next year, to fully immerse attendees in the C way. Maybe with some OpenGL (which is called from C) so it’s not all about the command line. Any takers?

Comment (1)

  1. C refresher following by iPhone dev? I’m in! That is if I’m not across the all and unable to particpate in all the wonderful precompiler goodness myself next year! 🙂 ~Leon

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.