Atelier Clockwork

WWDC23 Day Three

Keeping up momentum

I had another good day in terms of taking in content, all of the “What’s new” sessions had a lot of things I'm looking forward to digging in to in more detail, and I'm impressed with how complete most of the new things that are coming out this year feel. I'm really enjoying having taken the week off to focus on diving in to the new content, and am having a ton of fun playing with my viewing tracking app.

What's new in Xcode 15

Macros look even more exciting, and the ability to expand them inline for debugging is amazing. The type safe asset catalog stuff will be fun to play with, it'd be nice to drop yet another dependency. String catalogs look great, but it'll be interesting to see how long it takes 3rd party tooling to integrate with the new format. I'm interested to see how it feels using Xcode bookmarks in practice. Overall it looks more promising. TestFlight internal only builds are a welcome surprise that fixes some distribution workflow problems.

What's new in SwiftUI

It's nice to see SwiftUI getting more views, in particular the MapView looks really promising. The simplified data flow parts of SwiftUI should solve a lot of problems, particularly the magic it's pulling off where @Observable will only invalidate a view for changes that it observes. More Swift Data stuff, nothing new from other sessions but still exciting to see it. The new Table stuff looks nice, but also like almost all of the improvements are for macOS and iPadOS, which I rarely have a chance to work on. Keyframes look nice for when you need a super detailed animation, but having the option to cleanly chain together a few animations will go a long way for less effort.

I've implemented some of what .visualEffect and scrollTransition does by hand, so it's nice to have a cleaner and easier way to add visual flare to views in the future. Adding styles to texts in string interpolations looks great, as does animated SF Symbols. There's so many exciting scroll view things mentioned here, but there's an entire session on ScrollView improvements.

What's new in Swift

Treating if and case statements as expressions should help with code readability, and reduce the number of ternary operators used in code, which is really nice. Type parameter packs allowing any number of arguments for result builders should be great in practice. Macros continue to look really well implemented and I'm looking forward to getting even more details in those session videos

It will be interesting to see how ownership and C++ interoperability shows up in iOS development, especially as it looks like the C++ bridging will allow for more direct calling of C++ apis, so it could open up use of C++ frameworks from Swift code.

What's new in UIKit

UIKit previews without having to wrap in SwiftUI will make building UIKit views easier. viewIsAppearing fills a missing hole in UIKit lifecycle, and it's great that it's back deployed to iOS 13. The trait system enhancements sound interesting, but there wasn't enough info in this video to say anything useful. The content unavailable configuration for views is something that consistently needs to be added to views, so it's great seeing framework level support for it. There are also lots of new tools to make internationalization easier to handle, especially the dynamic line heights. The ability to share layout info across siblings in a collection view compositional layout is really nice. The grab bag at the end had lots of interesting stuff, the one that particularly catches my eye is the new page control progress APIs.

Build custom workouts with WorkoutKit

Custom workouts look interesting, but are also really of the range of work I'm likely to be doing on iOS, so this one is filed as for future reference in case something that needs it comes up rather than having any detailed opinions on it.

Meet SwiftUI for Spatial Computing & Meet UIKit for Spatial Computing

It's really interesting to see how Apple is building the elements for the new OS, and how it adapts components from previous platforms. Lots of emphasis on using Materials instead of colors for backgrounds, and having content automatically adapt to the environment because of that. Having the ability to put RealityKit data directly into SwiftUI views also is quite nice. I also will be interested in seeing how the new ornament elements are applied to other operating systems over time, especially macOS.

WWD See progress

I refactored the data to support many to many relationships between sessions and topics, and made a bunch of UI refinements to make the app easier to use, so I can now search for talks and quickly mark things as ignored or seen.

Viewing progress

10 of 177 videos, 5.65%, 4 videos ignored.

Modeling progress

I watched a few non-critical sessions today, so I got some painting in too. Nothing super exciting to look at, but I got a base coat down on on rack of parts, and primed a second rack of parts:

Here's the parts that needed a base coat: Before painting

And here's the parts with a base coat, and the freshly primed parts: After painting

The painting tomorrow should be more exciting as I'll be putting highlights and varnish on the first rack of pieces, which makes the parts "pop" a lot more, and gets me close to assembly.