Skip to content

Hi! 👋 I'm Joseph Duffy. I enjoy building software. This website contains information about my commercial software, open-source projects, and blog posts. Welcome to my corner of the internet!

★ My Favourites

Four Squares

Four Squares Icon

Four Squares is a game of memory, skill, and concentration available for iOS, iPadOS, and macOS. Watch what happens each turn and replay what you see.

Nevis

Nevis Icon

Find and install applications found in DMGs and ZIPs.

Configurable to watch directories, ask before performing actions, moving used files to trash, and is completely free to try.

HashableByKeyPath framework release 1.0.0


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.

Keep Reading

iOS Share Sheets the Proper Way - Locations


Sharing a location on iOS is something that not a lot of apps need, but after requiring it for my latest app, Scanula, I found that there isn't a good resource explaining how to do it properly. This is the first post in a series of planned posts going over a few of the tips, tricks, and common pitfalls I have found while working with iOS Share Sheets.

Keep Reading

Recent Entries

Four Squares version 2.0


Release Notes

Four Squares 2.0 is a huge update bringing new modes, customisations, features, and an overhauled UI.

New Modes

In Time Attack mode you start with only 30 seconds on the clock. Every pattern you get right will add 3 more seconds to the clock. How long can keep going?

Speedrun mode gives you 3 lives to try and reach of sequence of 10 in the fastest time.

New Customisations

Old and new themes are available, along with brand new sound packs.

Existing themes have been updated to better support both light and dark mode.

Brand New UI

The UI has been reworked to make customisation easier and support more platforms. Look out for a macOS app in the near future!

Completed Games

Each game you play is now saved and can be viewed in the app.

You can even choose to play the same sequence to keep working on your high score!

App Clip

Four Squares now includes an App Clip, so you can share a completed game with a friend and they can try to beat your score without having to install the app.

My WWDC 2021 Wishlist


With WWDC 2021 just around the corner I've been thinking about what I'd like to see there.

A lot of the popular discourse around this time of year is focussed on features of the operating systems but I want to look at what I'd like to see as a developer for Apple platforms.

I love to develop for Apple platforms but it can often be a painful process. May is like a christmas for Apple developers.

Keep Reading

Pull request Cache `SingleElementSections.numberOfElements` on composed-swift/Composed


Overall this is pretty minor but when dealing with a lot of SingleElementSections that are infrequently updated is does start to slow down.

I thought a faster approach would be to use generics on replace(element:) to only check for nil when the value is Optional, but generics don't allow for this kind of overload.

Also added some basic tests. The performance tests show a ~9% performance increase.