WWDC21 – State of the Union Bullet Point List

Another quick list of topics from today’s WWDC State of the Union presentation. I dropped the ball a bit (mostly during the graphics/Metal portion), so apologies for that. Again, no warranties expressed or implied on this. 😉

Xcode in the Cloud

Unit Testing


  • Code signing in the Cloud
  • add a post action
  • automatic delivery to all platforms


  • crash reports and comments delivered to Xcode organizer
    • fully symbolicated

Privacy + Security

  • Slide of new stuff at 19 minute mark

Swift Frameworks: Concurrency

Structured Concurrency


  • industry proven model
  • object that protects its own state
  • mutually exclusive access
  • proper use of main thread


  • assures always runs on main thread


  • another huge step forward
  • critical APIs

Apple dogfooding SwiftUI


  • add swipe action
  • pull to refresh in one line – refreshable
  • searchable
  • platform specific


  • accessibilityRotor
  • accessibilityRepresentation

Multi-column table

  • Table
  • (like Music)


Material support

  • blur?

Swift Playgrounds 4

  • create apps with iPad
  • move between playgrounds and Xcode
  • “available later this year…”


  • RealityKit


  • Metal debugger timeline
  • Unified Graphics Platform


  • Notifications
    • Interruption Level API
      • passive
      • active
      • time sensitive
      • critical – approved entitlement
  • call apps
  • Notification Summary
    • Large thumbnail chosen over small/none
    • relevance score
  • DND
    • based on what they are doing
  • ScreenTime API
    • parental control frameworks
    • managed settings
      • restrict across devices
    • family controls 
      • heart of privacy model
      • tokens
        • device activity framework


  • extra large size for iPad
  • default home screen layouts
  • smart stacks


  • group activities
  • videos are synced
  • framework available for shared playback
  • deep links
  • returns immediately if FaceTime not running
  • coordinate session method
    • that’s it.
  • not screen sharing
    • app is running natively


  • “we can’t wait…”

WWDC21 – Keynote Bullet Point List

Quick list of topics from today’s Keynote presentation. No warranties expressed or implied. 😉


  • Spatial audio
  • SharePlay: TV, Screen, Audio


  • notifications 
  • Summary


  • Live text
    • whiteboard
  • Spotlight
  • Photos memories
    • Music + videos
    • Change music
    • AI selected (this never works for me)
  • Wallet
    • Clipper
    • Disney world
    • Keys
      • House
      • Work
      • Hotels
        • Hyatt
      • Also on Apple Watch
    • ID Cards
      • Driver License/ID
      • Encrypted
      • In “Secure Element”
      • TSA also
  • Weather
    • Animations
    • Weather maps
    • Air quality
  • Maps
    • Portugal and Spain
    • Interactive globe
    • New 3D details
    • Landmarks
    • Navigation
      • Driving road details
        • Lanes
        • Crosswalks
      • CarPlay
    • Transit
      • Favorites
    • AR 3D
      • SF
      • San Diego


  • Conversation Boost
    • Directional microphone 
    • Reduce ambient sound
  • FindMy
    • Pro & Max
    • Proximity View
    • Separation Alert
  • Spatial Audio
    • Extend to tvOS 
    • Mac

