Getting back into iOS development

I make it a point to go for at least 1 long walk every day. Twice a week or so I’ll go for a run and, sporadically, tack on a short strength training circuit right after. I’m also pretty good about taking standing breaks if I’ve been sitting for too long. It occurred to me, though, that I still have a lot of energy to burn in the middle of the day and while I’d love to keep walking around town, my professional concerns and interests keep me in front of the computer for a lot of the day

So, I recently had the idea to fold in mini workouts in place of my standing breaks. I have an adjustable set of dumbbells too which expands the range of exercises I could do during my breaks. I’m sure any movement that breaks up sitting periods is good, but I wanted to add a little order to this idea of mine so that a little exertion was an easy choice to make because I’d planned ahead for it. To that end, I created a spreadsheet and just threw 4 or 5 exercises I could think of and gave myself a little target. Here’s an entry for May 17th. I gave myself a rep goal and took as many sets as I needed to reach it. If I did, I highlighted the column green.

exercise schedule
May 17th, 2025. Exercise Log.

The next day, reflecting on how that went, I felt comfortable adding some weights to the squats and calf raises and also switching up which body parts to focus on. As you can see, I didn’t finish what I set out to do, but I still considered it a success because I did something.

exercise schedule
May 18th, 2025. Exercise Log.

Remember, the initial goal here was to simply move a bit more while I’m at my desk. But, after a few days of this my ambitions grew and I found this spreadsheet lacking. I’m not a spreadsheet expert, but let me explain what I wanted to do that I couldn’t do or easily visualize with by using a spreadsheet:

  1. What was my performance on a single exercise compared to prior performances? Did I do more pushups today than the last time I did pushups? For a bodyweight exercise like pushups, I’m sure I could easily calculate that here, but what about exercises that require more dimensions to track like a bicep curl where I now need to track the weight I used for each set. With my current approach, I could track reps but it didn’t lend itself to letting me switch weights between sets.
  2. I also wanted to know when I was doing each set. Do I have a habit of doing more bicep curls or pushups in the morning than I do in the evening? Is the load I can bear heavier before lunch than after lunch?
  3. I was making up the names for these exercises in the mornings when I wrote down the plan, but it would have been nice to write it once and then on a subsequent day choose it from a dropdown. And, similarly, it would have been nice to have a categories of exercises (push, pull, bodyweight, with dumbbells, etc.) that I could pull from to create that day’s plan.
  4. I had to be in front of a device that would let me log a set. If I was in the kitchen making lunch, I had to run back to the laptop to log a set of squats. Ideally, I could just create a record on my apple watch and have it update my progress against the goal. While I did try for a few days to create these entries on the sheets app on my iPhone, I didn't like the experience.

Changing the weights for each set, logging the time of each set, and viewing my progress over time would have turned this spreadsheet into a mess. Logging every set would take too much time. Again, I’m sure a middling sheets/excel user could easily whip something up, but I saw my ignorance with excel as an opportunity.

As of a month ago, I had a very basic grasp of iOS development. I’d never shipped anything but I’d tinkered with it on and off. And sensing that all this tracking would be easier with an app and a watch extension made me excited to try to build this as an iPhone app.

Of course, there are likely a hundred if not thousands of apps in the app store that do something similar. In fact, for a long time I used an app called FitBod, which other than not wanting to admit that I use an app named FitBod, is a really good workout tracker. However, I didn’t think it would work for my purposes because FitBod times your workouts, considering them complete when you stop the timer. I want to do what I want when I can, not everything in one time block.

So, I’ve taken it upon myself to figure out a solution best suited for me and then build it. This is an opportunity, primarily, for me to ramp up on Swift/SwiftUI. Nothing yet depends on me being fabric-tearing tire-throwing strong, so if I don’t quite nail my vision of the perfect workout app then it will be okay if what I end up with is only teaches me about the app development lifecyle. I’m sure there are AI coding tools that could make something good enough, but then what would I learn. I may, in a later post, elaborate on how I use AI but it's with a very light touch. I've turned off Xcode's copilot and only use ChatGPT to ask questions when I don't understand the documentation.

I should mention that I’ve been working on this for a week or two already and have made some good progress. I plan to follow up with a post about what my development cycle looks like, for better and worse and how I’m thinking about functional requirements and non-function requirements here. I thought this would be a simple week-long project, and as I should have predicted, it’s become more complex in ways that I’ll get into next.

Changelog: 7/31: The original post was a little shaggy so I just made some light edits and fixed typos.