Keeping Current
August 30, 2021
One of the challenges in teaching or writing about Apple technologies is that things change.
You expect the year to year changes, but things also change between the time that Apple announces them at the June developer conference and when they ship in September.
For example, when Apple first explained Data flow in SwiftUI at WWDC 2019, the code included a BindableObject protocol which used a PassthroughSubject to publish changes. The view instance would register to receive change notifications using the @ObjectBinding property wrapper.
During the betas over the summer this changed to the system we now know. BindableObject and @ObjectBinding were renamed to ObservableObject and @ObservedObject and the mechanism was dramatically simplified to use an @Published property. There was also a detail of when the update was sent changing from didChange to willChange along the way.
The new APIs were much better but the WWDC videos still (as of this morning) reference the old names.
So when I taught SwiftUI that fall I had to mention this diff with the existing WWDC videos as my students would undoubtably watch these videos and possibly be confused.
SwiftUI required iOS 13. A developer who has to support two versions back may be just learning SwiftUI and the video still contains information that didn't actually ship. They may expect that things have changed in the intervening years but a footnote on the video noting what has changed since the video shot might be helpful.
What should Apple do when things change? I know that I have to update my books and courses at least yearly to keep up with the changes. Should Apple go back and update these videos?
Many more developers watch Apple's videos than read my books and take my courses. It would be nice if some of these more critical presentations were kept up to date.
This year Apple has done an interesting thing that I applaud.
They've quietly gone back and updated their async await videos so that they use names that changed during the beta process.
When I first watched this year's videos Apple talked about async{} and detached{}. Now the code and description uses the new names Task{} and Task.detached{}.
I think Apple should have made a bigger deal about this - perhaps flagged the sessions as "Updated".
The async sessions were really dense and well done and necessary for us to have a chance at correctly using this new language feature in our code. I really appreciate that Apple has updated their videos - it's not trivial to keep everything up to date.
They should probably let us know we can depend on these videos being current.
But it's really awesome that they took the considerable time and effort to update them so that they are.