Brian Coyner is a software developer passionate about software simplicity. For over fifteen years he has been helping his clients build and deliver client UI and server software. Brian enjoys teaching iOS programming for Washington University's CAIT program. He leads the St. Louis CocoaHeads group. Brian also advocates effective unit testing, and co-authored Java Extreme Programming Cookbook (O'Reilly). Brian is a Principal Software Engineer at Object Computing, Inc. in St. Louis, Missouri.
Writing understandable, maintainable unit tests is never easy. This is especially true for OS X and iOS development, where the Xcode tool support is still fairly primitive. OCUnit is a standard xUnit framework integrated into Apple's Xcode environment. This session is designed to help developers learn various techniques for writing and maintaining quality OCUnit tests. Topics include writing "parameterized" test cases (a.k.a. data-driven), testing concurrent code using "latches" (coordinate a deterministic dance between the test thread and background threads), writing mini-test harnesses based on "parameterized" test cases, and various other OCUnit and Xcode tips and tricks.
Core Animation is a fantastic animation framework. Come to this session to learn how to build an interactive, animatable pie chart using the Core Animation framework. We will look at how to use CAShapeLayer, CATextLayer and CADisplayLink objects to build the custom chart. These same techniques can also be applied to other types of data visualizations.
Making Progress with Core Animation Core Animation makes it really simple to create fluid animations with extremely small amounts of Objective-C code. Sometimes, though, we need to achieve an effect that requires a custom solution. One such effect is an animating circular progress view. This session shows how build an animatable circular progress view using Core Animation.
Boxes and Arrows is about writing great software. This practical session looks at how to apply common patterns and idioms, as well as a little creativity, to solve daily software challenges. Our journey starts with designing sensible APIs for ourselves and our team. Next we look at using KVC/KVO for separating storage from behavior. The bulk of the journey discusses techniques for building flexible asynchronous workflows using NSOperationQueues and Grand Central Dispatch.