C4 Abridged

I just got home from Chicago. C4 was awesome. Big cheers for Wolf for putting it on and managing the events of weekend. High praise also for his volunteer assistants, who were clearly working hard the whole time.

I really couldn’t have predicted just how great the collection of attendees was. I had a great time meeting as many of them as I could. Given the final attendance of 98 people, I think I probably managed to meet 80% of them over the course of the event. Not bad! I wish I could have met everybody but I guess that leaves some interesting people to talk to next time. I really appreciated that a few people took advantage of the photo I posted and came up to introduce themselves. I was impressed by the mix of students, indie developers, and employees of large and influential corporations. Apple employees numbered at least 7 or 8, and two guys from Microsoft attended and have been blogging about the experience. I was expecting one person from Apple who didn’t end up making it, though his lonely name tag and T-Shirt sat at the bottom of an otherwise empty box. Hopefully I’ll meet him next time!

So how can I parlay my fun and exciting exciting weekend into a blog entry worth spending your precious time to read? I figure you sad suckers who couldn’t find the time, money, or initiative to get to C4 this year are feeling pretty down right about now. At the very least you deserve an editorial summary of the speakers’ main points. Unfortunately, I don’t think I can provide that. I didn’t take notes. Well, I took a few, very few, but then misplaced the sheet of paper. So instead of accurately conveying the actual points of speakers I heard, I’ll present a verbatim transcript of my memory. Everything that made it from the stage, through the air, was processed by my lethargic brain, drunk on Jamba Juice, and somehow got recorded to memory. Except for comments. And intermissions. And especially bathroom breaks.

Live from Chicago (recorded earlier), it’s C4 as heard by Daniel Jalkut, October 21-22.

Jonathan “Wolf” Rentzsch (web link): Hello and welcome to C4! C4 stands for “Code, Culture, Community, Conspiracy.” The first three being key components that make developing for the Mac a unique experience, and the conspiracy, well… it sounds cool. Hybrid theory? Forget about it! Hey, I can reimplement BombApp.app in zero lines of Cocoa code, because this QuickTime movie crashes everything I try it on! So about this conference: developers need a place to meet up and exchange ideas apart from WWDC, and without corporate sponsorship. Let’s see how this goes, and let me know if you have any feedback!

John Gruber (web link): The HIG is dead. Not dead like meaningless, but dead like hopelessly out of date. It can’t possibly keep up with Apple’s implicit standards because Apple has abandoned some fundamental traditions of the HIG, such as uniformity in appearance and behavior across all applications. The web is proof that they’re at least partly justified. People aren’t stupid, they know a button when they see a button, regardless of how it’s drawn. Would I prefer a consistent UI personally? You bet! Any chance of that happening again? No way. The genie is out of the bottle and developers have two choices: constantly monitor the state of the “implicit UI guidelines” and synthesize your own standardized interpretation, or else go out completely on your own and invent something unique yet beautiful. The new HIG guideline is simply: does this look good?

Brent Simmons (web link, presentation link): More and more desktop applications on the Mac are “web-enabled.” These products run from the obvious features of web browsers to more subtle nuances like iCal’s shared calendars or Seasonality’s presentation of web-based weather information. I know a lot about web-enabled applications, because I wrote two biggies: MarsEdit and NetNewsWire. WebKit is freakin’ awesome even if it does crash every once in a while. You should use it, and here are some practical code samples for how you might get started. WebServicesCore is the super-suck. Don’t use it. Did I mention WebKit is cool? NSURLDownload is also great for almost any kind of simple download you can imagine, with some caveats. SyncServices is cool if you can use it, but useless for cross-platform syncing. If I would have known syncing would be such a major feature in NetNewsWire, I probably never would have started the project. Here are lots of great tips on syncing.

Aaron Hillegass (web link): Between 1973 and 1983, the world saw an awesome number of technological advances in computing. We went from personal computers being non-existant through the development of the Internet, relational database systems, and the Mac in just 10 years. Since then, we’ve been in a slump because people are not solving real problems anymore. Delicious Library is a great example of a fake problem. People have bookshelves, they don’t need a virtual one! Wil, you’re an amazingly talented developer, but your talent was wasted on this product. OmniGraffle was great! Too many Mac developers are obsessing over the fake problems of the consumer software market, and the obvious problems of the multimedia and business markets. These markets are already dominated by Apple, Adobe, and Microsoft. Think outside the box! Thousands of real problems need to be solved, and rich people are willing to pay you lots of money to solve them. Talk to people with money and figure out the problems they need solved, then do it.

