It was the second and final day of the
NSConference 2010 Mac Developer Conference and most delegates were tired and a little hungover. But there was another great line up of speakers for the day, and it was another day of socialising and fun, as well as all that other learning stuff.
Perhaps the biggest things I took away from the Mac conference was taking a pragmatic approach to anything which became a recurring theme in a lot of the talks – like yesterday’s conference, extremes were presented such as Dave on not using singletons, but at the end of the day it’s a judgement call and you shouldn’t do or not do something ‘because Dave said it’, but rather because it’s either right or not right for what you want to do. There was also some recurring memes, such as The Matrix and kitties, which snuck their way into certain presenters’ talks, but most of all, I learnt that people can be (fairly) civil when discussing version control, and also that the GPL sucks.
Jeff LaMarche – Writing Super Superclasses
Jeff was still jetlagged and tired, and made several comments as such throughout his talk. However, despite this, his talk on the Objective-C runtime was very interesting and informative to listen to. He started the talk off with a cliché – ‘you can’t see the forest through the trees’ – and likened this to software development. As developers we are often too pedantic and only focus on the little things, but we also need to be able to step back and look at our projects as a whole on a larger scale.
He then went into the guts of his talk, talking about such things as dynamic method resolution and introspection at a lower level. He introduced Objective-C as different from other languages in terms of the patterns used and also touched on a criticism by others that it is missing things, however this is by design and not simply an oversight.
He then started talking about his SQLitePersistentObjects project which leverages the Objective-C runtime in several ways, and then demonstrated some of these features such as dynamic method resolution using IMPs and was well explained with the associated pros and cons of using certain runtime features. Like many of the other talks, he explained the limitations of using the runtime, for example Apple may not approve apps for the App store that use it, and also to be pragmatic about its use and not simply use it because you can.
Andy Finnell – Brushing up on OpenCL
I’ll be honest, after listening to Andy’s talk, I felt stupid. And I think there were other attendees around the room who were in a similar boat. He opened up with a demo, which was a great start to his talk, a demo which simulated the effect of watercolours on a canvas, and leveraged OpenCL to provide the graphics and calculate the drawing of the pigment and the interaction with the surface.
Although the maths and physics was way above me (and wasn’t helped by lack of sleep) it was still an informative and interesting talk, and I liked the structure of the presentation – cool demo at the beginning which made you interested then the rest of the time spent explaining how it all worked.
Andy also opened with a short intro on OpenCL and how it operated which was nice for those who hadn’t been at Drew’s Concurrency workshop on Sunday, however it would have been nice for this section to be expanded a bit, with less of a focus on the mechanics of the demo.
The presentation was also entertaining with accommodation for British spellings (“watercolo(u)r”) which is always a nice touch and other comical remarks and slides which helped a bit when it came to digesting the hardcore code samples. The coding side was also a nice contrast from the higher-level talks that were presented over both days of the Mac conference which also made it a useful and informative talk.
Dave Dribin – Version Control System Shoot Out
[Apologies for not having an accompanying photo]
Dave’s talk was all about version control and mostly a history or comparison of the different VCS’s out there. There was a feeling before the talk that it could go horribly wrong but Dave kept it pretty objective and didn’t particularly favour any of the VCS’s.
He presented the history of version control systems first, with SCCS, RCS, CVS, SVN and other systems that use similar acronyms, before moving onto distributed version control with Git, Mercurial and Bazaar, quoting Linus’s talk where he explained the naming for Git: ‘I’m an egotistical bastard and I name all my products after myself, first Linux and now Git’. With all the version control systems he presented the pros and cons, and only discredited Git slightly. Overall a pretty well rounded talk for the allotted time of about 35 mins.
Graham Lee – Code Signing
Graham had been given the opportunity to present at very short notice, and it was very well executed. It was astounding the quality and detail of his talk despite the little preparation time that he had, and he had a great presentation style which was very entertaining. He also included lots of puns and other fun comments, such as a reference to a hypothetical harmful piece of injected code which he called Malicious Monster and also referenced as Malicious Library. For those who didn’t attend, the reference to the Matrix had become kind of a meme by this point and even though Graham had prepared his presentation in about 24 hours he still managed to fit it in.
He also did a live demo which was very useful and demonstrated some of the code signing in action; he also anticipated our needs well by cutting a few minutes short in aid of food. Overall a brilliant, informative presentation.
Aaron Hillegass – The Many Faces of Data Persistence
Aaron’s talk was – as you probably guessed – focused on data persistence and the what the options are on Mac OS X. He started off by stating ‘The file is dead’ and explaining how his HDD is essentially a cache for data that is stored in the Cloud, which prompted him to comment ‘Long live the cache!’. He used the example of iWork on the iPad in that it uses a “Library” to store files which is essentially an abstraction for the filesystem and that this is the way forward.
He then went on to talk about archiving in Cocoa and Cocoa Touch, discussing Keyed vs Unkeyed archiving and the associated pros and cons. He also presented a timeline of events in terms of data persistence, from the early 90’s with NeXT right up until Core Data in 2005. He presented some nicely formatted object graphs of some of the Core Data things which was also useful.
He spent most of the second half of the presentation talking about his new data persistence project, BNRPersistence, which provides classes that wrap Tokyo Cabinet which is used to store the data, which received much applause from everyone when he announced that it was open-source, available on GitHub, and not licensed under the GPL. It was certainly an interesting project and he had some numbers for certain cases compared to Core Data and it performed much faster. But he was dealing with object graphs that had 1K and 1M objects and for “everyday” use with smaller objects it was unclear whether BNRPersistence would be better than Core Data because he didn’t have any figures on it.
What I liked about Aaron’s talk which I don’t think any of the other speakers did was that he was more engaging with everyone whilst he was talking – his style was like a lecture, but he periodically checked that we were all following everything, something which I guess comes from the teaching which he does, and was a nice touch.
The rest of the allotted time had been reserved for something different, in the form of a “Cocoa Rumble”. Earlier in the day, Scotty had announced that people could put their names in a hat to be chosen for this mystery event. Names were picked out of this hat and each person chosen was assigned a speaker from the conference.
The combined speakers and delegates were then split up into three groups and had to pick from the hat which now contained another set of slips of paper, which had written on them different “Core–” frameworks. The three chosen were Core Text, Core Audio and Core Image, and the teams had some time to prepare a presentation for why their framework was the “Core of the Year”. All presentations were very entertaining, with talks from Mike, Wolf and Graham and at the end, Core Image (presented by Graham) won for the compelling reasons that he had put into a table.
Whilst the teams were preparing, there was also a chance for the speakers and some of the delegates to provide tips, and there were some great tips from such people as Uli who provided a load of cool Xcode tips, Aaron on having the old Xcode documentation browsing behaviour, and Jeff on conditional build settings.
A nice fun end to the day, with something different and all in the community and social spirit.
It was my last day of
NSConference and what a brilliant conference it had been, with Matt Gemmell’s workshop on Sunday and the Mac developer conference too. It was great to socialise with loads of Mac developers who were all really friendly and I entered into some interesting discussions, and I took a great deal away from the conference which was something that Scotty laid out as one of the goals at the beginning.
I would like to thank Scotty, Tim, Dave, Rob, Simon and all the other people who made
NSConference possible, because it was a great experience indeed, and to all the great people that I met there. Thanks also to Uli for setting up the NSConference Reflector.