Session List for
CocoaConf San Jose 2014

San Jose Links

Sprite Kit is one of the most exciting frameworks Apple has ever released. It can also be used for things other than just games. This talk will cover using Sprite Kit in UI Kit applications to provide interactivity and gamification. This talk does not require any Sprite Kit experience.

We've evolved feelings of revulsion & disgust to help us avoid foods that make us sick--and lots of us use similar instincts to keep cruft & antipatterns out of our code. This might make for a healthy codebase, but can be pretty toxic for human interactions. We'll talk about keeping high standards *without* getting all mad.

Apps consume a lot of web services these days. Sometimes, these new services can be fantastic, and other times not so much. Learning how to evaluate APIs and identify problem areas before jumping head first into development can save us frustration, time, and money. This session will walk through evaluating an API, best practices, and red flags, all from the standpoint of an iOS dev. No matter your experience level, you'll leave with the skills to effectively tackle your next API.

From the days of Mac telling PC about iMovie, to 2013's holiday ad with the kid making an on-the-spot family Christmas video, Apple's platforms have long excelled at working with audio and video. In the 90's and 2000's, that was thanks to QuickTime, but over the last few years, that's given way to AV Foundation, introduced in iOS 4 and Mac OS X 10.7 (Lion). This Objective-C-based framework gives the iOS or Mac developer the ability to play and create audio and video files, stream from the network, and capture from cameras and microphones, all with a deep level of customizability.

In this class, you'll get a deep dive into AV Foundation on iOS -- playing, capturing, editing, and exporting -- touring the highlights of the framework, and peeking behind the curtain into the underlying Core Media framework. Nearly all of the material covered can also be ported as-is to OS X.

Power Tools - reading and writing samples directly with AVAssetReader/AVAssetWriter

Because AV Foundation's capture classes are not supported in the Simulator, attendees should bring an iOS device and everything needed to run code on that device (i.e., an appropriate cable, and Xcode provisioned to deploy to the device).

Auto Layout was introduced in OS X Lion and iOS 6 as a new way to lay out elements in your applications. It also introduced frustration and confusion in developers as they worked to grasp this powerful new technology. Learn tips, tricks and best practices for leveling up your zen and understanding of Apple's new layout system using real world examples as the foundation to build upon.

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.

Recently some marquis developers have blogged and tweeted about how they have finally embraced using blocks. Have you been reluctant to join this "Block party"? In this session we'll look at when and why we commonly use Apple's block based API in our code and then examine concrete examples of where and how we should introduce blocks into our own code.

Learn how Windows Azure Mobile Services make developing your iOS apps a breeze with a feature rich and easy to use backend. We'll go over how you can take advantage of structured data stored in the cloud, send APNS push notifications with a single line of code, add authentication and secure your app, and much more. All of this with a native Objective-C SDK! We'll go over each feature and see how to use it with live coding demonstrations.

Sure, you've used NSArray and NSDictionary. But this talk is about
the some of the less popular members of the Collections Classes. I'll
be talking about NSCountedSet, NSEnumerator, NSIndexPath, and
NSIndexSet. This is a class for those who may be new to the
Foundation classes and will provide a better understanding for some of
the excellent classes available in the Collections Classes.

We read books on coding, we come to conferences, we download open source and sample code, we read blogs and listen to podcasts.

During this session we'll explore why we do what we do and for whom. Whether you're inspired or depressed by this talk, you will think differently the next time you open Xcode and type Command-Shift-N and you'll pause before you upload your next app to the app store. Uploading is when you sign your name on your work.

With so many apps in the app store, what can you be thinking about to get and keep people interested in your app? Having a great concept is just the beginning. How much thinking goes into the personality and tone of your app? What about writing the error messages, alerts, calls-to-action, app descriptions or release notes?

Whether you have an app concept yet to be built, or an app that's been out for a while, Jaimee wants to share some very important considerations in design thinking, on-boarding and copywriting to help your apps become more fun, delightful and engaging experiences for your users.

iOS 7 is new and shiny and it contains a lot of great new APIs and Frameworks. The author of "iOS Components and Frameworks for iOS 7" will show you whats new, whats different and what you can do. This introductory level course will get you up to speed on all the new awesomeness of which is iOS 7 so you can hit the ground running making cutting edge iOS apps. Learn about UIKit Dynamics, TextKit, Sprite Kit, Game Controllers, Map Enhancements, Airdrop, and much more.

