Thanks to the generosity of Apple, I received a student scholarship to attend their WWDC last week.  Alejo Montoya, another student from the lab, also had the privilege of receiving a scholarship.  Unfortunately, my flight out to San Francisco on Sunday was cancelled due to mechanical problems.  I was able to catch a flight out on Monday, but I missed the Keynote.  Fortunately, Monday was mainly public relations by Apple and the developer sessions were from Tuesday to Friday.  The major announcement of the iPhone 4 was already leaked by over enthusiastic bloggers anyways.  It would have still been nice to see Uncle Steve in person, but I still was able to attend the sessions and labs.

WWDC is as much about rubbing shoulders with fellow developers and making good connections as it is about learning the mac platforms.  From seeing OK Go at the bash to talking with the developers of Flight Track Pro, the week was filled with good conversations.  I even discovered a fellow juggler and was able to pass clubs before the morning sessions.

The sessions were very informative, and I learned a tremendous amount of information.  Some were more elementary, like how to more effectively use Xcode.  Others were extremely technical, like the LLVM compiler and how to render your own fonts.  Overall, the presenters were polished and knowledgeable.  I would like to briefly mention 2 features of iOS 4 that intrigued me from the week.

Gesture Recognizers – iPhone OS 3.2 actually introduced UIGestureRecognizer for the iPad, but iOS 4 brings this technology to the other mobile devices in Apple’s product line.  If you have ever tried to detect gestures before, it usually involved lots of painful code to get the results that you desire.  The new API allows you to add a recognizer in a single line of code.  If you need to detect more complex gestures not included in the API, you can subclass UIGestureRecognizer.  To see specific details about this feature, check out Apple’s documentation.

Blocks – If you have any experience with a functional language, you are probably familiar with blocks or closures.  I have also done a lot of Ruby programming recently which also has extensive support for blocks.  Blocks make it easier to follow the DRY principle of coding, Don’t Repeat Yourself.  They can encapsulate logic that can be used in multiple situations.  Blocks also make for more readable code.  For example, you can pass a block to a method as a callback routine instead of specifying a selector.

Blocks have been a part of Objective-C for OS X, but they are also making their way to iOS 4.  Threading is made easier through the use of Grand Central Dispatch, and I can’t wait until iOS 4 is released to the public and us developers can start to utilize these new APIs.  Fortunately, Apple does a pretty good job of encouraging users to update their devices which allows developers to actually use the new features.

I thoroughly enjoyed my week in San Francisco.  The conference was informative, and I was able to experience the city as well.  A big thanks goes out to Apple, GVSU, and Atomic Object for helping me attend.