But oh my, who those people are. If we were talking about your average crowd of slack-jawed, too-much-TV-watching, baggy-pants-wearing, Blackberry-wielding gum chewers, I would have taken a pass. But the attendees at this conference are, for lack of a better phrase, my people.
No, it’s better than that. These are the people I want to be. For the rest of the year, I’m merely yearning to write Cocoa while I’m buried in building web sites.
So while I inwardly cringe at the thought of another C4, I go anyway: this is the place where I gather the confidence and inspiration to be one of them. And it’s damned important to me.
I’ll tell you right up front: this was my third C4, and it was the best one yet. Herein, my highlights from this C4, both of the talks I liked, and the moments that stayed with me.
Dave Dribin’s talk on unit testing was an eye opener. He introduced me to the concept of “Test-Driven Development”. This is the notion that you write your code with those tests at the very heart of what you do. Write the test for what you want your code to do, then write the code such that it passes the test. That might sound crazy, but it seems to work. You end up with what I feel is the surest sign of good, maintainable code: small modules. It’s the Ruby on Rails approach, and I’m already comfortable there (disclaimer: I still haven’t cracked unit testing in Rails. I know!). Even if I don’t use this right away with Cocoa, this is going to influence the way I look at coding. Bravo, Dave.
Michael Lopp stood up at the front of the room, and then I was told that this was @rands. Jesus Christ! I had no idea that he was some kind of alter-ego. I’ve been reading his blog postings and Twitter stream for years, and now, at last, I learn that this incredibly cerebral manager of engineers is an Apple employee. True to form, I’m impressed by his energy, and his ever-so-human approach to dealing with programmers. I’d always felt he lived in a different world than I, since I’m a one-man show, and he talks so much about managing people. But this presentation was different: it taught me about how I need to deep dive on my specific expertise, and move the curve of a project’s lifetime. From dealing with the scary parts mid-stream, to getting them over with sooner. Talking shit is knowing shit: that’s what I took away. Thanks, @rands.
Just before he went up on stage, I had the pleasure of sitting beside Patrick Thompson for lunch. I said next to nothing while he argued with Louis Gerbarg about really deep programming language issues. He’s very young, but obviously flush with confidence in his areas of expertise. When he began his talk, I was afraid most of it would fly over my head. But Patrick’s discussion of MacRuby was surprisingly cogent, and incredibly persuasive. To be frank, I have this prejudice against non-Objective-C approaches to building Mac applications. It’s apparently groundless: Patrick’s summary of the advantages of the Ruby language over ObjC were very clear, and shown in a way that made it clear to me as well as the developers in the room.
Still, I’m probably going to hold off for now. I’m focused on an iPhone project, and MacRuby, despite its thorough implementation, remains bound to desktop applications. But there’s no question that Patrick’s presentation made me really stop and think; I’m going to keep an eye on this one for some time to come.
It’s possible that I got more out of Peter Wayner’s talk than most others in the room. His topic was “translucent databases”, a very compelling idea that suggests that web sites loosen up on their security, and while perhaps not handing out anyone’s data, don’t go to extreme measures to protect it. Instead, with the use of one-way hashing techniques and public key cryptography, you can put so-called sensitive data right there in your database, and nobody will ever be able to decipher it. He used an example of a pharmacy, which showed drugs purchased and dosage information, but hashed out the names. That data could still be useful to marketers, for example, but won’t give out any personally identifiable information. Later, when you want to recover that data for the customer, they can provide their name and password: the same hashing algorithm will allow you to match to the records already in the system. I’m not security nut, but this strikes me as a very secure system, without having to go to the expense of physically protecting a clear text database. A lot to think about there.
So much for the big talks that stuck. The feature that really took off were the Blitz Talks, short five-minute speeches gifted out by fellow attendees in between the regular talks. And every one of them was a gem.
I loved Rob Rhyne’s talk on his new product, Briefs. It allows you to put together quick and dirty hand-drawn (or mocked up) prototypes right on the iPhone. Rob promised that a commercial version of this was coming to the app store, but he was giving away the source code right there. Awesome work, Rob.
Fraser Spiers‘ talk was close to my heart: finding ways to make time for your Mac development. He’s a full-time computer instructor at a private school in Scotland, but he still manages to turn out killer products, such as the ever-popular Flickr Export. (Incidentally, I got a sneak peak of his newest product under development, known till then only as “FLOWDACTED” ha ha, and it’s freaking awesome.) This talk was as much verification of what I’m doing myself as anything else, however. After all, I’m not failing at becoming a Mac dev because of my jerking off instead of working. It’s this damned book that I have to write. Things will get better. Right? Right?
Fellow Canuck Phillipe Casgrain did a good one as well, talking about documentation. I loved his insight that documentation should be one with the code. Make it part of the project in Xcode. Keep it in version control. Make it as central as your .xibs and .m files. But just do it. It’s clear to me that what separates decent Mac apps from the good ones are those that provide excellent documentation. This is something you gotta remember, and I take this advice to heart.
Not to be outdone by another Scot named Fraser, Mr Hess took to the stage and introduced his new project, Cocoa Boutique. It’s a complete pipeline for developers to integrate a purchase experience right inside their applications. This is a great move, because developers will be able to leverage a free way to turn their trial software into mini-stores for their own product. It looks very slick, and I’m looking forward to needing that one day.
There were many other talks, and they were all terrific. But C4 is about more than the talks. To me, it’s the chance to rub shoulders with the people who are succeeding at what I want to do. And every year, I come away astonished and blessed to have this chance to walk up to these people, introduce myself, and glean some important pearl of wisdom. Some examples:
On the walk back from Gino’s, I happened to fall in step with Craig Hockenberry. Having this chance, I fulfilled my 5-year-old daughter’s request, and informed him that she is a huge fan of Ramp Champ. We continued to talk about the difficulties of life as an iPhone developer, and I was saddened to note the tone of resignation in his voice. His commitment to quality is manifest in all the work he’s done over the years (at the very least, check out the Ramp Champ web site! My god, it’s gorgeous), but he’s come to realize that on the iPhone, unlike on the Mac, it simply doesn’t pay. With a staff of eleven, and the incredible amount of time it takes to build something like Ramp Champ, Craig has come to the conclusion that he can’t stay on this platform. That, to me, speaks volumes about what is wrong with the iPhone platform.
Listen, Apple. Here’s what you’ve done: you’ve built a platform predicated on an obsessive (perhaps freakish) attention to the finest details. You’ve provided a set of developer tools that encourage the finest minds in the community to participate.
And then you’ve set up the economics in such a way as to drive those very best minds right out of the game. Give your head a shake and fix this, Apple.
I also got to talk with Evan Doll. You may know him as the instructor for the Stanford iPhone course, which was made available for free on iTunes. I’ve spent hours listening to this guy talk, and his course has helped me in so many ways. It was a pleasure to shake his hand and exchange some words with him, and receive encouragement in person (with the estimable Tim Burks beside him, no less!).
I had a very brief encounter with Alex Fajkowski, an iPhone developer based in San Francisco. This poor guy is famous for having his iPhone application, Presenter, rejected because they thought he’d used Apple’s private CoverFlow APIs. No, he’d actually developed his own implementation. Anyway, I was taken aback by Alex for one reason only: when he asked what I did, and I answered, he was impressed. Thanks Alex. You’re good people.
On Saturday, I sat down at a table beside Geoff Pado. He was noodling around with Rob Rhyne’s Briefs source code. As we talked, I semi-dared him to do what we were both thinking would be super-cool: write a GUI client for what is mostly a text-based interface. As we sat there for the rest of that break and the last presentation of the afternoon, Geoff set to work. When the question period came on the presentation, Geoff stood up, wordlessly, and left the room.
Later that night, after the pizza party (by the way, Gino’s Meaty Legend is as good as it sounds), I was walking the pool deck during the evening’s bash, when I heard my name called. There, relaxed like a fucking king on a chaise lounge, was Geoff, with this complete shit-eating grin. “I did it”, he said. That is, in his hotel room, and with just a quick break for some pizza, he’d overcome the technical hurdles in writing his Briefs app. He promised a functional demo in the morning. And sure enough, there he was, showing me and Rob how to create a new scene, and drop images on the window. It was a solid start, and I hope that Geoff can finish it off soon.
All in all, it was a fantastic trip, but I can’t stop writing till I thank one other guy for his role in my coming to C4. David LeBer is the head of the Toronto CocoaHeads chapter, and since meeting him at C4 in my first year, he’s been veritably saint-like, encouraging me over the years, and listening to my various ideas, and generally being a solid companion. Thanks, David.
C4. FTW. And I hope to be back next year.