Wednesday, December 24, 2008

OS X Development

While waiting for my in-law's Ubuntu machine to download the update from 7.10 to 8.04 over a "DSL light" (384kbit/s) line I thought I might just write a bit about my first developer experiences on the Mac.

Back in August I switched from the PC to a 24" iMac. Now that I got a little more acquainted with it I thought I might just as well have a look at what the developer experience is like. People tend to say all sorts of things about Objective-C and that for a Java guy like me it would be a huge step backwards.

For that reason I was glad to read that Objective-C 2.0 comes with support for garbage collection, because manual memory management after years of Java would have been a real pain-point for me. I find it interesting to still see a discussion going on in the Mac developer world about whether or not GC is a good idea or not. I would have expected everyone to jump at it and leave the manual stuff behind with delight. Well, seems like a little bit of history repeating and all the same arguments against it being dug up again (most prominently of course it being slow and leading to several *seconds* of delay in the GUI all the time). But I am sure, this will pass.

Since then I have gotten used to the square bracket syntax oddities and XCode 3.1 is a whole lot better than the stuff I looked at several years ago when I worked for a company that targeted the Mac as well, but sadly enough had to shut its doors before anything meaningful could happen.

My self-education project is a sync tool that will allow me to keep my FRITZ!Box's internal phonebook aligned with the OS X AddressBook application. This is what I have come up with so far:

Unfortunately AVM - the makers of the FRITZ! line of products - do not offer an official API to upload the XML to the box. So I will have to figure out a way to either remote-control the web interface (yuck!) or somehow send it over via the telnet port (still yuck, but a little less... ;-)).

Apart from the unfamiliar language and library I am somewhat pissed about the level of comfort XCode offers. While it certainly is a good product and people who are knowledgable in it will disagree, it still seems to have a long way to go to catch up with either Netbeans or Eclipse in terms of productivity. After all refactoring is a little more to me than "Rename in scope" and "Extract method" - not even mentioning the differences in SCM integration.

But anyway, I am sure I will learn to live with and like it. I am currently on the look for a suitable book: I am proficient enough in Java and OO that I do not need an introduction to Objective-C, but I would definitely like a very thorough introduction to Cocoa, binding and the development model on the Mac in general. Of course it should include XCode 3 and be based on Objective-C 2.0 so I don't have to translate each and every step to the new version or even worse get used to deprecated ways of doing things. If you have any suggestions, please leave a note in the comments.


david said...

Hi Daniel,

I found Apple's Developer Connection sites on Objective C very helpful.

Coming from Java, I feel the same way about XCode. It cannot keep up with a Java IDE, unfortunately.

Daniel Schneller said...

Above link forwards to a new location On the Apple site. Here is the direct link in case the redirect gets removed sometime: