Donny Wals 👾
banner
donnywals.bsky.social
Donny Wals 👾
@donnywals.bsky.social
iOS Engineer, blogger and author at https://donnywals.com. Loves learning and sharing knowledge. -- #swift #ios #swiftlang #iosdev #solopreneur (he/him)
What are you thoughts on iterating Observable properties with the Observations object in Swift? I feel like it's easier to grok than withObservationTracking but the syntax is a bit verbose... how do you think Obs...
https://www.donnywals.com/using-observations-to-observe-observable-model-properties/
November 10, 2025 at 2:51 PM
A good morning and a happy Monday to you all! Hope you've had a nice weekend.

Do you have any plans for this week? Learning something new? Working on something cool? Anything at all?

Tell me all about it 😎
November 10, 2025 at 9:04 AM
My Do iOS workshop will use the most elaborate setup I have ever used ...

We need to talk to a server during the workshop and instead of relying on a network connection at the venue, I'm going to bring the server, and a network with me. 🤷‍♂️
November 6, 2025 at 2:54 PM
Did you know that the ability to iterate arrays, sets, and dictionaries in Swift are a result of Swift's protocol oriented design?

Learn more in this week's post: https://www.donnywals.com/a-deep-dive-into-collections-sequences-and-iterators-in-swift/
November 6, 2025 at 11:12 AM
Do you work better with a rigid plan in place? Or maybe you prefer a loose todo list? Or do you just wing it?
October 13, 2025 at 11:34 AM
A very good Monday to you all! Hope you've had a good weekend.

What are your plans for this week? Are you working on anything cool? Learning something new? Anything at all?

Tell me all about it 😎
October 13, 2025 at 6:52 AM
Dive into custom JSON parsing in Swift! Learn how to create personalized encoding and decoding strategies for your models and manage complex data structures with ease. Check it out: https://www.donnywals.com/json-parsing-in-swift-with-custom-encoding-and-decoding-logic/
JSON parsing in Swift with custom encoding and decoding logic – Donny Wals
The default behavior for is often good enough, especially when you combine this with custom CodingKeys, it’s possible to encode and decode a wide variety of JSON data without any extra work.
www.donnywals.com
October 9, 2025 at 11:47 AM
Dive into Swift 6.2's concurrency updates! Learn about nonisolated async functions, @Concurrent, and Xcode 26's new concurrency defaults. Boost your iOS skills with practical insights. Watch here: https://www.youtube.com/watch?v=7QvCFBNz45A
What's new for concurrency in Swift 6.2
Swift 6.2 is now officially in beta and so it's time for me to talk about what's new in concurrency for Swift 6.2. This video is a companion for my blog post on the same topic: https://www.donnywals.com/exploring-concurrency-changes-in-swift-6-2?utm_source=youtube In this video you will learn about nonislated(nonsending), and how it will make nonisolated async functions run on the actor that they were called from by default. You'll learn why this matters, and how you can use @Concurrent to offload work to a background thread. You'll also see how you can enable this feature from within Xcode's build settings directly. After that, we'll take a look at the new concurrency default in Xcode 26 that will make all your code run on the main actor by default. You'll learn how you can control default actor isolation by either setting it to MainActor or nonisolated, and you'll learn how this simplifies the way your code works. We'll also talk about how you can opt-out of this feature on a type- and function level. Strengthen your iOS development skills with my books: https://gumroad.com/l/practical-combine?utm_source=youtube https://gumroad.com/l/practical-core-data?utm_source=youtube https://gumroad.com/l/practical-swift-concurrency?utm_source=youtube https://gumroad.com/l/practical-bundle?utm_source=youtube Timestamps 00:00 - intro 00:56 - function types in Swift 6.1 04:21 - calling functions from the main actor 07:53 - calling functions from the global executor 09:34 - introducing nonisolated(nonsending) 10:10 - demonstrating actor inheritance 11:12 - introducing @concurrent 15:46 - introducing default actor isolation 21:11 - summary
www.youtube.com
October 8, 2025 at 12:52 PM
A good morning and happy Monday, folks! Hope you're all having a good start of your week. Do you have any plans? Are you working on something cool? Learning something new? Anything at all, tell me all about it 😎
October 6, 2025 at 9:52 AM
Learn how escaping closures allow asynchronous operations and why they're essential for callback-based APIs. Dive into the nuances of variable capture in Swift to enhance your coding skills. More here: https://www.donnywals.com/what-is-escaping-in-swift/
What is @escaping in Swift? – Donny Wals
If you’ve ever written or used a function that accepts a closure as one of its arguments, it’s likely that you’ve encountered the keyword. When a closure is marked as escaping in Swift…
www.donnywals.com
September 26, 2025 at 11:58 AM
Did you know that Approachable Concurrency in Xcode 26 enables a set of Swift features that make getting started with Concurrency much easier than it was before? Read about it here: https://www.donnywals.com/what-is-approachable-concurrency-in-xcode-26/
September 25, 2025 at 3:20 PM
Do you know what Structured Concurrency is in Swift? If you're not exactly sure how Structured Concurrency fits in Swift's Concurrency model, catch up here: https://www.donnywals.com/the-basics-of-structured-concurrency-in-swift-explained/
September 25, 2025 at 1:01 PM
Explore the essentials of migrating to Swift 6, find out what to expect and how you should prepare your team. Watch here: https://www.youtube.com/watch?v=YNBkp8L_j5M
How to plan a migration to Swift 6?
Learn how you can start migrating over to Swift 6 in a responsible manner. Async/Await is super nice in Swift but at the same time it's essential that you plan a migration to Swift 6 carefully. With a completely new concurrency paradigm you'll run into tons of errors that are not familiar. It's rather easy to go overboard with the amount of concurrency that you're adding to your app, and you'll want to make sure that your team is up to speed when it comes to everything that's in Swift Concurrency. This video is a companion for my blog post on the same topic: https://www.donnywals.com/how-to-plan-a-migration-to-swift-6?utm_source=youtube Learn more about @preconcurrency and how it helps you migrate: https://www.youtube.com/watch?v=0Zf5zgtK-RU Improve your concurrency skills with my book, workshops, and course: https://practicalswiftconcurrency.com?utm_source=youtube https://donnyplus.com/p/practical-swift-concurrency-the-video-course?utm_source=youtube https://www.donnywals.com/workshops?utm_source=youtube Timestamps: 00:00 - Intro 01:03 - Taking inventory of your codebase 03:01 - Modularizing your codebase 04:25 - Strict concurrency checking 06:31 - Training your team 08:33 - Planning your approach 10:45 - Pitfalls and caveats 12:38 - Summary
www.youtube.com
September 25, 2025 at 11:15 AM
If you've ever felt like you weren't knowledgeable enough to participate in a conversation, so have I. And to be honest, I still feel that way regularly.

