Joseph Roque

👋 I’m a mobile developer living in Vancouver. Sometimes I work on personal projects, sometimes I go for runs, and sometimes I blog about things.

Development Log, September 2024

Joseph Roque

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.

Screenshot of an Android device. The app Approach is open, with two tabs, Bowlers and Teams. Teams is selected. There is a list of teams, Worsties and Besties.

Screenshot of an Android device. The app Approach is open, with two tabs, Bowlers and Teams. Teams is selected. There is a list of teams, Worsties and Besties.

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.

Screenshot of an Android device. The app Approach is open, showing a list of names of bowlers and their scores. Joseph has a score of zero. Sarah also has a score of zero.

Screenshot of an Android device. The app Approach is open, showing a list of names of bowlers and their scores. Joseph has a score of zero. Sarah also has a score of zero.

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:

The text "Happy Halloween" and 3 app icons. The first depicts a piece of candy corn in front of a yellow chart. The second is a bowling pin with devil horns and a tail in front of a red chart. The third is a black witch's hat in front of a purple chart.

The text "Happy Halloween" and 3 app icons. The first depicts a piece of candy corn in front of a yellow chart. The second is a bowling pin with devil horns and a tail in front of a red chart. The third is a black witch's hat in front of a purple chart.

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.