Audiobus is an iOS app that allows other apps to work together as an audio-processing toolchain: play your MIDI keyboard into one app, run it through filters in other apps, and mix it in a third. All in real-time, foreground or background. That such a thing is possible on the locked down iOS platform is remarkable enough, but what's even more remarkable is that hundreds of audio apps have added Audiobus support in the few months since its debut, including Apple's own GarageBand. In this session, we'll take a look at the Audiobus SDK and see how to create inputs, outputs, and filters that can be managed by the Audiobus app to process audio in collaboration with other apps on the device.

Research, Design, Develop, Debug, Ship, Repeat. Our profession is a cyclical and endless pursuit of perfection — or more realistically, of improvement, of progress. Our risks and decisions along the way shape what we can do afterwards. We'll start off the conference with an exploration of the challenges, disciplines, ethics, and thrills that help us chase the goal of always doing better next time: technically, professionally and personally.

The variables, they aren’t a'changing. Immutability is a wonderful thing. It makes code easier to reason about, change, and multithread. But at some level, change has to happen. Immutable apps don't win ADAs. We'll philosophize about the anatomy of bugs and reasoning about code, and then delve into the implementation details of maximizing immutability while still allowing for change.

"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.

The response to Reactive Cocoa (RAC) has been divided since we released it. People have either fallen in love, or been hugely skeptical.

I'm with the skeptics… or at least I was.

Programming has always been a means to an end for me. I wanted to build products and ship apps. Learning a new programming language, technique or tool because someone gave me a vague reason, such as saving key presses, never made sense to me.

When @joshaber first showed me RAC I was dismissive, but it didn't take long for me to fall in love.

In this talk I'll show how I was turned from a skeptic into a huge fan of RAC and MVVM using examples pulled straight from production code.

iOS gets all the attention from the media but OS X is still getting plenty of love from Apple. In this session we'll look at what's different about programming the Mac. The visually obvious differences include apps with multiple windows and three notification centers. The code can look quite different as well. The Cocoa APIs are quite a bit older than the Cocoa Touch APIs and we also have a lot more memory and power available to us.

Give the table views in your app an iOS 7 makeover by taking advantage of new features and adjusting to subtle changes in appearance and behavior. We'll do a live makeover—add Dynamic Type and dynamic row sizes, modernize the selection appearance, update Storyboard settings and other bits of polish needed to make a table view shine on iOS 7.

Xcode is a fabulous tool, but especially when you're just getting started, you might not know all the ways you can bend it to your will. We'll talk through both much-loved and little-known keyboard shortcuts, custom behaviors you should absolutely add, the joy of breakpoints, and if we're lucky, some super helpful new debugging components in Xcode 6.

In this era of widespread surveillance, diminishing privacy, and ubiquitous connectivity, security is no longer the pet subject of paranoids—it's something everyone would do well to understand. This talk will explore topics ranging from steganography, cryptography, and low-level espionage to Bluetooth LE and APIs new to iOS 7, offering a good mix of high-level philosophizing and geeking out over low-level implementation details.

Core Data is a SQLite ORM, right? No, it's so much more! We're going to dive into some novel uses of NSIncrementalStore, the delightful data storage abstraction behind the amazingly complex Core Data framework. This is an advanced talk exposing how fetch requests get fulfilled, how save requests put data to rest, and how we can tell Core Data about changes that happen behind its back. By writing custom incremental stores, you'll take advantage of all the caching, threading, transacting, and undo-ing that Core Data gives you for free but store that data any way you want. Boom.

We often hear the phrase "Don't re-invent the wheel." But what does that really mean? In this session Marcus will be discussing his opinion on this often quoted phrase as well as a discussion of the impacts he is seeing of third party libraries.

Marcus will be discussing the very real current and future impacts the use of third party frameworks are having on the capabilities and knowledge of developers.

Whether you are a developer who is new to iOS, an old hand or not directly related to writing code this talk will give you an interesting perspective on the current state of the iOS universe.

It is easy to be intimidated by Core Data's conceptual model and the amount of boilerplate code it seems you need to write. Learn key concepts and perspectives that will enable you to simplify your Core Data code, make it more reliable, and scrape away the boilerplate barnacles that have been slowing your coding velocity.

What makes Foundation stand out among other standard libraries is how thoroughly it's designed. From its date and time calculations to its internationalization and URL loading system, Cocoa APIs demonstrate thoughtfulness and a deep appreciation for understanding a problem in its entirety.

