William Boles
  • William Boles
  • Home
  • About
  • Favourites
  • Mind Maps

Keep downloading with a background session

#networking #concurrency #thecatapi

Users always want more. With a background URLSession, we can give them more by extending downloads and uploads beyond the app's lifespan. Here, we look at building a solution to take advantage of a background session to download adorable cat photos 😸.

29 Apr 2025 • 20 min read

Ambiguous Decoding

#networking #Codable

Codable is a potent tool for simplifying handling API responses. However, sometimes API responses aren't simple. Here, we look at how to handle decoding a JSON response where the returned types keep changing.

23 Jan 2023 • 6 min read

Finding hope in custom alerts

#ui #alerts

Alerts form the backbone of many user interactions. While there have been changes to alerts over the years, very little has changed about their appearance or our ability to customise that appearance leading to many tear-filled designer outbursts 😱. Here, we look at how to ease that pain.

26 May 2020 • 15 min read

Alert queuing with windows

#ui #alerts

Being British, queuing is essential to me. I take every opportunity I can get to queue. However, UIAlertController doesn't care about queuing 😞. Here, we look at how to introduce UIAlertController to the joys of queuing and ensure that each alert gets its chance to shine.

06 Nov 2019 • 9 min read

Discovering what's out there

#networking

Many of us feel nervous when meeting a group of people for the first time. Your app is the same. Here, we look at how SSDP can offer a convenient way for your app to get to know its local network and overcome those nerves.

08 Apr 2019 • 27 min read

Progressive Core Data Migrations

#core data #migration #persistence

There are very few certainties in app development, but one is that once your app is released, it will change in unexpected ways. Meeting those changes can be painful. Here, we look at how to ease the pain of Core Data migrations.

04 Feb 2019 • 26 min read

Keeping dates local

#date & time #dateformatter

In our day-to-day life, dates are simple and straightforward - we read them, make plans around them, and share them. Apart from the occasional missed birthday, things go smoothly. But we've been deceived - dates are anything but simple. Here, we look at how to keep our dates local and truthful.

11 Dec 2018 • 9 min read

Sneaky date formatters exposing more than you think

#date & time #dateformatter

DateFormatters are expensive to build, so we cache them. DateFormatters are useful, so we share that cache. DateFormatters are mutable, so we end up with hard-to-reproduce bugs. Here, we look at how to cache and share DateFormatters without the bugs that come from them being shared mutable state.

29 Oct 2018 • 12 min read

Building a networking layer with operations

#networking #stackoverflow-api #concurrency

Operations have a reputation for being chunky, especially compared to GCD. However, once you get to know operations, you realise that they are the OOP approach to concurrency in iOS. Here, we look at how to use operations to build a networking layer by encapsulating multiple steps into one unit.

03 Oct 2018 • 11 min read

Keeping downloads going with background transfers

#networking #concurrency #thecatapi

In iOS, we can use background-transfers to extend the life of our downloads and uploads beyond the app's lifespan, offering our users a better experience by using a background URLSession. Here, we look at how to build that better experience.

15 Jul 2018 • 19 min read

Improving my Zen with GitHub

#git

A lot of us enjoy programming for fun. A lot ends up on GitHub. A lot of companies use GitHub for non-fun programming. A lot of us use the same computer for both types of programming. Here, we look at how to have two different GitHub accounts on the same computer to avoid accidentally seeing work.

23 Apr 2018 • 4 min read

Hosting ViewControllers in Cells

#ui

In the fairytale 🧚 version of UICollectionView, a cell has a simple view inside it. In the nightmarish reality, a cell sometimes needs to host a UIViewController. Here, we look at how to stuff a UIViewController instance inside a UICollectionViewCell, avoiding various gotchas.

11 Apr 2018 • 5 min read

Can Unit Testing and Core Data become BFFs?

#core data #testing #persistence

Core Data and Unit Testing haven't always been the best of friends ⚔️. Core Data is all about persisting. Unit testing is all about forgetting. Here, we look at how they can work together with the help of UIKit to ensure that we gain the confidence we need to ship an app.

02 Apr 2018 • 16 min read

Don't throw anything away with pausable downloads

#networking #imgur-api

Every time a user has to wait for a network request to complete before they can get on with their task, we risk losing them. With pausable downloads, we can ensure that even a cancelled download isn't wasted. Here, we look at how to resume a cancelled download to minimise wait times.

05 Mar 2018 • 15 min read
Page 1 of 7

No results for your search, please try with something else.

William Boles © 2025

GitHub | Mastodon | Bluesky | LinkedIn | RSS

JavaScript license information