Gus Mueller (web link, presentation link): Adding an embedded script interpreter to your application is cool because it makes it easy for users to add their own crazy features to your app. Even if you end up writing the script for them, you don’t have to muddy your app’s feature-base with their nutty idea. There are lots of languages you might use, but I chose Lua because it’s super-fast and easy to embed. One major advantage to using a script language in development is you eliminate the compile and link delay. I love that! Lua is used for application development by several . notable . developers. Here are some examples of how easy it is to embed Lua in your app. In fact, let’s add a simple Lua plugin facility to TextEdit that allows arbitrary text processing. Neat huh? [presentation link forthcoming?] The main downside to using Lua is practically nobody knows how to write it, but I just post lots of sample scripts to help my users figure it out.

Steve Dekorte (web link, PDF presentation link): The way most people go about thinking about multiprocessing is wrong. The heavy-duty “system threads” that most people use to distribute computing tasks are extremely expensive, and therefore only suitable for scales of hundreds of tasks. By adopting the actor model of concurrency, objects maintain a queue of requests and only operate on themselves. This eliminates the locking mechanisms required with preemptive system threads, and requires much less state management memory. The actor model of concurrency scales comfortable to the scale of tens of thousands of concurrent tasks. Anyway, Io is my language for easily adopting the actor model. The increasing number of cores in hardware has major implications for computer design going forward, because an increasing number of cores will be competing for access to the same memory across the same bus. And, now listen very carefully Daniel Jalkut. Yes, that’s right. I’m talking to you. Wasn’t that Jamba Juice tasty? Now I know you’re not completely getting this, even though you’re interested as hell, so just look at the pretty graphics. Cores blah blah acting technical stuff like hardware actor objects blah and the world is saved from almost certain doom. Any questions?

Brian Fitzpatrick (web link): First of all, I work for Google, and what I’m about to say is all under NDA. That is, not definitely agreed-upon. I’m impressed and awed to see that so many of you have heard of Subversion, let alone are using it. Subversion’s growth over the past few years has been insane, and we’re totally psyched. Not in a taking over the world way, but in a providing the best source control system money can’t buy way. Now that we’re more or less at feature-parity with CVS, we’re looking to to the future for ways we can make it even more compelling to current users and users of other source control systems. One of the improvements we’re looking at is the possible removal of “.svn” directories for working directory management. These are terrible for performance and the main reason we used them was to enable “detachable subtrees.” Not worth it. We also know about some of the ways Subversion sucks for Macs in particular. Trust me, I’m a Mac guy. The bundled document problem is on our radar and we totally get it. Daniel Jalkut! Wake up … it’s not time for Gino’s East yet. Stop daydreaming, ya nerd! See? You can’t even remember the last improvement I mentioned, even though you were totally excited about it only two minutes ago. Man, this is sad. Sad, sad, sad. How am I gonna wake this guy up? Did I mention that we’re looking into off-line code commits? Ah, that did the trick.

Panel Discussion (Moderated by Drunkenbatman, including speakers above minus Gruber plus Paul Kafasis). Apple could do lots of things to make life easier for developers. We know they’ll never do them but it’s fun to dream. Lots of us would like to have better access to existing bug reports – it would help save us a lot of time. Oh no you didn’t. You did not just bring up DRM. DRM. DRM. DRM. DRM. DRM. DRM. DRM. DRM. DRM. DRM. DRM. DRM. DRM. DRM. DRM. DRM. DRM. DRM. DRM. Cocoa vs. Carbon. Cocoa vs. Carbon. Cocoa vs. Carbon. AppleScript Sucks. AppleScript Sucks. AppleScript Sucks. <Applause>. AppleScript Rules. <Very light applause>. DRM sucks. No, your DRM sucks. DRM. DRM. DRM. DRM. Actually something like an iTunes Software Store would be pretty cool. DRM. DRM. DRM. Can we change the subject? Yes, it’s time for dinner.

Once again, major kudos to Rentzsch for putting this event on, and to all the speakers who made it such a memorable (for some definition of the word) occasion.

As inspiring and as much fun as the scheduled speakers were, the unstructured social time both between sessions and in the evenings were just as much fun, and probably just as educational. I can’t express how grateful I am to all of you who showed up and helped to make this a weekend worth raving about for weeks to come.