Tuesday started with Tim Isted (@timisted) doing a musical introduction demonstration and sequence on the pentatonic scale.
The musical introduction led to the Guns’n’Roses song “Welcome to the Jungle” and was used as a metaphor for being an introductory sequence which began and started off the song. His argument was that applications should start up (and quickly) and lead the user into what they want to achieve, instead of necessarily have long loading times, progress bars or unnecessary sequences of dialogs before the user can do something useful.
Peter Steinberger (@steipete) talked about selling frameworks, using his PSPDFKit as an example. This framework provides an improved PDF rendering support in iOS applications, and he recommended FastSpring as the e-commerce merchant behind the application’s store, and specifically against PayPal.
Probably the best image from the presentations today, his argument is that everything is a choice. By making it easy for people to choose the good side (particularly if it is well priced) it is possible to sell frameworks on iOS. Most of his recommendations comes from references to questions on StackOverflow, although he notes he also posts code answer snippets to questions for those that want to know more. In most cases, the up-sell to the commercial license is enough for those interested in including it in an application.
Key Value Observation
Danny Greg (@dannygreg) from
GitHub gave an interesting presentation of how Key Value Observing works
under the covers. Basically, when an object is observed, it is dynamically
subclassed (using the
method, and then changing the method pointers (aka
IMPs) to use a custom
notification before calling the superclass.
The only other feature needed is the ability to override the class method
+class so that it returns the same name as the parent, for those runtimes
which need to know the exact class names.
Tiny Ears and Speech Recognition
Emily Toop (@fluffyemily) talked about how to do speech recognition for children, noting that they often make common mistakes or add additional consonants in speech whilst learning. Most books are read-along but don’t really interact with the children, so Emily has started @tinyearstech to try and work towards speech recognition for children’s learning.
Jeff LaMarche (@jeff_lamarche) talked about the level of detail that goes into the Wicked musical, including props that otherwise don’t get seen such as Munchkin business cards and buttons (though he might have meant badges …)
His main theme was about being consistent and writing good quality code, without commenting on the ‘how’ a function works unless if it’s non obvious to a competent programmer, if it looks like it might be a mistake, or if it could have been done in a more obvious way.
He also equated ‘clever’ code with ‘bad’ code, in that people are less likely to understand it later on in maintenance. He also mentioned that more descriptive names/variables are better; although shorter names may save a few keystrokes now, the amount of effort to understand it at a later stage is likely to be a lot more difficult – and the pay-off is unlikely to make much of a difference with code completion anyway.
Finally, speaking of awesome, surround yourself with awesome people so that you’ll be able to learn from the best. When it comes to learning, take any feedback you can as positive; if they are saying how it can be done better, it’s because they want it to be better rather than a negative observation of where it is now.
Creating a Successful App
Michael Simmons (@macguitar) talked about how to create a successful app, noting that luck can play a big part of it (but also noting that luck is taking advantage of whatever opportunities that present themseles). To make it really succesful, you have to know who you are making the app for and dream – but be realistic.
Skinnable iOS Apps
Nik Kuh (@nickkuh) talked about how to skin iOS apps. These revolved around having a centralised stlyle class (which could apply styles, fonts, colours etc.) and passing all UI construction through that, as well as working with the presentation styles afforded by the recent iOS API changes. Rather than going through all of them here, it’s sufficient to link to his GitHub repository which contains code samples covering the concepts.
Dave Addey (@daveaddey) gave a talk on custom tools for applications. He highlighted four apps; the UK Train Timetable app, an internal bug filing app, an upcoming World War 2 timeline app and a mystery app.
He started the talk by noting not everyhing is a nail, and the above Stanley Fubar™ might be a good tool if everything you have is a nail, but it won’t open walnuts, slice the top off of eggs or take a dog for a walk.
Back to applications, and he talked about hte necessity of creating tools for manipulating data structures. These aren’t apps that will ever be visible to the public, but were an essential timesaver for the creation of data used by those applications. In the case of the UK timetable, it was used to edit station data (since there’s no single db which has all the information in it), rather than a multi-step Excel spreadsheet driven process before.
For the World War 2 timeline app, the custom editor allowed generation of
high quality maps from rendered data (using a custom DSL to generate
shading and representation) and allowed the map to be presented with the
MacMapKit, a port of the
iOS only MapKit to OSX. The app also provided a means to search the database
of events (using the
NSPredicateEditor class), which allowed subject matter experts
(historians) to validate the data and look for duplicates.
He finally mentioned a couple of applications; the editor tool behind the popular iPad based Tap Mag and for an upcoming manga comic. He also highlighted GameKit (via the simulator, since it’s not currently available on OSX) as being a really easy way of transferring data between devices without having to rebuild or repackage the application.
Happiness of a Grain of Sand
The day was rounded off by Aral Balkan (@aral), who remains one of the main reasons to come and visit NSConference.
His talk this year focussed around an hourglass, with the analogy that the sand running through it is the time of your life, and noting that whether the grains of sand represent a happy time or a sad time, they continue to flow from the future to the past at a constant rate. He also cited a quote “You only have a certain number of keystrokes in your fingers before you die” (Scott Hanselman?) and encouraged everyone to use their time wisely before they do.
He pulled a few funny observations around the doors in the conference centre (he has a real things for ‘push’ doors with ‘pull’-like handles) and argued for the creation of a simpler washing machine with a ‘dirty clothes’ drawer and a ‘clean clothes’ drawer.
He also made fun of some websites (like Macworld) which put up an annoying prompt when you’re on an iPhone (or an iPad) which try and direct you to downloading their app. He then highlighted a parts ordering website with many different specifications (colour, thickness, quantity) each with a ‘buy now’ button – which didn’t in fact ‘buy now’ at all. Probably the best quote of his presentation (nay, the conference)
Your app shouldn’t look like your database just threw up
Oh, and he sings really loudly in the shower, too.
Still no sign of Scotty (we recorded a message to wish him well) and the night was finished off with a Casino Evening with monopoly style money. It was probably one of the first occasions in which people were sitting around and just socialising, and the round of drinks sponsored by GitHub certainly helped the evening flow.
Some people are being roused early due to the ducks on site; so much so that NSConfDuck now has its own twitter account.