Traveling Coffee Machines, OSGi, and more

I've been wanting to write this up forever, but have always been struggling with paralyzing perfectionism. But here it is, finally. Whatever.

Some ancient history

After all the publicity around Como / Promondia / JavaCup, local software company 3SOFT approached my school and tried to recruit me to write an embedded HTTP server for them. (Como included an HTTP server, and somehow those guys thought that was a big deal). 3SOFT was heavily involved with VxWorks, an operating system for embedded devices, and saw an opportunity to license or sell such a server to WindRiver Systems, the company that sold VxWorks. The idea was that your set-top box or your refrigerator was going to run a small Web server so that you could use any browser to configure it. Sound familiar? This is how you now configure your wireless router, but in 1996, this was exciting new stuff.

I liked the idea of controlling all kinds of devices via the Web, but I was more interested in modern, object-oriented systems than VxWorks, so I referred the opportunity to my friend Christian. He and his friend Manfred ended up building a great product which eventually made its way into all kinds of devices. I started working on an object-oriented control system for devices, and at some point wanted to build a demo.

Jura Impressa, the coffee machine

Dougengelbartcoffeemaker

The department of operating systems at my school had one of those fully automatic coffee machines that grinds beans and brews automatically. It had an optically coupled serial interface, and Juergen Weigert had some fun hacking together a hardware interface and we reverse-engineered the control protocol. Christian and Uwe at 3SOFT were interested in this whole thing as well, so the coffee machine became the universal device control demo, and travelled to the embedded systems conference, the 6th World Wide Web conference (see photo with Doug Engelbart, inventor of the mouse), and JavaOne.

Needless to say, this was a lot of fun. The API for the coffee machine let you choose the amount of water and beans you'd like to use, and if you really wanted to get into it, you could even control the units within the coffee machine manually.

One mishap occurred when I figured out by accident how to turn on the water pump, but didn't know how to turn it off. I was feverishly trying various control codes and eventually had to pull the plug to prevent a giant mess.

Another, more serious one was more subtle: The machine had an auto-power-off function, which you can configure to an integer number of minutes. Unfortunately, it also lets you choose 0 minutes. We ended up having to write a special program that would bombard the interface with the code for setting it pack to something reasonable, and then I manually pushed the button rapidly for a few minutes, until eventually the timing was just right so that the machine received the command to change the setting before the control loop that made the auto-power-off happen kick in. Good thing the firmware did it in this order...

The coffee machine ended up being part of Christian's interview at sun, and went on a road trip to a show in Las Vegas. We ended up taking some rather silly pictures.

Coffeesunset

Epilogue 

I ended up moved to California to start an internship at JavaSoft and work there on my master's thesis, which integrated my object-oriented control system with Sun's Jini technology (now very very dead) and OSGi (now rather undead, and after some heavy mutation also part of Eclipse). Years later, I found an article about Jura selling an Internet Kit for their coffee machine

Amazingly, they never fixed the bug about the auto-power-off. Had they been more open back in 1997, they could have gotten free engineering and great publicity out of this. It's one of these lessons that I wish companies would learn at some point. Wouldn't it be great to have open interfaces and open-source firmware for digital cameras, for example? 

Christian and I lost touch with Manfred - hey, if you're reading this, email me!

Coffeebodie

 

Coffeehotspringbar

 

Coffeehotspringbarchristian

 

Coffeemountain

 

Coffeemountain2

 

Coffeesnow

 

Coffeesnowchristian

 

Coffeewithmachine

 

R0x203