Doug Sjoquist started college in the late 70s having never seen a computer in person. Within a few weeks he wrote his first program on a time-share system, and then there was no turning back. He wrote his first custom software professionally a year later on a TRS-80, and ended up working in the college computer center and consulting on the side for many years. In the mid-90?s he left to do R&D projects for the US Air Force and DARPA, and eventually enterprise-y stuff in the private sector. He watched the iPhone SDK introduction with longing, and dove into iOS development in 2009. He has developed or worked on several apps for clients that are in the AppStore, has written several custom iOS components for use by other clients, and is active in the iOS development community. He is on a software craftsman's journey, honing his skills on each new project, mentoring others when he can. He still finds joy in seeking out and discovering new things, and enjoys sharing them with others. You can catch up with him on twitter @dwsjoquist or his blog http://www.sunetos.com.
Test Driven Development (TDD) is an approach to development that uses automated software tests to drive the design and development of an application. It allows developers to focus on one thing at a time -- to tend the individual trees in the forest without destroying the forest itself. This session will: - discuss some pros and cons of TDD in the iOS world, - consider what thinking about development in a "test first" manner entails, - work through the initial steps of developing an iOS app using TDD techniques. Other sessions discuss some of the automated testing tools available for iOS in more detail, so this session will focus on using the tools, not the tools themselves. In part one, we will begin developing a simple game using TDD techniques, focusing on testing components with no dependencies.
In part two of our TDD journey, we will build on the simple game we began in part one, and practice thinking in a "test first" manner. We will move beyond simple components and look at how we can use TDD techniques to test components with external dependencies. We will explore a few techniques and tools that help us do that without turning our test suite into a quagmire of hopeless complexity.
Every release of iOS brings more power and ease of use to us as developers, so that we can concentrate more on building the app we want than on writing custom frameworks to do what we need. The current UIKit framework is a deep and rich source for our app building needs with even more goodness on the way in the near future! During this session we will develop a drag and drop app using standard UIKit components and UIGestureRecognizers. Many of the UIKit controls have embedded gesture recognizers, so we will work through some of the gotchas and conflicts that come up in an app of this style. We will build up the app a little at a time to help you follow along the main steps of the development process. The final product of this session will be a simple Sticker style app that you can use as the basis for an app of your own, tear apart for further study, or simply use as a resource for other apps you are developing.
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,
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
The first role you often play on a team is as a sub coming in off the bench. You need to quickly develop situational awareness while still keeping focused on your assigned task. I have come in off the bench on a wide variety of projects over the years and in this session I will share what has worked for me.
We will discuss things you can do to ease the transition and begin contributing as quickly as possible, things like:
In the mid 1800s much of the US westward expansion took place along the Oregon Trail. Early pioneers cut new paths through the wilderness. Those who followed found better routes and created new innovations when older methods proved themselves insufficient for the task.
Crushed dreams and abandoned equipment littered the way, and many who began never reached Oregon. Few arrived unchanged.
This summer we left the comfort of predictable work behind and embarked on the App Store Trail. Many have gone before and we are trying to learn from their successes and failures. The task is a dynamic mix of creating valuable content, designing a great experience, developing a workable plan, and building a solid implementation -- and we don't yet know how it will end.
Join us as we share our goals and dreams, false starts and stumbles, good ideas and bad. We want to encourage each other on the trail, and hope you find some useful tips for your own journey.
Did you see Apple's demo of Extensions and think "wow, great idea!"
Perhaps you were "meh, doesn't really give me what I want."
Maybe you skipped it entirely and are thinking "Huh? Extensions? Did I miss something?"
Or you could just be wondering:
After answering these questions, we will work through some obvious use cases and brainstorm some non-obvious ones. With the right idea and a solid design, a custom extension can improve the experience for your existing customers and help you reach new ones. Join us as we explore the possibilities.