By Casey Liss

This week I joined Katie Floyd and David Sparks on their long-running and excellent show, Mac Power Users. I was a previous guest a couple years ago, just before Declan was born. Now, two years later, it was a blast to come back and talk with Katie and David again.

On this episode, we discussed my transition to iOS development, some parenting tools, my Mac and iOS workflows, and how I use my Synology NAS.

Mac Power Users is a juggernaut in the Apple podcasting community. It’s an honor to be asked to participate, and always a blast to record with David and Katie.


My buddy Greg Koenig just wrote an interesting post that refutes what many people are taking as fact: Apple is producing a ceramic iPhone.

This all stemmed from a controverial post on Quora which stated, right up front:

Apple will create an iPhone primarily from ZrO2 - Zirconian Ceramics

Greg manufactures things for a living; I use his Luma Loop camera strap every time I pick up my big camera. He tends to know what he’s talking about, and uses much of the same equipment that Jony Ive does. Greg writes:

Apple is a hardware company and machined aluminum is their primary platform. At peak production, Apple is manufacturing roughly 1 million iPhones per day.

For Apple to bring a whole new long-cycle-time process online for the next iPhone, […] they would need warehouses with thousands of machines already in situ, with thousands more in production.

Greg’s post is a fascinating read, which spells out several reasons why it’s highly unlikely Apple will be releasing a ceramic iPhone anytime soon.


A couple of weeks ago I joined my buddy Jelly (of GIFWrapped fame) on his podcast about mobile app development, Mobile Couch. Since Jelly’s normal co-host—and other friend of mine—Ben was on assignment, I got to fill in.

On this episode, Jelly and I discussed both migrations from Objective-C to Swift, as well as my new forays into functional reactive programming using RxSwift.

It’s really hard to verbally describe the magic that is Rx, but I had a lot of fun recording this episode. Come for the nerd talk; stay for Jelly’s delightful accent.

Accessibility in iOS

This week I had my annual appointment at my optometrist. I needed to get fitted for new RGP contacts due to my Keratoconus. During my visit, he placed drops in my eyes to help his examination.

These drops rendered me farsighted for a couple hours. Crisp details were hard to make out up close. I immediately noticed this the moment I tried to use my iPhone. I couldn’t read anything on it.

I didn’t fret. I know that Apple has built a plethora of accessibility tools into iOS. I began by taking a page out of my parents’ playbook, and increasing the size of text on the screen. To do so, I went to
SettingsGeneralAccessibiltyLarger Text
and slid the slider as far as it would go. Thankfully I knew approximately where all of these items were, as it was very hard to read them. Cranking the text size way up made things better:

Large Text Demo

However, this wasn’t really enough. When I recorded the video above, with full visual acuity, I could read the Larger Accessibility Sizes switch. For demo purposes, I turned it on in the video above to show the difference.

At the time, not remembering nor being able to see the larger sizes option, I wasn’t able to use it. I was able to just barely make out the word Zoom in the Accessibility screen. Once I looked at the Zoom details, I was vaguely able to see something about three fingers in the text below the switch. I turned it on, and immediately the display zoomed in.

Intuitively, double-tapping with three fingers zoomed back out. Now that I knew how to turn it on and off, I could zoom in to read the full instructions. By dragging with three fingers, I could pan around while remaining zoomed. This was the piece I needed.

Zoom Demo

In the span of a couple minutes, without instruction, I went from being unable to see anything on my phone to being able to operate it nearly as efficiently as when I’m able to see just fine. Despite diving into these features quite literally blind with poor vision and no prior experience.

Some have been writing about accessibility—particularly for the visually impaired—for years. Until I found myself in a similar (though temporary) predicament, I didn’t realize nor appreciate how much work Apple puts into making our devices usable by everyone.


Today I joined Katie Floyd, Dan Moren, and Jason Snell on this week’s Clockwise. As usual, the four hosts discussed four topics in thirty minutes.

This week, we discussed new features in macOS Sierra, what we still long for from our phones, what we nevertheless appreciate about our phones, and Google Allo.

Clockwise is so much fun to guest on. If you haven’t listened, you should give it a shot.

The Grand Tour

The Grand Tour, spiritual successor to the BBC Top Gear that we knew and loved, has set a release date of Friday, 18 November:

The show is filming in different locations across the globe; they film in California the weekend of 24-25 September. I was actually interviewed via phone to potentially win tickets to the show, but more on that later.

The show will be broadcast on Fridays on Amazon Prime. Unlike most other online-only shows, particularly popular Netflix shows like House of Cards and Orange is the New Black, The Grand Tour will not be released in one large chunk. One episode per week, for a few weeks.

We’ve also found out a little bit more about The Grand Tour. According to Jalopnik, there’s a plethora of things that can’t be said or done on the new show:

On the plus side, according to series producer Andy Wilman in the video Jalopnik discovered:

  • The Grand Tour will be filmed in 4K
  • There will be twelve episodes “per year”; not sure if that’s per season or per annual year. I’d guess the latter, which means 6 episodes per season.
  • The contract is presently 3 years, so that means 36 new shows (!)

