100 Days of SwiftUI
For Day 40 we put into practice what we learned yesterday by starting the implementation of the Moonshot app. Pretty cool that #100DaysOfSwiftUI provides sample data and images to build more interesting-looking apps like this one.

We’re starting a new “Moonshot” project for Day 39 and learning about Image
resizing, LazyVStack
, LazyHStack
, LazyVGrid
, LazyHGrid
, NavigationLink
, and decoding hierarchical data with Codable
.
I wonder about learning optimizations like the Lazy versions of Stack/Grid so early on. #100DaysOfSwiftUI
Day 38 included a quiz and some prompts for us to add features on our own to the app, which included coloring the expense amounts and adding the separate Business/Personal sections (while still keeping support for deleting expenses in those new sections)! #100DaysOfSwiftUI

Day 37, using the APIs we learned yesterday in a new app, but this stood out to me (emphasis mine):
First, we need to decide what an expense is – what do we want it to store? In this instance it will be three things: the name of the item, whether it’s business or personal, and its cost as a
Double
.
In a real app, you should almost always keep prices as integers so math with them is accurate.
As a training creator, I know there’s a trade-off between having “production-ready” code vs. simplifying it for learning.
This is a case where I would have made a different decision. #100DaysOfSwiftUI
Day 36 is the start of a new project, and thus a day of learning new APIs: @Observable
with class
, .sheet()
, @Environment
, .onDelete()
, UserDefaults
/ @AppStorage
, Codable
, and JSONEncoder
.
I would’ve liked more info about @Environment
but I’m sure we’ll get into it more soon. #100DaysOfSwiftUI
I finished the Day 35 challenge today. It’s been a while since I’ve been “challenged” when programming, so this was a great reminder to stay humble while learning something new. #100DaysOfSwiftUI

Yesterday I looked at the Day 35 challenge (build a new app from just a description, no code) and I was like “nope, don’t have the energy today.”
I worked on it for ~45 minutes tonight and started off strong, but I’ve run into some errors that I’ll have to come back to tomorrow. #100DaysOfSwiftUI
Day 34 was a quiz and challenge day where we went back to one of our previous projects and added animations on our own. I really liked the challenge because I wasn’t expecting to go back to a previous project! #100DaysOfSwiftUI

Day 33… continuing with animations and I swear this is more fun than it looks from a single screenshot. #100DaysOfSwiftUI

Yes, I do embrace absolute chaos when I’m first trying the provided sample code so I can keep playing with older examples as I’m learning more intricate modifiers. Day 32 in the books! #100DaysOfSwiftUI

Day 31 was a challenge day where we took a test and had to update our app with only some requirements and no code hints. I extended mine to show a score based on the number of letters in each correct guess. #100DaysOfSwiftUI

Back on it after being sick the last couple days… for day 30, we mostly copied code from the tutorial, but I find it very useful to type everything out to get that muscle memory built up.
Here’s a little game where you have to type words that are a subset of a random word. #100DaysOfSwiftUI

Day 29 is bringing me back to my Objective-C days:
let range = checker.rangeOfMisspelledWord(in: word, range: range, startingAt: 0, wrap: false, language: "en")
The full rangeOfMisspelledWordInString:range:startingAt:wrap:language:
API signature is too long for this post. #100DaysOfSwiftUI
Day 28 was straightforward—a review quiz and some challenges for us to modify our most recent app. Onward! #100DaysOfSwiftUI

I realize that you might have thought “wow, we’re looking at machine learning already?” After all, this is only day 27 of a 100-day course. But, as Andre Gide said, “you cannot discover new oceans unless you have the courage to lose sight of the shore.”
Heh, #100DaysOfSwiftUI read my mind!
Today we built a UI on top of the Core ML model we trained yesterday. Straightforward but fun!

I was not expecting “Training a model with Create ML” to be a part of the Day 26 content!
As someone who has built a lot of training content this past year for work, I know how valuable it is to create fun/engaging exercises, so it impresses me to see Machine Learning (ML) in #100DaysOfSwiftUI
Haha this looks so awful, but day 25’s challenge was fun: to build a rock/paper/scissors game from scratch! #100DaysOfSwiftUI

Day 24 was straightforward—a test and a few little changes to make on our own to our recent projects. I had to go back to remember the syntax for custom modifiers. Onward! #100DaysOfSwiftUI
Today I learned that the order of modifiers does matter:
Text("Hello, world!")
.padding()
.background(.red)
.padding()
.background(.blue)
.padding()
.background(.green)
.padding()
.background(.yellow)
Day 23 in the books! #100DaysOfSwiftUI

Day 22 was really easy—added the score counter and a different alert for when the game is “over.” #100DaysOfSwiftUI
