Home | Blog | RSS

Kwicket

2022-07-15

I’m delighted to announce the launch of my new Cricket scoring app, Kwicket. Back in the summer of 2021 I started scoring and umpiring cricket matches as part of my job as a teacher, and as someone who was new to the sport and still learning the rules1 I found the existing scoring apps confusing, overly complex, and not user friendly.

I resolved to make an app for people like me, and that’s what Kwicket is. Starting a new match is quick, and scoring each ball is easy. The app helps you learn the game as you go, and it provides helpful data for post-match analysis.

I’m also proud that Kwicket 1.0 was built exclusively in Swift Playgrounds on an 12.9” M1 iPad Pro. My iPad Pro is my primary computer, and my favourite computer I’ve ever owned. Being able to build and publish an app to the App Store from there feels like a big step forward for iPadOS, and I hope that Apple continues to advance what can be done there. I’d love to support iCloud syncing the app one day, and that’s one feature which is just impossible to build from the iPad at the moment. So if there is a version 2.0, it’s more likely to be built in Xcode.

The app uses CoreData to store all the user data, and with the help of a few blog posts, I managed to hand-code that part in Swift Playgrounds. Xcode on the Mac has a much more user friendly way of building these relational databases, so I’d love to see something like that coming to Swift Playgrounds one day. Writing SwiftUI against CoreData also makes you realise what uncomfortable bedfellows they are. When you’ve never even written a line of Objective-C in your life, but your Swift code ends up containing lots of @objc and @nonobjc, it feels like a piece of the puzzle is missing. I had hoped that this year’s WWDC might bring something like the “SwiftUI of CoreData”, but sadly not. Apple needs to tell a better story about persistence in SwiftUI apps, so I’m holding out hope for a mythical SwiftData in a WWDC not too far from now.

I have a few ideas for improvements in the next few versions. I’d like to explore using Swift Charts in iOS 16 to do a bit more data visualisation, and more data analysis generally. Generating match reports would be a great feature, and that might end up being a good candidate for an in-app purchase. The app’s layout isn’t very well optimised for iPad yet, so I’d like to move to sidebar navigation there and generally make better use of the space.

Making Kwicket on the iPad Pro has been a great learning experience, and I hope I can build on those skills to create my next SwiftUI app. I’ll be moving to Xcode for that, since the scope of what I want to build is increasing to include things like widgets and Apple Watch complications.

You can download Kwicket for free on the App Store.

  1. which I quickly learned must be called laws rather than rules.