Recent articles

Jump to a random post

Efficiently loading images in table views and collection views

Updated on: April 29, 2024

When your app shows images from the network in a table view or collection view, you need to load the images asynchronously to make sure your list scrolls smoothly. More importantly, you’ll need to somehow connect the image that you’re loading to the correct cell in your list (instead of table view or collection view, […]

Read post

Appropriately using DispatchQueue.main

Published on: December 3, 2019

Lots of iOS developers eventually run into code that calls upon DispatchQueue.main. It’s often clear that this is done to update the UI, but I’ve seen more than a handful of cases where developers use DispatchQueue.main as an attempt to get their code to work if the UI doesn’t update as they expect, or if […]

Read post

Changes to location access in iOS 13

Published on: December 2, 2019

If you’re working on an app that requires access to a user’s location, even when your user has sent your app to the background, you might have noticed that when you ask the user for the appropriate permission, iOS 13 shows a different permissions dialog than you might expect. In iOS 12 and below, when […]

Read post

Adding haptic feedback to your app with CoreHaptics

Updated on: December 23, 2019

One of iOS 13’s more subtle, yet amazingly fun and powerful frameworks is CoreHaptics. With this framework, you can add tactile feedback to your app. When implemented correctly, this kind of feedback will delight and amaze your users. It will make your app feel alive like it’s physically responsive to the touch input from your […]

Read post

Storage options on iOS compared

Updated on: July 7, 2025

iOS comes with several storage options and it’s not trivial to determine what you’ll store where. In this post, we’ll explore some of the most popular storage options on iOS and we’ll explore their strengths and weaknesses to help you make an informed decision.

Read post

Updating your apps with silent push notifications

Updated on: April 29, 2024

A lot of apps rely on data from a remote source to display their content. Sometimes the content on the remote source changes regularly, sometimes it changes only sporadically. In all cases, your users will want to see the most up to date version of the information that you have to offer them, and in […]

Read post

Real time data exchange using web sockets in iOS 13

Updated on: February 10, 2020

Apps send and receive data all the time. Some apps mostly read data from the network, others are more focussed on sending data to servers. Depending on your needs, you might need to be able to send data to a server as quickly as possible, or maybe you need to receive new data as soon […]

Read post

Announcing: Advent of Swift

Updated on: December 5, 2019

December has always been a month of sharing for me. Sharing food and experiences with family, celebrating the end of what has (hopefully) been a wonderful year, reflecting and setting goals for the new year. And this year, I have decided to share something really special with the iOS community. In December I will publish […]

Read post

Configuring projects with xcconfig

Updated on: January 30, 2026

You might want to install two versions of your app side by side, like a development build and a release build. Or you might want each build to talk to a different backend so you don’t accidentally test against production data. xcconfig files make those kinds of tweaks predictable and easy to manage. In practice […]

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