Archive
Full Post List
Apr 24, 2025: On August 27, 2020, I found a boy who would love me more than anyone ever did before. At my weakest physically, he’s there to take care of me. At my …
Apr 23, 2025: Long Beach I quarantined in an Airbnb for two weeks before finding an apartment in downtown Long Beach. Along with COVID, the country felt in turmoil with the …
Apr 22, 2025: New Zealand On March 17, 2020 (NZT), I was optimistic: I’m currently in Auckland, New Zealand. I’m scheduled to leave for Wellington this weekend, where I plan …
Apr 21, 2025: Southeast Asia I absolutely loved Thailand. The food, the prices, the people—everything except the air quality. My three weeks went quickly as I worked and spent my …
Apr 20, 2025: Leaving for Spain I spent the summer of 2019 laying the groundwork to be away for years: I got rid of most of my belongings, packed up the rest, transferred my phone …
Apr 19, 2025: Shortly thereafter, my heart and mind were freed from obligations and I knew… It was time to go. On NYE 2019, I wrote on the party’s wish-board that I …
Apr 18, 2025: Hi, it’s Chasen. Six years ago, I quit social media. We have some catching up to do. Last time we talked, I was heading back from Europe to the …
Mar 29, 2025: Traveling to Chicago for work this week and coming to terms with this chaotic weather. 😅
Mar 26, 2025: 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 …
Feb 27, 2025: Reflecting on 100 Days of SwiftUI A few months ago, I started the 100 Days of SwiftUI course. This post is a reflection on why I think anyone interested in Swift development should go …
Jan 19, 2025: 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.
Jan 18, 2025: 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 …
Jan 17, 2025: 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 …
Jan 16, 2025: For Day 97 we started actually building a new project using NavigationSplitView, NavigationLink, and format: .list(type: .and) (for concatenating …
Jan 15, 2025: 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 …
Jan 14, 2025: Day 95 was a full challenge day—build an app from scratch based on some requirements!
Jan 14, 2025: 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 …
Jan 12, 2025: Day 93 was a fun walk through of using GeometryReader, including using visualEffect() and scrollTargetBehavior(). #100DaysOfSwiftUI
Jan 11, 2025: For Day 92, we started a new project (our second to last!) and learned about how layout, alignment guides, and absolute positioning work within …
Jan 10, 2025: 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 …
Jan 3, 2025: For Day 90, we made a bunch of accessibility fixes and added a view for creating new cards! #100DaysOfSwiftUI
Dec 31, 2024: 2024 iPhone Home Screens /* Container styling */ .side-by-side { text-align: center; max-width: 393px; margin: auto; } .side-by-side div:first-of-type { display: inline-block; …
Dec 29, 2024: 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 …
Dec 27, 2024: 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. …
Dec 26, 2024: 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. …
Dec 24, 2024: For Day 87, we learned a little bit about the Combine framework, Timer, and three accessibility settings: Differentiate Without Color, Reduce Motion, …
Dec 22, 2024: For Day 86, we started a brand new project and started playing with all the gesture APIs and hit testing. #100DaysOfSwiftUI
Dec 22, 2024: 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 …
Dec 20, 2024: For Day 84, we learned how to add swipe actions to list items and show local notifications using the UserNotifications framework! #100DaysOfSwiftUI
Dec 17, 2024: 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 …
Dec 17, 2024: 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 …
Dec 16, 2024: Today was almost smooth sailing, learning about list row swipe actions and local/scheduled notifications, but I ran into issues with the directions …
Dec 16, 2024: 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 …
Dec 15, 2024: 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 …
Dec 15, 2024: For Day 78, we started saving the user’s current location when they save one of the photos to the app. Easy peasy! #100DaysOfSwiftUI
Dec 14, 2024: 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 …
Dec 13, 2024: 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 …
Dec 12, 2024: 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 …
Dec 12, 2024: 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 …
Dec 11, 2024: 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 …
Dec 8, 2024: Today we refactored our code to use MVVM and added “unlock with FaceID” to this part of the app. From Day 72: Tip: I get lots of questions about why …
Dec 7, 2024: For Day 71, we used Wikipedia’s API to fetch places near a set of coordinates. I had no idea this was a thing, and I already have an existing app idea …
Dec 7, 2024: For Day 70 we added the ability to pin locations on a map and edit them. We were supposed to use .onLongPressGesture, but I couldn’t get it to work in …
Dec 6, 2024: Day 69 was short: we learned how to 1) add different types of maps and 2) use Face ID to unlock the app. #100DaysOfSwiftUI
Dec 6, 2024: Day 68 has been some of the most interesting content (from a language-learning perspective) in a while. First, yes the method is just called <, which …
Dec 5, 2024: Day 67 is the last day for this particular project, so we had a review quiz (got 12/12) and added some features to the app without any code prompts, …
Dec 3, 2024: Back at it after a little Thanksgiving break and we’ve run into our first (I think) need to use @MainActor. Today we added the ability to change image …
Nov 27, 2024: Day 65 and this sort of thing still gets me: We can then call that whenever our selectedItem property changes, by attaching an onChange() modifier …
Nov 27, 2024: For Day 64 we learned how to use PhotosPicker to… let the user pick photos, use ShareLink to… create share links, and call requestReview() to… request …
Nov 26, 2024: For Day 63, we learned about the different Image APIs available: Image, UIImage, CGImage, and CIImage. We also tried out ContentUnavailableView! I …
Nov 24, 2024: For Day 62, I liked that we were shown “Open Quickly” in Xcode and told how to find the definition of a generated interface. I don’t fully understand …
Nov 23, 2024: Nope, today was the hardest challenge. I thought it was weird that yesterday’s challenge didn’t require us to use SwiftData (when we had just spent a …
Nov 23, 2024: I thought yesterday was our most difficult day so far… now Day 60 has surpassed it. Today we built an app from scratch with just some requirements to …
Nov 22, 2024: Wow, I’m impressed with myself for learning and SwiftData/SwiftUI for being easy. For Day 59, we had to go back to an old app and upgrade it to use …
Nov 19, 2024: Day 58: Continuing yesterday’s project and learning about NSPredicate, changing fetch requests dynamically, and creating relationships. One of today’s …
Nov 18, 2024: Starting a new project for Day 57, so don’t have much to show so far. We’re learning how to edit SwiftData objects with SwiftUI and filter data using …
Nov 16, 2024: Day 56 was a review and challenge (on our own) day, so I updated the detail view to handle missing data more gracefully. #100DaysOfSwiftUI
Nov 16, 2024: For Day 55 we learned how to delete SwiftData objects, sort queries using SortDescriptor, and add custom buttons to alerts. #100DaysOfSwiftUI
Nov 15, 2024: For Day 54, we earnestly started the implementation of a “Bookworm” app and created new SwiftData models and SwiftUI components. I think the only new …
Nov 14, 2024: Day 53 is the start of our first project with SwiftData. So far all the terminology reminds me of my Core Data days. #100DaysOfSwiftUI
Nov 13, 2024: Day 52 is a review quiz and challenge day. I found the challenges pretty easy this time around! #100DaysOfSwiftUI
Nov 12, 2024: It’s our first day using the debugger! I love debuggers so much. I feel like teaching how to use real debuggers is undervalued by the developer …
Nov 12, 2024: Continuing our new project in Day 50 by using CodingKeys to make @Observable get along with JSONEncoder().encode(), and learning about haptics with …
Nov 11, 2024: New project day! Day 49 was focused on async/await, URLSession.shared.data(), AsyncImage, and the .disabled() modifier. I’m continuing to use TabView …
Nov 11, 2024: Day 48 included watching two videos. Paul’s had a fun premise (“What Star Wars Can Teach Us About Swift”) and Woz’s video seemed aimed at …
Nov 9, 2024: Day 47 was a review and challenge day, with an entire app we had to build from scratch on our own. I’m stoked it only took me 30 minutes to put …
Nov 8, 2024: Day 46 was a review quiz and a challenge! Today is the first day I’ve run into this error (that I’ve seen so many SwiftUI developers complain about): …
Nov 8, 2024: Adding a tab bar wasn’t part of Day 45, but I wanted to keep my other view and start “fresh” with today’s code. We actually went through …
Nov 7, 2024: For Day 44 I made this abomination while learning the ins and outs of NavigationPath. #100DaysOfSwiftUI
Nov 7, 2024: I had been wondering about how to only load detail views when they’re navigated to, and in Day 43 I got my answer! Hello …
Nov 5, 2024: Day 42 (hey!) is a challenge day and I am taking it easy with just a refactoring of some views and not adding a brand new list view (with a toggle …
Nov 4, 2024: Day 41 was our last day of adding pre-made #100DaysOfSwiftUI code to this Moonshot project. Tomorrow, challenge! I really appreciate Xcode’s previews. …
Nov 3, 2024: For Day 40 we put into practice what we learned yesterday by starting the implementation of the Moonshot app. Pretty cool that #100DaysOfSwiftUI …
Nov 2, 2024: We’re starting a new “Moonshot” project for Day 39 and learning about Image resizing, LazyVStack, LazyHStack, LazyVGrid, LazyHGrid, NavigationLink, …
Nov 2, 2024: 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 …
Nov 2, 2024: I got my flu shot and COVID booster yesterday morning and paid for it with fever dreams last night. I have always had a strong reaction to the COVID …
Nov 1, 2024: 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 – …
Oct 31, 2024: Day 36 is the start of a new project, and thus a day of learning new APIs: @Observable with class, .sheet(), @Environment, .onDelete(), UserDefaults / …
Oct 30, 2024: 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 …
Oct 29, 2024: 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 …
Oct 27, 2024: 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 …
Oct 25, 2024: Day 33… continuing with animations and I swear this is more fun than it looks from a single screenshot. #100DaysOfSwiftUI
Oct 24, 2024: 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 …
Oct 24, 2024: 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 …
Oct 23, 2024: 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 …
Oct 20, 2024: Day 29 is bringing me back to my Objective-C days: let range = checker.rangeOfMisspelledWord(in: word, range: range, startingAt: 0, wrap: false, …
Oct 19, 2024: Day 28 was straightforward—a review quiz and some challenges for us to modify our most recent app. Onward! #100DaysOfSwiftUI
Oct 18, 2024: 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 …
Oct 17, 2024: 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 …
Oct 16, 2024: Haha this looks so awful, but day 25’s challenge was fun: to build a rock/paper/scissors game from scratch! #100DaysOfSwiftUI
Oct 14, 2024: 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 …
Oct 14, 2024: Today I learned that the order of modifiers does matter: Text("Hello, world!") .padding() .background(.red) .padding() .background(.blue) .padding() …
Oct 13, 2024: Day 22 was really easy—added the score counter and a different alert for when the game is “over.” #100DaysOfSwiftUI
Oct 11, 2024: Day 21 had us building a mini flag-guessing game, but without the score implemented. I will be absolutely shocked, shocked I say when we implement the …
Oct 11, 2024: Day 20 is all about stacks, gradients, buttons, and images. I find it more fun to keep all the sample code in one project and let it pile up. 🤪 …
Oct 10, 2024: Uh oh… lbpost.com/news/boil…
Oct 10, 2024: Oh macOS Preview’s signature feature, I love you but this is not acceptable. 😅
Oct 9, 2024: What does the Swift community use for code formatting/linting? Ideally I’d like to have something that only runs when I invoke it with a keyboard …
Oct 9, 2024: Day 19, very fun to have a day focused on building a new app from scratch! This was my take on the challenge. #100DaysOfSwiftUI
Oct 8, 2024: Day 18 is a short quiz and adding some new code on our own without any guidance—it took so little time (9 minutes 😝) that I’m tempted to just start on …
Oct 7, 2024: This definitely trips me up: Tip: It’s tempting to think that modifier should be attached to the end of the NavigationStack, but it needs to be …
Oct 6, 2024: I have a lot to learn about what enables this syntax for two-way binding (note the $): struct ContentView: View { @State private var name = "" var …
Oct 6, 2024: Day 16, starting off with creating a new iOS app in Xcode and seeing everything that’s changed since I last used it almost 12 years ago. Hitting Run …
Oct 5, 2024: I might not do day 16 tomorrow, we’ll see… running the Long Beach half-marathon in the morning. 😃
Oct 5, 2024: Day 15 is a review of the last two weeks of material! #100DaysOfSwiftUI I kept on going back to the individual pages to find the syntax I needed while …
Oct 4, 2024: Day 14 is optionals, guards, nil coalescing, optional chaining, and optional try. Guards are new to me but I like them: func double(number: Int?) -> …
Oct 3, 2024: My Series 10 has had really inconsistent battery life (it died on me 8 miles into a run last week 🙃) so I’m happy to see potential fixes in this …
Oct 3, 2024: Prototypes, opaque return types, extensions, and protocol extensions don’t have equivalents in JavaScript (and my TypeScript isn’t good enough to …
Oct 2, 2024: copies of the same class share their underlying data, meaning that changing one changes them all, whereas structs always have their own unique data, …
Oct 1, 2024: Structs (part two) with a checkpoint… day 11 was pretty straightforward! #100DaysOfSwiftUI
Sep 30, 2024: Structs, mutating on methods, computed properties, property observers, custom initializers… it’s a lot but it was pretty easy to get through. I think …
Sep 29, 2024: Dropping the parenthesis when calling functions with a closure blows my mind: team.filter { $0.hasPrefix("T") } The equivalent in JS: team.filter($0 …
Sep 28, 2024: Really interesting that Swift has do, but it’s not what you think! do { try throwingFunction1() nonThrowingFunction1() } catch { print("Handle errors …
Sep 27, 2024: Awesome to me that this is valid: func record(age: Int) { } func record(year: Int) { } Naming internal and external parameters separately is …
Sep 26, 2024: Day 6 is all about for and while loops. I’ll be excited to learn the .map and .filter equivalents. I rarely use for loops in JS and have only used …
Sep 26, 2024: My comment about no === in Swift was incorrect, thanks Matt! I should know that a beginner course isn’t going to immediately explain referential …
Sep 25, 2024: No === in Swift (just ==) is nice! Enums being comparable is pretty cool too. And switch statements… is this the day I confess that I tend not to use …
Sep 24, 2024: This is really interesting: let name: String // … name = "Chasen" // Allowed once In JavaScript, the “equivalent” (using const) requires an initial …
Sep 23, 2024: Coming from JS, there are some small differences in array and dictionary syntax. This really stood out to me (as nice and explicit): let olympics = [ …
Sep 22, 2024: This has a bug… can you spot it? let temperature = 29 let converted = (temperature * 9 / 5) + 32 print("Celsius: \(temperature)") print("Fahrenheit: …
Sep 22, 2024: The Verge’s article on the iPhone 16 Pro made me realize that the “rich contrast” photographic style is where it’s at on my 15 Pro. …
Sep 22, 2024: It feels like some apps (like Passwords) get a lot of love and attention at Apple, while others languish. I wonder if the difference is in management, …
Sep 21, 2024: I’m going to compare Swift to JavaScript a lot as I get up to speed. Seems like Swift’s var == let (in JS) and let == const. I’m sure that won’t trip …
Sep 21, 2024: Is it cheating to do Day 1 on the same day as Day 0? 🙈 #100DaysOfSwiftUI
Sep 21, 2024: Cute that there’s a Day 0 to kick things off, with this as reading material: www.hackingwithswift.com/articles/… I’m not trying to get a job as an iOS …
Sep 21, 2024: I’m stoked to start my Swift journey by following the 100 Days of Swift UI course: www.hackingwithswift.com/100/swift… #100DaysOfSwiftUI