A while back, I wrote about the frustrating state of navigation bars on iOS and how that frustration grew once we started reviewing and rebuilding our own navigation bars at work. 
 We’ve since managed to achieve what we set out to do and recently shipped the result to our users. Along the way, we took the opportunity to finally tackle a problem we’d been struggling with for years:…
It’s been 18 years since iOS launched and 17 years since the iOS SDK was released—yet the navigation bar is still frustratingly uncustomizable. Sure, you can tweak text attributes, background images, and colors, but anything beyond that? Forget it. Even Apple’s own Invites app highlights how limited it is. 
 Take back buttons, for example. UIKit technically allows you to set an image or a…
Every year, with each major macOS update, we’re greeted by an annoying surprise—Xcode refuses to launch, insisting that we upgrade to a newer version. But sometimes, upgrading isn’t an option. 
 Maybe your team’s app isn’t ready yet due to build system issues, breaking API changes, or other compatibility problems. In my case, it usually takes a couple of months before our project is fully…
Our design system 1 provides colors for three different contexts: background, foreground, and borders. Each color can exist in four different states: normal, hovered, disabled, and pressed. Historically, we modeled this using a UIColor subclass that exposed properties for different states. When the instance was used as is, it implicitly represented the normal variant. 
 While this approach was…
I’ve always been a console gamer, avoiding gaming PCs because I didn’t want to deal with tweaking graphical settings or, more importantly, Windows. However, when I got into sim racing during the COVID lockdowns, I had no choice but to build a proper gaming PC. The drivers for my sim racing hardware were only supported on PC, and the selection of racing games was significantly better.…
I don’t know about you, but it happens quite often to me that I want to use a UIImage instance and assign it to another piece of UI that requires it to be non-optional. Unfortunately, most UIImage initializers produce optionals. While this does make sense, as the asset might be missing or there has been a typo in its name, it can be quite annoying when we’re sure the asset exists and…
Swift 6 has a bunch of changes that will change the way we will use Swift in the future, with some of them being breaking changes. Wouldn’t it be handy if we could try out some of these upcoming features ahead of their release, so we can evaluate the impact they will have on our codebase and can start amending our code already? Good news: there is! 
 With SE-0362 having been implemented…
After almost three years without any post on this blog, I finally managed to post something and not only did I post a new article, I also transitioned this site from being built using John Sundell’s Swift-based Publish static site generator to the Go-based Hugo generator. 🎉 
 While I like Hugo and its maturity, I’m still torn as I enjoyed the way Publish used Swift for building…
When I recently reviewed a colleagues’ Android code, I stumbled upon a function call named with that allows for omitting a variable’s name within its scope (for example for accessing multiple members). As pointed out by that colleague, Kotlin actually has a bunch of nifty APIs that are being described as Scope Functions . 
 
 The Kotlin standard library contains several functions whose…
What do all higher order functions in Swift have in common? They abstract boilerplate code away by hiding it in their highly generic implementations, focussing on what to achieve rather than on how to get there because that’s what we usually care about. By abstracting boilerplate away, we can eliminate plenty of failures we could potentially introduce by writing the same thing over and over…

 A “Hello, World!” program generally is a computer program that outputs or displays the message “Hello, World!”. Because it is very simple in most programming languages, it is often used to illustrate the basic syntax of a programming language and is often the first program that those learning to code write. - Wikipedia 
 
 As the title of this post suggests,…