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

Day 85 is a challenge day! The quiz was easy but the challenge took me about an hour to complete. The “contacted” icon, link to an edit screen, and sort options are all new. #100DaysOfSwiftUI

For Day 84, we learned how to add swipe actions to list items and show local notifications using the UserNotifications
framework! #100DaysOfSwiftUI

Day 83 has this tidbit:
The CPU running our code doesn’t care about data types, comments, access control, and more, but if you want to write great software that is scalable, testable, and maintainable, you need to add some rules.
There’s a little piece of me that wishes we talked more about testing and maintainability. I know they’re more advanced topics that I’ll learn on my own, but a man can still wish.
Today we added UI to scan QR codes and multi-item editing. #100DaysOfSwiftUI

Day 82 was much easier—I don’t think there was anything new, we “just” laid the groundwork for the new tabs and added the SwiftData pieces to store the contact info. #100DaysOfSwiftUI

Today was almost smooth sailing, learning about list row swipe actions and local/scheduled notifications, but I ran into issues with the directions for adding Swift package dependencies in Xcode.
I wrote up the issue and my fix in this issue: Day 81: No such module 'SamplePackage'
#100DaysOfSwiftUI
Day 80 and we’re learning about Result, image interpolation, and context menus.
This stood out to me:
Remember, context menus are by their nature hidden, so please think twice before hiding important actions in a context menu.
Undiscoverable UI might as well be no UI at all. I value explicit UI that’s easy to discover and understand. #100DaysOfSwiftUI

Day 79 and we’re (finally) learning about TabView, my favorite way to keep our example code around!
One actual takeaway from today: impressive that an EditButton can affect the state of a List in the same view without any explicit bindings; I’m usually cautious of “magical” APIs. #100DaysOfSwiftUI

For Day 78, we started saving the user’s current location when they save one of the photos to the app. Easy peasy! #100DaysOfSwiftUI

Day 77 was a doozy of a challenge: build an entire app from scratch that imported a photo, prompted for a name, stored both somehow (I chose SwiftData), display it in a list, and show a detail view.
It was a lot of work but took me about an hour from start to finish. #100DaysOfSwiftUI

For Day 76, we had a quiz and challenge: fix accessibility issues in three of our past apps.
For Cupcake Corner, I couldn’t reproduce the issue.
For iExpense, the fix was easy.
For Moonshot, there were a couple images that needed labels, but I couldn’t find any other issues. #100DaysOfSwiftUI
I liked Paul’s message on Day 75 of #100DaysOfSwiftUI much better:
There’s a New York lawyer called Gregory Mansfield who fights for disability rights, and he once wrote this: “Accessibility is not charity. Accessibility is not generosity. Accessibility is not an amenity. Accessibility is not a gratuity. You don’t bestow access – you ensure it.”
👏
On Day 74 we’ve started learning about accessibility.
I‘m not a fan of how this is framed:
Tony Fadell – the creator of the iPod at Apple – had this to say: “you are defined by what you do and also by what you don’t do.”
Sure, you can skip accessibility and 90% of people won’t notice, but do you want to be defined by that? I’d wager that the answer is no.
I wish this focused on accessibility as a fundamental human right that’s needed by all of us at one point or another… not just an arbitrary percentage (that is really low as well). #100DaysOfSwiftUI

Day 73 was a challenge day, so I had fun refactoring some of the code from the main View into a ViewModel and adding error handling. #100DaysOfSwiftUI
