Single Image Stereograms - The Magic Eye

When I was in high school, my dad showed me a magazine ad he found that featured a random dot stereogram. I was blown away when I saw the effect, tried to figure out how it worked, and used it as geometry exercise. I even brought it to school to show in my math class.

Sisbench

Then, a few years later, these things hit the mainstream, big time. SIS images were all over the place, and books with these images starting selling well.
My friends and I wanted to do something unique with this idea, so we made the world's first RDS animation. I wrote a tool for generating the 3D effect, and Patrick a fast player to show the thing on the then very slow PCs.

Making SIS images requires a pattern image that will be repeated in vertical stripes, and a B&W depth image (where the darkness of each pixel corresponds to the distance from the viewers eye to the object - the nearer the object, the brighter the pixel).

To get the depth image, I modified the open-source raytracing software Povray to write the zbuffer to disk as a greyscale file, and then Christian took a model of the USS enterprise, made it turn in a circle, we threw away the raytracer output, and used the zbuffer frames as depth image input into the stereogram generator. Unfortunately, the result won't play on any modern computer so I can't post it here.

When it was all done, we offered it to a publisher. They required us to write a manual for it, so that it could be sold as a book instead of software (which reduced the VAT from 15% to 7%, clearly our publisher had some solid priorities), and grudgingly agreed to press 5000 units if we also promised to.... make a book, of which they would print 200,000 copies. Within a week.

We spent the next few days feverishly trying to come up with the 80 images they wanted, not paying much attention to quality. To get depth images, we spray-painted random objects (think the $2 "a day at the zoo" plastic toy kit) white and put them on a flatbed scanner. The reflection brightness depends on the distance from the glass, so this approach worked quite well. At one point I was eating a banana, and half way into it grabbed the spray can, went outside, and made the neighbors wonder if they should call someone to get us some professional help. The hidden banana picture became my favorite one in the book.

We ended up getting it done, learned something about the special treatment of "book club editions" for the purpose of author royalties (bad news, of course), but then got almost a dozen more contracts for additional books. The one with the best images, "Phantastische Photografie", sold the fewest copies, of course - 3000 or so, mostly because by the time it came out, the hype had passed.

We also did some advertising, including for the Nuremburg airport, a company that made door locks, bathroom fixtures, playing cars (company name: ASS. No kidding.) and a PR campaign for PVC, millions of copies of which ended up in an issue of the german magazine "Der Spiegel". Fun stuff.

About half way along the way I figured out a special technique to get more control over how the transition from one stripe to the next looked. The trick was to make multiple passes of each image, where we manually retouched away anything that looked ugly. The paint program we were using was marking all the changes in the alpha mask of the image. Our tool then used this information to propagate these changes to the copies of the stripe, reversing the damage the retouching did to the 3d effect.

The pictures below were all generated that way. Except for the amazon listing.. that's our first, crappy book. I can't believe these still exist.

(download)

Real-time Group Communication with Java

While I'm at it, another trip back in time...

Some time in 1995, my friend Jan told me about this obscure new programming language called "Java". He said something about about a programming contest with a million dollar in prizes.

Meanwhile, I had been kicking ideas around for making some sort of multi-medial, web-based IRC client.

We brought the two ideas together and spend the next 3 months building one of the first web-based Instant Messaging / Chat systems. It included chat, a shared whiteboard, a board game, and a survey tool. We ended up winning a $75,000 hardware prize in the contest and were invited to the JavaOne conference in San Francisco to demo our software.

This was my introduction to the SF bay area, now one of my favorite places in the world.

After the contest, I rewrote the system from scratch and tried to turn it into a business; but in the end, I just didn't have the business experience to pull it off, and ended up selling the code to Deutsche Telekom for next to nothing, and then focused on other things. But Franz and I wrote a paper about it.

(download)

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