iPadOS 15

  • Widgets!
    • On Home Screen
    • new large format
    • Files widget 
    • iOS 14
  • App Library
    • iOS 14
    • Reorder pages
      • Does iOS do that?
  • Multitasking
    • Multitasking Menu at top 
    • Mail can open in center on top
    • Minimize to shelf for later access
    • Quick switch
    • Split view from App Switcher
    • Keyboard shortcuts
  • Notes
    • Tags
    • @mention
    • QuickNote
      • Swipe from corner
      • Swipe away when done
      • app aware
        • Safari 
      • MacOS and iOS
  • Translate
    • Split view
    • Auto translate
    • System wide translation
    • Live text?
  • Swift Playgrounds
    • Build apps on iPad
    • Submit to the App Store
    • SwiftUI Previews
  • Privacy
    • On device voice processing
    • Mail
    • Safari
  • iCloud
    • Account Recovery
      • Add people you trust to recovery list
    • Digital Legacy
      • Pass data if you die
      • “iCloud Will”
    • iCloud+
    • No one can see what sites you’re visiting
    • Hide my email 
      • Unique random email
    • HomeKit secure video
    • No price change!
    • Same great price. 😉 
  • Health
    • Heart attack patient
      • Combine ResearchKit, HealthKit, Apple Watch
      • Corrie Health App
    • Monitoring changes in health
      • Mobility
        • Balance
        • Gait impairment
        • Walking Steadiness
      • Labs
        • Analysis and descriptions
      • Trends
        • notifications
    • Share health data 
      • Directly with doctor
    • Family
      • Kids
      • Parents
      • HealthSharing
        • Private
        • See trends
        • Notifications
  • WatchOS 8
    • Health
      • Breathe
        • New animation
      • Reflect
        • Prompt
        • Animation
      • Mindfulness app
      • Sleep
        • Adding Respiratory rate
          • notification with change
    • Activity
      • Tai Chi
      • Pilates
    • Fitness Plus
      • Strength, HIIT
      • Artist spotlight
    • Photos
      • Photos face most popular!
        • Portraits watch face
      • Memory highlights
      • Favorites
      • Sharing
      • GIFs – #Images
  • HomeKit
    • Private and secure
    • HomeKeys
    • AppleTV
      • HomePod mini
        • Personalization
    • Siri – 3rd Party devices
      • Thermostats
    • Matter
    • AppleWatch
      • Intercom
  • macOS
    • Monterey
    • Focus 
    • QuickNote
    • Universal Control
      • single mouse and keyboard between Mac and iPad 
      • Automatically recognizes and moves back and forth between the two
      • Drag and drop!
      • Can even use iMac keyboard across three devices!
    • AirPlay to Mac
      • Why isn’t this a thing already???
    • Shortcuts on Mac
      • Could be huge
      • More likely to use
      • “The future of automation on Mac”
      • Workflow will be supported
    • Safari
      • Power efficient
      • Privacy
      • Intelligent Tracking Prevention
      • tabs
        • Sleek design
        • Search built into active tab
        • Tab groups
          • Pick up later
          • Better than Chrome’s implementation.
          • On all devices
          • Add to email for list
        • iPad has new tabs and tab groups!
        • iPhone
          • Grid view
      • Extensions
        • Now on iPhone and iPad!

Developer Technologies


  • SharePlay
  • SwiftUI Focus
  • SwiftUI Search
  • Object Capture
    • 3D modeling with photos
    • available to all developers
  • Swift
    • Concurrency
      • Reduce async code
      • Actor 
        • Isolate parallel tasks
      • Async/await
  • App Store
    • 600M/week
    • $230b to devs
    • App Product Page
      • AB testing
      • Contextual design
    • Events
      • In-app events
      • App Store widget features events
  • Xcode Cloud
    • Automatically builds in the cloud
    • Apple CI
    • Simulates on multiple devices
    • Automatically distributes with TestFlight
    • Security
      • Only stores product of builds
    • TestFlight to the Mac!
    • Limited beta today
    • Available next year


  • Developer betas today
  • Public betas next month
  • Release in fall

Using GitHub “Viewed” Checkbox

I’ve been using GitHub for years now, but I hadn’t really taken advantage of the “Viewed” checkbox on the right side of the file listing while reviewing PRs until a teammate pointed it out to me and mentioned its usefulness beyond indicating simply that the file had been viewed.

It turns out that if you use it in the way it was intended, the “Viewed” checkbox can save you some real headaches on a sizable PR, especially one that you know you’re going to have to revisit potentially more than once.

If you read the following description of the feature, it explains what it’s useful for:

Reviewing proposed changes in a pull request – GitHub Help

If the file changes after you view the file, it will be unmarked as viewed.

What that is really saying is that, in the time between your completing the first pass at a review of the PR, when you return to the list of files the files that have changed will be unchecked. Great! 👍🏻

Additionally, as the documentation states prior to the above quote, when you click the “Viewed” button, it also collapses the file down to a small rectangular region and hides the file contents.

What it’s not telling you is that GitHub is actually a little more helpful, because upon returning, it will actually do three things if a file has changed since your last visit:

  • Unchecks the “Viewed” checkbox
  • Adds a yellow box with a “Changed since last view” label in it, which is nice and visible
  • Expands the file on the page, making it obvious that the file has changed in the interim

These three things are super helpful at identifying the areas of code that have changed since you last viewed the code set. You can immediately see what has changed and focus your attention on those changed files.

This is a very useful feature, especially for large PRs. I probably wouldn’t use it much for smaller PRs, because they are easier to keep track of – but some PRs can get pretty big and include a large number of files, so they really benefit from this feature.

So, the next time you are facing a large PR, try using the “Viewed” checkbox on those files and see if it helps!

Older iPhone Simulators and macOS Catalina

The other evening, in the wake of a bit of nostalgia, I tested running an emulator project on an iPhone 5 simulator running iOS 10.3 in Xcode 11 (more on that in a future podcast episode).

