User interface design for vending machines – answer to puzzle

Date:January 13, 2005 / year-entry #13
Tags:non-computer
Orig Link:https://blogs.msdn.microsoft.com/oldnewthing/20050113-00/?p=36713
Comments:    38
Summary:Last time, we ended a discussion of vending machine design with a short puzzle: What problems do you see with numbering the products from 1 to 99? I'm not saying that these are the only possible answers, but they are ones that came to mind when I thought about it. Product codes less than 10...

Last time, we ended a discussion of vending machine design with a short puzzle: What problems do you see with numbering the products from 1 to 99?

I'm not saying that these are the only possible answers, but they are ones that came to mind when I thought about it.

  • Product codes less than 10 would be ambiguous. Is a "3" a request for product number 3, or is the user just being slow at entering "32"? Solving this by adding a leading zero will not work because people are in the habit of ignoring leading zeros.
  • Product codes should not coincide with product prices. If there is a bag of cookies that costs 75 cents, users are likely to type "75" when they want the cookies, even though the product code for the cookies is 23.

Ilya Birman was the first to point out the "bounce-effect" problem, thereby ruling out product codes like 11, 22, and 33.


Comments (38)
  1. Cooney says:

    The simplest solution I’ve seen is number-letter. Pick from column A and B and a piece of candy drops out.

  2. Andrew Feldstein says:

    Since prices are always multiples of 5 cents (in the US at least), your second point can be accomplished by leaving out all numbers ending in 5 or 0.

  3. Wen says:

    Here in the office, the drinks vending machine uses exactly a two numeric digit input (no rows or columns, since there’s nothing to look at, except a menu of drinks and their two digit code). Anyway, at the end, you press a "Vend" button, and it proceeds. Furthermore, because it is for drinks, such as hot tea or coffee, after you press vend to confirm, you can then adjust additives (milk, sugar and how much of either)using other buttons, then press vend again.

    Now, I am not saying it’s ideal, but having a vend button would help with the situation described above. You can keep pressing numbers, and then just press vend to "confirm" your selection, thereby making the ambiguous and bouncing effect go away.

  4. Steve Steiner says:

    Removing the need for the user to understand or use any code at all is a better solution. LEDs under the product and a control to highlight the selected product is less error prone.

  5. Duncan says:

    Have the front glass touch sensitive and have the user point at the thing they want…?

  6. Random Person says:

    Having the touch glass wouldn’t work, because when they are trying to decide, people often poke the glass looking at items before they’ve made up their minds… plus small children could poke the lower levels while parent is picking. This is also bad for short people who can’t reach the correct place on the glass and some of the viewing angles will be different for height… so if I’m looking at it from one way, the selection area may be designed for someone at a different height (tall people would be upset).

    This would really only work on Kamino for all of those Clone Troopers in Star Wars: Ep2 =)

  7. BlackTigerX says:

    I’ll stick with the "robot" that you can control to grab whatever you want =o)

  8. Erwin Alva says:

    Vending machines I saw in Japan have buttons with LEDs below each product. Just insert your coins, LEDs light up (depending on the amount you entered), and push the button. I just don’t know (or forgot) how do they tell if an item is out of stock.

    Simple.

  9. Warp says:

    Haven’t seen this yet, but what about two letters? AA -> ZZ (eliminating pairs for the bounce effect, if desired)

    Also, I don’t think it’s a requirement that each row or column share one character in the code. People don’t decide by counting rows or mentally incrementing as their eyes move right. They look for what they want, and then they look for the code directly beneath it. All these things have microcontrollers today, so it’s no more difficult to build such a system.

  10. Ilya Birman says:

    2Erwin Alva, maybe LEDs of corresponding products just don’t light up? :-)

    By the way, as far as I remember, some of those machines first encourage you to select a product, then show you the price, and you put in you money. This is nice: if you have mistaken, or it’s out of stock, you know it before you lose your money :-) And also it has no "price-vs-number" problem, because prices appear on a display only after you press something.

  11. Todd Spatafore says:

    dual Bi-Octal Glyphs

    http://debreuil.com/glyphs/

  12. Erwin Alva says:

    I got this off a Google search:

    http://iheavy.com/~shull/pics/japan/vending/vending.html

    Ilya, I never encountered such machines, fortunately. I can’t read Japanese, but I still figured out how to use them, though it was a horrifying experience buying Shinkansen (bullet train) tickets. :-)

  13. dakirw says:

    Ilya:

    The only problem is that sometimes people want to see how much something costs BEFORE they make the selection. More of a pscyhological thing than anything else, but they’d probably be leery of selecting something, even if they didn’t have to put the money in until the last step. Most machines seem to want the money in there first, so a lot of people would be conditioned to do that anyways.

  14. John says:

    what about typing the number first. so 1A can be distinguished from 10A etc. (still removing the 11, 22 entries)

    This removes the slow user problem (if only!)

  15. boxmonkey says:

    How’s this for a soluton to the "including numbers less than 10" problem:

    Have the numbers first. As long as a single letter can be used as well, this would allow users to catch their own mistakes.

    For example, if I want 3A, I would type 3, and then when I press A, the item would vend.

    But let’s say I want 322X. I would type, 322, and when I press X, the item will vend.

    The bounce effect could then be compensated for by having a "clear" button, so if I want item 32, but I accidentally enter 322, I can press Clear and try again.

    This would probably clear up the price/item number problem, because no price will ever end in a letter.

  16. boxmonkey says:

    damn you John!

  17. Chris Lineker says:

    How about a 3 didgit code, letter number letter

    elimitates every issue discussed as far as I can tell in my sleep deprived state

  18. What about having a enter key to complete input and a backspace or clear key to correct input.

    It’s a metaphor that anyone who has used a computer understands.

    Combine this will solid easy to read instructions on enter and clear for those who have not used a computer before and you have your target method covered.

    Vending machines rely on a phone number metaphor (ie no final keypress needed to confirm input), but with computers as commonplace as phones these days surely an enter key is the most simple way of solving these problems.

  19. Norman Diamond says:

    1/13/2005 9:06 AM Erwin Alva

    > I just don’t know (or forgot) how do they

    > tell if an item is out of stock.

    The other LED in the button is lit up, both before and after you insert money. The LED displays Chinese/Japanese words meaning sold out.

    1/13/2005 10:38 AM Erwin Alva

    > it was a horrifying experience buying

    > Shinkansen (bullet train) tickets. :-)

    Then buy them from a human.

  20. lowercase josh says:

    Why not add a qwerty keyboard and have people type in what they want, eg "get snickers bar"? ;)

  21. Candyman says:

    "select 0x01 snickers bar from vending machine where row=4 and col=3"

  22. sql says:

    …order by taste

  23. carlso says:

    I’m very surprised that no one has mentioned one of the most important elements in user interface design: providing feedback.

    Using a keypad on a vending machine interface is essentially providing a mapping of numbers to products. Such an interface requires the user to mentally map key presses to the items offered. There will always be problems when you rely on mental mapping. Some people may read the labels incorrectly (e.g., do the labels apply to the product above or to the product below?), some people may read the labels wrong (e.g., is it I1 or L1?), some people may accidentally press the wrong key, etc.

    Any solution that does not provide feedback showing the user what product is selected before purchase is bound to fail in at least some cases.

    Of course, I’m sure there’s a certain percentage of revenue that results from people making a wrong selection and then purchasing the item they really want. So, there may actually be a business objective to not allow a 100% success rate in selecting the item that the customer wants. ;-)

  24. John Topley says:

    I should imagine that a touch screen interface would be too expensive and maybe too unreliable. Remember that these things are designed down to a cost and have to be reliable.

  25. Jonathan Wilson says:

    The simple idea of having a "VEND"/"OK" buttonand a "CLEAR" button is the best answer.

    That or the idea of having buttons with pictures of each product on it and you just press the product you want.

  26. Moi says:

    The easiest UI would be a baseball bat. You wouldn’t make much money running the machines though.

  27. Rich says:

    How about 4 buttons and a laser pointer inside the machine? You press up, down, left, and right until the red dot appears on what you want.

  28. CN says:

    I think the John/boxmonkey approach is a very efficient one. Just terminate with the set of symbols that you only use one occurence of. I think 10 – A comes just as natural as A – 10 and you would still have a system in the designation of products. I think this is important, because if I see that there *are* columns and rows, I would be frustrated if the codes seemed to be random. Maybe that’s a geeky feeling that won’t affect most users.

  29. Following on the latest meme, I’m going to link to a page talking about vending machines.

  30. Erwin Alva says:

    Norman Diamond:

    > Then buy them from a human.

    It *was*. Btw, I got help.

  31. Kev says:

    Regarding using numbers and letters, a number of vending machines here in the UK have combinations like A0, A1,F9 where the letter and number can be entered in either order – A0 and 0A are the same product, pretty hard to make a mistake with those!

    Naturally the Pepsi machines where you press the "Pepsi Max", "Diet Pepsi" or "Orange Tango" buttons are even more logicall than that!

  32. Norman Diamond says:

    1/14/2005 8:53 AM Erwin Alva

    > Norman Diamond:

    >>

    >> Then buy them from a human.

    >

    >It *was*.

    In that case, then buy them from a machine ^o^

    By the way, I do have a lot of trouble with ticket machines in particular. The current generation of ticket machines has touch-screens. If I press the glass screen where I see the image of the price of the ticket I want to buy, it doesn’t work. I have to figure out the right displacement where to press the glass screen, where the image of the price would be seen by someone 20 cm shorter than me.

  33. Michael J. says:

    "get snickers bar"

    Riiight. Roger Wilco: look floor, pick glowing box, use glowing box on vending machine.

    > Product codes should not coincide with product prices.

    Are people THAT stupid? Prices usually have "$" or "c" or "euro" sign beside it.

  34. Norman Diamond says:

    1/17/2005 6:09 PM Michael J.

    >> Product codes should not coincide with

    >> product prices.

    >

    > Are people THAT stupid? Prices usually

    > have "$" or "c" or "euro" sign beside it.

    It’s not a matter of stupidity. With ticket machines or sometimes bank machines or others, the user has to do keyboard input stating an amount of money before or after they input the money itself. Of course the money is denominated in a unit. That’s completely irrelevant to the necessity of noticing and avoiding that habit when choosing a product from this other kind of machine.

  35. Cynical Consumer says:

    If I were making money off of vending machines, I would not put any effort into making it idiot-proof. I would be glad if people picked the wrong things. They will blame themselves, and then go ahead and put in more money and try again. Because, after all, if you are spending twice as much as normal for something, it is because you absolutely must have it, right then. So, I would put my worst-selling stuff on AA,BB,… and the stuff I think people want the most would be the select-combos most likely to be goofed up.

  36. wanker says:

    What about the honour system?

    Leave the shelf open.

    Let the user pick whatever he wants and leave the money.

    Would be simpler than and cheaper than any of the other stuff…

  37. Vince P says:

    How about using the Hebrew Alphabet for the selection codes. The letters are numbers.

  38. JM says:

    Rich is on the right track, but only 2 buttons (back and forward) would do nicely, especially if pointing accelerated if the user held down either key.

    > How about 4 buttons and a laser pointer inside the machine? You press up, down, left, and right until the red dot appears on what you want.

Comments are closed.


*DISCLAIMER: I DO NOT OWN THIS CONTENT. If you are the owner and would like it removed, please contact me. The content herein is an archived reproduction of entries from Raymond Chen's "Old New Thing" Blog (most recent link is here). It may have slight formatting modifications for consistency and to improve readability.

WHY DID I DUPLICATE THIS CONTENT HERE? Let me first say this site has never had anything to sell and has never shown ads of any kind. I have nothing monetarily to gain by duplicating content here. Because I had made my own local copy of this content throughout the years, for ease of using tools like grep, I decided to put it online after I discovered some of the original content previously and publicly available, had disappeared approximately early to mid 2019. At the same time, I present the content in an easily accessible theme-agnostic way.

The information provided by Raymond's blog is, for all practical purposes, more authoritative on Windows Development than Microsoft's own MSDN documentation and should be considered supplemental reading to that documentation. The wealth of missing details provided by this blog that Microsoft could not or did not document about Windows over the years is vital enough, many would agree an online "backup" of these details is a necessary endeavor. Specifics include:

<-- Back to Old New Thing Archive Index