We will walk through the design and coding, in Swift and then in Metal, of a ray tracer — a program to make images by computing how light bounces around a scene and into the eye. How will the expressive, functional, protocol-oriented Swift ray tracer compare with the one written for screaming performance in C++ oriented Metal?
This hands-on course will introduce attendees to the fundamentals and tools used by all iOS developers. The morning will focus on fundamentals of Swift and the tools available. The afternoon will explore the multitude of API’s and libraries that allow us to take advantage of the iOS hardware. We will iterate on an application that downloads data from the “internet” and presents it for display. All attendees will receive the source code of the completed application, along with extra features and modules for further exploration. The course and the sample app are structured so that more advanced attendees can jump ahead to explore advanced topics. All code samples will be provided in Swift.
Apple TV offers a friendly SDK, full of familiar view controllers and Foundation classes, with everything an iOS developer needs to develop their own streaming channel. Except for… you know… the streaming part. In this session, we'll look at how Apple's HTTP Live Streaming video works -- from flat files or live sources -- and how to get it from your computer to a streaming server and then to an Apple TV. We'll also look at common challenges for building streaming channel apps, like serving metadata, protecting content, and supporting single sign-on.
Having recently completed a project that uses AVFoundation and CoreImage to facilitate depositing checks; we have a plethora of how-to-dont’s about shape recognition and image capture with the iOS camera hardware. After a survey of rectangle, face and QR code recognition strategies, we dive into how to make these user friendly and tricks for incorporating CoreImage recognition into your apps.
Audio Units have finally been brought to the masses. The templates finally provided within Xcode allow the creation of an Audio Unit with a few clicks. We can make sound! It's alive! Now what? Control. In this talk, we will explore accepting input from the user while rendering audio in our instrument.
A practical demonstration of how to create a server side application in everyone’s favourite language. You will be amongst the first in the world to see some brand new tools in action that make getting started in Server Side Swift a snap, leaving you to do the fun stuff - making your app work.
This talk begins by looking at some of the new debugging and reverse engineering tools that have recently appeared. Then we dive into documentation options and admonish you to leave a visible trail for the developer that inherits your code. Next, we will highlight strategies for adding testing to legacy code as well as how we have added testing to existing projects. Sprinkled throughout we will look at the most interesting and wierd bugs we've found during our recent explorations and offer advice on our thought process for figuring out their causes.
Let's get down to bits and bytes! Abstraction is great, but sometimes it's useful to dig down. In this session, we'll explore exactly how Swift lays out data in memory, including both your own variables and Swift's internal data structures. We'll build a program to recursively scan memory at runtime to dump out everything we want to know, then walk through its results and what they mean, and compare and contrast with how C and C++ store their data.
With Facebook shutting down Parse, everybody knows to never again depend on a third party for their backend solution, right? Sure, and after you spend six months trying to write your own syncing service, how's that working? In 2016, Google has added a ton of features to Firebase, their popular backend-as-a-service solution. Firebase's primary offering is a realtime database in the cloud that syncs changes to and from multiple concurrent users, and their Swift-friendly iOS SDK makes it ideal for mobile use. In this session, you'll learn how to set up a Firebase backend and build an iOS app around it.
Xcode is a powerful tool. It can be overwhelming, and frustrating at times. Come to a talk about how you can update your projects to make your productivity faster.
Some example content:
This hands-on course will introduce attendees to the fundamentals of 3D Graphics on iOS using SceneKit and a bit of Metal. No previous graphics programming experience is necessary but students should be familiar with Swift programming.
The morning will focus on introducing SceneKit and how to create 3D scenes and camera motion with code and external 3D resource files.
In the afternoon we will learn about Metal and OpenGL, and how shader programs can be used for custom rendering. We will end the day exploring the cool effects you can do with SceneKit, and attendees will have the chance to try a number of simple projects demonstrating them.
There will be a math refresher during lunch, covering the basics of vectors and matrix multiplication with an eye towards understanding lighting calculations and transformation matrices.
Swift is not a functional programming language. Pushing too hard to make it one fights Swift and breaks Cocoa.
But Swift has absorbed some fantastic lessons from the functional world, and while value types may not quite be the present, they are clearly the future. We’ll explore how decades of work in functional languages have influenced Swift, and how you can use those features best while staying true to Swift.
Performance tuning is a big topic, and there are optimization opportunities both algorithmically and how you use your programming language. Swift gives us a lot of opportunities to write high performance code, but you have to be aware of some of the inner details to take full advantage of them.
Keychain, disk encryption, Common Crypto, certificates. Security can be daunting for Cocoa developers. There are so many frameworks filled with words you’ve never heard before solving problems you don’t understand. And why does so much of it have to be in C?
The truth is that good security is hard, but the code doesn’t have to be. This session will show you how to best use the many security tools Apple provides. You’ll learn how to properly encrypt with AES, how to make the most of iOS’s device encryption features, how to best manage SSL, and more. If you’re using AES for anything, but don’t know what an HMAC is, you need to attend this session.
"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.
iOS project teams, especially those working in Swift, have adopted a variety of approaches to handle mapping objects in their model layer to and from JSON values. We'll explore a new approach that can reduce manual coding tasks by providing automated encoding and decoding of model objects, while offering a comprehensive, easy to visualize model of all mappings.Source code for the presentation is from the Modelmatic project on Github.
At the Big Nerd Ranch we've been experimenting with Swift since it was first announced. We've also been lucky enough to have some wonderful clients whom have empowered us to use Swift on their projects. This talk will explore some of the way we've embraced Swift patterns as we interact with UIKit on our projects. We'll review some small ideas and then move up in scale to finish with some larger ideas. With luck you'll walk away with some actionable patterns to make your own Swift projects safer, easier to read and easier to test.
# Swift for Objective-C Developers
A rapid, one-day introduction to Swift geared towards developers who have some prior experience in Objective-C. The course has a strong focus on language features that figure most prominently in typical, everyday coding tasks, with an emphasis on constructs (such as Optionals) that Objective-C developers tend to find the most challenging to master.
We'll spend the bulk of the day getting getting up to speed on essential features of Swift through a combination of discussions, demos, and hands-on lab exercises, that cover the following topics:
Towards the end of the day we'll try our hands at reading and writing some typical Swift code in the context of an example iOS app (to be distributed in class). The goal will be to get a hands-on feel for working with translated Objective-C APIs, and for applying Swift programming techniques to everyday coding tasks.
Development of Swift started 6 years ago and was a closely guarded secret. The end result of that work was the beginning of a dramatic change to Apple’s developer tooling and infrastructure. In this talk we discuss some of the influences that lead to Swift 1.0 and why it sits in a unique place in the current programming landscape.
Apple released Indoor Positioning capabilities in iOS 8, but they've kept the specifics about it very close to the vest. This talk is based on actual work with indoor positioning and it dives deeper into some of those specifics. I'll talk about the process with Apple, how it appears to your app, how to leverage it in your app, some helpful tips to make your life easier if you decide to adopt indoor positioning, and finally limits and alternatives to iOS's indoor positioning.
Product strategy is evolving and becoming less clear, as is the ‘product roadmap’. Requirements, business needs and user expectations are changing at a rapid pace. This session focuses on the process and thinking of product discovery and exploration to inform your product roadmap by running multiple projects that are all connected to the problems that need to be solved.
This talk will cover:
Join me for a Lovecraftian tour of what’s new in animations and graphic performance in iOS 10. We’ll cover the ins and out of UIViewPropertyAnimator, a new paradigm for handling animations. Along the way we’ll also touch on UIPreviewInteractions for custom peek/pop user interfaces and the new UIGraphicsRenderer for performing drawing work off of the main queue.
With frameworks like Ember and Redux, web developers have been using unidirectional data flow (Facebook’s “Flux” architecture) to manage complex UIs for more than a year now. Many developers report that the pattern boosts development speed, simplifies their app architecture, and leads to more testable code. We can apply the same pattern to the UI tier of our apps and achieve similar gains. This talk describes the Flux architecture and how to implement it in Swift. We’ll go beyond toy projects and explore how to use it with routing, forms, animation, table views, Core Data, and more.
When building iOS apps, there's a tendency to just put everything in the view controller, leading to what many have called the massive view controller anti pattern. This leads to many problems: these monolithic classes are harder to understand, impossible to compose, and generally force engineers into rewriting common logic in many view controllers instead of finding good abstractions. On top of all of this, they're extremely difficult to reuse: what happens when different interactions with your app have overlapping steps?
Learn through a series of examples how the iOS team at Betterment addresses this problem, using light view controllers that are responsible for as little as possible, instead delegating their logic to models, network-backed resource objects, data sources, views, and flow objects. This way view controllers are solely responsible for what they're best at: lazily loading and configuring a view, presenting it on screen, and delegating everything else to modular, reusable components. This allows us to achieve an extremely high level of code reuse without overly complicated components.
iOS 10 brings a new approach for handling Local and Remote (or Push) Notifications. The new UserNotifications and UserNotificationsUI frameworks give you more control over managing and rendering your notifications. In this session, we'll review what's new with notifications and what's stayed the same. Finally, we'll walk through an example service extensions that you can use to enhance your application.
WWDC 2016 introduced a fabulous Foundation API for measuring just about anything from distance to duration to diameter. Here is a great opportunity to rethink/refactor the way your app handles dates, currency values, and other measurements, along with proper localization. But be warned: developer forethought is still required. Experience shows that without care, these unit measurements can create subtle and pernicious bugs that can mislead your users or crash your app. But when you get it right, you can build an extensible, fast, and accurate code that accounts for the quirks in our human measurement systems.
Debugging is quite the challenge. Tests and design patterns often fail us and we are left printing out values in lldb or pulling in logging frameworks from third parties. Apple has finally released a tool of their own to address logging and we are going to get set up using it in this session.
The enterprise environment is different than a commercial or consumer facing development effort. The numbers are inverted. An application may serve a mere fifty users instead of thousands. In this intermediate level presentation we'll cover the following topics and take a deep dive into the challenges facing enterprise app developers: monitoring deployed applications , UX concerns such as touch ID, privacy concerns for BYOD, MDM APIs, and walled garden deployment. This presentation will include a demo and group discussion.