Computers are taking over the world. In particular, they're taking over the desks of many software developers around the world.

If you need more than one UN*X box, you're pretty much OK. The X11 client/server model, where your desktop is the server and the hosts displayed on it are clients, is tailor-made for the job. Windows from different hosts display on the same desktop. Apart from games and similar applications which require direct access to video memory, any X11 program can run on (almost) any X11 server. Your computer lets you control as many different computers as you like. You might keep them all in your room (maybe you like fiddling with their cables or something, or maybe the server room's full), but you "work" on just one box, and display all other boxes on it.

Even if you need to monitor the console of remote UN*X boxes, you can get by with some terminal concentrator connected to their serial ports, and appropriate (usually home-brewed) software.

Windows boxes are a different kettle of fish. A Windows box feels very lonely unless it's constantly accompanied by a real live human being. It doesn't want to display its whiney Windows error messages over a remote link, oh no. It wants to be sure a human is nearby, watching and cursing it. Stuff like Citrix might be useful for running some applications, but developers need access at administrator level, not to mention rebooting the machine every 5 minutes. Remote Administrator does an admirable job of putting distance between you and another Windows box, but it can be very annoying to use, and puts unnecessary load on the network. You cannot get a reasonable level of control over Windows by remote. (And, of course, it doesn't have a proper console, so you cannot control that by serial port...)

Yesterday my moment came, and I got a second Windows/Linux box. I now have 3 computers: a Solaris box and the 2 PCs. I don't have room for a third monitor on my (real) desk and a virtual desktop cannot support a physical monitor.

The solution? A monitor switch. Instead of connecting monitor, keyboard and mouse directly to a computer, you connect them to the switch. You also connect the switch to 2 (or more) computers' monitor, keyboard and mouse ports. The box contains advanced electronics which connect the three devices to one of the computers, letting you select which one.

These boxes are hardly new: they were being sold in the 1980s. A typical switch, back then, would work by moving a big mechanical switch to select which computer gets the display and input devices. They were large, bulky, and they worked. I hadn't seen these for years, though.

Nowadays, switches are a bit smaller (though still highly visible). You still get a push-button switch to move between the computers. But you can also use the keyboard to switch! For instance, on my switch, you hit the "Control" key twice, and all 3 keyboard LEDs start flashing. Hitting "A" (or "B", or ...) and Return connects you to that computer. So you can hide the box well away from your reach. The box handles everything quite nicely. Some image degradation occurs, but it mostly works.

The biggest disadvantage to using a switch, though, is that you still have 2 computers -- and they're both not connected! If you've got text in a window on box B, you cannot cut and paste it over to a window on box A. The user interface -- one mouse and one keyboard -- make it seem "right", but thinking about it shows you it cannot happen. As far as each box is concerned, it has its own mouse, monitor and keyboard -- and it's not sharing.

The monitor switch is an elegant summary of the situation of a software developer at the beginning of the 21st century. We're developing software for an interconnected world. We've got tons of cheap hardware, of which we never even dreamed when we started out. We transfer gigabytes of information in every conceivable shape and form. And when we want to transfer a command line between 2 boxes which are 20 cm apart, we memorize it briefly, hit "Control Control B Return", and type it in again.

Log in or register to write something here or to contact authors.