Jeff Kelley is a developer at Detroit Labs, where he builds apps in Swift but still has a soft spot for Objective-C. Author of Developing Apps for Apple Watch and Learn Cocoa Touch for iOS, he’s been working with iOS since its infancy in 2008. Jeff is passionate about building usable apps, the open-source community around Apple platforms, and will talk your ear off about electric cars and clean energy. Jeff loves raising his two kids and two dogs, Detroit, and founded the Motor City CocoaHeads group.
Have you ever seen a code comment saying “this should never happen”? Have you ever wondered what would happen if it did? Swift has a diverse set of error-handling capabilities, from using throw to send errors up the stack to using a Result to handle errors in asynchronous methods. In this talk, we’ll look at the landscape of handling errors in Swift, create new ways of expressing and handling them, and show how even the most impossible code-level situations can have 100% test coverage. By the end, you’ll be taking control of the errors in your code, instead of letting them take control of you.
When you’re pitching a mobile app to a prospective client, it’s easy to focus on the app’s raison d’être. A pizza-ordering app should order pizza, a messaging app should send messages, and a game should be fun. For an app to succeed, there are countless other hidden tasks to consider: does your app respond well to poor network connectivity? Is it always clear when it’s waiting on network communication? What happens when you ship the app but need to prevent users from using a broken version? In this talk we’ll look at common examples of the unspoken assumptions made when creating apps—assumptions that clients may have, assumptions users definitely have, and the things no app should leave an App Store without. Using these critical features as a guide, you’ll be better prepared to estimate project length and deliver amazing (and successful) apps.
We use continuous integration and delivery systems to help us build apps all the time. Our pull requests trigger builds that we can test, merging them triggers other builds that we can deploy, and so on. What about all of the other tedious tasks involved in development? This talk will cover using Jenkins, fastlane, and other tools as a system to automatically update an app's dependencies—whether you use CocoaPods, Carthage, or the Swift Package Manager—provide inline feedback on pull requests, and manage tedious distribution work. By the end, you'll have tools at your disposal to let Jenkins do the tedious part of app development, letting you take care of what's actually important: frantically refreshing the WWDC page trying to buy tickets.
Have you ever had a bug that dealt with dates and times? Dealing with time zones, Daylight Saving Time, and the like can make the hair on the back of even the most experienced developer's neck stand up. We all know how to tell time and how calendars work, and yet these bugs are terrifying. Why? Using Swift as a lens to walk through common problems, we’ll explore writing date and time code that’s correct and easy to understand. You’ll leave with an approach to solving calendrical calculations without fear, new tools for handling these problems in your code, and a huge appreciation for the people behind the libraries that make this possible.