Atlassian had its 3rd FedEx Day today, so Jens and I tried to tackle CONF-1837 and implement an offline client for Confluence. I've been meaning to try out Core Data for a long time, so this was a perfect opportunity (cross-platform issues aside).
I have to say that Core Data is just amazing! We were able to recreate all of the objects required to store Confluence Spaces and Pages using Xcode's data modelling functionality (including referential integrity – weeeee!). What blew me away was that we did not have to write any model, controller or view code to get the interface working:
The only code written for the entire app (please ignore its temporary ugliness) was to retrieve the Spaces and Pages via XML-RPC and pass them onto Core Data. Yep – that entire interface was displayed without writing any code! It's one thing to see it in a tutorial, but a totally different experience to make a 'useful' app.
and now… for the bad part. Jens and I spent half of the day futzing with Apple's WebServices framework to get Page retrieval working. The WebServices framework appears to be a black hole in Apple's Documentation. There's little information on the methods for making SOAP/XML-RPC calls in a Cocoa application, let alone code examples of how to do it!

