On iPhone Development Demonstrations

I'm going to be presenting an iPhone programming demonstration at the November 2009 NoVaLUG meeting.  Yes, I know that this is a Linux Users Group, and there's not much open source about the iPhone, but it does derive from some open source material: OpenStep, which lives on today as GNUStep.  Now, gentle reader, I know what you're thinking.  "If GNUStep is the current open source version of OpenStep, why don't you demo development with GNUStep?

There is a simple answer:Because the GNUStep tools like the Gorm IDE are about as stable as a unicyclist with an ear infection riding with the bulls during an earthquake. Crashtastic is the word. I can't seem to get the Gorm IDE to run more than about five minutes before it just vanishes from my screen. When it comes to a demo, that's not Good Eats.

In contrast, XCode and the Apple tools are stable, well documented, and about as easy to acquire as any Linux distro. The iPhone is a hot topic, and the standard frameworks make it really easy to put together a flashy app very quickly. Easy, that is, if you know what you're doing.

In the process of putting together this demo, I'm finding there is a lot of prerequisite knowledge to cover before you can create anything more than the most basic Hello, World! app on the iPhone. Sure, you can create a new project in XCode, add a label in the main XIB in Interface Builder, save, build, launch, and presto!, instant app, but that's not really informative. As soon as you do anything with the app, even something as simple as adding a button to make the text blue, you need to get into the gooey, crunchy, peanut-buttery happiness that is Objective-C. Try to do something interesting, like adding a map or finding your current location, and now we're linking in extra Frameworks, dealing with threading issues, memory management, and protocols. Whew!

If iPhone apps were written in Perl, I wouldn't worry. Everyone there knows enough Perl to keep up, but iPhone apps are written in Objective-C, a language barely anyone knows unless they already program for the Mac or are old NeXT heads. Teaching Objective-C by itself could be a full semester class, or a week-long workshop. I've got two to three hours.

I could make the meeting an all-day affair, but that would limit who could attend. I could make it a lecture series, and start with only Objective-C for the first few, but that's not what I volunteered to do, nor what people are expecting. I could tell them to go read Aaron Hillegass's excellent tome on Cooca Programming for Mac OS X or Stephen G. Kochan's Programming in Objective-C, but that's a lot of reading and not all of it is needed for a demo.

So, here's what I am going to do: I'll write an Objective-C primer as a series of blog entries. My hope is that people attending will read these first, try the examples, and generally get comfortable with the syntax and concepts of Objective-C before coming to the iPhone development event so everyone can get more out of the event.

I think this is going to be a great event, and I'm really looking forward to presenting this technology!


Next Up: Basics of Objective-C Programs