Experimenting with some Cocoa Touch stuff over the iPhone SDK, just for kicks. I’m not comfortable, getting there, but not comfortable yet. I truly miss Idea/Java when using XCode/Obj C. Don’t get me wrong, Apple put a lot of nice features in XCode (a very pretty IDE) and Obj C blows away anything C/C++ related. I can’t see how I’d be comfortable using it for daily development. Too many things are left out. For example, where the HELL is local history? Why does refactoring involve a dialog??? I would think that Apple of all people would get this right on the 1st attempt. Die hard programmers love things like EMacs, hot keys, command lines, single command/action type systems. Anything that takes you out of that flow is a distraction.
Here’s the thing, I think XCode is beautiful. I can see Apple put their touch on it as they do everything else. I love the way the matching left bracket animates when you type a right bracket. Hands down the IDE is prettier than anything from Eclipse, Netbeans, or Idea. For mobile development it beats the pants off of the competition. Blackberry might as well call up their chief JDE architect, invite him out for beer, chat about the McCain/Obama campaign for a good twenty-thirty minutes, pretend to have car trouble late in the night when it’s time to go home, then quietly slip a choke-wire around his neck while he’s not looking and squeeze the living RAPC knowledge out of him slowly. If this were a competition on sexiness, XCode would be Jessica Alba, Eclipse would be Tyra Banks (sexy but fading), Idea would be America Ferrera (appealing ot a certain niche), and Net Beans would be Britney Spears (sexy to those who have no idea what sex appeal truly is).
Productivity is key to an IDE. If productivity were money you would be living like Warren Buffet with Idea, paid like Bill Gates with Eclipse, comfortable like Trump with Net Beans, and just making it like Michael Jackson with XCode. (On the surface you look rich but behind the scenes there’s all these issues.) I need to be able to refactor comfortably. I need to be able to depend on local history instead of some just the undo button. I’d like to be able to tag my project, or whatever file I’m working on so that I can introduce changes and roll back and forth to see the impact of those changes. I’d like to be able to shelve my changes when I get side-tracked, then pull them off the shelf later without missing a beat. Productivity! XCode lacks all of these features and these are the things that make development a breeze.
Productivity aside my biggest problem comes from the lack of simplistic code examples and full fledge easy to use documentation available for the iPhone SDK. There are downloadable sample projects but nothing that shows you, fo instance, “Hello world” over an HTTP request. I can’t even pin point conclusive text that explains whether the iPhone UI follows the same single thread event dispatch model as is present in every UI toolkit I’ve encountered. My common sense tells me that all things like network calls should be done on a background thread to free up the EDT but I can’t find a conclusive simple code example that says, “Hey Idiot, call the OperationQueue API to background your slow network call then batch your screen updates back onto the EDT thread using this other API!” Then Apple makes things worse with their non-disclosure act… not allowing those who know disclose what they know so those who don’t know can know, y’know? it’s like a big secret, learning iPhone dev stuff must be done exclusively using the Apple online docs and nothing else. If you know anything about the black art speak up so we can open a private channel. I really want to learn and Apple isn’t making it easy. Holla’ at’cha man…