Josh Johnson is Director of Development at Two Toasters. A developer with a passion for writing software for Mac and iOS, Josh has built mobile and web applications for an array of industries and clients. He organizes the Raleigh-Durham, North Carolina CocoaHeads and NSCoder Night meetups and speaks at iOS events. Josh enjoys amateur filmmaking and watching bad movies. He lives in Raleigh with his wife, two teenage kids, two cats, and a dog.
A tour of using Core Location in an app and best practices for debugging location based information.
Experiences with using Core Data with GCD in an app. We'll also talk about Core Data concurrency additions in iOS 5.
Manually testing your app over and over again is incredibly tedious and error prone. You can either stop testing and roll the dice, or find a way to automate the testing process. Automation is the way to go. Apple provides a great framework in UI Automation for testing apps through Instruments, but it can be difficult to use as a tool with non-technical QA or clients. Calabash is a framework built on top of the ruby testing framework, Cucumber, that lets you build acceptance tests that can easily automate testing of your application. Using a very readable language that anyone (even my Mom) can understand, you can write tests that exercise your application and check for regressions. This session will discuss setting up your project to use Calabash, writing tests, writing custom steps, dealing with some of the more frustrating edge cases, and look at a the console script provided to navigate your application's views while running.
CALayers are a core part of displaying content in iOS. All UIViews are backed by one, there are several subclasses that provide different display behaviors, and they are a core part of how Core Animation works. This session will help you understand more about CALayer by reviewing the background of how layers work, how animations work, and how to take advantage of the many subclasses of CALayer to provide different ways to display content in your app.
Most apps we build are backed by some form API. When these APIs are pre-existing you can build your app without delay. What happens when another team is building the API while you are building the app? How can you build a view with data that doesn’t actually exist? We will review some options for staying productive when working with external teams by exploring:
Declarative programming patterns are becoming more common in Cocoa development. With some roots in functional programming these ideas can be difficult to wrap your head around. How can we take advantage of these patterns with what we already know? By writing code that focuses on expressing the “what” and not the “how”, we can create clearer and more maintainable code. In this talk, we’ll explore these patterns and dig into a some examples of this in both Objective-C and Swift.
Concurrency is at the heart of iOS development, but Apple’s built-in frameworks require developers to focus their energy on the mechanics of concurrency at the expense of clear, understandable code. Task.framework is an open source library that enables developers to concisely express the tasks their apps need to perform and their inter-dependencies, all while maximizing concurrency and providing a straightforward interface for handling errors. In this talk, we'll discuss how you can use Task.framework to better structure the types of complex processes that are so common in today’s apps. Task.framework is available at github.com/twotoasters/Task.