Category Archives: iPhone

WWDC 2015: Session Video Guide

(UPDATED: 14:05 PDT, 12 June 2015)

If you’re looking for a starting point to traverse the immense number of session videos now available from WWDC 2015, I’ve listed my favorites below in an order I think makes most sense if you have no ordering constraints and you’re starting fresh. I’ll be adding notes throughout the weekend, but I wanted to get a quick list up for anyone who wants to get started right away. (Scroll to the bottom for more info on the underlying rationale.)

Phase 1: Prepare yourself

  • Keynote – duh.
  • Platform State of the Union – Get the global view of what are thought to be the most important features of the new releases. (I found that this year it skewed pretty far from what I thought was important, but it’s good to know what’s on their mind.)
  • What’s New in Xcode – No matter what, you’ll be using Xcode 7 soon.
  • What’s New in Swift – If you’re going to be using Xcode 7 soon, and you use Swift, you must migrate your Swift code to Swift 2. Error handling and method availability APIs are all-new and very useful.
  • Introducing WatchKit for watchOS 2 – Big changes are afoot for watchOS 2. If you haven’t already built a WatchKit app, this is more compelling – WatchKit 1 apps will continue to work on watchOS 2, albeit with their characteristic slower UIs.
  • What’s New in Cocoa (Mac dev only)
  • What’s New in Cocoa Touch – Hope you read between the lines last year and migrated to size classes and Auto Layout! Multitasking relies on these features to make your app look good. I think this is also the start of a thematic thread for iOS this year: UIStackView.
  • What’s New in Storyboards – I’m a fan of Storyboards, and this year we got a few key feature updates, but one stands out to me: Storyboard References. You can break your massive MainStoryboard.storyboard into smaller functional segments but retain the benefits of other Storyboard features.
  • UI Testing in Xcode – MY PERSONAL FAVORITE NEW FEATURE. Similar to KIF, but with a VERY fancy test recorder. Writing new UI tests looks like a breeze with the recording feature. You can also take screenshots during UI tests – perhaps we can use this to automate taking App Store screenshots.
  • Continuous Integration and Code Coverage in Xcode – A close second for my personal favorite new feature. The code coverage is based on llvm-cov, which as been around for a while now. The combination of CI, Xcode’s new UI testing, XCTest unit testing, and code coverage data is going to be amazing.

Phase 2: Swift updates and depth

  • Swift and Objective-C Interoperability
  • Improving Your Existing Apps with Swift
  • Protocol-Oriented Programming in Swift – If you’re finding yourself force-casting and force-unwrapping everywhere in Swift, or just perplexed, this can reveal important features of the language that will explain your problems and even give you architectural enhancements. (Some found the pedagogy of this session confusing, but the underlying concepts are very important and useful.)
  • Swift in Practice
  • Optimizing Swift Performance

Phase 3: Important iOS 9 Features

  • App Thinning in Xcode
  • Getting Started with Multitasking on iPad in iOS 9
  • Introducing Search APIs
  • Seamless Linking to Your App – This is an extraordinarily important feature for anyone whose iOS app mirrors content on the web. You can now “hijack” http:// links to your site to open natively in your app, saving a ton of JavaScript and redirection hooey. The user experience will also be vastly improved.
  • Introducing On-Demand Resources (for apps with assets) – Very useful for the class of apps it targets like games and media; not so much for most utility-based apps.

Phase 4: Important WatchKit Features & Info

(incomplete)

  • WatchKit In-Depth, Part 1 – Covers migrating your watch extension from living on an iPhone under watchOS 1 to living on the watch under watchOS 2.
  • WatchKit In-Depth, Part 2
  • Creating Complications with ClockKit – A highly-anticipated feature for watchOS 2, but it’s best applicable to a relatively narrow set of apps.
  • Designing for Apple Watch – tl;dr: Do fewer things, and be careful about your presentation format.

Phase 5: Layout Improvements & Techniques

(incomplete)

  • Mysteries of Auto Layout, Part 1 – Here we continue the theme of “adopt UIStackView and stop being clever”.
  • Mysteries of Auto Layout, Part 2

Phase 6: Other iOS 9 Improvements

(incomplete)

  • What’s New in Core Data – A new batch deletion method is stunningly useful. Scott Perry gives us a great Core Data performance debugging example.

Everything Else

(incomplete)

  • Cocoa Touch Best Practices – Revisit core parts of UIKit.
  • Introducing the new System Fonts – San Francisco!

Rationale

