It was the first day of the
NSConference 2010 Mac developer conference and a great lineup was ahead.
In terms of the day generally, it was a brilliant experience. It was well organised and many thanks go to Scotty, Tim, Dave and all the other
NSConference staff. The WiFi (although irritating that you had to keep filling out the signup form) worked quite well and you could get some pretty good speeds, which was good considering that the room was filled with over 100 developers, almost all of which I imagine had a Mac or iPhone for most of the day.
It was also a great social event, and the breaks were a nice chance to go around and talk to someone you’d never met before and have some interesting discussions. It was also nice to be in this tight community, separated from all the “normal” people who were also around at the venue.
In terms of the talks generally, I felt that they were all very well done and it was clear that they had put a lot of work into them. The presentations were very well laid out and simple, and not wordy and the speakers all obviously knew what they were talking about and had lots of interesting things to say. However one big thing that I felt could be improved on was the interaction with the audience – that is, many of the slides were in more of a lecture-style and although a couple made up for this with a Q&A at the end I thought this could be improved upon.
Scotty – Conference Introduction
Scotty kicked off the morning with a nice introduction to the conference, welcoming everyone and thanking us all for being here. He presented his recent case of being rushed into hospital for a “routine” operation as a metaphor for what we’re doing here, and he explained how even though he has little knowledge of the detailed ins and outs of the medical profession, he had a respect for them due to the reputation that the collective members have earned over the years. This was related to Mac development and our collective ‘responsibility to the platform’ and what we do, and the expectations of the Mac or iPhone platforms which is ultimately our responsibility. He also talked about how there is pioneering but also sharing of ideas in the medical profession and again linked this to our role in the Mac/iPhone/iPad community.
He also went on to talk about the community spirit, and emphasised that all the speakers had given up their own time (and money) to be here which because of this, and was a nice to start the day.
Mike Lee – Conference Keynote: Engineering Life
Mike’s presentation was evidently something slightly different and original to start the day but was a nice sideline to our ability to crank code, and was more thinking at a higher level about what we do, and perhaps being a bit more philosophical about it. He was relating what we do and our profession to life in general, and how we can ‘engineer life’. He defined problems as ‘reality we do not like’ which was a topical tie-in with software development since problem solving is one of the key aspects to what we do.
Mike also used several anecodes during his presentation which brought in a realistic sense rather than something purely theoretical, reality which is often missed when talking about software and software development, with purely theoretical statements. He also likened the Universe to a computer in that both are simply entities which are constantly changing state.
The next part of the talk became perhaps a little morbid with discussion on ‘Death 101’ with the conclusion that ‘death sucks’ but you can’t really do anything about it and you’ll be dead in the ground so won’t care about it anyway. However he also likened this to fear and how you can engineer your way around fear and tackle it head-on rather than let it get the better of you. He also talked about having a legacy and a part of you that lives on when you die by accomplishing something that you are remembered for, which can perhaps give you a kind of immortality.
He finished on the note of ‘be the hero’, and overall the talk was an interesting and somewhat unusual. I heard later on that there was about a 50/50 split on people who liked/disliked the presentation but I thought it was an interesting, though-provoking topic and good to be a part of.
Wolf Rentzsch – Spelunking OS X
Wolf started with the statement that he had ’90 slides in 60 minutes’ and it was pretty fast-paced, although for the most part fine to follow. He dug into Mac OS X under the hood and ways you can access this information and interact with it, introducing such tools as otx, otool and class-dump.
The low-level nature of his talk was a great contrast to Mike’s previous talk which was a demonstration of the breadth of talks within
NSConference and was more of a code and tool-based talk. He introduced hexadecimal editors such as HexFiend, which ‘are your friend’, then went on to deal with different sections with prying into OS X internals such as static analysis with strings and files, and code injection.
The great part of presenting these tools was the accompanying screenshots of a terminal and the associated output, and also examples of useful commands and how they could be used, which was probably the killer feature of the presentation for me. He also had a clear presentation style and after talking to him later at the bar was a nice, bubbly person to talk to and obviously knows his stuff.
As a suggestion for improvement it would have been nice to see a live demo of some of the tools in action – he had some screenshots of probing applications such as TextEdit, but a live demo of the tools live would have been a nice addition.
Dave Dribin – Clean Code
I think that Dave’s presentation was perhaps my favourite of the day and talked about different ways of writing clean code and bad ways that can introduce “code smell” and ways to get around this and I agree that it is an important part of being a programmer.
He used the analogy of the iPhone as a way into the presentation; with the divide between internal and external quality – the external beauty is the interface that is seen by the user but the internals are the code that we write and sits behind the scenes. With an application it’s the difference between a beautiful interface and the underlying implementation of that in code.
The presentation was filled with quite a lot of tips, such as guidelines on naming classes and common principles such as DRY (Don’t Repeat Yourself) and OAOO (Once and Only Once) with the example of using enumerations or constants for dictionary keys instead of repeating strings throughout your code.
The Q&A was also useful and for most of the other talks there wasn’t time so it was a nice feature to be able to ask questions about the content discussed.
Drew McCormack – Data Presentation in Mac Apps
Drew lead into the presentation by talking about his scientific background and explaining how different data can be displayed and visualised in different ways. His presentation was also nice because it was one of the ones that wasn’t directly related to churning code and was more about the UI and talking about the various controls – standard or custom – and where they are best used.
I liked the format of looking at these different controls – he presented images of each and then talked about the advantages and disadvantages of each. This was particularly useful when comparing controls, such as the
NSTableView and the
NSCollectionView, and his slides were perhaps the best of the day and contained very little text on them, just visual cues such as images and the likes.
To this end I learnt a lot about how different views are implemented – he explained using Tweetie (Mac) as an example that it uses an
Near the end he did talk about non-standard controls and focused on drawing graphs with CorePlot. However he spent quite a long time talking about this, which although interesting it would have been nicer if he’d demonstrated a few more, different controls.
Marcus Zarra – Core Animation
Marcus started his talk by explaining how Core Animation wasn’t just for designers, and used himself as an example of a non-designer, but that it could still be used to enhance or help create sleek interfaces. However he also warned that Core Animation can easily be overused and turn a simple, clean UI into something horrible and even very unintuitive. He also explained how Core Animation, although its interface is quite simple, it is also very powerful.
He gave a few examples of using Core Animation, and then gave a live demo of an application that was doing lots of complex animations using Core Animation and how smooth and seamless they all were. It was evident that he had spent a lot of time on the project and he explained how the rotating gears displayed were constructed as paths which was a nice touch to the talk, to get a real demo application.
However even though he had an hour slot, he only used about 35 minutes talking and left the rest of the time for questions, which was quite a nice idea since it was more engaging with everyone rather than simply a lecture. However, it would have been nice for him to use more of his allotted time to show some more Core Animation examples.