CocoaConf Dallas: 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.
AFNetworking - Inside the Sausage Factory
AFNetworking is one of the most watched Objective-C open sourced libraries on GitHub, and has quickly become the most adopted networking library for iOS and Mac developers. Come get an understanding of how all the classes work together, and see how you can quickly leverage this powerful library to handle all kinds of network requests while taking in some tips and tricks for designing simple and powerful networking interfaces within your application.
Accessibility: What it Is, Why it Matters, and How to Do It
According to the WHO, 285 million people have visual impairments of some kind. iOS is beloved in this community because it provides superb accommodation for those who can't use its GUI normally. This, however, puts a burden on developers to support the accessibility tools that iOS provides. The good news is that it's not a tough job, and you can learn most of what you need to know in 45 minutes. Come find out how to help 285 million people enjoy your 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 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.
An iOS Authentication Architecture for All: How to stop reinventing the auth wheel
How many times have you had to implement authentication and authorization into your apps? Auth is one of the most common iOS architectural components built into apps and we are left to roll our own each and every time. Apple provides all the tools but no turnkey framework. In this session you will learn about all the different pieces that must be put into place to effectively authenticate your users. We will share a common auth implementation pattern you can take into your own apps.
Autolayout? Oh boy
After making fun of Android developers because they have to support a plethora of resolutions, the storm has gotten into the iOS community as well. First there was the retina, which brought designers and developers to account for a new resolution, exactly the double of the previous one, and was not a huge deal. With the announcement of the iPhone5 a new form factor was introduced along with a new software tool to deal with fluid user interfaces: autolayout. Developers familiar with the good old "Spring&Struts" approach have had a great deal of issues in getting acquainted with autolayout.
In this presentation I will show how to progressively move away from autosizing masks and get familiar with Autolayout constraint-based mechanism. First I'll show how to use it in Interface Builders and how to deal with conflicting constraints. Then I'll move on to code, to show how to achieve the intended results using the new API introduced in iOS6. Finally I'll give some example that uses ASCII-Art format string to declare constraints.
The goal of the talk is to highlight the conceptual and technical differences between Spring & Struts and Autolayout, to make easier the potentially complex process of porting an application from the first to the second.
Automating your Development Workflow
Any time you have to do anything manual in your development workflow, you've created a chance for errors to occur and potential hours of chasing it down. In this talk, we'll go over ways to automate steps in your workflow such as setting up a build server, command line tools to incorporate into scripts, and scripting uploads to services such as Amazon's S3 and HockeyApp. By the end of this talk, you'll have the tools and knowledge necessary to remove the manual and error-prone parts of your workflow so you can spend more time making software and less time figuring out "what went wrong".
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.
Becoming A Product Company
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
Combining Touch and Animation: How to build rich iOS experiences
Touch and animation are the foundation to amazing iOS experiences. Come learn how to masterfully blend touch and animation to build engaging user interfaces. This session will go over how to hand off UIView manipulation from touch to animation and how to best match gesture recognizers to animation types. You will also learn all the tricks to animating/touch-enabling UIScrollView subviews.
Core Data Done Right
If you were first exposed to Core Data using the demo apps in XCode then you are likely not taking advantage of some of the better features of Core Data. Also, if you were a SQL ninja and are frustrated that Core Data can't seem to do the simplest of tasks, you might be missing a few things. This talk will start by walking through Apple's current demo projects and pointing out places where Apple themselves say the code is bad (but who reads comments anyway). Then we will review a much better implementation that accomplishes the same task. Then we will look at the sparsely documented Core Data Model editor and how to utilize Relationships, Fetched Properties, Fetch Requests, Configurations and the UserInfo dictionaries. We will also look at the various options that the Core Data Model editor presents and look at creating NSManageObject subclasses. After exploring what Apple provides, we will highlight how projects like mogenerator and Magical Record fill in the gaps for us. We will update our demo app to show how the code changes when we use these projects.
Core Data and Web Services, Sitting in a Tree
If you're writing iOS apps these days you need to know how to work with web services. But where do you start? How do you mesh your web services with Core Data? "But I thought using Core Data in the background was hard!" What do you do when your API changes, or isn't finished? In this talk we'll see just how bad things can get if web service integration is not done well, and learn some tips for making web service integration easier. Come see why great web service integration will create a sustainable product for you, and a great experience for your users!
Effective iOS Network Programming with AFNetworking
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.
I'm Cuckoo for CocoaPods!
Is your code pantry overflowing with Cocoa components whose expiration dates have long since passed? Does the smell of rotting code make you afraid to open that closet door? Are you a code hoarder, accumulating more and more, but using it less and less?
Come learn how CocoaPods, "The best way to manage library dependencies in Objective-C projects," can help straighten out those shelves of code once and for all. I will walk you through the set up, give some practical tips on how to organize your own local repository, show you how to turn your own private and public libraries into CocoaPods, and discuss the strong and weak points of using it in your project.
By the end of the session
- you will understand what CocoaPods is,
- you will see how it can help you organize your code closet,
- you will know the basics of using CocoaPods in your project,
- you will have seen new CocoaPods come to life.
In App Purchasing and Your Server
Apple has recently advised that receipts should always be validated from a server and not from within the app itself. This talk will provide demo code for how to set that up on your server or a client's server and what other options adding a server gives you like promo codes for in-App purchase and gathering your own analytics data. Then, we will walk through how we set up a server back end to support non-renewing subscriptions, in-app promo codes and subscription sharing for the Hushlink app. Apple provides lots of documentation and support for auto-renewing subscriptions, but if your content doesn't qualify for auto-renewing then you have to take care of lots of extra tasks. A demo project and example server code will be provided.
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.
Keepin' it Functional - Automated UI Testing with KIF
Automated UI Testing is one of the holy grails of mobile software development. There's several options out there for implementing automated UI tests but in this talk I'd like to discuss the KIF framework developed by Square and how it can be used to build powerful integration tests for your applications. We'll talk about some of the advantages KIF has for different testing scenarios, how to integrate KIF into your continuous integration system, and show some useful improvements and abstractions around KIF that make it easier to write automated UI tests.
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.
Runtime Hits: From the 80s
Do you remember all those times when you wanted to swizzle your methods with these classic tunes?
- I got my KVO on you, baby
- When Developers Cry
- Don't Stop Believing .... it works...
How can we for get thes terrific melodies:
- With or Without this line of code...
- Walk Like a Java Programmer
Hi, I'm Saul Mora, and you might know me from my previous appearances at CocoaConf, NSConf or 360idev and other popular conferences. In the next 45 minutes I'm going to re-introduce you to all the runtime fun for developers young and old, from noob to neck beards.
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.
Shake Up! Your Development With Kiwi and Behavior Driven Development
When you hear "behavior driven development", do you reach for your buzzword bingo card? Does your little voice tell you that it can't really be a thing? Do you worry that you accidentally tuned into a TV infomercial?
Join us and find out that not only is behavior driven development (BDD) a real "thing", but that it is a practical approach to development that will help you produce cleaner and leaner code for your next project. I will introduce you to Kiwi, a tool for iOS that builds on OCUnit and helps us keep our focus on the value delivered to the user.
We will use Kiwi and BDD techniques to create "Shake Up!", an earthquake monitoring app that uses live USGS data feeds. By the end of the session,
- you will understand the basic principles of TDD and BDD,
- you will be motivated to try TDD or BDD sometime soon,
- you will understand that Kiwi can make your development more effective,
- you will have the complete project for the Shake Up! app to experiment with.
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.
Subscription APIs for Recurring Revenue
Magazines have become popular in the App Store with the introduction of Newsstand. But did you know that more traditional apps can also take advantage of auto-renewing subscriptions? This talk will examine why subscriptions might be important for your next app -- how the software market has changed in recent years and who is using subscriptions to provide a consistent, predictable source of revenue. We'll talk about Apple's in-app purchase APIs for subscriptions, the types of apps that are suitable for subscriptions, and an approach for building the server foundation for your app, with a detour into the Stripe API for when you must accept payments outside the App Store.
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.
We Made An App For That
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!
iCloud and Core Data
iOS applications are increasingly sophisticated and data driven. In addition, between the iPhone, iPad, and now the iPad mini, users are more and more likely to be running your app on multiple devices. Enter Core Data, the standard for data persistence in iOS, and iCloud, which allows apps to sync data between devices. The combination of the two technologies has incredible potential, but can be tricky to implement. in this session, I will present key concepts and techniques for writing Core Data-based applications, and the finer points of using iCloud in conjunction with it.
iOS Connectathon with Windows Azure Mobile Services
Find out how Microsoft's Windows Azure Mobile Services can add the backend capabilities you need, including push notifications, authentication and data, to your iOS applications in minutes. See how easy it is to work with structured data in the cloud using the native Objective-C SDK and send push notifications via APNS in a single line of code! You can even secure your data with server scripts for authorization and more. There'll be very few slides, plenty of live coding and lots of demos.
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!