Last night, I had a breakthrough. The weeks of effort exploring different options finally paid off – it felt fantastic. I was tired, but accomplished. Below, I will share three stories about the unknown and how to push through even if you're unsure what to do. Programming can be hard. It can be fun. And it can be hard again. I have been busy traveling and had family visiting. And I have been wrestling with build issues around legacy code. Sometimes when you learn something new, you struggle. You're on the tip of what you understand, and it can be frustrating when things don't work like you expect. When this happens, sometimes you need to believe that you can do it or that something is possible. The struggle makes it difficult when you're unsure how to do it. Recently, I overcame a challenging bit of code. It reminds me of a few other times in my programming career when I didn't know if my code would work, but I pushed on. Cross-Platform C++ Code About 9 years ago, I ported a Windows C/C# threaded server to cross-platform C/C++ code that ran on Windows and macOS. There were weeks of compiler errors I had to fix for macOS. I fixed one error after the next until one day, when everything compiled. And that was just the tip of the iceberg. To make it reliable, I had to fix concurrency issues using the Xcode Thread Sanitizer to protect shared mutable state. Huge functions with nested if/else conditions did not make it easy to see all the potential code paths. That code was error-prone and could deadlock the entire server. To mitigate stability concerns, I built a test app in Swift that could stress test the C++ server with 100s of requests per minute to verify it worked (while I slept). And that is one of the reasons I love Xcode. It has tools for debugging challenging problems, while Visual Studio did not. Genetic Artwork In 2009, I started working on a genetic algorithm to create artwork. It started on the Mac and had mildly promising results, but was only monochrome. When the iPad was announced in 2010 by Steve Jobs, I decided to port it to iPhone and iPad, and the results were ok . . . . . . But after using the app more and more, exciting patterns emerged. It's that push into the unknown that you sometimes need to do, day in and day out. Making incremental progress until all of a sudden, you have something working. It can be non-stop problem-solving until you figure it out. That is the challenge of software and cutting-edge technology. SwiftUI Challenges Some things are easier, like SwiftUI, to see immediate visual results. It feels fun and exciting. But sometimes you run into edge cases like I did with GoPro's Quik app. In 2022, I wasn't sure if SwiftUI was stable enough – and it wasn't entirely — that came later with iOS 16 and more SwiftUI bug fixes. You don't know until you try, and you won't have confidence that it will work out exactly how you expect. But if you never try, you'll never enjoy the progress and satisfaction of making something new from an idea, and learning along the way. SwiftUI Challenges I love working on UI and I am planning to share new SwiftUI tutorials to help push your UI design skills later this month. As you practice more SwiftUI design challenges, you will build a SwiftUI toolkit that you can use in different scenarios. It feels weird to practice something so small, but in the few coding sessions I have done, I keep learning new things. Or I'm confronted with a design problem that I have not solved before. Here's a sneak peek at an upcoming tutorial. How would you build this widget using SwiftUI? How should it work? Is the text dynamic? What are you working on? I'm working on legacy C, C++, Objective-C, Swift, and SwiftUI interoperability and migrating from Cocoapods to SPM. There are many moving parts, but I solved the last big obstacle . . . that I can see right now . . . Hit reply and let me know what you're making in SwiftUI or iOS. Talk soon, Paul Solt P.S. Need a challenge? Try my last SwiftUI Challenge. How would you implement the design? |
Join 5,712+ developers learning iPhone app development and App Store publishing. Every week, I share iOS tips on how to create polished, intuitive apps—backed by insights from shipping seven apps and working at GoPro, Apple, and Microsoft.
Hey Reader, I hope you’re having a fantastic morning. I’m out on my deck enjoying the sunrise and a cup of coffee. This month has been busy because we’re expecting a baby alien in the next week or two. I haven’t had time to write to you, but I wanted to give you an update on what I’ve been working on. Before the baby arrives, I decided to refocus on shipping my app, Brew Coffee. I have been working on some experimental UI changes and alternative recipes. Here's an experimental view of James...
Hey Reader, In 45 minutes I’ll show you how to give your Swift Charts that Apple-level polish—no design degree required. I start with raw spending data and end with a stunning Budget Widget—Perfect for a quick glance. You’ll walk away knowing how to: Style bar charts and labels to match any design Hide grid lines and format weekdays for clarity Wire up a BudgetViewModel that feeds live data 👉Watch: Build a Budget Widget with Swift Charts ⚡ (45-min) Need hands-on practice? Clone the starter...
Hey Reader, How do you translate your app into multiple languages? At GoPro, I partnered with the localization team to establish best practices—and with the new String Catalog, you can extract all your Text() strings at build time so nothing slips through the cracks. 🎥Watch SwiftUI iOS Localization Tutorial: Master String Catalogs in Xcode 16 You’ll learn: Best practices for localization How to test translations in both iOS apps and widgets How to Preview different languages in SwiftUI How to...