My favorite talks are the developer-heavy ones. Here were three I enjoyed today.
Advanced Debugging Code (on Sunday)
By Kendall Helmstetter Gelner, @kendalldevdiary, Slides (pdf) and Sample Project on Github
- This talk was chalk full of debugging goodness: logging, instruments, LLDB, breakpoints, ARC (less code == less to debug), Pony Debugger, Charles, Core Data.
Developing for Reuse
By Andria Jensen, @andriajensen, slides: http://bit.ly/U3RA4V
Andria had a great presentation and her slides are very useful for best practices in modularizing code for Objective-C and Xcode.
This very topic was resonating with me last night (iOS Automated Testing: Refactored), and although she didn’t cover the unit testing pieces, she went way beyond the first step of
git submodule
modularization and went into Xcode workspaces, static libraries, bundles, and categories.
PhoneGap
By Andrew Trice, @andytrice
Andrew is a great resource and has some interesting projects on Github such as app-UI, Lil-Doodle, Fresh-Food-Finder.
“What’s the difference between PhoneGap and Cordova?” They’re the same code base right now. Cordova is the open source project, and PhoneGap is Adobe’s distribution, and they own the PhoneGap name.
Some libraries he uses are Backbone.js, and Leaflet (“An Open-Source JavaScript Library for Mobile-Friendly Interactive Maps by CloudMade”)
He showed some good plugins, like second screen support (native PhoneGap code to support multiple screens). PhoneGap Plugins are nice since they give JavaScript access to anything you can do in the native layer, and there are many plugins that have already been developed.
Presentation Suggestion I have: Many of the PhoneGap examples are business apps (Apple Store, LinkedIn, BBC Olympics, Zombie Jombie, Wikipedia, Untappd, Bit Timer, US Census Browser) though there are JavaScript libraries out there (such as lime.js) that make PhoneGap a nice platform for gaming too.
“Stop it! That Hurts!” Common iOS Anti-Patterns
By Carl Brown, @carlbrwn, slides: http://t.co/JRWPcd1B
His whole talk is great. Topics include Error handling, Asynchronous, Date, Security, Caching, View tagging, Core Data results, don’t mix read-only and read-write data.
He’s in Austin, home of SXSW Interactive where it “Looks like any idiot can make an App”, sees a lot of (bad) code
Suggestions
Read good code – and NOT these from Github Objective-C “Most Watched”: three20, asi-http-request, AFNetworking, facebook-ios-sdk, Restkit.
His “Rocket Engine” for Responsive Code (to make sure you’re not doing much on main thread):
NSAssert(![NSThread isMainThread], @"BOOM");
Uses NMVC pattern (“N” for Network), essentially networking happens at the data layer and not throughout code.
Carl had some criticisms with RestKit, so I asked him more details after the talk. The criticism is more that Restkit tries to abstract what’s local and what’s remote, and it’s not always clear what’s happening. He turned me onto a nice recommendation: MagicalRecord which is a Category for Core Data that handles fetching of remote data and adding to Core Data.
Summary
Program sober and rested, if possible
Leave other language’s patterns at the door
Program idiomatically (“The specific grammatical, syntactic, and structural character of a given language.”)
Don’t fight the frameworks