Portland / Sessions

A speech bubble icon

Session List for
CocoaConf PDX

Speakers at last year's CocoaConf
  • Speaker photo

    All Day Core Audio Workshop / Chris Adamson

    Core Audio is the low-level iOS API for processing audio in real-time, used in games, virtual instruments, web radio clients, music mixers, and more. It also has a well-earned reputation for being a challenging and unforgiving framework. In this advanced all-day tutorial, we'll shake off the scary and dig into Core Audio, playing with its powerful pieces and cutting through its thicket of jargon and secrets disclosed only in header files.

    The all-day class will be broken into four hands-on sections:

    1. Sounds and Samples, Properties and Callbacks: the concepts of digital audio, the conventions of Core Audio, and our first audio apps

    2. Pretty Packets All in a Row: Recording and Playback with audio queues

    3. Dreaming of Streaming: Building a web radio client with Core Audio

    4. Go With the Flow: Audio Units and Audio Processing Graphs

    This is an advanced tutorial, and it is assumed that attendees are intermediate to advanced iOS developers. At a minimum, you should know how to build and run apps, link and use iOS frameworks, and be fairly comfortable with C code (including pointers and malloc/free). Of course, you should have a MacBook with Xcode 4.3 or higher. Being able to deploy to a iOS device during the tutorial is optional, but may be helpful.

  • Speaker photo

    All Day iOS Tutorial / James Dempsey

    New to iOS programming? This full day, hands-on tutorial focuses on the fundamentals to get you up and running. Over the course of the day, you’ll build two iOS apps while learning about the core tools, frameworks and concepts you need to start building apps of your own.


    • Hands-On with Xcode and Interface Builder
    • Introduction to Swift
    • Working with fundamental classes
      • Strings
      • Numbers
      • Dates
      • Arrays
    • Dictionaries
    • UIKit basics
      • View controllers
      • Displaying text and images
      • Tables
      • Master/Detail Navigation

  • Speaker photo

    Beyond UIAutomation / Pete Hodgson

    Automated tests help you move fast and make changes to your app with confidence. If you're looking to create automated acceptance tests for your iOS app then you have quite a few options beyond Apple's official UIAutomation offering. In this talk we'll take a tour around some of the popular choices available to you (including UIAutomation) and weigh up the pros and cons. Then we'll dive into the details of using one of these options - a tool called Frank - to write simple, human-readable tests for your app. You'll leave this session with everything you need to start writing tests for your own app.

  • Speaker photo

    Blocks - Why, When, and How / Janine Ohmer

    A wise person recently said to me "Blocks are ... hard to get your head wrapped around and then once you get it you can never understand how you never understood it".  I couldn't have said it better myself.  I watched several presentations on blocks when they first appeared and while the concept wasn't too tough to grasp, I found it difficult to know when and how to use them effectively.  This seems to be a common problem, so this session aims to cut through the confusion and show you how to use blocks effectively.

  • Speaker photo

    Clean Code / Saul  Mora

    Compilers don't care how readable code is, as long as it doesn't have a syntax problem, the compiler will handle code just fine. However, as developers, it's in our best interest to keep our code clean and readable. And all it takes a little bit of practice. We'll go over a few common places where code gets messy, and some techniques to keep these places clean.

  • Speaker photo

    Core Audio in iOS 6 / Chris Adamson

    Core Audio gets a bunch of neat new tricks in iOS 6, particularly for developers working with Audio Units. New effect units include an improved ability to vary pitch and playback speed, a digital delay unit, and OS X's powerful matrix mixer. There's now a new place to use units too, as the Audio Queue now offers developers a way to "tap" into the data being queued up for playback. To top it all off, a new "multi-route" system allows us to play out of multiple, multi-channel output devices at the same time.

    Want to see, and hear, how all this stuff works? This section is the place to find out.

  • Speaker photo

    Core Bluetooth for the Control Freak / Tim Burks

    Do you long to control your lightbulbs, wristwatch, toaster, keychain, and exercise equipment with your iPhone? Or is there something that you want to make and control that no one else has imagined yet? Apple's CoreBluetooth framework has made it easy to write apps that talk with devices that support the new Bluetooth LE standard, and now Bluegiga's BLE112 makes it easy to build hardware that talks back. We'll review CoreBluetooth and the Bluetooth LE architecture, and then we'll see how Bluegiga's BG Script and Profile Toolkit can be used to program these tiny wonders.

  • Speaker photo

    DSLs and Extension Languages / Josh Smith

    Special purpose programming languages are anything but new.  The same with extension languages (for example, TCL was created in 1988).  In this session you will learn the difference between these two concepts and learn how you can leverage these concepts in iOS and Cocoa applications. We will also cover how to include them in your XCode workflow.

  • Speaker photo

    Developing for Reuse / Andria Jensen

    We'll talk about the best approach to creating reusable code projects for iOS, and the benefits of doing so. We will go through a tutorial of creating a static library project, including a resource bundle, unit tests, and automatically generated AppleDoc documentation. Past projects and specific examples will be used to support the ideas and thoughts of the presentation.

  • Speaker photo

    Dissecting the "Kit" in MapKit / Justin Miller

    You may or may not have experience working with Apple's MapKit, but have you ever considered what goes into building it from scratch? I have, because I've helped do just that. This session will go over the high-level components of MapKit -- things like the map view, annotations, annotation views, and user location services -- and talk about what they do, but also how they can be -- and have been -- duplicated. We will compare and contrast with the MapBox iOS SDK, which is a completely open source implementation of MapKit, not a subclass derivative, and see all the complex bits and bobs that go into it, including tile-based layers, annotation recycling, complex interaction delegate callbacks, map tile cache management, and scalable vector drawing, to name a few.

  • Speaker photo

    Effective iOS Network Programming with AFNetworking / Ben Scheirman

    Very few apps these days are self-contained silos. More often than not, your app will need to consume data from external sources. In this session, you'll learn how to properly write networking code so that you don't block threads, don't fetch data you don't need, and cache the right data the right way. You'll learn about an excellent framework called AFNetworking to simplify your networking code. And you'll also see some practical examples such as fetching images asynchronously to update a UITableView.

  • Speaker photo

    Enter The Matrix: Reloaded / Mark Pospesel

    Matrix transformations can make your user interfaces come to life: translate, scale, and rotate. Each on its own is relatively simple and straightforward. Yet many developers are daunted when 2 or more operations need to be combined. What if you need to rotate or zoom about an off-center (or even off-screen) point? How do you combine multiple transformations into a single animation? How do you make advanced, polished 3D animations such as folding and flipping views? Learn everything you need to know to get started with complex matrix transformations in CoreGraphics and CoreAnimation and take an in-depth look at folding and flipping animations. We'll also cover related topics such as anti-aliasing, avoiding off-screen render passes, shadows, and rendering retina images. Tons of demos and full open-source source code provided.

  • Speaker photo

    How to validate your iOS App using Xcode Instruments: A reusable approach to UI Automation / Elizabeth  Taylor

    Reduce validation time and gain confidence in your code by using Xcode Instruments to automate your functional testing, validate your UI elements, and stress test views.

    I will present a Test Automation Strategy that can be applied to most any iOS Mobile App. I will discuss how to automate a mobile app using Java Script and the UI Automation API in Xcode instruments.

    You will learn how to structure your test suites and libraries so that they are easy to debug and run. We will walk though code snippets, useful API functions, and run a test suite to illustrate how a clean test structure provides readable test results.

  • Speaker photo

    Introducing Collection Views / Mark Pospesel

    UICollectionView, introduced in the iOS 6 SDK, is Apple's new class for visualizing data in a grid or really any format other than a vertical list.  We'll cover the basics and then explore the intricacies of UICollectionViewLayout, UICollectionViewFlowLayout and related classes.  

    Along the way we'll learn how to make both horizontal and vertical grids, cover flow, iPhoto-like stacks, and other custom layouts.  Apple has provided yet another tool that makes it easier and faster for you to provide rich experiences for your users - come learn how to hit the ground running with UICollectionView.

    Plenty of source code will accompany the talk.

  • Speaker photo

    Keynote: Hard Things, Scary Things, and Pride / Brent Simmons

    Donahue style. Brent talks -- and so do you. Because you're more interesting.

  • Speaker photo

    Keynote: The life of an iOS developer is always intense / Daniel Pasco

    When Daniel first went indie, he was inspired by people like Brent Simmons to make great Cocoa apps. In 2007 he cofounded Black Pixel, and after several years of fantastic growth and some tough lessons learned, Black Pixel is one of the top development houses in the industry.

    Getting good at what you do takes time, but there is no reason to make things harder than necessary. Hear about the things they tried that worked, and the things that did not. Find out what lessons were learned about development, design, business, and the Apple product ecosystem along the way.

  • Speaker photo

    Less code, more fulfilling. / Daniel Steinberg

    The way you write code for your iOS and Mac OS apps has been changing with every release of Xcode. In this talk you'll see how recent changes dramatically alter your source code. With synthesize by default, literals, and the order of methods not mattering, the amount of code you write will shrink and what's left will be more readable. We'll look at before and after pictures that will convince you to embrace the new features that have been working their way into the language since Xcode 4.2.

  • Speaker photo

    Magical Core Data / Saul  Mora

    Data is the heart of many of your apps. In general, your app needs to create it, view it, change it and delete it often. There are many ways to store, retrieve and manipulate data in Cocoa ranging from the NSCoding protocol to XML formatted PList files. While those are useful, there will be a time in your app where you want to move your data to the next level. In Cocoa, that is Core Data. We'll go over each piece of the Core Data "Stack", and how to use them in your apps. We'll also discuss the MagicalRecord library and how it help minimize the amount of code you need to write to get Core Data into your app.

  • Speaker photo

    Mobile Movies with HTTP Live Streaming / Chris Adamson

    If your iOS app streams video, then you're going to be using HTTP Live Streaming. Between the serious support for it in iOS, and App Store rules mandating its use in some cases, there realistically is no other choice. But where do you get started and what do you have to do? In this session, we'll take a holistic look at how to use HLS. We'll cover how to encode media for HLS and how to get the best results for all the clients and bitrates you might need to support, how to serve that media (and whether it makes sense to let someone else do it for you), and how to integrate the HLS stream into your app.

  • Speaker photo

    NSPredicates for Fun and Profit / Josh Smith

    NSPredicates aren’t just for Core Data.  NSPredicates can be used to attack a variety of tasks with collections in ways that make your code more testable and easier to maintain.  They are, however  not well documented and notoriously difficult to create.  Sure, once created they are easy to use and let you do things that are very difficult without them.  In  this intermediate session we will cover what NSPredicates are, where they can be used,  how to debug them, and how to replace difficult to maintain iterative code with elegant predicates.  You should have a good understanding of Objective C and the collections.    While we will cover some of Core Data, this is not a Core Data session.

  • Speaker photo

    Natural Language Processing in Objective-C / Mattt Thompson

    Apple has provided some truly remarkable language APIs in its frameworks. It's almost unfair how good they are, considering how most languages struggle just to handle Unicode correctly. From tokenizers and part-of-speech taggers, to transcription, data detectors, and document classification using latent semantic analysis; this session will cover the APIs as well as the linguistic theory behind them, so that you may leverage these insanely powerful technologies in your application.

  • Speaker photo

    OH MY CLIENTS! / Jaimee Newberry

    Frustrations with clients or customers of our products can spawn from a host of situations. Mine often come from mis-thinkings in how/where "UX" belongs in the project lifecycle. How can we help clients understand what UX is and how it threads through a project from beginning to end?

  • Speaker photo

    Pretty Matters / Collin Donnell

    Even if your app has great features and never crashes, no one might ever find out if its hidden behind lackluster visuals or it's confusing to use. During this presentation I will discuss some steps you can take in order to improve your apps both visually and functionally to help them stand out.

  • Speaker photo

    ReactiveCocoa for a Better World / Josh  Abernathy

    Cocoa apps spend a lot of time waiting and then reacting. We wait for the user to do something in the UI. Wait for a network call to respond. Wait for an asynchronous operation to complete. Wait for some dependent value to change. And then they react. But all those things—all that waiting and reacting—is usually handled in many disparate ways. That makes it hard for us to reason about them collectively, chain them, or compose them in any uniform, high-level way. We can do better. ReactiveCocoa is a framework for composing and transforming sequences of values. We'll talk about how we can use ReacticeCocoa to write better, more succinct and more expressive code.

  • 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

    Sending Feedback to Apple - An Insider’s Guide / James Dempsey

    Filing bugs at bugreporter.apple.com can feel like tossing messages into a black hole. In this session, get insights and an inside look from someone who has been on both the sending and receiving end of bug reports at Apple. We’ll take a look at the bug reporting process, writing good bugs, and strategies that can give your feedback a better chance at being addressed.

  • Speaker photo

    Stealing for Fun and Profit! / Josh  Abernathy

    Objective-C's a lovely language and Cocoa provides some great frameworks, but there's a ton we can learn from other programming languages and communities. We'll look at how other programming communities solve some common problems and what we can steal from them to make Cocoa development better.

  • Speaker photo

    Storyboards - This time it's personal / Daniel Steinberg

    You learned to love to use storyboards to layout and create your iPhone and iPad applications when they were introduced in iOS5. Now storyboards are back and better than ever. In this session we'll begin with a look at "our story so far". We'll then embark on a wild ride through new features in storyboards in iOS 6 including autolayout, localization, embedded view controllers, and unwinding segues.

  • Speaker photo

    Super Rad Brainstorming! / Jaimee Newberry

    How to get the most out of your brainstorm sessions.

    Whether you're an independent developer working solo, a small indie team or working inside or with a larger entity, getting the most out of your brainstorming sessions is essential. Learn some spiffy tricks about preparing, thinking and organizing your ideas so that you're ready to rock it when it comes time to build.

  • Speaker photo

    Syncing Core Data with Webservices using AFIncrementalStore / Mattt Thompson

    Second to views, networking is the hardest part of iOS programming. And it's several orders of magnitude more difficult if you plan to persist a local copy of the data in Core Data, and keep it in sync with the server. Nevermind the tricky theoretical issues of local cache invalidation and conflict resolution, it's hard enough to get Core Data set up in the first place! At least all of this was true before AFInrementalStore came around. Come learn how AFIncrementalStore works, and in doing so, get a deep dive into Core Data itself.

  • Speaker photo

    UI Automation - Automate ALL THE THINGS! / Jonathan Penn

    So, for the nth time, you fire up your awesome iOS app to run through your testing steps. Manually. Over and over. And you have to do the same tests on the iPad. And the iPod touch. On iOS 4 and then 5. And you just want to pull your hair out. Oh, and you just found a memory leak. Fix it and start over again. And again.

    Meet UI Automation, Apple's official UI testing framework. You manipulate your app with Javascript through the views and controls, similar to the way you'd manipulate a web page. The scripts can drive the simulator or even the device. As part of Instruments, Apple's performance monitoring and debugging tool, you can automate your apps through all kinds of scenarios and evaluate the performance or memory usage. It's so powerful and flexible that it can look a little overwhelming at first. We'll investigate the framework through live interactive demos against a real application and walk through good practices to keep your test suite organized as it grows.

  • Speaker photo

    We Made An App For That / Janine Ohmer

    This is your chance to shine! We'll take a quick look at several apps written by attendees with an explanation of what made the app interesting, challenging, scary, or just plain fun to write. Any attendee will be able to submit an application and a panel made up of our speakers will choose the final slate of apps.

  • Speaker photo

    Zen And The Intro To iOS Gesture Recognizers / Jonathan Penn

    Gesture Recognizers are Apple's answer to the problem: How do I keep all those touches straight!?!? It's about tracking touch state over time, and UIGestureRecognizer subclasses give us a standard and composable way to manage that complexity. We'll look at how recognizers work, how they compete to decide which one "wins", see a custom complex gesture recognizer in action, and discuss how to leverage this in your applications. Complete with demo and sample code!

  • Speaker photo

    iOS 2D Game Development Workshop / Josh Smith

    Also featuring a LIVE JONATHAN PENN

    This workshop is for people who are past the basics of iOS development and are interested in developing 2D games. When you finish, you will have developed two mini-games and have an understanding of how to prototype and test game ideas and mechanics. We will also cover how to prototype physics games and integrate Apple's Game Center and Game Kit device communication into your apps.

    When we are done you will be able to:

    • Prototype and play a game idea
    • Understand the management of art and assets (including in-app purchases)
    • Be able incorporate Game Center into your apps
    • Have written two mini-games to show off to your friends
    • A multi-player letter tile game (Letter Tiles With People You Barely Know)
    • A multi-player Bluetooth Game

    This is an intermediate session, and it is assumed that attendees are iOS developers. At a minimum, you should know how to build and run apps, link and use iOS frameworks. You should have an Apple computer with Xcode 4.6 or higher. Being able to deploy to an iOS device during the session is optional, but may be helpful. You should also bring an iPad with at least iOS 6.1 and install the Codea application that we’ll use throughout the workshop.

    Familiarity with Lua will be helpful but is not required


    • 8:30 - 9:00 Setup and Intro
    • 9:00 - 10:00 Codea
    • 10:00 - 10:45 Prototyping
    • 10:45 - 11:00 BREAK
    • 11:00 - 12:00 Building Out An Idea
    • 12:00 - 1:00 LUNCH
    • 1:00 - 2:00 Letter Tiles With People You Barely Know
    • 2:00 - 2:45 More Game Center and Game Kit
    • 2:45 - 3:00 BREAK
    • 3:00 - 4:45 Pricing, Purchasing, Marketing
    • 4:45 - 5:00 BREAK
    • 5:00 - 6:00 Polish and Winning