CocoaConf DC: Sessions
Adventures in Cross Platform Development
Using as much common code as possible on a project is a goal for many developers, and it's especially true when you're developing for all platforms: Mac, iPhone and iPad. We'll go over some simple strategies to make your cross platform projects as simple and easy to manage as possible. Also, stick around for the surprise twist at the end!
Automated UI Testing and the Art of Vacuum Maintenance
Recent tools Frank, Calabash, and KIF, have sparked a new wave of interest in automated testing 'from the outside in'. We'll walk through how to start using some of these tools, how to integrate them into the development process, and how to get the most benefit for the least effort. While Step will cover Behavior Driven Development principles, the focus will be on practical examples of deciding on, setting up, running, and examining useful tests.
Automatic Reference Counting
Automatic Reference Counting is Apple's latest addition to Objective-C and promises to greatly reduce programmer workload and the potential for error by automating memory management. ARC represents a middle ground between manual memory management and fully automatic garbage collection, and aims to help out programmers at minimal cost to battery life and performance. This session will discuss how ARC fits into the big picture of memory management and garbage collection, and will present lots of practical information on how to best take advantage of ARC when writing apps.
Core Audio Cranks It Up
Core Audio, the only media framework available since day one of the public iPhone SDK, offers extremely low latency and powerful access to the device's audio processing system... assuming you can handle what's renowned as one of the hardest APIs on the platform. In iOS 5, Core Audio gets even better, with great new features that had previous been burdensome, if not impossible, to develop on your own. Once the iOS 5 NDA drops, the shiny new bits will be available to all, and this talk will be one of your first chances to learn how they work. Attendees will learn the basics of Core Audio -- the engine APIs that process sound (Audio Queue, Audio Units, and OpenAL) and the helper APIs that get samples into and out of them -- and then look where iOS 5 fills in some of the holes that have existed up to now.
Custom UI, Easier Than You Think
Even though the built-in Cocoa Touch controls are easy to use and powerful, they're kind of boring. Adding your own special sauce can make your app look cooler and make it easier to use. And it's easier than you think. This session shows you, step by step, the design and implementation of a custom user interface (http://borkware.com/hacks/keiser-keyboard.mov). Starting from a simple jpeg, using custom views with a bit of Core Graphics and Core Animation, along with a little Delegation, and ending up with a fun piece of UI.
Deploying iOS Applications
So your iOS application is all coded and ready to be tested on a device, later beta tested and eventually submitted to the Apple App Store, but how do you start this journey. Since the iOS SDK has been made available to developers there have been many improvements to the deployment process for Development, Ad Hoc and App Store deployments but there are still lots of nuances and pit falls along the way that can lead to frustrations and delays. This sessions will provide tips and tricks for making the final steps more successful.
Enter the Matrix
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. Tons of demos and full open-source source code provided.
Getting to Know Core Data
Maybe you've dipped your feet into the Core Data pool, or perhaps you've never used it before. At any rate, it's time to solidify your understanding. In this talk, we'll cover the basics of the framework and then begin to discuss some of the details. We'll cover everything you need to know to get started with Core Data and clearly explain how all of the pieces fit together. You'll walk away feeling well acquainted with Core Data and will have the confidence to effectively use it in various data-backed apps.
Implementing Custom Container View Controllers
iOS 5 introduced the ability to create your own custom container view controllers. Prior to iOS 5 you had to use only the stock controllers (tab, navigation, splitview, etc.) or attempt to roll your own, which was a complex endeavor and often hacky. Custom container view controllers are a great way to give your app a unique look and feel. Learn how to implement your own custom container view controller using the new API. We’ll build a page-flipping controller and cover the various gotchas that can arise along the way. The final product will be an open-source controller that you are free to use in your own apps or just study and take apart.
During the lifecycle of building an app, a developer will always sense that an app is "slow", or that it's using too much CPU, or network or more importantly in mobile devices, battery power. You may have also heard about issues like memory leaks. Instruments is a tool provided by Apple as part of their normal developer SDK, and is ideal for identifying these problem areas. Instruments helps to identify problem areas in your applications that you may not expect are problems by using tools to measure various aspects of your code while it's running. We'll go through some real work examples of how we've used instruments in our development cycle to find memory leaks, memory hogs, and other general performance issues. We'll also use Instruments to fine tune other aspects of our sample application such as the screen rendering time, improving table view performance, and improving fetches from and saves to a Core Data store.
The UITableView is perhaps the most widely used and critical component to any iOS app. It is used anytime you want to show your users large amounts of tabular data. This talk will cover the basics and intermediate uses of the control including: setup, the use of UITableViewDelegate and UITableViewDataSource, cell configuration and integrating with Core Data.
Introduction to Mapkit
Because iOS devices are location aware, many applications include maps and annotate specific points with pins. The presentation shows you how you can add maps, custom annotations and driving directions to your iOS applications by incorporating the MapKit framework.
Introduction to RestKit
RestKit is an iOS framework that makes connecting your app to a RESTful web services simple, fast and fun. We will build an app that connects to FourSquare to gather data on nearby venues.
Keynote: Your Code - the Director's Cut
When you build your application it's like a director on a movie set yelling "Action". There are all sorts of objects appearing on screen, there is dialog, and there is plenty of action. Your source code is like the shooting script for an action packed movie. From simple method calls to delegation, you are trying to get the most out of your objects. We'll take a brief look at everything from object creation to MVC from the vantage point of the director.
MapKit has Competitors?
During the development of an app for cyclists we evaluated a number of mapping solutions for iOS including ArcGIS, Mapquest, Bing, and Cloudmade in addition to MapKit. Come hear about what we learned and which one we settled on.
- licensing map data
- feature sets compared
- different packages have different capabilities
- overlays and dropping Pins
- using different gestures
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.
Objective-C Runtime Magic
On the one hand, the Objective-C runtime is amazingly powerful, and exposes public APIs that allow developers to easily take advantage of nearly all its capabilities. On the other hand, developers often find themselves too busy to delve into this kind of stuff, so the runtime system's capabilities tend to be overlooked. Well, here's your opportunity to delve! In this session, you'll gain deeper insight into how message dispatching works, and learn how to take advantage of some very cool, built-in features of NSObject to do things like message broadcasting and forwarding. You'll also learn how to do some magical things with the runtime C library API, including method swizzling (wherein you change a method's implementation dynamically), isa swizzling (wherein you turn an object into an instance of a different class at runtime), and other things too wild to even mention here (…so you'll just have to see the presentation).
OpenGL ES 2.0 and GLKit
Moving beyond fancy transitions to the world of 3D graphics requires OpenGL. This session will introduce OpenGL ES 2.0 and Apple's GLKit, which go hand in hand to bring powerful 3D rendering to iOS devices. We'll cover how the OpenGL ES 2.0 pipeline goes from geometry to screen pixels, what sort of code you need to write in between, and how GLKit can make that part of your life simpler. This session is suitable for those with no 3D graphics experience, and those with some may learn some new tricks too!
In this session we will dive into the details of a new method for localizing applications. Localization in Cocoa has always been a bit of a chore, and as developers, we need this to change so we can focus our energy on writing code and producing great apps. Say goodbye to the days of fiddling with command line tools — this session will tackle simplifying the process of making applications localizable both for developers and translators. In the end, your apps will be painless to localize, and you will be able to ship to more people in their native languages.
We all want our apps to perform better. Run faster. Consume less memory. Burn less battery. Sometimes it's hard just to figure out what our performance problem _is_, much less fixing it. This session will cover common performance problems on iOS and Mac OS X, how to track down problems using tools such as Instruments, and ultimately, how to get the mindset to get your apps fast, and keep them there.
Rapid App Design and Iteration
Keynote, Omnigraffle, Storyboards. Step will demonstrate the under-utilized power of these tools and more to rapidly iterate on design and early prototypes of a meal-planning app. Over the course of the talk he'll explain how each iteration was done and why. This will be a fast-moving talk that will help those wanting that extra level of polish and design in their own apps.
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.
RubyMotion is a brand new project built by the creator of MacRuby that finally brings the power of native Ruby application development to iOS. RubyMotion gives you a way to quickly bootstrap, compile, deploy code written in Ruby that accesses all the raw power of the Cocoa Touch and Core Foundation APIs.
Under the hood, Objective C shares a lot in common with RubyMotion. We'll explore how it works and integrates with the Objective C runtime, get a taste of its flexibility, see some demos in action, and talk about the pitfalls that await the brave souls who live on the cutting edge.
Skeuomorphic designs that don't make users' eyes bleed
A continuing trend in iOS apps has been to bring shapes, textures, and other ornamental properties of physical objects into visual and interaction design. Join app designer Mike Pick (monkeydo.biz) and iOS developer Jonathan Saggau (enharmonichq.com) as they discuss some techniques and some common gotchas inherent in creating apps with skeuomorphic designs. They will discuss two skeuomorphic apps on which they collaborated together providing real-world design and code examples along the way.
Storyboards - The must-have feature you don't think you need
An iPhone app moves from screen to screen as the user taps and swipes. You can paper prototype or you could use a digital tool to get the feel of your app. Or you could just start developing it using the new storyboard architecture included in Xcode. This session will show you how to use Storyboards to layout and create an application in iOS5 for iPhone or for iPad.
The Wonderful World of Text
The Mac and iOS platforms contain many technologies (maybe too many) for displaying and editing plain or rich text. These include AppKit's text system (e.g. NSTextView), UIKit's UITextView and UILabel, Core Text, WebKit, Core Animation (e.g. CATextLayer), and Core Graphics. In this session, we will walk through some of these and discuss why you might choose one over another for your app. This will include delving into some of the common classes used among them, including NSString and NSAttributedString. Then, we'll dive a bit deeper into AppKit's text system and Core Text to help you understand how you would use them in your app and what difficulties you might encounter when you do.
Thoughts About Debugging
Oftentimes, what separates an average developer from a great developer is the ability to debug. When faced with software that Just Doesn't Work, how do you go about finding the problem quickly and fixing it? In this session we'll cover some tools and techniques that can improve your debugging chops.
UI Automation - Automate ALL THE THINGS!
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.
Understanding Interface Builder
Interface Builder can be incredibly mysterious to new Cocoa developers. What’s the difference between a nib file and a xib file (not to mention a storyboard)? What are those File’s Owner and First Responder thingies? What are IBOutlet, IBAction, and IBOutletCollection, and how do you use them to make connections to your code? In this session we'll explore these and other Interface Builder mysteries by taking a look at how it actually works under the hood. You should come away with a solid conceptual grasp that will allow you to take fuller advantage of this insanely powerful tool.
Unit Testing that Doesn't Suck
We know we should unit test our iOS apps but most of the frameworks make it so painful. The Kiwi framework uses RSpec- like tests. If you come from the OCUnit world the syntax and the style will seem a little odd but by the end of this session you'll see how easy it is to write your code and your nibs using TDD or BDD with Kiwi.
Using Parse.com as Your Server-Side
Many iOS applications require a server-side component: someplace to store and synchronize data, manage users, and send out push notifications. Often it's this server half of your application that you just wish someone else would take off your hands. That's what Parse.com is about. They run a hosted service targeted specifically at supporting mobile developers. It includes SDKs for iOS and Android as well as a REST interface for integration with other systems. This talk gives you a technical introduction to the Parse.com service and how to use it in your own applications.
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 a panel made up of our speakers will choose the final slate of apps.
iOS Computer Vision
High quality cameras and fast processors on the iPhone have opened up the door for great computer vision capabilities in the palm of your hand. This session will explore what's possible with SDKs in iOS 5 and open source libraries like OpenCV for understanding the world around us through imagery. We will go into basic capabilities such as face detection and feature matching, and show how to use those to build apps for mosaicing, panoramas, and 3D shape recovery. The session will end with a blueprint for a computer vision SDK for the next decade.
iOS Tutorial - Thursday Pre-Conference Edition
During the all day iOS hands-on tutorial, we will do soup to nuts iOS development. We will start with how to use Xcode and build a universal application for iPhone and iPad using a variety of common APIs. We will finish up talking about and demoing how to prepare and deploy to the app store. The app we build will allow us to experiment with a bunch of APIs including Core Data, Camera, and more.
This all day class will be broken into six parts, as follows:
- Basic Xcode/Interface Builder
- Creating iOS Projects
- Running in Simulator
- Objective-C Primer
- View Controllers
- Creating Universal Applications
- Table Views
- Data Storage with focus on Core Data
- Core Location/MapKit
This is a hands on all-day tutorial. To get the most out of this session you should bring a Mac laptop running Lion and with Xcode 4.3 or higher installed.