About that interview.

On Friday, 2 September, I received the following email:

We'd like to talk to you about tickets.

It asked me to provide contact information so that someone from the Applause Store (which also handled tickets for Top Gear) could call me ring me up and talk. On the following Monday, which was Labor Day, I received a call from Unknown. That call was from a very lovely British lady; it lasted six minutes.

I was asked a variety of questions. Some made sense, others were odd. The ones I remember:

  • Would you consider yourself a big fan of Top Gear?
  • What do you like most about it?
  • Have you seen the new Top Gear, with the new cast?
  • Have you ever been to a car show?
  • Have you ever been to a music festival? (ಠ_ಠ)
  • I see you’re in Virginia. Could you be in southern California the weekend of 24-25 September, on two weeks notice?
  • Who would you bring with you? (I suspect this was to ensure gender parity)
  • What’s your favorite car?

I gave the best answers I could. I did make mention of Top Gear Party, but neglected to mention my vanity license plate is inspired by one of the members of the show. I did my best to sell myself, without being too over the top.

I never heard back from the Applause Store, so it sounds like I won’t be making an emergency trip to Southern California.

Sad James May
That's me on the left.

You can’t win 'em all.

Nonetheless, I am super pumped for November.

iPhone Preorder Lessons Learned

I just ordered a new iPhone, last night this morning, at 3:11 AM. I got an iPhone 7, [matte] Black, 128 GB. It should ship on launch day.

In placing the order, I learned several things, which I’m putting here mostly to help me remember next year.

The day before

Apple shuts the store down the afternoon/evening of the day before preorders begin, so it’s important to get these steps done ahead of time.

  • It’s best to use the Apple Store app to place your order, on the device that you will be replacing. It’s a bit cruel to use your current device to order its replacement, but it’s fastest. Using the web is almost always a recipe for misery.
  • If at all possible, set up Apple Pay on that device.
  • Confirm your default shipping and payment information:
    • Apple Store app: Account tab → Primary Payment and Primary Shipping
    • Apple Pay: Settings app → Wallet & Apple PayShipping Address
  • Speaking of shipping address:
    • If possible, choose your place of business. The delivery will require a signature, and you don’t want to be trapped at home all day.
    • That said, AT&T requires you to ship new devices to the address they have on file. Good luck if you’re on a multi-city family plan.
  • Back in the Apple Store app, find the device you want, and configure it (go through all the motions like you’re going to buy it right now), and save it as a favorite.
  • Also make sure you’ve enabled the Apple Store app keeping you logged in, as well as your carrier settings. There’s one switch to flip for both:
    Account tab → Account SettingsRemember Me

The night of

Please note that things won’t be exactly the same for those upgrading via the iPhone Update Program, as of the iPhone 7 you must make an in-store appointment to surrender your 6S, and collect your 7. I’ve also heard second-hand reports that availability was extremely limited for upgraders. Your mileage may vary.

  • Wake up a few minutes before preorders go on sale. They are supposed to start at midnight Pacific time, but in reality it’s often 5-10 minutes later. I set my alarm at 2:58 AM for a (roughly) 3 AM sale time.
  • Use your cellular connection when you wait for the Apple Store to come back online. I found my otherwise-fantastic FiOS connection didn’t see the store come back up as quickly.
  • Though the Apple Store app does (sometimes) refresh itself when you simply leave it and return to it, I’d recommend force-quitting it, reopening it, repeat. That forces the app to refresh and see if the store is up or not.
  • When the store comes back up, go to Account tab → My Favorites and proceed from the favorite you saved earlier. It’ll save you time.
  • When you check out, pay with Apple Pay. It’s faster and increases your chances of getting your order through quickly.
    • Be careful, though, that the correct addresses and e-mails are used. I found that an old, busted, e-mail address was somehow used for my order, despite me having confirmed my settings in the Apple Store app ahead of time.
  • For Americans, on the iPhone 7 anyway, if you’d like to get an unlocked, SIM-free phone, your only choice is T-Mobile. Unlike all the other carriers, they do not ask for any sort of account confirmation during the order process.

The wait

I cannot recommend Deliveries enough to track your order. They have apps for all the Apple platforms, and they’re all great. Deliveries supports tracking by Apple order number.

Additionally, often times a day or two before your target delivery date, you can actually get your tracking information before Apple sends it to you. It changes often whether Apple uses FedEx or UPS to ship the phones, but either way, go to the tracking page for either carrier.

Once you’re on the tracking page, try to track a package by reference. Use your billing phone number as that reference number. Sometimes, this will give you your iPhone tracking information. Sometimes, it doesn’t. Can’t hurt to try.

For the iPhone 7, I signed into my free UPS My Choice account in order to see if the tracking number was visible. When I went to my Delivery Planner calendar, I noticed on Wednesday (the first time I looked) that my phone had a tracking number and was scheduled for Friday.

