The Swift concurrency roadmap was first outlined in a post to the Swift forums in October 2020, with its stated goal being to “make concurrent programming in Swift convenient, efficient, and safe”. In this article, we take a look at why a new concurrency model is being introduced to Swift…


Beep Boop Beep Boop

In his book Succeeding with Agile, Mike Cohn defined the concept of a test pyramid. Mike presented a visual metaphor depicting a pyramid of layers, where each layer in the pyramid represented a different type of software test. …


I just felt…different. Something was off, but I couldn’t say what exactly. I even told my wife that day that I just felt…weird. I didn’t feel sick exactly, more like I was not myself. …


Designing an Onboarding Flow

Onboarding is the process of helping users to understand an app, and hopefully, encouraging them to continue to use it. Onboarding flows usually consist of one or more screens explaining how a user can use the app, and often involve some input from the user, e.g …


“Experience is simply the name we give our mistakes.”

I recently made a simple mistake.

An implementation which appeared correct, based on its initial usage, turned out to be incorrect when its usage changed.

But before we start, although this post describes the mistake I made and shows you how…


Github Actions is a service from Github which allows you to automate parts of your development workflow

This short post describes a Github Actions workflow to generate your Hugo-based website and publish it to Github Pages.

To learn more about Hugo and GitHub Pages, and how to use them to build your website, see my previous post.

What is Github Actions

Github Actions is a service from Github which allows you…


Xcode 10 includes a new build system, enabled by default, which improves build performance. This is a very welcome improvement.

R.swift is an open source library which makes it both easier and type-safe to use resources such as images, fonts, and segues. …


Xcode’s interface builder allows us to configure layouts which will automatically change shape and size based on a range of environment variables, such as:

  • Device screen size (e.g iPhone or iPad)
  • Device Orientation (portrait or landscape)
  • Adaptation (multi-tasking on iPad)

In this post, we will learn how to add NSLayoutConstraints


The Zendesk Support app supports a number of languages, meaning that the strings we display in the app change, depending on the device language set.

Recently we encountered buggy UI component positioning when the device language was changed from the default language (English). This is shown below with Dutch.

UI component (UISwitch) incorrectly positioned due to ambiguous constraints

Due…


Unit testing is invaluable in helping us to identify problems early in the development cycle, both in terms of the implementation and the specification. It also facilitates change, providing confidence that any future changes to the tested code won’t break its expected behaviour.

Key to unit testing is code coverage

Pete Smith

Engineer @zendesk

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store