Compatibility constraints of the water cooler


One of the things you learn when dealing with compatibility is that every single external detail is a potential compatibility constraint.

A few years ago, the water coolers in the buildings were replaced. I have no idea why. Maybe the new water cooler company put in a lower bid. Who knows? All I know is that I like the newer ones less, and I'm not the only one.

The water cooler has three spouts: one for hot water, one for room-temperature water, and one for cold water. (Okay, so it's also a water heater as well as a water cooler.) The old machine positioned the spouts close enough together that you could fit a cup beneath the last two spouts (room-temperature and cold). This meant that you could push both levers to dispense water into your cup. Now, the result was "somewhat cool" water, but the important thing was that it filled your cup in half the time!

    Room
Hot Temp Cold
  |   |   |
  v   v   v
     |.   .|
     |.cup.|
     |.....|
     +-----+

The new water coolers has the same three spouts, but they are positioned just a tiny bit further apart, just far apart enough that you can't use the "double-barrel" trick any more.

     Room
Hot  Temp  Cold
  |    |    |
  v    v    v
      |.    |.
      |.cup |.dribble
      |.....|*
      +-----+*
             *dribble

The new water cooler is subtly incompatible with the old one, in a manner that is not part of the specification but rather is merely a convenient side-effect of the implementation.

Comments (33)
  1. Nathan says:

    Did you put ice in your cup to negate the effects of the room temperature water with the old cooler ?

    Maybe getting a new cup vendor would solve the problem — find foam or paper cups that are flexible enough to squeeze into covering both spigots. Or find/buy a re-useable cup with a wide enough mouth.

  2. Rob Rose says:

    Well, when you go and become dependent on undocumented interfaces…

  3. Yes, use only Cooler 2.0 Certified cups.

  4. pcooper says:

    Yes, but it’s very easy to become dependent on undocumented interfaces without realizing it.

  5. Tim says:

    I agree with you 100% Raymond. Some subtle nuances are important to get into the spec. Of course, I always like to blame outsourcing for situations like this.

  6. Sebastian Redl says:

    Nathan: I can’t speak for Raymond, of course, but my experience with water coolers in the US is that a 1:1 mix of room temperature and frozen (sorry, "cooled") water is just about drinkable.

  7. Tja says:

    Just like when you get a new copy of Windows, what you need is a larger capacity device. Specifically, a cup with a larger diameter.

  8. Pierre B. says:

    pcooper: it’s obvious that the caller knew very well he was using the IWaterCooler interface improperly /by choice/. Now it broke and Raymond Chong has to find a compatibility fix.

    (And don’t forget what Normand Ruby would say: in WaterCooler 95, they forgot to test the sprout with Fizzy interface and he got splashed all over.)

  9. Barry Bond says:

    There is probably some IP issue with spout placement that prevents the new cooler from having close-together spouts.  ;-)

  10. jeffdav says:

    You could get a larger cup.  Or you could shim it with a funnel until you get around to buying a larger cup.  

  11. Jon says:

    If you had a paper or styrofoam cup I wonder if you could squeeze the top of it to make it just wide enough to fit under both spouts.

  12. Igor says:

    What? You have three water pipes? Simple "Hot" and "Cold" not enough for you? Geez…

    Let everyone chose and you will have to deal with gazillion choices.

  13. evan says:

    The best solution would be to raise the flow rate on each spigot.

  14. tomk says:

    Squeezing the default orange foam Microsoft cups definitely works.

  15. Mike Dimmick says:

    In theory, one of the outputs on our cooler is meant to be chilled and the other room temperature. However, ours is filtered from mains water, not from a separate bottle. In practice, because the ground water supply is pretty cold, both outputs are about the same temperature.

    As a result I have no idea which is supposed to be the chilled output!

  16. zardoz (GR) says:

    It could get worse

    1. Coolers in my country provide only freezing cold and boiling hot water.
    2. The sprouts are too far away to get a mix, even with a giganic cup

    3. The levers behind the sprouts are too tight, so you actually use a

    foam cup without braking the cup or burning your fingers

    But who cares? Not only we have enough time to use them as they are,

    we have enough time to read this blog!

  17. Markus says:

    Not trying to be funny or anything, but why would you actually WANT room-temperature water?

    Markus

  18. ChrisMcB says:

    While this isn’t an upgrade. It is the age old problem of how much of the old functionality do you break, to fix or add new functionality.

    I don’t remember the the old coolers exactly, but maybe the new company wanted more room for larger mugs. Perhaps they had complaints the the (now no longer used) coffee pots didn’t fit under the spigets conviently enough.

    You can’t please all of the people all of the time.

  19. Jonathan says:

    I had a similar compatibility issue with my current car. My old car had cup holders which were just large enough to hold 2 1.5 liter bottles. I used to keep water there all the time. My current car’s cup holders are not, hence the bottles just lie on the floor – a considerable downgrade!

    why would you actually WANT room-temperature water?

    Because I like it much better than chilled-enough-too-hurt-my-teeth water!

  20. steveg says:

    Can you bend the interface definition by twisting the spouts inwards and then place the cup underneath?

      /

    why would you actually WANT room-temperature water?

    I prefer it, even in summer. (shrugs)

  21. Mikkin says:

    If you twist the spouts there is a passthrough to the internals. This might just move the dribble from the interface to the kernel. A leaky abstraction?

  22. winnar says:

    Use 2 cups then mix them when they’re half full.

  23. David Walker says:

    “Merely a *convenient* side effect of the implementation”?

    Surely you meant “inconvenient”.

    Not trying to nit-pick, but it sounds like you said the exact opposite of what you meant.

    [The old design was convenient in an undocumented way. -Raymond]
  24. Metanitpicker says:

    (Okay, so it’s also a water heater as well as

    a water cooler.)

    Forgot your dagger?

    the important thing was that it filled your

    cup in half the time!

    Only if it had two cores.

  25. Joe Duffy says:

    Isn’t it obvious?

    It’s the age old trick of first breaking compatability so they can later develop new features for V3 and charge more.

    The drinkable semi-cold fourth spout feature is being pushed by the sales team as we speak.

    —joe

  26. WalterGR says:

    Nathan: "Did you put ice in your cup to negate the effects of the room temperature water with the old cooler?"

    Ice isn’t provided "by default" at MS.  Maybe there are some ice trays in the freezer, but I personally *hate* random freezer ice.

    Jon: "If you had a paper or styrofoam cup I wonder if you could squeeze the top of it to make it just wide enough to fit under both spouts."

    Great call!  That’s exactly the solution.

    Markus: "Not trying to be funny or anything, but why would you actually WANT room-temperature water?"

    People with sensitive teeth, maybe?  Personally, in an air-conditioned building, I don’t want really cold water. And the cooled water is ice cold, so you definitely have to mix them.

    Raymond – great blog.

  27. David Walker says:

    [The old design was convenient in an undocumented way. -Raymond]

    Right.  You said "The new water cooler is subtly incompatible with the old one, in a manner that is not part of the specification but rather is merely a convenient side-effect of the implementation."

    I matched "incompatible" with "in a manner that is convenient" and decided that actually, the new design was incompatible in a manner that is inconvenient.  

    "Incompatible in a manner that is convenient" didn’t make sense.

    Back to your regularly scheduled program.

  28. s/is merely/was merely/ and it works.  Or s/the implementation/the old implementation/.

  29. Adam P. says:

    Are you sure the spouts are further apart?  Maybe at the same time the water coolers were replaced, the cups were replaced with ones that had a smaller opening.

  30. koolkeith13 says:

    Raymond,

    May I make a suggestion?  One that I wanted to implement with the iCup machines and simply haven’t had a chance…

    Measure the diameter of the spout on the water cooler and head on over to Home Depot on 8th and pick up some flexible tubing to affix to the nozzle.  Then simply route the water wherever you would like.  I would also recommend doing this for the iCup as well (just remember to remove after usage as I’m sure the maintence people will get pissy) so that you don’t get the useless water that they spurt out after the coffee.

    Lemme know if you decide to implement.  I would love to see pictures.

    -K

  31. DriverDude says:

    "… but the important thing was that it filled your cup in half the time!"

    Wow, I never thought to optimize the fill rate at the water cooler…

    Then again, I usually want something a tad less than burn-your-tounge hot water, so I have to use the hot and chilled spouts (on the extremes) serially anyway.

  32. 640k says:

    But what if you want to fill 3 cups with different temperatured water at the same time? That wasn’t possible before, but it is now. A bug fixed.

  33. IIsi 50MHz says:

    At my office we have only Pale Blue (cold) and Beige spouts on the watercooler, with no mains hookup to it. The Beige spout outputs the same temperature as the somewhat-adequately-chilled Pale Blue spout. ^P[insert clever analogy about memory protection or not-thread-safe implementations here]^Z

    …also, the overflow buffer holds approximately 1/4 the volume of cups that fit in the space allowed, with no drain. Relies on evaporation or manual extraction of the buffer from the bufferslot to be SneakerNetted over to ../kit/sink/.

    In a related pipe, the waterheater for the building is two metres away from the ../kit/sink/, but getting a noticeable change in the temperature (let alone real heat) takes minutes of flow (despite reasonable flowrate). There’s a running suspicion that the waterheater branches to Fishkill or is actually using the local raven-like black birds for IP-over-Avian-Carrier. We resort to running cold water and, depending on amount desired, heating in the microwave or through the unladen coffee machine. Also, I blame any lameness herein on the fact that I’m about to crash after having stayed up for entirely too many hours, which is to say I blame it on myself.

Comments are closed.

Skip to main content