My favorite talks are the developer-heavy ones. Here were three I enjoyed today.
Advanced Debugging Code (on Sunday)
- 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
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 submodulemodularization and went into Xcode workspaces, static libraries, bundles, and categories.
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.
“Stop it! That Hurts!” Common iOS Anti-Patterns
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
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.
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