The Lightswitch That Might Explain a Lot About Java

John Maeda at The Laws of Simplicity has an interesting photo of a lightswitch at Sun Labs:

Lightswitch at Sun with a lot of confusing features and instructions.
Click the photo to see the original.

He writes:

I gave a talk at Sun Labs where I encountered a special light switch in one of their conference rooms. At first I thought it was some kind of silly “engineer” joke. But the light switch functions as stated for real. Does it win the award for the most confusing light switch? I bet there are other ones out there that are equally complex to use.

The lightswitch design philosophy at Sun is quite clearly reflected in Java.

35 replies on “The Lightswitch That Might Explain a Lot About Java”

After staring at it for five seconds, I got it. I wish Java were this simple. I think if you played with it a couple times, it’d become really natural. There’s a fair bit of functionality available with only a couple touches.

This lightswitch is no joke. My parents have one in their basement that you can also program to come on at certain times of the day.

Considering they can’t figure out their VCR, I’m surprised they figured it out.

Let’s see:

– Tap once (up or down) for normal on or off
– Tap twice (up or down) for full on or off
– Hold (up or down) to dim on or off
– Press special button to re-program what “normal on” means

And if you try to use it like a normal switch and hit the top for “on” and the bottom for “off”, it does what you’d expect.

Seems pretty elegant.

@Stephen: You’re right — at the “naive” level of operation, where the user has no idea that it’s not an ordinary light switch, it behaves like one and is therefor usable.

The instructions do make operating the switch seem more complicated than it actually is, which demonstrates the problems engineers sometimes have in getting an idea across to users. Your instructions are considerably clearer than the ones on the sticker.

The fact that the switch needs a sticker with these instructions in the first place is a good cue that the design needs to be reviewed. Besides, wouldn’t a common sliding dimmer switch have done the job as well?

honestly, this is a pretty great light switch.

if they’d hire stephen to write instructions, even more so.

Very nice an other couple of people repeating some thing about java they heard and think it must be true but who clearly never tried it. Java is very very simple as programming languages go look at perl or c++ for example.

@grrr: Be careful when you make assumptions about people’s programming backgrounds. When you make an assumption, you make an ass out of you and umption!

Having programmed in Java, C++ and Perl, I’ve learned to avoid those three whenever possible. I’ll admit that Java is more pleasant to develop in than C++, but for enjoyment as a coder, I’m getting more bang out of Python, Ruby, PHP and even just plain old primitive C. I think a number of other people feel the same, hence the stories you hear about Java-to-Ruby defectors, as opposed those jumping ship in the opposite direction.

There’s nothing wrong with java, if you’re an ass, you can write bad code in any language. If you’re good, you’ll code in the environment, language and framework that best fits the job. As for the lightswitch, it’s butt ugly and its instructions are more confusing than its actual use. Which tells something about the designer. I have bticino lightswitches with the same functionality but without the instructions, every one here (including a 4 year old) can use them.

While it might be simple or elegant after you have read through the instructions, it’s unreasonable that the switch doesn’t work as expected without reading the instructions. A light switch should turn a light on and off in a standard way. If it has all sorts of other cool things like hold modes or presets, those are all vastly inferior in importance to the “turn on / turn off” functionality of a light switch. I want all this functionality plus an IP address and an API on my light switches but if my mom can’t operate it when she comes over, it is a failure of a light switch.

Well, the switch is just a user interface. Let’s imagine, what great set of JAR’s it needs to function :)

I love these switches (they’re from Lutron), and use them in my home. The key point, as noted above, is that if you have no idea how it works… it just works.

They present a very small “surface area” to consider: a plate, it might rock from top to bottom, it might just click. It’s easy to figure out how to turn lights on and off.

If you made the advanced functionality more obvious, you might make the basic functionality harder to learn.

And finally, like iPods, light switches are a design element. Thank God these are minimalist. Who needs to boot Windows Vista Home Electronics and Media Device Edition 1.1 SP5 to turn a light on?

No no, there are two buttons that *look* like one button. It must have been designed by Apple.


Liking one language more than another is all well and good, but if someone finds Java to be too complicated they’re probably not cut out to be a developer. It’s a simple language with most of the complications already handled for you. I believe that was grrr’s point in referencing the other languages.

A simple up/down dimmer in which the physical position I move the switch to is directly indicative of the level of the lighting is far superior to this design in its simplicity and predictability. (For example, if it’s my first time encountering this particular switch, how do I know what the ‘preset’ is?)

Furthermore, the simple dimmer requires equal or fewer hand manipulations to achieve the desired effect in every case.

So, no, this design is not ‘elegant’. It’s a braindead reinvention of something that wasn’t broken.

Also, a dimmer switch requires no instructions — even if you’ve never encountered it before, it’s immediately understandable on sight.

Yes, this Luton switch is, in fact, exactly like most Java apps that I’ve encountered. But then again, it’s like most apps, period, because ‘simple dimmer’ thinking in app design is exceedingly rare.

