We’ve still had plenty of hot days lately, but there have also been some cooler days when it rains. It’s starting to feel like summer is slowly coming to an end🎇.
Work has been quite busy recently, and I haven’t been able to find as much time as I’d like for my own development projects💦. Because of that, it’s been about two weeks since my last Weekly Dev Log update.
By my previous update, I had mostly finished Note Practice, the first practice mode in ToneDrill. So I’ve now started working on the next feature, Chord Tone Practice🦾.
In Chord Tone Practice, I want the player to find chord-tone patterns on the guitar fretboard based on the selected root note and chord quality, Major or Minor🎸. For example, a Major chord can generate not only 1-3-5, but also patterns such as 3-5-1 and 5-1-3. The player finds one correct note position on each of three consecutive strings.
Personally, I really enjoy practicing simple chord tones using only the Root, 3rd, and 5th on the guitar, so that was one of the reasons I wanted to build this mode😂. I like how just a few notes can still create a clear and beautiful chord sound🎵.
This week, I worked with Codex to define the game rules in much more detail💡. While deciding things like the root notes, Major / Minor chord qualities, chord-tone patterns, strings to use, and how correct answers should be counted, I started wondering: “Will these rules actually work under every possible condition?”
So before implementing the feature in SwiftUI, I had Codex create a separate JavaScript validation script to test the game rules first.
The script checked 504 different conditions, combining 12 root notes, Major / Minor chord qualities, three chord-tone patterns, and seven visible fret ranges.
The results confirmed that there were no cases with zero valid answers, no overlapping answer positions, and no situations where the player could get stuck before completing all valid answers.
The ToneDrill app itself is being developed in Swift and SwiftUI, so using a separate JavaScript program only to validate the game rules before implementation was a new and interesting approach for me🤔.
I also became curious about how the JavaScript script was actually checking all 504 conditions. I started debugging the code and asking Codex questions about each part of the process, and before I knew it, I had spent quite a lot of time on it 😅
Still, it turned out to be a useful detour because I was able to learn more about how the JavaScript code worked as well🐛.
Now that the basic game rules are settled, the next step is to work on the UI🔥. I’m looking forward to seeing how the practice mode feels once it starts taking shape on screen✨.
About a month ago, I was able to keep up with both development and my weekly Dev.to posts fairly consistently. Recently, though, work has been much busier, and there have been many days when I haven’t been able to make as much progress as I wanted.
Still, I want to remember why I started doing this in the first place: because I enjoy building things and learning things I didn’t know before.
Rather than comparing myself too much with other amazing developers, I want to keep moving forward one step at a time at my own pace🚶. Lately, I’ve been reminded again of how important that is🌱.