We will be able to use Swift 2.0 features in shipping apps as soon as Xcode 7 is GM, but iOS 9-only features are almost… advisory… unless you’re going to a 9.0 deployment target. There are also a lot of high-detail talks that will be great references after implementing these new features, but that are less useful before then.

24 Hours of iPhone 6 (and 6 Plus)

It’s been a long time since I’ve wrote about Apple. I last wrote about the 1-year anniversary of the iPad; before that, I wrote some first thoughts on the iPhone 4. Lately everything I write seems to start with a history lesson, and this is no different.

My first iOS device was the first-generation iPod touch, followed shortly by an iPhone on loan from my employer of the time. My first personal iPhone was the 3G, followed by the nearly-perfect-in-my-eyes 3GS, the stunning display of the 4, a curiosity for speech in the 4S, and a now mildly larger screen for the 5. I skipped the 5S – since the 4, I’ve always purchased the largest storage option, and it was starting to get a little out of hand financially. I’ve also not been a huge fan of AT&T lately, so signing another two-year agreement was not appealing. Since then I’ve also been using a Moto G on occasion: its 4.5″ display is almost exactly the right size for my hands.

To my eyes, new models have always been obviously better than their predecessors in every way… until now.

For the first time, I’m not utterly thrilled with the physical form of the device. It is absolutely beautiful to look at, the hardware is fast, the display is gorgeous, the camera is amazing, and the build quality is nearly perfection. I’m very excited about Apple Pay. This is my first device with Touch ID and it works great. But I can’t get over the implications the 4.7″ display has on how I use my device.

The moment I saw Reachability, my heart sank. It’s a great implementation of the idea, and it works as well as you can possibly expect, but merely having to do it on any regular basis has been frustrating.

This is compounded by how difficult it is for my hands to hold a wider device securely. I developed a habit of supporting the phone from the bottom with my pinky when I got the iPhone 5, and that helps a lot, but it’s psychologically taxing to have the center of mass be so far from the center of your grip.

iPhone 4 moment: maybe I’m just holding it wrong?

The competition in the mobile phone market has been immensely beneficial to consumers. The hardware of my Moto G is better than just about any phone built five years ago at a fraction of the price. We’re at a point where we are out of the revolution and into refinement. Small details begin to matter immensely. Apple excels at this: all the details of this phone are amazing.

Because of those details, I think everyone who worked on this phone did a fantastic job. The real question is whether they were building the right thing to begin with. This phone is a huge bet that Reachability will work well for everyone. My first impressions are that it won’t be a seamless transition, but I’m not going to give up on it after just a day.

It’s worth recognizing that I am a pretty middle-of-the-road sized human. People with larger hands might find this device natural. People with smaller hands – and there are many of them, particularly with XX chromosomes – might be even more put-off by this than I am, and anecdotally, they are and want to stick to an iPhone 5 sized device. It’s a shame there is no updated iPhone for them this year: I think the bottom line here is that next year, we need a 4″ display version of current hardware for those folks.

Postscript 1

I spent some time using the iPhone 6 Plus yesterday. It was about as enormous as expected and I couldn’t stand it. That’s fine: if people want that, and clearly they do, let them have it. It’s not for me and that’s not a problem.

Postscript 2

Reactions from the office yesterday on the 6 Plus were fascinating: every iOS developer said some variation of “what the hell is that?”; every Android developer loved it. Mesh this with the Apple marketing slides on the growth of large-screen devices and the growth of Android as a platform in the last few years: it paints a very compelling economic picture for the 6 Plus.

Postscript 3

Ultimate first-world problem: upgrade fatigue. This is the eighth iPhone announcement. It feels a bit like the scene from Apollo 13: there’s nothing routine about flying to the moon. We live in an age of unprecedented technological progress that is more accessible than ever. It’s sad how quickly we can forget about that in the cacophony of launch day.

Postscript 4

Finnicky detail I’m probably wrong about: The home button is a little too close to the screen. This gets to be an issue only because we rely on tapping (rather than pushing/clicking) it for Reachability.

Finnicky detail I’m also probably wrong about: The process of activating a new iPhone has become exactly that: a process. The number of steps now involved is immense. Including this absurd personal information step that was, to my recollection, never previously necessary. That one in particular reeks of AT&T actuarial bureaucracy, but there are a ton of others relating to data collection that should probably be switches on a single screen with tap-to-explain.

tl;dr

iPhones are screens with a computer inside and some bonus features. The bonus features rarely are able to impact your experience negatively: if you don’t like them, you don’t have to use them. The screen is the defining feature, and if you size it incorrectly, you can kill a device’s appeal with that single choice.