I reflect on this and more in this week's newsletter: https://www.donnywals.com/newsletters/4cHkurGuhPUE45uIhV4uVw/
September 25, 2025 at 10:02 AM
Learn to find the difference in hours between two dates in Swift using Calendar & DateComponents. Unlock practical insights to handle time calculations effortlessly. Check it out: https://www.donnywals.com/calculating-the-difference-in-hours-between-two-dates-in-swift/
Calculating the difference in hours between two dates in Swift
Learn how to use date components to find the difference between two dates in Swift.
www.donnywals.com
September 24, 2025 at 12:58 PM
Last week's blog post was a deep dive into unwrapping [weak self] in your Swift Concurrency Tasks and how common it is for folks to not introduce the behavior they were looking for: https://www.donnywals.com/how-to-use-weak-self-in-swift-concurrency-tasks/
September 24, 2025 at 8:15 AM
My blog post on Swift's actors hadn't seen much updates recently so I figured it could use some modernization. Check it out here: https://www.donnywals.com/actors-in-swift-explained-with-examples/
September 23, 2025 at 1:34 PM
Enhance your Swift Testing skills! Discover using the #expect macro to verify code behavior, evaluate conditions, and handle errors seamlessly. Watch the video and dive deeper here: https://www.youtube.com/watch?v=tlw28ah_85I
Asserting state with #expect in Swift Testing
Learn how you can ensure that your code is working as expected with the #expect macro in Swift Testing. You'll learn how to evaluate boolean conditions and ensure that your code throws the errors you expect, or that it doesn't throw errors at all. This video is a companion for my blog post on the same topic: https://www.donnywals.com/asserting-state-with-expect-in-swift-testing?utm_source=youtube
www.youtube.com
September 23, 2025 at 11:14 AM
Last week's video is a deep dive into some of the mistakes I frequently see when folks unwrap a [weak self] in their Swift Concurrency tasks...

See if you make the same mistake: https://www.youtube.com/watch?v=xpAj1xFyvGM
September 23, 2025 at 6:02 AM
Discover how to effectively integrate a backend-driven paywall using RevenueCat. Learn to manage products and entitlements seamlessly. Dive deeper here: https://www.donnywals.com/building-a-backend-driven-paywall-with-revenuecat/
Building a backend-driven paywall with RevenueCat – Donny Wals
Learn how you can use offer metadata to build a backend driven paywall with RevenueCat
www.donnywals.com
September 22, 2025 at 1:30 PM
In last week's newsletter I wrote about how Swift 6.2 has me thinking about how frequently the code we write and the patterns we follow are the result of our own "default" behaviors rather than being fully thought out...

Read here: https://www.donnywals.com/newsletters/yVt9Cu8UsoCm892UaNZXaGUA/
September 22, 2025 at 11:31 AM
It's been two weeks since I've launched the Swift 6.2 update for Practical Swift Concurrency and folks seem to be enjoying the update a lot.

Huge thank you for everybody that's downloaded the book ❤️

https://gumroad.com/l/practical-swift-concurrency
September 22, 2025 at 8:15 AM
A good morning and a happy Monday, folks! Hope you've all had a nice weekend.

Do you have any plans for the week? Maybe learning something new, working on something cool, shipping something you've been working on?

Tell me all about it! 😎
September 22, 2025 at 7:02 AM