C4[2]

Last Friday evening I found myself eating dinner with a bunch of really smart guys. One of these smart guys was Tim Burks (@timburks) and he tells me, oh hey I read your post from last year about C4. I’m not sure I actually thanked Tim for taking the time to stop by sgntn (being as I was surprised that anyone reads my blog) but I’d like to take the opportunity to now. Thanks Tim! You see, we were there for the 3rd annual C4 conference (aka C4[2]) which gathers together some of the brightest minds in the software development community and in particular the OS X developer community. Happily, I once again slipped in under the radar. Tim’s mention of my post got me thinking, hey maybe I should write something up this year when I get home. And hey, maybe this time I’ll take some notes. So I am and I did.

First though I’d like to send a big thank you to Jonathan ‘Wolf’ Rentzsch (@rentzsch) and his crew for once again doing an outstanding job putting together C4[2]. And a suggestion if I might: next year it would be great if we could get the rest of the C4 team in front of the audience and give them a round of applause. Perhaps this happens at the end of the conference. I’m not sure because this year and last I’ve left roughly an hour before things completely wrapped up and I suspect I’m not alone.

Friday Night

FIRST UP WAS CRAIG HOCKENBERRY (@chockenberry). Okay, remember how I said I took notes? Actually I didn’t bust out my notebook until Saturday so I don’t have detailed notes from Craig’s presentation so I have to go from memory a bit here. Bear with me. Craig presented a brief history of the user interface from the command line all the way up to the iPhone and then lingered a bit on iPhone user interface considerations in particular. He explained how he tested human / iPhone interaction when designing Twiterrific for iPhone. Paying particular attention not only to the areas of the device that were easiest to reach with your thumb, but also different ways he found himself, and others, holding and using the device in a variety of situations. In addition he noted a variety of lighting conditions and the effect this had on the ability on the usability. All these details and more are considered as he crafts his applications for the iPhone and the gist of his talk was that you should too. The iPhone is not a frickin’ miniature computer and we need to think, really think, about the new ways that people will be interacting with software on the iPhone. Twitter highlights included a running count of the number of wangs in Craigs presentation.

Next up was D. Richard Hipp. Dude, he invented SQLite. Have you heard of it? So I really have to apologize for my lack of notes here, but I sat mostly slack jawed during his presentation. First he cleared up any misunderstanding people might be having regarding the pronunciation. He pronounces it ess-kyoo-ell-ite, “like it were a mineral”. He explained during his presentation some of the design considerations behind SQLite and some of the many ways it can be put to use by you. He also explained visually the differences between SQLite and Oracle by contrasting a full sized mixing desk (Oracle) with and iPod (SQLite). Both can listen to music. And also explained that SQLite’s competition is not Oracle, it’s fopen(). Oh and finally as far as I can tell D. Richard Hipp was also the only presenter with a wikipedia entry, although I didn’t check everyone.

Later on Friday night I understand there may have been a bit of drinking

Saturday Morning

The morning sessions began with Alex Payne’s talk on Scala. Let’s see I think Alex is even on Twitter… ah, yes: @al3x. So Alex works for Twitter and looked to move some of Twitter’s functionality from Ruby to another language which would address some of Ruby’s shortcomings (who knew!?). He wanted a language that was fast, functional, expressive, statically types and concurrent and eventually settled on Scala. He took the audience through several samples of Scala code. I have to admit if I don’t see an immediate use for some of the languages discussed at C4, that I tend to tune out a bit. But if you’re not satisfied with Ruby and want to look at alternatives it couldn’t hurt to investigate Scala more closely. Twitter highlights included praise for Alex’s choice of typeface in his presentation.

Rich Siegel (@siegel), from Bare Bones Software, gave the next presentation. Rich talked about longevity in the software business. Rich has been coding since like punch card days or something, so he knows what he’s talking about. Among the nuggets of wisdom Rich shared: Trying to stick to ideas that have a naturally long product life spans and avoid fads. Avoid “me too” applications and ship products when they are ready, not before. Don’t let external events such as new OS releases or trade shows dictate what your release schedule should be. Avoid the release early, release often philosophy. Charge what you think your app is worth and not what others think it’s worth. Have goals, but don’t try and conform to a rigid five year plan that doesn’t allow flexibility to react to new opportunities. Seek varying opinions from partners or elsewhere. Twitter highlights included a tweet from Paul Kafasis (@pbones) of Rogue Amoeba stating that he and Craig Hockenberry nearly gave themselves whiplash from all the nodding in agreement during Rich’s talk. Attendees also praised Siegel’s choice of typeface. Presentation typeface selection is far more important than I realized.

