Development Log, September 2024
2024/09/30
Recently I saw someone else’s dev log and I thought starting my own could be a good learning and reflection opportunity.
Hopefully this will be a monthly thing. Lots of development happened this month, so there’s a few things to write about. Expect shorter entries in the future.
Approach
Approach is the app I built for iOS and Android. I spent a lot of this month focused on the Android version, rebuilding a feature that had been cut as part of my rewrite to Jetpack Compose over the past year.
Teams
Originally built in, I think, 2016, as a way for people to record scores for more than 1 person at a time, I opted to cut Teams from the MVP for the 4.0.0 release of the app this past August. Instead, I made it possible to pick multiple bowlers at once from the home screen and start recording scores for them. But the feature was half-baked – users complained they weren’t sure how to see scores for more than one bowler at a time, they made mistakes recording and it was unclear how to go back to previous bowlers, and mostly they just didn’t know the feature existed. Discoverability is hard.
Throughout August and September I completely rewrote the Teams functionality, returning it to its former glory as a top-level Tab in the Overview.
Users can now create teams by selecting any number of bowlers, and record a new league series or tournament for all members of the team simultaneously. Teams also now have their own stats, for all the series the user’s recorded under the series.
Swift 6
For the iOS version of Approach, I made 2 overall improvements. First, I migrated the app fully to Swift 6. Mostly this was made incredibly easy with the work done by the Pointfreeco team and their migration of The Composable Architecture, which the iOS version uses.
Halloween Icons
Finally, as a treat for the iOS users (and a trick for the Android users, who bought phones that don’t support custom icons), I designed 3 new app icons:
Narrow
This season, instead of 5-Pin Bowling, as I usually do, I’ve opted to join a Lawn Bowling league. As a result and mostly as a joke, I’ve started a small Lawn Bowling app I’m calling Narrow. It’ll act partially as an opportunity to learn a bit of SwiftData in an environment where I can play around with it, and it will mostly simply record your ends and keep a record of your games.
So far it consists of just a short list of leagues, and you can create a date entry for a game, and add bowlers’ names to your game. Mostly I’ve been trying to workout how to get SwiftData to best interact with the Composable Architecture, as well as resisting just scrapping SwiftData altogether and returning to GRDB.