This bit from the most recent Upgrade makes me think that we only have Automator and AppleScript in macOS because the OS team didn’t want Workflow/Shortcuts (which was bought by the Siri team).
Almost certainly we would have neither in macOS if they had been interested in Workflow in 2017.
Reflecting on 100 Days of SwiftUI
Reflecting on my experience with the “100 Days of SwiftUI” course, with tips on how to make the most of it.
Woo hoo! Day 100 is “just” a final exam and I passed (with merit)! Almost hard to believe that I’ve come to the end of my #100DaysOfSwiftUI journey.

Day 99 included our last quiz and challenge: add a photo credit over the image, fill in some loading/saving methods for favorites, and add sorting to the resorts list. #100DaysOfSwiftUI

For Day 98, we implemented searching resorts, replaced the facility info with icons, added a button for the user to mark favorite resorts, and added a favorite indicator in the Resorts list. #100DaysOfSwiftUI

For Day 97 we started actually building a new project using NavigationSplitView
, NavigationLink
, and format: .list(type: .and)
(for concatenating strings). #100DaysOfSwiftUI
Day 96 and we’re looking at iPad-friendly APIs for the first time.
I’ll be honest—I had not tried running any of our previous apps in the iPad simulator, but now I see they were working fine the whole time. Pretty cool!
This screenshot looks absolutely chaotic. 👹 #100DaysOfSwiftUI

Day 95 was a full challenge day—build an app from scratch based on some requirements!

Day 94 is a review and challenge day! Graphics code can be a doozy because when you get the wrong result, it’s difficult to know what’s actually wrong in the code (or with your math). 😅 I got some help with this one. 😬 #100DaysOfSwiftUI

Day 93 was a fun walk through of using GeometryReader
, including using visualEffect()
and scrollTargetBehavior()
. #100DaysOfSwiftUI

For Day 92, we started a new project (our second to last!) and learned about how layout, alignment guides, and absolute positioning work within SwiftUI.
I really loved the explainer, starting from How layout works in SwiftUI. #100DaysOfSwiftUI

Picking #100DaysOfSwiftUI back up, and in the home stretch at Day 91! It was a challenge day with a review quiz and an open-ended prompt to fix a couple minor bugs and add a feature.

For Day 90, we made a bunch of accessibility fixes and added a view for creating new cards! #100DaysOfSwiftUI

2024 iPhone Home Screens
As the year comes to a close, I want to take a quick snapshot of what my home screens look like now so I can compare them in a year from now.
I say home screens because I use focus modes extensively to change my home screens (depending on my current focus):
Focus Mode | Triggered |
---|---|
Morning | Automatically at 4:00 AM and off either at 9:00 AM (workdays) or 12:00 PM (weekends) |
Fitness | Automatically when I start/stop a workout |
Work | Automatically at 9:00 AM on weekdays |
Driving | Automatically when I start/stop driving |
Personal | Manually when I want to be in a Focus mode |
Do Not Disturb | Manually whenever I need to be completely offline |
Evening | Automatically by 8:30 PM |
Sleep | Automatically when my Wind Down schedule starts |
Let’s go through them roughly by time of day:
Morning
Here’s what my Morning home screen looks like (in Small icon mode so it’s easier to understand with labels; I actually use Large icon mode everywhere):


Fitness
Here’s what my Fitness home screen looks like:


Work
Here’s what my Work home screen looks like:


Driving
Here’s what my Driving home screen looks like:


Personal
Here’s what my Personal home screen looks like:


Do Not Disturb
Here’s what my Do Not Disturb home screen looks like:


Evening
Here’s what my Evening home screen looks like:


Sleep
Here’s what my Sleep home screen looks like:


I’m so bummed that the macOS “widgets on your desktop” feature is so unreliable for me. I go to the trouble of setting up a bunch of widgets on my second display, only for them to disappear after some random number of restarts. Seems like a great feature but I can’t trust it. 😞
For Day 89, we learned how to detect when our app moves to the background or foreground so we could pause and restart our timer at the right moment. #100DaysOfSwiftUI

For Day 88, we built a brand new part of the app with a stack of cards and gestures for swiping them left and right to move to the next card. #100DaysOfSwiftUI

For Day 87, we learned a little bit about the Combine framework, Timer
, and three accessibility settings: Differentiate Without Color, Reduce Motion, and Reduce Transparency. #100DaysOfSwiftUI
For Day 86, we started a brand new project and started playing with all the gesture APIs and hit testing. #100DaysOfSwiftUI
