Nathan loves creating software and helping other developers hone their skills. As the lead developer at Free Time Studios, he spends his days coding, teaching, and writing, and he wouldn’t have it any other way. An Apple and Cocoa fan since the turn of the century, Nathan has been a dedicated member of the iOS developer community since the day the SDK was released. Since founding Free Time Studios in 2009, he has helped organizations such as NASA, Thompson Reuters, and the U.S. Army ship their iOS apps and train their development teams. Nathan is author of the Free Time Studios iOS Development Workshops, and his seminars and speaking services are popular attractions at iOS and Mac developer conferences around the globe. Nathan is also an active member of the developer community in Houston, and is the co-organizer of the Houston iPhone Developer Meetup group and the creator of iPhoneDevCamp Houston.
iOS 3.2 and 4 brought us a greatly simplified and more powerful event handling system built around multi-touch gestures. Like most Cocoa APIs, UIGestureRecognizer can be as complex and flexible as you want to make it. We will do both in this session. You will learn how easy it is to implement swiping, pinching, panning and rotating using the built in gestures. You will also learn how to combine the built in gestures and create your own to make interacting with your apps a wonderful experience for your users.
Multicore has officially come to iOS devices, and taking advantage of those cores in your apps is simpler than you might think. Concurrent programming is never easy, but GCD makes it a whole lot easier. In this session, you will learn the ins and outs of GCD and how to use it to effectively. We will cover topics like: * Concurrent and serial queues * Creating your own queues * Synchronizing access to shared memory without locks * Using semaphores to keep execution under control * Using dispatch sources for asynchronous data access * Using Instruments to profile and optimize your concurrent and asynchronous code
"Engineer", "craftsman", "artist". These words have all been used behind the word "software" at some point. And they all fit.
Building great software requires the perspective of a polymath. Nowhere is this more evident than in the tools of software development. The tool landscape is as varied as it is vast, but these tools all have a unique quality: nearly every one was designed and built by software developers. It is a rare luxury for a professional to have such an intrinsic understanding of his tools as well as the knowledge to build his own. In this session, we will expand on both of those ideas.
For your engineering side, we will explore the Xcode toolset with a focus on automation and optimizing workflow. Next, we will inspire the craftsman in you by looking at custom generic and single-use tools. Finally, your inner artist will be inspired when we look at creative uses of software outside of the traditional developer toolbox. By the end of this session, you will have a deeper understanding of the tools you use every day, and you might find a new use for some of that other software gathering dust on your hard drive.
When asked what UICollectionView is for, most iOS developers respond with some variation of "It's like UITableView, but with a grid." While this statement is mostly true, it greatly underestimates the utility of this powerful piece of UIKit. UICollectionView is actually a generic API for dynamically laying out a collection of views in an infinite scrollable canvas. The built in UICollectionViewFlowLayout implementation works very well for laying out a mostly uniform collection of views in a grid, but it only scratches the surface of UICollectionView.
To go beyond the grid, developers can implement custom layouts dynamically driven by app data. Changes to the data can instantly affect the layouts. These changes can be automatically animated and even imbued with physical properties via UIKitDynamics. With a little math and a lot of creativity, UICollectionView can be used to render timelines, charts and graphs, parallax scrolling landscapes and more. The aim of this session is to show, through working examples, how flexible and powerful UICollectionView really is.