It surprised me at the time—but it probably shouldn’t have—that I got the notorious “‘App Name’ has not been optimized for your Mac and needs to be updated.” alert box. In retrospect, this makes sense because iPhone 5 is a 32-bit device, and therefore so would its simulator counterpart. macOS Catalina doesn’t allow any 32-bit apps to run, so presumably we would have to resort to using the iPhone 5s simulator (or higher), otherwise we would see the “‘App Name’ needs to be updated.” message, and the simulator just would not run. I am not running Catalina yet, but when I upgrade I’ll definitely test this out to see if it’s a problem.

This finding will probably is not be a big issue for me, personally. I’m usually testing on newer iOS versions, with newer hardware and simulators. However, I can see where it would be helpful (or even necessary) to run an emulator that mirrored a particular user’s hardware for an older version of iOS.

Therefore, if you think that you might need to support older phones and older versions of iOS, then you may want to think twice about upgrading to Catalina, or perhaps have a machine or separate volume that boots into Mojave or High Sierra, just to be safe.

Enums and CaseIterable in Swift

In your journeys with Swift since 4.2 released, you may have seen the CaseIterable protocol when working with enums. Since this is a relatively new language feature in 4.2, you might wonder what that is or what it does. In this article on raywenderlich.com, Getting to Know Enum, Struct and Class Types in Swift, Adam Rush gives a very nice, concise description of what the purpose of CaseIterable is and how it works.

CaseIterable Enums in Swift are great for holding a list of items such as our example list of colors. To make enums even more powerful, Swift 4.2 added a new protocol named CaseIterable that provides a collection of all the values of the conformer.

At compile time, Swift will automatically create an allCases property that is an array of all your enum cases, in the order you defined them.

Using CaseIterable is very simple. All you have to do is declare the conformance in the definition of ColorName as shown below:

enum ColorName: String, CaseIterable {
  case black, silver, gray, white, maroon, red, purple, fuchsia, green, lime, olive, yellow, navy, blue, teal, aqua 

You can then use the allCases property whose type is [ColorName]. Add the following to the end of your playground:

for color in ColorName.allCases {
  print("I love the color \(color).")

In the console, you’ll see 16 lines printed — one for every color in ColorName.

The Curious Case of Audiobooks on iOS and macOS

I don’t use Audible (yet), but the situation regarding Audiobooks on macOS Mojave and iOS 12 feels a bit like a UX conundrum at the very least.

For starters, the Audiobooks feature resides in iTunes on macOS, but it’s in Books on iOS. I understand arguments for both, but it feels like Apple’s design or product team should have picked one app that the Audiobooks feature would live on from here on out, and then made the change for both platforms – even if that meant waiting for a future version of iOS and macOS. The current situation is just too confusing, even if it’s meant to be an interim solution. I am not yet running the macOS Catalina beta, so I’m not sure what the next version of macOS will bring for Audiobooks. Hopefully it will be an improvement.

Strangely, there appears to be almost no interface in iTunes Mac at all once you’ve acquired an audiobook. It’s just a list. Launching the audiobook in iTunes does not have any chapters listed, either. The audiobook is basically one long audio file from the looks of things (though it may have chapters or tracks under the hood).

Opening the audiobook in Books on iOS does present a list of tracks, which makes a little bit more sense to display it that way. However, it is odd that they don’t call the items in the list chapters, but that could just be an audiobook convention that I’m not familiar with. It just seemed that books have chapters… so why not audiobooks?

Additionally, navigating to and from the audiobook was a bit disorienting in Books on iOS. It was difficult for me to navigate around to see where the digital version of the printed book was. Eventually, I found it – and it turned out I needed to play with some sorting as well, and now that I’ve used it a few times on iOS it feels a little less clunky. But it definitely wasn’t an immediately intuitive experience, so clearly they have more work to do on the user experience side. Perhaps iOS 13 will bring improvements.

The current state of audiobooks on macOS and iOS feels like a mixed bag of user experiences, so it will be very interesting to see what Apple does in the future for Audiobooks support in macOS Catalina and iOS 13.

How To Configure Charles Proxy to Debug SSL Connections from iOS Apps

If you’re doing extensive debugging and introspection with your web APIs (or perhaps debugging Web Views), here’s how to configure Charles to proxy SSL connections from the Simulator and on-device:

SSL connections from within iPhone applications • Charles Web Debugging Proxy

As of Charles v3.9.3 there is an item in the Help menu, “Install Charles CA SSL Certificate in iOS Simulators”, which will automatically install Charles’s SSL CA certificate in your iOS Simulators.