Washington / Sessions

A speech bubble icon

Session List for
CocoaConf DC 2016

Speakers at last year's CocoaConf
  • Speaker photo

    A Tale of Two Tracers / Jonathan Blocksom

    We will walk through the design and coding, in Swift and then in Metal, of a ray tracer — a program to make images by computing how light bounces around a scene and into the eye. How will the expressive, functional, protocol-oriented Swift ray tracer compare with the one written for screaming performance in C++ oriented Metal?

  • Speaker photo

    Beginning iOS Development / Walter Tyree

    This hands-on course will introduce attendees to the fundamentals and tools used by all iOS developers. The morning will focus on fundamentals of Swift and the tools available. The afternoon will explore the multitude of API’s and libraries that allow us to take advantage of the iOS hardware. We will iterate on an application that downloads data from the “internet” and presents it for display. All attendees will receive the source code of the completed application, along with extra features and modules for further exploration. The course and the sample app are structured so that more advanced attendees can jump ahead to explore advanced topics. All code samples will be provided in Swift.



    • Hands on with Xcode and Interface Builder
    • Storyboards and playgrounds
    • Basic debugging and Instruments
    • Dissecting UI
    • Third party tools that every iOS developer should appreciate


    • Introduction to Swift
    • Frameworks Apple provides
    • Arrays, Dictionaries, Strings, Numbers and Dates
    • View Controllers, Table Views, Master Detail
    • Design patterns

  • Speaker photo

    Building a Streaming Apple TV App / Chris Adamson

    Apple TV offers a friendly SDK, full of familiar view controllers and Foundation classes, with everything an iOS developer needs to develop their own streaming channel. Except for… you know… the streaming part. In this session, we'll look at how Apple's HTTP Live Streaming video works -- from flat files or live sources -- and how to get it from your computer to a streaming server and then to an Apple TV. We'll also look at common challenges for building streaming channel apps, like serving metadata, protecting content, and supporting single sign-on.

  • Speaker photo

    Camera Does What? / Walter Tyree

    Having recently completed a project that uses AVFoundation and CoreImage to facilitate depositing checks; we have a plethora of how-to-dont’s about shape recognition and image capture with the iOS camera hardware. After a survey of rectangle, face and QR code recognition strategies, we dive into how to make these user friendly and tricks for incorporating CoreImage recognition into your apps.

  • Speaker photo

    Control (Your Instrument) / T.J. Usiyan

    Audio Units have finally been brought to the masses. The templates finally provided within Xcode allow the creation of an Audio Unit with a few clicks. We can make sound! It's alive! Now what? Control. In this talk, we will explore accepting input from the user while rendering audio in our instrument.

  • Speaker photo

    Creating a Server Side Application with your Favourite Language: Swift! / Jonathan Guthrie

    A practical demonstration of how to create a server side application in everyone’s favourite language. You will be amongst the first in the world to see some brand new tools in action that make getting started in Server Side Swift a snap, leaving you to do the fun stuff - making your app work.

  • Speaker photo

    Day 1 Recap Song / Jonathan Mann

    We have no idea what this will be. You'll have to come and find out. ;)

  • Speaker photo

    Day 2 Recap Song / Jonathan Mann

    We have no idea what this will be. You'll have to come and find out. ;)

  • Speaker photo

    Debug, nor not debug? Is that a question? / Mark Dalrymple

    The act of debugging boils down to asking, and answering questions. The better you can make your questions, the more effective you get at debugging. This session shows you how to question reality to become a better debugger.

  • Speaker photo

    Debugging and Testing / Walter Tyree

    This talk begins by looking at some of the new debugging and reverse engineering tools that have recently appeared. Then we dive into documentation options and admonish you to leave a visible trail for the developer that inherits your code. Next, we will highlight strategies for adding testing to legacy code as well as how we have added testing to existing projects. Sprinkled throughout we will look at the most interesting and wierd bugs we've found during our recent explorations and offer advice on our thought process for figuring out their causes.

  • Speaker photo

    Exploring Swift Memory Layout / Mike Ash

    Let's get down to bits and bytes! Abstraction is great, but sometimes it's useful to dig down. In this session, we'll explore exactly how Swift lays out data in memory, including both your own variables and Swift's internal data structures. We'll build a program to recursively scan memory at runtime to dump out everything we want to know, then walk through its results and what they mean, and compare and contrast with how C and C++ store their data.

  • Speaker photo

    Firebase: Totally Not Parse All Over Again (Unless It Is) / Chris Adamson

    With Facebook shutting down Parse, everybody knows to never again depend on a third party for their backend solution, right? Sure, and after you spend six months trying to write your own syncing service, how's that working? In 2016, Google has added a ton of features to Firebase, their popular backend-as-a-service solution. Firebase's primary offering is a realtime database in the cloud that syncs changes to and from multiple concurrent users, and their Swift-friendly iOS SDK makes it ideal for mobile use. In this session, you'll learn how to set up a Firebase backend and build an iOS app around it.

  • Speaker photo

    Increasing Productivity in Xcode / Mark Gerl

    Xcode is a powerful tool. It can be overwhelming, and frustrating at times. Come to a talk about how you can update your projects to make your productivity faster.

    Some example content:

    • How to set up your project with .xcconfig files to make updating your build version number and all of your extensions to use the same version number - a requirement for iOS, iOS extensions, and Apple Watch apps and extensions. Instead of updating each target by hand, you can automate this for your entire project.
    • How to setup your code to use the Swift Objective C header, without lots of #ifdefs to determine what project you are compiling. (Each target has it’s own Swift Objective C header, so you can’t share them easily.)
    • Using a build script section to update resources based on your build.
    • Other lessons learned from our plethora iOS, tvOS, and watchOS projects at AOL.

  • Speaker photo

    Intro to iOS 3D Graphics Programming / Jonathan Blocksom

    This hands-on course will introduce attendees to the fundamentals of 3D Graphics on iOS using SceneKit and a bit of Metal. No previous graphics programming experience is necessary but students should be familiar with Swift programming.

    The morning will focus on introducing SceneKit and how to create 3D scenes and camera motion with code and external 3D resource files.

    In the afternoon we will learn about Metal and OpenGL, and how shader programs can be used for custom rendering. We will end the day exploring the cool effects you can do with SceneKit, and attendees will have the chance to try a number of simple projects demonstrating them.

    There will be a math refresher during lunch, covering the basics of vectors and matrix multiplication with an eye towards understanding lighting calculations and transformation matrices.

  • Speaker photo

    Keynote / Ken Auer

    Details coming soon!

  • Speaker photo

    Learning From Our Elders: Applying functional insights without losing Swift / Rob Napier

    Swift is not a functional programming language. Pushing too hard to make it one fights Swift and breaks Cocoa.

    But Swift has absorbed some fantastic lessons from the functional world, and while value types may not quite be the present, they are clearly the future. We’ll explore how decades of work in functional languages have influenced Swift, and how you can use those features best while staying true to Swift.

  • Speaker photo

    Performance Tuning and Swift / Mark Dalrymple

    Performance tuning is a big topic, and there are optimization opportunities both algorithmically and how you use your programming language. Swift gives us a lot of opportunities to write high performance code, but you have to be aware of some of the inner details to take full advantage of them.

  • Speaker photo

    Practical Security / Rob Napier

    Keychain, disk encryption, Common Crypto, certificates. Security can be daunting for Cocoa developers. There are so many frameworks filled with words you’ve never heard before solving problems you don’t understand. And why does so much of it have to be in C?

    The truth is that good security is hard, but the code doesn’t have to be. This session will show you how to best use the many security tools Apple provides. You’ll learn how to properly encrypt with AES, how to make the most of iOS’s device encryption features, how to best manage SSL, and more. If you’re using AES for anything, but don’t know what an HMAC is, you need to attend this session.

  • Speaker photo

    Reverse Q&A Panel / Chris Adamson

    "In Soviet Russia, panel questions you!"

    Borrowing an idea from the Penny Arcade Expo (PAX) and the panels held there by Harmonix (makers of the "Rock Band" games), a "Reverse Q&A" literally turns the tables on the traditional panel. Speakers become questioners, and attendees are the ones with the answers.

    It's a new and novel idea, letting attendees have their moment in the limelight to say what they're really thinking, and letting speakers learn more about what people want from conferences, books, and their development life in general. With a combination of polls, follow-ups, person-on-the-street questions, and funny stories that we can all relate to, the Reverse Q&A will shake the cobwebs out of the old panel format and turn it into a two-way discussion that both sides of the mics can learn from.

  • Speaker photo

    Streamlining JSON Mapping / Jonathan Lehr

    iOS project teams, especially those working in Swift, have adopted a variety of approaches to handle mapping objects in their model layer to and from JSON values. We'll explore a new approach that can reduce manual coding tasks by providing automated encoding and decoding of model objects, while offering a comprehensive, easy to visualize model of all mappings.

    Source code for the presentation is from the Modelmatic project on Github.

  • Speaker photo

    Swift Code Patterns From the Ranch / Mike Zornek

    At the Big Nerd Ranch we've been experimenting with Swift since it was first announced. We've also been lucky enough to have some wonderful clients whom have empowered us to use Swift on their projects. This talk will explore some of the way we've embraced Swift patterns as we interact with UIKit on our projects. We'll review some small ideas and then move up in scale to finish with some larger ideas. With luck you'll walk away with some actionable patterns to make your own Swift projects safer, easier to read and easier to test.

  • Speaker photo

    Swift for Objective-C Developers / Jonathan Lehr

    # Swift for Objective-C Developers

    A rapid, one-day introduction to Swift geared towards developers who have some prior experience in Objective-C. The course has a strong focus on language features that figure most prominently in typical, everyday coding tasks, with an emphasis on constructs (such as Optionals) that Objective-C developers tend to find the most challenging to master.

    Part 1: Getting Up To Speed on Swift

    We'll spend the bulk of the day getting getting up to speed on essential features of Swift through a combination of discussions, demos, and hands-on lab exercises, that cover the following topics:

    • Everything's an Object
    • Variables and Constants
    • Functions and Methods
    • Generic Types
    • Tuples
    • For Statements, the `enumerate` Method, and Ranges
    • Structures
    • Stored Properties
    • Default Values
    • Initializers
    • Computed Properties
    • Property Observers
    • Value Types vs. Reference Types
    • Classes
    • Type Properties and Methods
    • Extensions
    • Protocols
    • Bridged Foundation Types
    • Enumerations and Switch Statements
    • Using Optionals
    • Optional Binding
    • `guard` Statements and `where` Clauses
    • Working with Logic Constructs
    • Optional Chaining
    • The Nil-Coalescing Operator
    • Casts
    • Collection Types and Literals
    • Error Handling
    • Protocol Extensions
    • Working with Closures
    • Functional Programming Concepts
    • Using `map`, `reduce`, and `filter`

    Part 2: Developing an iOS App in Swift

    Towards the end of the day we'll try our hands at reading and writing some typical Swift code in the context of an example iOS app (to be distributed in class). The goal will be to get a hands-on feel for working with translated Objective-C APIs, and for applying Swift programming techniques to everyday coding tasks.

  • Speaker photo

    Swiftly Origins / Danny Greg

    Development of Swift started 6 years ago and was a closely guarded secret. The end result of that work was the beginning of a dramatic change to Apple’s developer tooling and infrastructure. In this talk we discuss some of the influences that lead to Swift 1.0 and why it sits in a unique place in the current programming landscape.

  • Speaker photo

    The Inside Scoop On Indoor Positioning / Jack Cox

    Apple released Indoor Positioning capabilities in iOS 8, but they've kept the specifics about it very close to the vest. This talk is based on actual work with indoor positioning and it dives deeper into some of those specifics. I'll talk about the process with Apple, how it appears to your app, how to leverage it in your app, some helpful tips to make your life easier if you decide to adopt indoor positioning, and finally limits and alternatives to iOS's indoor positioning.

  • Speaker photo

    There and back: The journey of product discovery and exploration / David Hoang

    Product strategy is evolving and becoming less clear, as is the ‘product roadmap’. Requirements, business needs and user expectations are changing at a rapid pace. This session focuses on the process and thinking of product discovery and exploration to inform your product roadmap by running multiple projects that are all connected to the problems that need to be solved.

    This talk will cover:

    • brainstorming and idea generation
    • understanding and getting team alignment on the problem
    • executing a high tempo prototyping process to develop ideas
    • learning from the prototypes with real humans to get feedback in user testing
    • incorporating what was learned in the product roadmap
    • how a design team uses Xcode to create quick native prototypes to user test
    • dual track scrum to maintain discovery as a routine part of your process
    • leading a cross-functional team of designers, engineers and product managers

  • Speaker photo

    UIKit Re-Animator / Mark Pospesel

    Join me for a Lovecraftian tour of what’s new in animations and graphic performance in iOS 10. We’ll cover the ins and out of UIViewPropertyAnimator, a new paradigm for handling animations. Along the way we’ll also touch on UIPreviewInteractions for custom peek/pop user interfaces and the new UIGraphicsRenderer for performing drawing work off of the main queue.

  • Speaker photo

    Unidirectional Data Flow in Swift / Ian Terrell

    With frameworks like Ember and Redux, web developers have been using unidirectional data flow (Facebook’s “Flux” architecture) to manage complex UIs for more than a year now. Many developers report that the pattern boosts development speed, simplifies their app architecture, and leads to more testable code. We can apply the same pattern to the UI tier of our apps and achieve similar gains. This talk describes the Flux architecture and how to implement it in Swift. We’ll go beyond toy projects and explore how to use it with routing, forms, animation, table views, Core Data, and more.

  • Speaker photo

    Unpacking View Controllers / Kevin Finn

    When building iOS apps, there's a tendency to just put everything in the view controller, leading to what many have called the massive view controller anti pattern. This leads to many problems: these monolithic classes are harder to understand, impossible to compose, and generally force engineers into rewriting common logic in many view controllers instead of finding good abstractions. On top of all of this, they're extremely difficult to reuse: what happens when different interactions with your app have overlapping steps?

    Learn through a series of examples how the iOS team at Betterment addresses this problem, using light view controllers that are responsible for as little as possible, instead delegating their logic to models, network-backed resource objects, data sources, views, and flow objects. This way view controllers are solely responsible for what they're best at: lazily loading and configuring a view, presenting it on screen, and delegating everything else to modular, reusable components. This allows us to achieve an extremely high level of code reuse without overly complicated components.

  • Speaker photo

    What's new with UserNotifications / Kevin Kim

    iOS 10 brings a new approach for handling Local and Remote (or Push) Notifications. The new UserNotifications and UserNotificationsUI frameworks give you more control over managing and rendering your notifications. In this session, we'll review what's new with notifications and what's stayed the same. Finally, we'll walk through an example service extensions that you can use to enhance your application.

  • Speaker photo

    Wrangling With Dates, Decimals, and Measurements / Mark Broski

    WWDC 2016 introduced a fabulous Foundation API for measuring just about anything from distance to duration to diameter. Here is a great opportunity to rethink/refactor the way your app handles dates, currency values, and other measurements, along with proper localization. But be warned: developer forethought is still required. Experience shows that without care, these unit measurements can create subtle and pernicious bugs that can mislead your users or crash your app. But when you get it right, you can build an extensible, fast, and accurate code that accounts for the quirks in our human measurement systems.

  • Speaker photo

    Write That Down / T.J. Usiyan

    Debugging is quite the challenge. Tests and design patterns often fail us and we are left printing out values in lldb or pulling in logging frameworks from third parties. Apple has finally released a tool of their own to address logging and we are going to get set up using it in this session.

  • Speaker photo

    iOS in the Enterprise: Advanced Topics / Carol Shepherd

    The enterprise environment is different than a commercial or consumer facing development effort. The numbers are inverted. An application may serve a mere fifty users instead of thousands. In this intermediate level presentation we'll cover the following topics and take a deep dive into the challenges facing enterprise app developers: monitoring deployed applications , UX concerns such as touch ID, privacy concerns for BYOD, MDM APIs, and walled garden deployment. This presentation will include a demo and group discussion.