CocoaConf San Jose: Sessions
A Pocketful of Patterns
Design Patterns neither begin nor end with the Gang of Four. In this keynote we will begin and end with Patterns from their famous book but as with most after dinner treats the good part is the gooey center where we'll explore patterns that apply to Cocoa and Cocoa Touch apps.
Advanced Behavior and Performance Testing With UI Automation
Behavior and performance testing takes a toll on us as developers. We have to perform the same steps over, and over, and over again. That's where Instruments and UI Automation can help. We're going to explore practical examples of building tests for iOS applications, organizing test suites, automated performance testing with Instruments, stubbing app data and external dependencies, and running things from the command line...automating our automated tests as it were.
This is going to be a dive deep into the tools with all new material. Bring your tough questions and we'll chat during the Q&A.
All Day Core Audio Workshop
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.
All Day iOS Tutorial
New to iOS programming? This one day overview will introduce you to all the basic concepts you'll need to build an application. From using Xcode's templates to displaying lists of information and navigating between screens of information. When you finish the day you'll have a fully functional iOS app that you can show off to your friends.
- Getting Started, Fast!
- From installing Xcode to posting a tweet in one short lesson. In this section we'll get started with a quick success and along the way learn the basics of Xcode.
- Objective-C, the important bits
- All the ObjC you need to know, and a bit of cool bits and pieces thrown in for good measure. We'll also talk about some of the most commonly used classes from the Foundation framework.
- View Controllers
- Gain essential understanding of one of the fundamental building blocks of iOS programming. In this section we'll learn how to connect the custom logic of our apps to the OS.
- Table Views
- Lists of content are pervasive, in this section we'll see how table views work and discuss common performance pitfalls.
- Navigation & Storyboards
- Building more than the most rudimentary application requires more than one view controller, this section will cover how to use Storyboards to lay out the flow of your application and how to navigate between the multiple view controllers.
Animation: From 0 to Awesome in 90 minutes
Learn the fundamentals of animation on iOS. Tour animation beginning with the simplest UIKit animations, moving through Core Animation, and finishing with complex 3d animations. You'll not only learn how to program animations but to consider how to craft the right animation for your app. Topics covered will include implicit, basic, keyframe, grouped, and chained animations, timing curves, and how to build flipping and folding animations. Along the way we'll also touch on related issues pertinent to the quality and performance of your animations such as anti-aliasing, off-screen render passes (what they are, why they're bad, what cause them, and how to avoid them while still achieving your desired effect), drop shadows, and how to render retina images. Full open-source source code provided for all topics covered.
Beautiful and Shiny - The iOS Graphics System
iOS Apps are known for their rich and beautiful user interfaces. A big part of the beauty and responsiveness is due to the underlying graphics system. In this tutorial you'll learn how to use Core Graphics and Core Animation to take your app to the next level.
Most of what ends up in an iOS UI is built with an image editor and part of the app at deploy time. But dynamic content can't be drawn before hand instead it must be drawn on the device at runtime. Core Graphics has a rich set of API's that can be used for just that purpose. The API is object-oriented but C based. That causes some devs to steer clear. In this tutorial we'll demystify the API so you can take advantage of Core Graphics in your app.
Once we've covered the basics we'll go into how the compositing model works on iOS. Every pixel that is displayed on a device goes through the Core Animation compositing engine. A through understanding of how the compositing engine works is vital to getting your app to look and perform great.
In this tutorial we'll cover:Graphics Contexts Drawing with paths, gradients, colors, clipping regions and masks Reflections Core Image, including the iOS 5 Face Recognition feature Compositing Tricks to squeeze every last frame out of your animations Making a beautiful responsive and engaging app is key to success on the AppStore.
Come to this session and learn how to make your app even more amazing.
Building a Prototype: there's a tool for every task.
Going from an idea and a few sketches in a Field Notes to a beautiful and tantalizing app on the App Store can be a long, and sometimes, arduous task. Making prototypes of your app ideas can make the finished product more successful and help you avoid nights tearfully crying over your keyboard while you rewrite core features. In this session we’ll talk through several different kinds of prototypes you might want to build and then look at tools that can help building these prototypes.
Cocoa Design Patterns
Building a quality iOS or Mac app takes a lot of time. And in these crazy days of mobile development, time is money. So, rather than debate on how to resolve an old problem, why not choose from an off the shelf solution that gets you at least half walk closer to your own custom solution. This is where design patterns nine. And, in Cocoa, we're surrounded by these patterns. Once you know where to look, you'll see them everywhere. Let's explore the design patterns available to you in Cocoa, and how you can take advantage of them in your apps to write less code with fewer crashes and more awesomeness
Composing and Editing Media with AV Foundation
AV Foundation is Apple's advanced Objective-C framework for working with time-based audio/visual media. The framework provides a wide and growing variety of functionality and in this session we'll discuss one of its most exciting capabilities, media creation!
In this talk you'll learn to effectively use the framework's playback and composition features to compose and edit video clips, add animated transitions and titles, and even mix music and sound effects. Along the way Bob will provide lots of sample code so you can see (and hear) these features in action.
Core Audio in iOS 6
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.
In this talk, Marcus will walk you through a design pattern that he has been using on iOS for applications that require and use a large amount of data that is frequently requested from the internet. The design takes the well known Model View Controller pattern and expands upon it to allow for asynchronous network calls that are isolated from the User Interface controllers.
How to Add an Instant Backend to Your Mobile App With Parse
Building rich networked mobile apps feels like 1999 when compared to the amazing web frameworks available today. In this talk we'll take a look at mobile backend as a service and see why it fills a crucial gap in your mobile tool belt. Stop worrying about servers and get back to creating amazing user experiences!
Introducing Collection Views
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.
Introduction to SceneKit
SceneKit is Apple's relatively new 3D programming framework. Scenekit manages one or more scenes (hence the name) that can contain 3D objects as well as lights and camera. Although, some understanding of graphics programming is beneficial when using SceneKit, it has a much smaller learning curve than OpenGL and uses a paradigm that's familiar to most people: that of a movie. This session will show how to use most of the basic functionality of SceneKit, including the use of Core Animation to move objects in a scene.
It's All in the Tools
"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.
Learning AV Foundation
Details coming soon
Less code, more fulfilling.
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.
Making Successful Apps
Learn how to manage, execute, market and sell your app beyond the usual details. Features, design, price, messaging and even the app's name all play a major role in your app's success. In this session, we'll discuss all of the details needed for a successful product launch, along with proven advice to ensure it remains successful. We'll take a close look at the things you should and, of course, the things you shouldn't do.
We'll also question all of the details, such as marketing, pricing, design, product features and much more.
A solid plan provides a solid foundation, and with a solid foundation comes the opportunity to give your app a greater chance of success. Your app idea is important, but it's only the beginning; you'll also need a development and launch plan. This session will ask the important questions and help you formulate the answers necessary to provide your product the successful launch it deserves.
Mastering the Project File
Do you frequently hear yourself say "Don't touch the project file!", "Who overrode my changes?" or "Where did my file go?" If so, this talk is for you. We constantly put the project file on a pedestal of things-you-do-not-mess-with, but is this much caution really warranted? We'll cover tips, tricks, and solutions to promote harmony between you and your project file.
Mobile Movies with HTTP Live Streaming
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.
NSPredicates For Fun and Profit
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.
Reverse Q&A Panel
"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.
Sending Feedback to Apple - An Insider’s Guide
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.
Storyboards - This time it's personal
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.
Strong, Better, Faster with Instruments and Debugging
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 statements, 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.
Super Rad Brainstorming!
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.
The People We Work For
Our day to day tasks are incredibly technical and often impersonal. As pressure builds, and deadlines loom, it's easy to get lost in the details and tactics, forgetting that the work we do is in fact very personal. It affects us, the people around us, and countless people we will likely never meet. Remembering the effects of our efforts is critical to staying motivated, focused, and productive. We'll explore the decisions and tactics that can benefit all of these people — our customers, our teammates, not least of all ourselves — and build a healthy cycle of work and life all around.
Understanding C for ObjC Programmers
Ever wonder what NSError ** really means? Why do you need that extra * anyway? Are Core Text, Core Graphics and Image IO really object oriented? If so why do we have to use functions to use them? If any of these questions keep you up at night, or just hold your interest then this talk is for you. Come and understand the bits of C that are useful for iOS developers.
Unit Testing your iOS app with Kiwi
Find out why unit testing will make your developer life easier and how to get started testing your own app using Kiwi, a popular open-source unit testing library. We'll look at how to get setup with Kiwi, we'll learn the fundamentals of testing, and finally we'll touch on a few more advanced topics like mocking and UI testing.
We Made An App For That
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.
Zen And The Intro To iOS Gesture Recognizers
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!
iOS 2D Game Development Workshop
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 integrate physics and Apple's Game Center into your programs. Coding labs will focus on using Cocos2D for game development.
You should headphones and a Mac with the latest XCode installed.
When we are done you will be able to:
- Prototype and play a game idea
- Understand the management of art and assets on iOS
- 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 physics based game (Irritated Hamster)
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.4 or higher. Being able to deploy to an iOS device during the session is optional, but may be helpful.
Our schedule today is as follows
- 8:30 - 9:00 Introduction and Setup
- 9:00 - 10:00 Prototyping
- 10:00 - 10:30 GameLab 1 (Prototyping Your Game)
- 10:30 - 10:45 BREAK
- 10:45 - 11:15 GameLab 2 (Developing the game from Lab 1)
- 11:15 - 12:00 Spites and Spritesheets
- 12:00 - 1:00 LUNCH
- 1:00 - 2:00 Letter Tiles With People You Barely Know
- 2:00 - 2:30 Physics
- 2:30 - 3:15 GameLab 4: Not Pong
- 3:15 - 3:30 Break
- 3:30 - 4:00 Particle Systems
- 4:00 - 4:30 GameLab 5: Irritable Hamsters
- 4:30 - 5:00 Lions and Menus and Settings, oh my!
- 5:00 - 5:30 Polish and Winning
iOS Performance Tuning with Instruments
Responsiveness is critical to the success of your iOS app. When someone starts an app they typically need the information right away. The less they have to wait the happier they will be. But, optimizing an app without data is a losing proposition. To know where to optimize you need to know where the hot spots are. In this session we will learn how to use Instruments to find and fix performance bottle necks. We'll look at three critical areas: • Startup time • Memory Usage • Scrolling & Graphics Performance These three areas of performance analysis and improvement are critical to the success of any app. Come to this session and learn the to make your app fly!