I went to iPhone Dev Camp in Boulder yesterday.
I’d not been to anything like this before, and I really didn’t know what to expect. I was apprehensive and concerned that I was way too much of a Mac newbie (let alone iPhone newbie) to be able to keep up, and that I had no right being in that room. I was more a of newbie than most, but the group was patient/open & welcoming, the presentations clear, and I found the “day of awesomeness” so awesome that I ended up rearranging firm plans to allow me to stay all day. I’d recommend this event to newcomers and experts alike.
Joe Pezzillo gave a “Hello World” introduction talk (three small versions of the same app in 1 hour) to give folks an introduction to Xcode, the iPhone SDK, and working with each. Okay, so I already felt comfortable that I knew enough to participate in the day, and went to the “performance tools” talk by Kendall Gelner. There I was quickly brought back down to earth as I couldn’t keep up, but I was at least exposed to what tools to use for what problem solving, and hopefully the things learned will return when I need them.
Kendall’s presentation on how to use the Interface Builder to created a TableViewCell UI using the graphical interface builder was practical and immediately useful. I was able to wire this technique into my application while watching him on the big screen, (monkey see/monkey do), and I was done as the presentation was over. I’d found this Interface Builder tutorial useful in the past, but watching usage live & interactive was excellent. Thank you Kendall!
I was worried I was lowering the IO in the room when I asked a lot of my memory management questions during Joe Pezzillo’s talk on the topic, but I do think it was valuable to cover for a number of the others (this simple things has some complications.) I understood the concepts of an incrementing/decrementing a “retain counter” but hadn’t picked up on autorelease draining the pool at the end of a run loop cycle. That mental picture really helps.
Kendall’s talk on debugging was more than just informative, it was fun. Having the debugger talk values using the voice synthesizer (log, ‘ignore’ to not stop, ‘talk’ the values) was both ‘annoying’ but fun, and possibly useful; one could watch the app run quickly & know values/changes w/o having to stop/view the console log. The technique of break/do something/ignore [to log values & keep going] was valuable, and “po” (print object) useful.
Kenji Hollis spoke on tools for agile development, and it was good to see the openness to sharing general tips/tricks/tools. Maybe this is something I can contribute at future camps.
Kendall’s sqlite3 presentation was a good basic introduction although I had to leave before it was running. I suspect that the “copy database from root to a writable copy in documents” was the cause of the problem (i.e. an empty DB had already been copied) ‘cos I’ve hit problems like this before. Otherwise the presentation was much nicer (simpler) than the SQLiteBooks sample on the iPhone Dev Center.
Throughout the day I picked up as much from seeing how other folks used and configured their development environment, and worked with the tools, as I did from the talks. A double whammy of value. That, and the small (sometimes throwaway) comments that just made things click. Properties w/ retain automatically “release old, retain new”, I’d not picked up from the docs. Valuable. Debug log @(unsigned int)[self retainCount]@, simple but valuable. Remove your code from what it is a delegate for [say in viewWillDisappear] to reduce risks of unintentional circular retains. Autorelease pools are pools of pointers, not a chunk of memory; one could retain something in a pool, yet release that pool, and it is still valid. Put a global break point on objc_exception_throw to get stack traces on exceptions. Things like __weak are Mac not iPhone (so be careful when porting or reviewing code from Mac for iPhone.) There were more…
I had to leave before the random Q&A session which I really wish I could have stayed for. If anybody reading this was able to stay for that please let me know what I missed.
I’d really like to thank all of the (roughly 15-20) participants of this day for their time, their patience, their expertise and their enthusiasm. Joe Pezzillo (who stayed late to help us with core animations) and Kendall Gelner presented the most, and for that I am very grateful & thank them. Thanks also to Danny Newman and TechStars for organizing/hosting.
I’ll be going to coming events in the hope that by then I can pay back some of what I gained. I also know I’ll learn something & meet some good people.