Once I got the tracking number, I noticed that one of the reference numbers was indeed my mobile phone number, not my billing number, which is my home phone.

Arrival day

It’s worth noting that in years past, if you’d like, Apple has allowed you to print and pre-sign a form and tape it to your door. You can print the signature form PDF from your order status page. The delivery person is supposed to take that as proof of signature, and leave you your phone. Depending on the area in which you live, this may be risky, as the iPhones ship in boxes that look like they have iPhones in them.

  1. Upgrade your existing phone to the latest version of iOS—in this case, iOS 10—before you do anything. Since the iPhone 7 will presumably ship with 10, it’ll make the whole backup dance much easier.
  2. Unpair your Apple Watch, if you have one, from your iPhone
  3. Perform a backup of your iPhone, preferably to iTunes, preferably with Encrypt iPhone backup checked, so that your passwords will restore automatically on the new phone
  4. Go through the onboarding on the new iPhone
  5. Restore the backup you created in step #2
  6. Re-pair your Apple Watch with your new iPhone.

Here’s hoping your purchase experience—and mine!—is as smooth as possible in 2017.

UPDATED 10 September 2016 2:00 PM: Added some thoughts about the iPhone Upgrade Program, updating your existing phone, and pre-signing for delivery.

UPDATED 13 September 2016 07:45 AM: Added information about using UPS My Choice to get your tracking number.


Today, Apple is going to be unveiling the next version of the iPhone. I’ll be joining my buddies Jason Snell and Dan Moren of Six Colors, as well as Stephen Hackett, and Myke Hurley, on a live chat hosted by Talk Show.

I’ve embedded the chat below, but you can also find it here, or in the native Talk Show app. We’re doing a Q&A before the event, and then join us while we discuss the keynote, 1 PM today!


Today I joined Dan Moren, Jason Snell, and Brianna Wu on this week’s Clockwise. As with all episodes of Clockwise, it’s four topics from four hosts in thirty minutes.

This week, we discussed Amazon’s $5/mo music service for Alexa, Bloomberg’s report on Apple Watch 2, old software we just can’t get rid of, and our policies with beta OSes on our devices.

Guesting on Clockwise is one of my favorite things to do, as I always have a blast. Making a point despite the constant pressure to be very succinct is always a fun challenge. In fact, Brianna described it well in a series of tweets today.

Swiftly Discovering an Error

At work last week, I was debugging some odd behavior in one of our apps. A user, on a detail screen, would tap a Save button, and nothing would happen. Not a crash, not an error message, no log entries. Just, nothing.

I started digging into the code, and quickly found we were trying to add this new item represented by the detail screen onto a custom collection. Something along these lines (the names have been changed to protect the guilty):

[self.customCollection addItem:self.collectionItem];

As it turns out, a couple of classes above this one, the instance of customCollection wasn’t being properly initialized; it was simply nil.

That means in the code above, we were passing a message to nil. In Objective-C, that means the message is dropped on the floor, and ignored.

In many other languages, such as C♯, calling a method on a null variable would cause a crash. Messaging to nil being acceptable is considered a feature in Objective-C, and not a bug. Crashes are never a good thing, after all.

In Swift, by comparison, we can only have nil values on Optionals. We do have the handy optional chaining syntax, however, that would change the code above to:

self.customCollection?.add(item: self.collectionItem)

As a Swift developer, seeing that ? would immediately cue to me that it’s possible for customCollection to be nil. Something that is worth investigating.

That being said, any Objective-C developer worth their salt will think the same of any class instance. To a Swift developer, that sounds exhausting, but it’s still a reasonable point. Further, many Swift developers only use optional chaining in cases they’re pretty damn sure things will either be non-nil, or it’ll work itself out if things are nil. The ? may get overlooked.

In our case, where nil really is bad news, a good Swift developer would improve upon the above:

guard let collection = self.customCollection else {
    // Take evasive action, or just punt:
    fatalError("Custom Collection cannot be null!")

// If we get here, we are *guaranteed* 
// that collection is non-nil.

Here, it’s made explicitly obvious what’s happening: the guard let indicates this thing had better be true, or else bad things have happened.

“But wait!” shouts the Objective-C developer. “We have NSAssert!”

Okay, sure. But NSAssert isn’t always enabled; in fact, in general, it’s disabled by most in release builds.

The point isn’t that Swift’s Optionals or guard let have no equivalents in Objective-C. The point is that thinking deliberately about these things—and proactively protecting yourself from error conditions—is a fundamental part of how you write Swift.

Some people may find being that concerned with what is Optional and what isn’t to be exhausting. I find it to be lovely. I find myself being far more deliberate with the Swift code that I write. In many ways, it’s reminiscent of the C♯ I wrote in the past, but with better tools such as guard let and optional chaining (which was just added in C♯ 6.0, actually).

I like Swift, and I like being that careful with my code. Swift instills a care in me that I like to think is innate, but is now compulsory.