Saturday Afternoon

A couple days before I left for C4, a coworker asked me if I’d heard about Cappuccino which is a javascript implementation of Objective-C and large portions of the Cocoa frameworks. I answered that I had, but hadn’t really looked closely yet. The next presenter, Ross Boucher (@boucher) of 280 Slides gave a presentation on Cappuccino and… wow. Even if you’re not a web developer, you have to check this out. Basically most any (non nib based) Cocoa app can be ported to Cappuccino by changing the NS class prefix to CP and loading it up in your browser. There’s a bit more to it than that of course, but it looks shockingly easy to create desktop apps in a web browser without having to worry so much about your Javascript skills. Twitter highlights: not to take anything away from the other presenters, but based on tweets, the most impressive presentation to that point. There was also talk of how distracting the carpet was.

Tim Wood (@tjw), VP of Software Development at The Omni Group had the unenviable task of following Boucher’s Cappuccino presentation with his talk about Omni Data Objects and he did pretty well I thought. Omni Data Objects is essentially a streamlined replacement for Core Data. They needed a framework that would allow them more easily share and maintain code for both the desktop and iPhone OS X platforms. It’s built around SQLite, supports KVC / KVO, faulting, object uniquing and other things that seem impressive and it’s optimized for the iPhone so it is particularly fast on the desktop. The framework is intended to be open source and publicly available when it’s ready, but wasn’t at the time of the presentation. When it is, you’ll be able to find it here Twitter higlights included talk of the ampersands and which typefaces render them most beautifully. Perhaps a detoxification side effect.

The anticipation of the next presenter’s typeface was fever pitched. Buzz Anderson (@buzz) gave a talk about his journey there and back again. There being Apple. This lead to a discussion of emulating Apple, or at least the good bits, such as taking a very simple idea, implementing it very well and slowly expanding it in ever increasing arcs. Putting design first. The lion’s share of your work should be the design portion. He also mentioned the “tent pole” philosophy, which is choosing a few features that really define your project and building around those features.

I came in late to the next presentation. Hearing laughter outside I was thinking, aw, I missed the funny bit. No. No I did not. I missed A funny bit. There were many many more. Thomas Ptacek (@tqbf) and company from Matasano Security had the audience rolling with a hilarious (and occasionally frightening) talk about security. There advise was very common sense stuff: sanitize input, initialize variables, fail on malloc don’t make your executables writable, vote Obama, etc. And don’t try and roll your own encryption or related functions. Even the experts can’t do it right, you have no hope. Twitter highlights: not a word was said about the font used in their presentation. That’s how funny these guys were.

Boy I’d hate to be the guy who had to present after the Matasano guys, and yet Brent Simmons (@brentsimmons) did a great job in his talk On Going Free. Brent interspersed his talk about the history of NetNewsWire with some great pictures and let me just say right now that Brent has fantastic boobs. Brent said he always figured that NetNewsWire would have to become a free app. That one day RSS would become a commodity built into the web browser or offered for free by a company like Google. The most interesting part (to me) was the mention of a discussion that occurred between Brent and Paul Kafasis at the time NNW went free, about how a premier application going free would impact the pricing expectations of other applications. While Paul eventually came to see Brent’s point of view, it was still interesting especially when you think about the pricing of iPhone apps and consider how the public might come to expect similar pricing for desktop applications.

Saturday night wrapped up with a panel discussion hosted by the be-tuxedo’d Wil Shipley (@wilshipley). Shocking because Wil is typically very understated and doesn’t like to draw much attention to himself. The panel consisted of:

It was at this time that I got distracted by trying to get my boarding pass printed out for the next day’s flight but even had I been able to focus more on the panel I would have been hard pressed to keep up with all the questions and answers during the panel discussion. Suffice to say there were many and varied questions and answers regarding the state of OS X development, in particular iPhone development. But nothing that violated the FINE NDA! Oh and whatever the problem, SQLite is probably the solution.

