“Welcome to the world of hardware,” Don commented wryly.
We were sitting at the black counter at a Starbucks in Williamsburg, looking out the window, both over-caffeinated. Our laptops were surrounded by various watch components, cables, my Zero Gecko EFM32 board that I use to load code onto my clunky watch prototype, and the prototype itself.
Don, our electrical engineer and embedded software programmer, has been working since September on writing the watch’s code in discrete modules and uploading them into Google Drive for me to download onto my device and test. We have one module each for the stopwatch function, the “rounds” workout, and the time interval workout. Once each module is finally perfected, Don will combine them all into a whole and run the code through an optimizer to clean up the code and make it more efficient, and then we’ll have our prototypes ready to hand out to people for testing.
Don and I share a document to track issues and fixes for each module. It includes checklists that track all the button behaviors for all the states. For example, what should the lower left-hand button do during a paused rest interval in the timed-interval module? And what should happen when you press and hold the “pause” button during the warm-up of the “rounds” module? As I test the modules I check each item when it does what it’s supposed to do, or insert a comment when it doesn’t.
We track issues using a button behaviors checklist for each state in each module.
We’re now at a point where the issues are increasingly minor, and the fixes are exponentially easier and faster. But we uncover new issues or decide on new approaches each time; for instance, I seem to remember a neglected button behavior or even a state and add it to the list each round of testing. And the other day, I tapped the “home” button several times in rapid succession (I forget why), and discovered that that ends the workout and takes me the list of results.
We’ve also gotten pretty far into the weeds for the past few months. Here’s something Don wrote in the Google Doc:
”Priority of push” - I’m assuming back (i.e. restart the current workout segment) shouldn’t be able to work when you’re less than 3 seconds remaining in a segment because the countdown would annoyingly just spill over and restart your next segment when it’s a second or whatever arbitrary value in...
At the Starbucks, I remarked, “Man, who’da thunk we’d been going into that level of, like, arcane? And the whole pressing-the-home-button-really-fast thing?”
Welcome to the world of hardware.