Thursday, November 27, 2008

iPhone development fun

Since I used up quite a bit of my Thanksgiving eating, sleeping, and struggling with Apache Ivy, I was only able to spend a little time working through some of the examples from the book "Beginning iPhone Development" from Apress.  So far it's been a pretty good book.  I've been messing around with Xcode for about 3 weeks now and I'm truly impressed with the Mac development environment.  The Cocoa framework is very well thought out and easily to use.  I really like how Interface Builder works, wiring up outlet and actions to code.  I can see why there's so much hype around iPhone development.  It's quite pleasurable.  The tools are really easy to use and the frameworks and Objective-C are fairly straightforward to pick up.  I've been doing the development on a MacBook and it's very much up to the task of Mac/iPhone development (it helps to have 4 GB of RAM in this thing though).  So far, I've had a ball doing iPhone development.

Apache Ivy...cool concept, but terrible out of box experience

So I spent some quality time with Apache Ivy this Thanksgiving holiday.  I wish I could say that was time well spent.  I really like the concept of Ivy...but the implementation is really complex and poorly documented for first time users.  For starters, all the configuration is in XML.  No big deal, but the XML configuration can get quite convoluted and it seems like the defaults are never what you want,so you end up writing more configuration to get the results you want.  I was never able to find a good ivysettings.xml example (full example, not bits and pieces).  The ivysettings.xml seems to be a prerequisite to configuring which Ivy repositories you will pull content from.  I wanted to pull my content from SpringSource's Enterprise Bundle Repository, which is not the default.  SpringSource has snippets of ivysettings.xml configuration, but not a base configuration that you can just copy and use.  Second, the bundle repositories seems to be in shambles.  Of all the repositories that I could find, only SpringSource's was documented enough that you could figure out how to pull the bundle dependency.  Unfortunately, I couldn't get my settings to connect to that repository.  Third, pulling dependencies like Spring Framework will pull in a whole bunch of unnecessary stuff, JARs that I did not want.  I really don't want to have to spend 2 days learning Ivy.  It's a nice to have feature for managing dependencies.  I just want it to work.  But it seems that Ivy expects a significant investment of time and work to get working properly.  Too bad, as I'll probably dump it for something else.  Am I being too critical of Ivy?  Should I not expect a good out of box experience with this tool?