Recent articles

Jump to a random post

Building a simple remote configuration loader for your apps

Published on: October 26, 2020

Remote configuration is a common practice in almost every app I have worked on. Sometimes these configurations can be large and the implications of a configuration change can be far-reaching while other times a configuration is used to change the number of items shown in a list, or to enable or disable certain features. You […]

Read post

Understanding the differences between your Core Data model and managed objects

Published on: October 5, 2020

You may have noticed that when Xcode generates your NSManagedObject classes based on your Core Data model file, most of your managed object’s properties are optional. Even if you’ve made them required in the model editor, Xcode will generate a managed object where most properties are optional. In this article we’ll explore this phenomenon, and […]

Read post

Understanding how DispatchQueue.sync can cause deadlocks

Updated on: June 15, 2021

As a developer, you’ll come across the term "deadlock" sooner or later. When you do, it’s usually pretty clear that a deadlock is bad (the name alone implies this) and if you’ve experienced one in your code, you’ll know that your application crashes with EXC_BAD_INSTRUCTION (code=EXC_I386_INVOP, subcode=0x0) when a deadlock occurs. A few weeks ago, […]

Read post

Configuring error types when using flatMap in Combine

Published on: September 14, 2020

When you’re using Combine for an app that has iOS 13 as its minimum deployment target, you have likely run into problems when you tried to apply a flatMap to certain publishers in Xcode 12. To be specific, you have probably seen the following error message: flatMap(maxPublishers:_:) is only available in iOS 14.0 or newer. […]

Read post

3 tips to work through a technical coding interview

Published on: September 7, 2020

If you’re a programmer looking for a job it’s very likely that you’ll have to do a coding interview at some point. Every company conducts these interviews differently. Some may have you work through several heavy computer science problems, others may present you with a task that’s related to the job you’re interviewing for and […]

Read post

Dispatching async or sync? The differences explained

Updated on: June 15, 2021

When writing iOS apps, we regularly run into code that is asynchronous. Sometimes you know you’re writing something that will run asynchronously and other times you’re passing a completion handler to code that may or may not run asynchronously on a different dispatch queue. If you’re familiar with using DispatchQueue.main, you have probably written code […]

Read post

Understanding Swift’s OptionSet

Published on: August 18, 2020

Every once in a while I look at a feature in Swift and I fall down a rabbit hole to explore it so I can eventually write about it. The OptionSet protocol is one of these Swift features. If you’ve ever written an animation and passed it a list of options like this, you have […]

Read post

Expand your learning with my books

Practical Combine header image

Learn everything you need to know about Combine and how you can use it in your projects with Practical Combine. It contains:

  • Thirteen chapters worth of content.
  • Playgrounds and sample projects that use the code shown in the chapters.
  • Free updates for future iOS versions.

The book is available as a digital download for just $39.99!

Learn more