William Boles

William has been an iOS developer since 2010, after all these years he just hopes that the String API will stop changing now.

  • 94 posts

Finding hope in custom alerts

May 26, 2020

UIAlertController alerts form the backbone of a lot of the interactions between our users and our apps. Alerts are often shown at those critical points in our apps where we are asking to confirm an action or allow access to a resource. While there have been some changes to alerts over the years, very little has changed about their appearance. This lack of customisation presents significant difficulties for app designers 😱. Having an UIAlertController alert pop up at the most critical points of our apps wit…

Alert queuing with windows

November 06, 2019

Being British, queuing is essential to me. I take every opportunity I can get to queue: posting a package ✅, paying for my groceries ✅, fleeing a burning building ✅, etc. So every time I need to present a sequence of alerts, I come up against the uncomfortable truth that UIAlertController doesn't care as much about queuing as I do 😔. This article is a look at how UIAlertController can be made a little more British through embracing a strong queuing etiquette. Let's get queuing 🇬🇧 A queue is a first-i…

Discovering what's out there

April 08, 2019

Many of us feel nervous when meeting a group of people for the first time. What are the dynamics of the group, what are the in-jokes, will I find common ground with someone - are just a few questions that can plague you. A lot of your hard work at suppressing your crippling social self-doubt can unravel with a shaky introduction or misplaced comment. You may even find yourself wondering: "Are they laughing with me because I'm funny or at me because of the overly pointy brogues that I'm wearing?"…

Progressive Core Data Migrations

February 04, 2019

There are very few certainties in app development, but one is that once your app is released it will change in unexpected ways. And no matter how flexible your architecture is, inevitably one of those changes will be a breaking change. Perhaps the most important breaking changes involve the user's data. If your app loses or corrupts user data you can expect at least some reputational damage and if the loss is severe enough you can end up doing your competitors marketing for them by turning your users into t…

Keeping dates local

December 11, 2018

In our day-to-day life, dates are pretty straight forward - we read them all the time, make plans around them, and share them with other people. Apart from the occasional missed birthday party all of these date-based tasks go surprisingly smoothly. Which is remarkable when you stop to think how complex our date systems are. It works this smoothly because everyone is making some pretty large, unspoken assumptions around the dates that they see - what calendar is used, what timezone is used, the ordering of d…

Sneaky date formatters exposing more than you think

October 29, 2018

Ask any iOS developer about DateFormatter and one of the first things you will hear is that creating a DateFormatter instance is an expensive operation. The second thing you will hear is that after creating one you need to cache it. In this post, I want to look at how expensive it is to create DateFormatter instances and how we can cache them effectively. To determine just how expensive they are we will need to conduct a small experiment 🔬. If you'd prefer not to have to manually build up the below exam…