In the service of cultivating a sense and appreciation of good software design, this session will explore a variety of topics, including beer taxonomy, SMPTE film timecodes, international shoe sizes, NFPA 704 "fire diamonds", and the French Republican Calendar, applying patterns and conventions in Objective-C and Cocoa to model these obscure subjects.

Learn how to leverage the power of Apple's tools to increase the performance of your apps. Xcode and Instruments are filled to the brim with amazing tools and services that can make your app behave how you want. Learn how to work with Instruments and analyze crashes, memory problems, slow performance, and more. Using built in tools within Xcode learn how to simulate events that will happen to your user base out in the wild, and see what your app is really doing. Are you still debugging with NSLog statement? Learn how to leverage the power of breakpoints and what you can achieve with customization. Do you know how your app will work with high packet loss and a terrible cell network connection? Topics for beginnings and advanced developers alike. Learn from the horror stories of other developers so you don't need to encounter them yourself.

AV Foundation makes it reasonably straightforward to capture video from the camera and edit together a nice family video. This session is not about that stuff. This session is about the nooks and crannies where AV Foundation exposes what's behind the curtain. Instead of letting AVPlayer read our video files, we can grab the samples ourselves and mess with them. AVCaptureVideoPreviewLayer, meet the CGAffineTransform. And instead of dutifully passing our captured video frames to the preview layer and an output file, how about if we instead run them through a series of Core Image filters? Record your own screen? Oh yeah, we can AVAssetWriter that. With a few pointers, a little experimentation, and a healthy disregard for safe coding practices, Core Media and Core Video let you get away with some neat stuff.

The power to build dynamic animations with UIKit Dynamics is intoxicating. No longer are we bound to the cruel taskmasters of deterministic timing functions! Break free! But does this freedom come with it's own yet-to-be-discovered burdens? We'll take a look at what sets UIKit dynamics apart, and try to figure out if it's really useful or not.

Test Driven Development seems like a good idea… for simple code that has no dependencies. But iOS code depends on Foundation, UIKit… we're doing a lot of networking and UI… you may think that TDD just doesn't work in such cases (thus eliminating most of your code). But that ain't so! In this talk, Jon Reid will show you how to turn dependencies around so you can write code that is testable. We'll look at tests, dependency injection, stubs and mocks, and an example of testing networking code.

The speakers here at CocoaConf can talk for an hour or more on a variety of prepared topics --- but we bet they can't talk for an entire minute on topics we spring on them. Based on the long-running BBC game show "Just a minute", our panelists need to speak for a minute on topics suggested by our host and by the audience without hesitation, repetition, or deviation.

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 the fine gerbils at CocoaConf will choose the final slate of apps.

If mobile back-end services (mBaaS) are supposed to make our lives as app developers easier, why is it so hard to find the right one? Even when you think you know what you need, sometimes it’s not obvious until you dive in. Knowing that a bride who can’t get to her wedding planning information would be the fastest route to a one-star review, we considered the choices thoroughly. We evaluated seven different solutions for WeddingHappy and eventually settled down.

In this session, Liz will review what she learned from the process and the criteria she used to find the best match for her app, her customers and her business.

After years of being a dedicated developer for OS X and iOS, Second Gear recently acquired Glassboard, a multi-platform tool for connecting, coordinating, and collaborating with one person or a group. Managing the iOS side of Glassboard was easy given an existing OS X and iOS background, but there’s no better way to be thrown into the deep-end on new technology than acquiring a legacy code base for foreign technologies like Android, C# and Windows Azure.

Learn as Justin walks you through the process of acquiring a product from a legal, professional, and technical perspective. He’ll walk you through the process of dealing with lawyers and contracts, transitioning the technology from the old owner to Second Gear, handling the product announcements, and how he ramped up on new technologies quickly to hit the ground running with Glassboard after the sale announcement.

He’ll also provide tips, tricks, and advice for managing a major platform as a single person for anyone else that is crazy enough to think it’s a good idea.

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 be covering Sprite Kit and its physics engine.

When we are done you will be able to:

Prototype and play a game idea

Understand the management of art and assets

Have written two mini-games to show off to your friends

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 and use iOS frameworks. You should have an Apple computer running Mavericks with Xcode 5 or higher. Being able to deploy to an iOS device during the session is optional, but may be helpful. This requires an iOS device with at least iOS 7.0.