After the day’s session we all wandered over to Gino’s and had some wonderful pizza and beer and wondered back to the hotel for some hideously expensive drinks supplied by the hotel. Those that were smart or foolish (I can’t decide which) went to O’Tooles for more serious drinking. I mean for God’s sake, look at O’Tooles logo.

Sunday Morn… er Afternoon

Mike Lee (@bmf) of Delicious Monster Tapulous United Lemur, got us started Sunday morning with a talk called Pimp My App. Mike took a look at one app that he was very much looking forward to on the iPhone that didn’t come out quite as well as he had hoped. That app being AOL for iPhone. Mike did an excellent job illustrating how several relatively minor changes could have given us an app that felt more at home on the platform and provided a much nicer instant messaging environment. Mike also offered his advice for developers such as not skimping on art. Hire someone that knows what they’re doing with both user interface and artwork in general. Make sure that you’re familiar not just with the APIs on your chosen platform, but the expectations of the users of that platform with regards to software (a sentiment that I strongly echo given some mistakes I’ve made in the past). And also really try and empathize with your users and how they interact with your product. Once again, less is more. Focus on those features that define your application and don’t be afraid to cut other features that aren’t well fleshed out, unneeded, or quixotic. Look at user interaction in everyday objects and consider how they might be improved. Mike suggested the idea of incorporating telemetry into applications, to see how users are executing various functions. How are they spending their time. Where might users be struggling while using your app. An interesting notion. And finally, whatever you do, do not use a splash screen or Mike Lee will kill you.

Andy Finnell (@macgeek02) gave a great talk about being an independent contractor. He listed the pros and cons and what pitfalls to watch out for as a contractor. How cultivating a network of contacts is vital to becoming successful. You don’t want to rely on just a few or one client. How you should make sure that contracts are structured such that the final payment is the smallest chunk, lest it build held over your head in an effort to squeeze more work out of you. He talked about partnering with other contractors so a variety of jobs, and payment schedules can work together to provide a more steady source of income. What you can expect from larger employers versus smaller ones. While larger clients offered more stability and potentially larger paychecks, the work might not be terribly exciting. Whereas with a smaller client the work might be very interesting but you have to weigh that with the chances of the company staying around long enough to actually pay you. Andy emphasized that everything you do is a reflection upon you and your company and how a bad experience might cut you off from future work. There was a great deal of information in Andy’s talk and those are just a few of the points he covered.

Troy Gaul (@tgaul) of Adobe Systems gave the final talk about Adobe’s use of Lua in Lightroom. Troy went over the design of Lightroom and Adobe’s rationale for using Lua to tie all of the various pieces of Lightroom togeter. He mentioned that 63% of Lightroom is written in Lua. And he also revealed that his team created an IDE used to edit all of the Lua code that they produce and that they plan on making this available in the future.

And that pretty much wrapped up the speakers which brought up to the Ironcoder portion of the conference. Sadly I had to leave before I had a chance to see everything. Zac White (@zacwhite) showed a sneaky little application that could read all of your previous locations from Core Location even if you did not give the application permission to allow it. Next Tim Burks was going to do something incredibly cool using an application written in Nu for the iPhone which ran a Bonjour exposed server and could talk to your desktop machine via Acorn plugins also written in Nu. This was going to be awesome. Sadly Tim ran into a snafu and it was at that point I had to make my way back to the airport and home to Nashville. I’ve no idea who won Ironcoder or if Tim got the wrinkles ironed out of his submission.

There you have it. A lot of words I’ve attempted to string together for you which hopefully give you a little bit of an idea of all of the very interesting stuff that went on at C4[2] this year. Of course this post is just the high points of the various sessions and doesn’t even begin to cover all of the discussion that happens outside the conference rooms. As with WWDC, and perhaps more so at C4, just the energy from hanging out with this group of people really feeds back on itself, fires your imagination and inspires you to aim higher, and hone the craft. Once again I’m deeply grateful to Wolf for the work he has done putting this conference together. And if it comes down to a lottery next year I hope that I win a chance to come back again.