CocoaConf Day One: Well Done
I was a little skeptical about CocoaConf when they billed themselves as a Chicago conference. Take a look at the map... Elk Grove Village and Chicago are on opposite sides of a big airport called O’Hare!
Location challenges aside, day one of CocoaConf was excellent. Great presenters, great talks. After arriving on the night before the conference, I was introduced to the Hey Nerd meme and I met a cool bunch of software developers.
Here’s a recap of the day one sessions I attended.
UI Automation – Jonathan Penn
Penn kicked things off with a very hands-on demo & presentation of UI Automation. A quote from one of his early slides sums things up pretty well:
Automated testing does not guarantee that your code is correct or bug free.
It raises your confidence so you can make changes in the code when needed.
Penn bounced very freely between Xcode and Vim, using Xcode to run his automated tests and Vim to highlight parts of the test files as he presented his points. One subtle (and indirect) point of the talk: The best developers are polyglot. Penn never said this explicitly, but I could see elements of his Ruby heritage coming through in the talk. The Ruby TDD culture is filtering into the Cocoa world, while Cocoa teaches Rubyists about great UXD. Both worlds benefit from this exchange of knowledge.
UI Documents in iOS – Bill Dudney
Many developers (including me) were disappointed about the lack of a traditional file system in iOS. Can an iPad/iPhone be a real computer if you can’t navigate the directory structure in the “traditional” way? Yes, it can. It seems that there are new paradigms for navigation, and users find these new paradigms to be intuitive.
Dudney shared a story of a user who, when looking for a Pages file, never thinks of looking in a particular directory. Instead, he thinks of opening Pages and finding his way to a file. Further, users like the idea of editing a file on one device, shutting that device down, and opening the same file on a different device to continue the edit task. Note the lack of a “save” step! UI Documents is the feature that enables this seamless (to the user) migration between devices. Omni Group uses UI Documents to support synchronization in several of their products.
Dudney bounced between UI Document, UI Kit, NSData, and NSFileWrapper in a way that tied things together neatly. Now I have tons of research and experimentation ahead of me as I dig into these tools.
Debugging With Xcode – Dave Koziol
The best way to debug code: Don’t write bugs in the first place! So says Dave Koziol. He took the group through the Gnu Debugger (old school!) and the relatively new LLDB. The audience learned where to find the crash logs on iOS devices, and some of the plusses & minuses of the Watchdog timer.
I approached Koziol after the talk for recommendations on which debugger to use moving forward. I used GDB in my college days. But since I’m re-immersing myself in development, would it make sense to continue with GDB? Koziol’s response: Jump on LLDB. It’s the future. Further, LLDB builds on the commands of GDB, so it’s not like you’re completely abandoning the old school tool.
DTrace – Not Your Father’s Debugger – Craig Castelaz
CocoConf marks my first exposure to DTrace, first in Jonathan Penn’s talk about UI Animation, and second in the DTrace talk by Craig Castelaz. Castelaz is a true old-school Unix dev who currently fixes bugs for Oracle (his words). What’s the most amazing thing about DTrace? According to Castelaz: Nothing. It’s already there (in Xcode).
“Nothing” yields many advantages. In DTrace we have a tool that’s already part of our dev environment, ready to give us info we need to troubleshoot effectively. There are two ways to interface with DTrace: the command line, and through Instruments. DTrace clauses consist of four parts:
- Providers.
- Probes. The point of instrumentation, where queries begin.
- Predicates. Filters for our queries. DTrace generates more data than a human can read in a reasonable time!
- Pactions (the “P” is silent). Actions allow us to write scripts in Ruby, Python, or another scripting language.
The bottom line from this talk: DTrace complements our other debuggers and tools like instruments. It’s a powerful device to have when things misbehave in production.
To Be Continued…
Let’s call this blog post Day One, Part One. Gotta run to the conference rooms for Day Two. More to come…