Don’t Look Don’t Tell

Lady Justice It’s time for another rantish post.

[T]he manufacturer maintained that the system was perfect, and that revealing the source code would be damaging to its business. They were right about the second part, of course, because it turned out that the code was terrible.
Basically, the system was designed to return some sort of result regardless.
Bruce Schneier, Software Problems with a Breath Alcohol Detector

Schneier goes on to say that ‘”You can’t look at our code because we don’t want you to” simply isn’t good enough.’ in the realm of evidence and other legal situations.

Don’t forget the debacle with electronic voting systems, either.

You would think that the primary goal of a programmer would be correctness. After all, whenever I use something, whether software based or not, I expect correct functioning, and if I don’t get that, then I consider the product or procedure broken … but then I’m just a naive consumer. An ideal product would first have to be “correct”, but also relatively accurate (for instance, “a few meters” is good enough for GPS), and performant (a speedometer should display your current speed, not what it was five minutes ago).

However, programmers don’t work in an ideal world, and are rarely in charge. Usually the real priority is the bottom line, and every thing else follows. You probably have seen the meme

  1. something
  2. ???
  3. Profit!

Let me put that in priority order and expand it:

  1. Profit!
  2. release
  3. pretty
  4. fast
  5. precise
  6. correct

Years ago in Windows Developer [1] someone from a major software house (heh) explicitly stated that the “user experience” was the most important thing, and that correct functioning should be sacrificed for the sake of a better UX. WTF? I obviously have never been in the target demographic for those products. I think this was the same issue where they kept referring to a current software development product, still in active development, as “legacy code”, pushing instead a still-in-beta product as the only way to go, leaving those dinosaurs (who converted to the legacy system just a year or so ago) behind in the primordial dust. But I’m not cynical.

In the precise category (precision, accuracy, and resolution are unrelated), I recall a 10KVA UPS system I ran across. I thought it was pretty cool, if overkill, that it showed the current flow to a couple or three decimal places … until I realized that it only had so many discrete values that it displayed. The “precision” was meaningless; there were only about three different “.nnn” values ever displayed. From what I remember, the current values were probably a geometric sequence — sort of like the 10% resistor preferred value scale (10 12 15 18 22 27 33 39 47 56 68 82) — with the decimals thrown in just for appearance’s sake.

image: Lady justice standing.png, Wikimedia Commons

  1. I kept this particular issue for a long time, due to this article, but I can’t find it now; I’ll update this post if I do []

About hornlo

Geek. Curmudgeon
This entry was posted in programming, Life-Society and tagged , , , , , . Bookmark the permalink.

Leave a Reply

This site uses Akismet to reduce spam. Learn how your comment data is processed.