Digital microwaves show an example of good UI doing what you wanted

July 28, 2020

Every so often, you encounter a bit of UI that does what you mean to do so transparently that you don't even notice that the UI is breaking its own 'how it works' rules to do so. You could say that this is the complete reverse of robot logic, as seen yesterday in trying to change your password on Linux. Recently I realized that I'd run into such a 'do what I mean even though it doesn't fit' UI in plain ordinary microwaves, of all places.

Your typical microwave has a 0-9 digital pad for entering the cooking time and its cook time is set in MM:SS. If you want one minute and twenty seconds, you punch in '1 2 0' and the microwave displays '1:20' and counts down from there. This is all perfectly logical and sensible, and forms a clear model of how the microwave behaves.

So what happens if you enter '9 0'? The microwave doesn't reject this as an error because you can't have 90 seconds in the seconds portion of a minutes and seconds time (you can have at most 59). Instead it breaks the model and gives you 90 seconds of cook time. This creates some inconsistencies, of course; if you enter '9 9' you get 99 seconds, but if you enter '1 0 0', you get 60 seconds (because now it's 1:00 cook time). On at least some microwaves this still works even if you enter more than two digits; '1 9 9' is 199 seconds, not an error (or one minute plus 99 seconds).

This behavior was so natural and so obviously correct and what I meant that I spent years not realizing there was anything unusual about it. Only one day as I was keying in '9 0' yet again and congratulating myself on pressing one less digit than '1 3 0' did I stop to ask myself why it even worked. And the answer is that the microwave makers went out of their way to figure out what this input should mean so that it should match user expectations, and make it so.

(I suspect or at least hope that there were user studies by some early microwave company on what people expected to happen when they keyed in various number sequences that weren't proper MM:SS setups.)

Comments on this page:

By nanaya at 2020-07-28 00:16:20:

I doubt they put much thought on that. It's probably just "whatever first two digits are number of seconds" and the same for minutes etc.

By Brian at 2020-07-28 17:33:22:

A food package showed :90 in a 7-segment font and once without thinking I typed in ‘9 0’ instead of my usual ‘1 3 0’ and was stunned when it worked. Next time I wanted 3:30 I tried typing ‘2 9 0’ and it worked, I got 3 and a half minutes. I thought it was mostly a clever way to avoid error logic that also benefits the user.

By Andrew at 2020-07-28 20:07:09:

I don't believe they had to put any effort into it. In the early days of digital microwaves (and probably still on quite a few today today), the timer would be four BCD digits, with subtraction done digit-by-digit, and special logic on the tens digit that says when it decrements from 0 it gets a 5 instead of a 9 (so that the third-from-right digit is "minutes" instead of "hundreds of seconds")... and that's it. You get the correct behavior for "90" just by not changing the logic for 6 through 9 in that position. And "190" will give you 2 minutes and 30 seconds, not 190 seconds, for the same reason.

What's nice, though, is that they kept this nice behavior that fell out of doing things the cheapest, simplest way, instead of finding reasons to change it.

Written on 28 July 2020.
« Linux PAM leads to terrible error messages from things like passwd
Our ZFS spares handling system for ZFS on Linux »

Page tools: View Source, View Normal, Add Comment.
Login: Password:
Atom Syndication: Recent Comments.

Last modified: Tue Jul 28 00:02:02 2020
This dinky wiki is brought to you by the Insane Hackers Guild, Python sub-branch.