@DasAlbatross: The “complicated” of which I speak when referring to programming languages is the sort of comp-lication in which one has to do a lot of setup in order to get anything done, as opposed to “complicated” as in “I don’t understand”.

Java starts off simply enough — especially when compared with its older cousin C++ — but through its evolution, picked up a lot of what I like to call “yak shaving” in which you have to do lots of setup. The individual steps are simple; the combination of simple steps turns into a complex mass.

It’s sort of like the rules about where to hang your coat in the Monty Python movie The Meaning of Life

Headmaster: All right, settle down, settle down. [He puts his papers down.] Now before I begin the lesson will those of you who are playing in the match this afternoon move your clothes down on to the lower peg immediately after lunch before you write your letter home, if you’re not getting your hair cut, unless you’ve got a younger brother who is going out this weekend as the guest of another boy, in which case collect his note before lunch, put it in your letter after you’ve had your hair cut, and make sure he moves your clothes down onto the lower peg for you. Now…

Wymer: Sir?

Headmaster: Yes, Wymer?

Wymer: My younger brother’s going out with Dibble this weekend, sir, but I’m not having my hair cut today sir, so do I move my clothes down or…

Headmaster: I do wish you’d listen, Wymer, it’s perfectly simple. If you’re not getting your hair cut, you don’t have to move your brother’s clothes down to the lower peg, you simply collect his note before lunch after you’ve done your scripture prep when you’ve written your letter home before rest, move your own clothes on to the lower peg, greet the visitors, and report to Mr Viney that you’ve had your chit signed.

Simple individual steps, overly complicated final result.

(Here’s where I found the script for the movie.)

If there were more dials it might be even more confusing.

Controls really are just:
– tap
– tap tap
– tap and hold
– (Optional) Save as preset

The sticker looks like it’s supposed to be removed after installation. It’s for the benefit of the owner of the switch.

The switch combines multiple functions in a single device. If you want a simple On/Off switch, install that instead. This adds the capability of presetting how bright you want the associated light to be when it comes on. Think of a ceiling hall light over artwork, which you don’t want flooded under normal circumstances, but can turn up to full output when vacuuming.

The alternative to this multi-function switch would be a sliding dimmer, either as a separate interface or as the only interface to the light in question.

For newcomers to the switch, it operates like any other conventional rocker switch and turns the lights on or off to the (slightly dimmed) preset value.

Meh, everyone’s having fun comparing and complaining, but really, Sun didn’t design these anyway. As Joshua said above, this is actually a standard design (if not “the” standard design). They had these in my elementary school auditorium and we fifth graders had no trouble figuring them out.

Actually, wouldn’t a normal user expect 1 tap for full on or full off? Isn’t that the way it normally works? And why IS this more elegant than an ordinary dimmer switch?

Ron: This switch allows the added functionality of setting a brightness value lower than full output. (One might argue that the owner should install a lower-wattage bulb if that’s their ultimate intention.) If 95% of the time the desired brightness is at this reduced output, then the switch provides that setting with a single tap. But then, if more brightness is desired occasionally, such as with my previous example of vacuuming or other tasks, then this switch goes to 11 (to quote Nigel Tufnel). Two taps yields the bulb’s full output when needed.

I’ll grant that the user interface for all this functionality isn’t as simple as it should be. And I’m by no means trying to defend the switch or its manufacturer (I certainly don’t have any of these myself). But if people are trying to glean the meaning of the sticker on the switch then that is my interpretation.

As for why not just using a dimmer – that requires a level of motor skills that some people simply don’t have, and even for those who do it makes turning the light on to a specific, repeated brightness level more of a task than simply whacking it once with your finger. I don’t think this switch is appropriate for every lighting application, but for those that require adjustable output it’s not a horrible compromise.

(In the future, anyone who is inclined to use something like this will probably instead use a smart-house system that does away with this kind of sub-optimal interface. Of course, they will instead be vulnerable to a whole-house BSOD, but that’s another matter :-)

This reminds me of every java program I’ve ever mistakenly downloaded, ran, and promptly deleted.

Looks like something that would be installed in some new Miami public boondoggle (except it wouldn’t work according to the directions)

…coming to a government building near you!

[…] Sun Labs lightswitch “I gave a talk at Sun Labs where I encountered a special light switch in one of their conference rooms. At first I thought it was some kind of silly “engineer” joke. But the light switch functions as stated for real.” […]

Actually … for that switch to “function as normal” in Australia, and many other countries that are not the USA – the instructions would have to be in the reverse order …
(yes – in many other parts of the world if the switch is up it is off … unless it is one of those 2 way ones with 2 switches for one light (one at each end of the room so if you go out the other door you don’t have to walk across in the dark after you turn the light off) … the only other time that up is on is if the electrician has put the switch in upside down ;-)

Comments are closed.