Graphical Lessons at this week’s Cocoaheads Meetup

On thursday night, a group of 26 developers got together at the offices of TekSystems in Raleigh to talk about iOS development. This meetup group is sponsored by both TekSystems and Two Toasters (From Durham, NC). For those who are looking for work as an iOS or Android developer, TwoToasters indicated that they are currently hiring so drop them a note at Careers.

The 26 people in the room ranged from teens to people who could have been their grandparent. Was great to see this expanse of ages, and I was impressed at the discourse and questions across all ages and participants.

The Triangle Cocoaheads who run the meetup made sure we had a great set of presentations. You can watch video of all the presentations over at their website.

The first talk was from Kevin Conner, this was all about the collection classes. While most of us are familiar with NSArray, NSDictionary, NSRange, and NSNull, Kevin did a great job of explain various collections and new syntax in objective C. NSIndexSet, NSCountedSet, NSAutoreleasepool, NSOrderedSet, and NSSortDecriptor, and NSCache were all brought forward to the group. Kevin provided examples of when each could be used, as well as information on how they effective app performance. Definitely a video you want to check out for more information.

Up next was Eric Lanz. Last month Eric showed off a organizational tree app he was working on. The crowd last month was wowed by the performance of the graphics, so Eric’s presentation this month was on Multithreaded graphics. Eric has proven that you can do things on iOS that Apple claims can’t be done. I personally have been a bit concerned about how much space graphics take up in my own apps, so I was fully engaged when he gave a few tips for programs to help reduce your graphic files; however this was only a minor part of his talk. Eric provide tips for building your graphics pipeline in your app, so that you can spin off the drawing in separate threads. This allows your to optimize the number of times your draw things, and also kill drawing if the user quickly moves on to a new screen. The goal is to keep your app response, while providing the user informed with enough graphical content. Amazing!

A few of his tricks include building a Dispatch Serial Queue – this will allow you to have a task to run on a worker thread and/or using the Dispatch Global Queue – which on iOS you can’t create yet, but you can get the existing global queue. However, if you use these queues you need to remember to push your graphics context, or you will crash!

Finally, Jay Thrash went thru an architectural “Unburdended ViewControllers”. A key point that I got from his presentation was how the Model-View-Controller approach can cause problems of maintainability overtime, especially as it relates to accessing data. Jay referenced a book I am currently working my way thru from the Big Nerd Ranch called “iOS Programming – the Big Nerd Ranch Way”. This book calls out the idea of a Store – extending the MVC model to MVCS. This abstraction of data allows you to simplify the maintenance of you apps, and deals well with data stores that can be on the device, or via service calls to other systems. A good example to understand this approach comes from the article “Skinny Controller, Fat Model”, talking about Ruby over six years ago. Check it out and don’t forget to head over to Triangle Cocoa to watch this video.

After this we went to the App Showcase of the night, were local developers show off what they’ve been working on. I didn’t catch everyone’s name, probably because I was nervous – I was going to show off my original app – “Wasted Time” and a work in progress for a game I am developing “Traders vs. Trinars”, but we saw a great example on localization. This app demoed changing the orientation of your language for Arabic and Hebrew, i.e. languages that read Right to Left. And a demo from BA3 on their mapping API – Amazing!

Well, I am looking forward to next month’s meeting. Until then, keep on coding!