{"id":357,"date":"2020-11-05T12:07:58","date_gmt":"2020-11-05T19:07:58","guid":{"rendered":"http:\/\/brookschoenfield.com\/?p=357"},"modified":"2020-11-05T12:07:58","modified_gmt":"2020-11-05T19:07:58","slug":"bad-design-decisions","status":"publish","type":"post","link":"https:\/\/brookschoenfield.com\/?p=357","title":{"rendered":"Bad Design Decisions\u2026"},"content":{"rendered":"\n<p class=\"wp-block-paragraph\">Bad Design Decisions\u2026<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Sometime in 2018, I noticed a pitch for a new \u201csport\u201d watch that generated its energy from your body. That sounded cool, so I sent the pitch to my spouse. Then I forgot all about it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Imagine my surprise when the brand new, version 1 watch appeared out from under our Christmas tree.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Immediately, things started to go South. The watch was supposed to turn on; it remained blank, silent, obviously inoperable no matter how I followed the single page of textual directions. Try as I might, it was just a hunk of metal, plastics, and circuits (presumably).<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Naturally, I called the <a href=\"https:\/\/www.powerwatch.com\/\">Matrix PowerWatch<\/a> Support who patiently detailed exactly the instructions I\u2019d already determined were not working. I always find that a bit patronizing, since I did take the time describe everything that I\u2019d tried. They sent me the accessory USB charger, gratis, but still no joy with that particular watch. Another call to support.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I should have taken the initial experience as a sign. There would be many more exchanges over the following year+, until I had realized that Matrix PowerWatch had apparently intentionally burned all of its version one buyers.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">After six weeks or so of wrangling, Matrix finally sent me a working watch, which, per instructions, started, paired, and appeared to function.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The PowerWatch keeps time, as expected. It also measures steps, though unlike my couple of early Fitbits, the PowerWatch has no ability to calibrate one\u2019s stride. My longer than typical legs usually take in somewhat more distance than others more typically fitted.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Since the PowerWatch is constantly measuring my body temperature (and its disparity with ambient), the watch will \u201ccalculate\u201d calories expended, as well. I found this last to be an interesting data point. I didn\u2019t take the calory count as gospel. But the watch could definitely tell me when I\u2019d had a good work out versus days spent at a computer.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The watch also has a stopwatch, timer, and lap counter. I found these almost unworkable given the way the two physical buttons on the watch work, or don\u2019t work much of the time. So I never used these functions. My mobile phone is a lot easier.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The next sign of trouble was syncing the watch to my phone. The instructions said to go to the watch\u2019s settings, scroll down to \u201cSync\u201d, then press both buttons. This operation only sometimes worked. Pressing both buttons at the same time requires serious hand contortions that I found painful at times, certainly uncomfortable. Little did I know as I started having troubles that sync failures were a symptom of poor design choices for which there would be no remedy.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">More calls and emails to Matrix Support, which often went unanswered for days. I suspect that there was actually only a single support person, maybe a couple? Anyway, as you may imagine, the process and the watch were becoming quite a time sink.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, the support engineer told me that I could simply pull the app display down and the watch would sync. Eureka! Why wasn\u2019t that in any instructions or described somewhere on the PowerWatch web site?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Finally, was I past issues and on to happy use? Um, no.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">For, in their wisdom, the PowerWatch software engineers had chosen to either write their own Bluetooth stack, or muck with one in some way as to make the stack predictably unstable.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I have had and continue to use without trouble, dozens of Bluetooth devices, the vast majority of which pair and sync (if needed) with phones, tablets, computers nearly seamlessly. Some early devices had weak antennas, so syncing had to be performed in close proximity. But once paired, syncing just happens. Not so, the Matrix PowerWatch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">The watch would sync for a few days. Then the pairing between watch and phone would break in some way. The sync operation would timeout. If I restarted the app, syncing might occur. Once in a while, a reboot of the phone might get it going.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Meanwhile, all the other Bluetooth devices paired with that phone continued to work fine. Which has led me to believe that it\u2019s the watch software at fault.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">But you see, the PowerWatch designers, in their infinite lack of foresight and wisdom, provided no way to simply reboot the watch! Better would have been a way to restart the Bluetooth stack. Observing instability, one prepares for it. Actually, one prepares for instability, period, especially in version 1!<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I\u2019m pretty sure that a watch system reboot would have solved this problem. But no, the only recourse is to unpair the watch and reset it to start up mode: factory reset. That\u2019s the only option.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Unpairing the watch removes all ones accumulated fitness data (and any personalization) from the watch and application. One is forced to start over completely. There is no other course.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Worse, if you don\u2019t sync the watch for a few days (who wants to go through this horror even once\/day?), it both loses fitness data AND the Bluetooth connection blows up. Everything is lost. This happens regularly, predictably.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">One of the first design rules that I learned, years ago, was, \u201cnever, ever lose your customer\u2019s data\u201d. Failure one.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rule 2: for difficult or tricky protocols, try to use a vetted implementation. Roll your own at you and your customers\u2019 risk. Perhaps, failure two?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Rule 3: Plan for errors and crashes, especially from conditions you can\u2019t anticipate during development. Failure three, for sure.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">If I\u2019d had a way to restart without losing data, say, turn Bluetooth off, then on again, or even a non-destructive reboot, I wouldn\u2019t be writing this today. All software contains bugs. We have learned how to work around that. Except, not the Matrix folks.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As I worked through my debugging process with PowerWatch Customer Support, they promised me that in March, 2020, there would be a new version that \u201cfixed this problem\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I hope that I\u2019ve learned how to be patient, especially with software fixes. After a lifetime designing, writing, debugging, securing software, I understand the difficulties in finding and fixing bugs, then getting the fixes into the field. I get it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Waiting, I lived with resetting my watch every 2-4 weeks, losing whatever accumulated data I had, sure. Amongst the many things competing for my time, a sport watch isn\u2019t really at the top of my list. I\u2019d already spent far too much time on PowerWatch.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">March finally arrived. I dutifully attempted the upgrade (that was a three-day battle in and of itself). Guess what? The promised upgrade was only for version 2 watches! My watch\u2019s system was precisely the same after the upgrade as before. All problems still active, nothing changed. I\u2019d been misled, purposely?<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">As you may imagine, I was upset. I still am. Matrix apparently decided that version 1 customers weren\u2019t worth keeping. Maybe there\u2019s some hardware or operating system limitation that prevents the upgrade? I really don\u2019t care. That shouldn\u2019t be my worry.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Was there an upgrade offer from Matrix? That\u2019s often used as a path forward. Say, an offer of 50% off the retail for version 2? Nope. Crickets.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">What I didn\u2019t realize is that there was another lurking reason for burning version 1 customers: the battery died a month later. Now, no watch. Just a pile of metal, plastics, and circuits. The free charger still works. But I\u2019ve no watch to charge on it.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">I suspect that Matrix realized that not only is the watch inherently unstable due to its Bluetooth issues and poor design. But they also must have understood that these version 1 devices were going to stop functioning soon, anyway. Matrix threw away its first customers. They\u2019ve turned their back on us. It\u2019s \u201cgoodbye and good luck\u201d.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">My only recourse is to publish my sad story so that others will be wary of a company that clearly doesn\u2019t much care about at least some of its customers. And, engineers who don\u2019t program defensively, who fail to give users ways to deal with their mistakes.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Don\u2019t buy PowerWatch, unless you understand with whom you\u2019re going to be dealing.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Cheers,<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">\/brook<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Bad Design Decisions\u2026 Sometime in 2018, I noticed a pitch for a new \u201csport\u201d watch that generated its energy from your body. That sounded cool, so I sent the pitch to my spouse. Then I forgot all about it. Imagine &hellip; <a href=\"https:\/\/brookschoenfield.com\/?p=357\">Continue reading <span class=\"meta-nav\">&rarr;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","footnotes":""},"categories":[15],"tags":[],"class_list":["post-357","post","type-post","status-publish","format-standard","hentry","category-information-security"],"_links":{"self":[{"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=\/wp\/v2\/posts\/357","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=357"}],"version-history":[{"count":1,"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=\/wp\/v2\/posts\/357\/revisions"}],"predecessor-version":[{"id":358,"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=\/wp\/v2\/posts\/357\/revisions\/358"}],"wp:attachment":[{"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=357"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=357"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/brookschoenfield.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=357"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}