Hi! šŸ‘‹ I'm Joseph Duffy. I enjoy making iOS apps and websites. This website contains information about my iOS apps, open-source projects, and blog posts. Welcome to my corner of the internet!

ā˜… My Favourites

Partial framework release 1.0.0

Published 10th July, 2019

Today marks 1 year since I released a blog post demonstrating an implementation of Partial in Swift, and it also marks the release of the 1.0.0 version of a Swift package for Partial.

The package is available on GitHub and supports SwiftPM, Carthage, and CocoaPods.

This blog post will go over some of the changes that have been made since the original blog post, my rationale when making certain decisions, and how I have thought about maintenance. If you want to try out Partial and see how it can be used head over to the GitHub page.

Read More

Gathered

Gathered Icon

Gathered is an app that facilitates the viewing, recording, and sharing of over 25 sources of data available on iOS and iPadOS devices, from the GPS and accelerometer to the advertising identifier and the WiFi. Gathered is the perfect app to enable the recording of all the data required to calulcate position, acceleration, and ambient conditions of the device.

Download Gathered on the App Store

Scanula

Scanula Icon

Scanula is a clean, modern, and fast QR, data matrix, and barcode scanner.

Download Scanula on the App Store

Recent Entries

Capturing More Than `self`

Published 14th May, 2020

A common pattern when using closures in Swift is to add [weak self] in the captures list to hold a weak reference to self and avoid a retain cycle. This is then often followed by the following:

guard let self = self else { return }

But I often forget that capture lists can capture other variables in the current scope, so I thought I'd highlight some other use cases.

Read More

HashableByKeyPath framework release 1.0.0

Published 30th April, 2020

Today I have released the 1.0.0 version of a Swift package that aids with adding Equatable and Hashable conformance by using KeyPaths.

The package is available on GitHub.

I created the Swift Playground that sparked this concept in December 2018, so this concept has been rattling around in my brain for a couple of years. The API has changed a lot since the original concept, but the core has stayed the same: a protocol that requires a single function to be implemented that uses KeyPaths to synthesise Equatable and/or Hashable conformance.

Read More