Recent articles

Jump to a random post

Responding to changes in a managed object context

Published on: November 23, 2020

Working with multiple managed object contexts will often involve responding to changes that were made in one context to update another context. You might not even want to update another context but reload your UI or perform some other kind of update. Maybe you want to do this when a specific context updates, or maybe […]

Read post

Building a concurrency-proof token refresh flow in Combine

Published on: November 9, 2020

Refreshing access tokens is a common task for many apps that use OAuth or other authentication mechanisms. No matter what your authentication mechanism is, your tokens will expire (eventually) and you’ll need to refresh them using a refresh token. Frameworks like RxSwift and Combine provide convenient ways to build pipelines that perform transformation after transformation […]

Read 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

Expand your learning with my books

Practical Swift Concurrency (the video course) header image

Learn everything you need to know about Swift Concurrency and how you can use it in your projects with Practical Swift Concurrency the video course. It contains:

  • About ten hours worth of videos and exercises
  • Sample projects that use the code shown in the videos.
  • FREE access to the Practical Swift Concurrency book
  • Free updates for future iOS and Swift versions.

The course is available on Teachable for just $89

Enroll now