Thursday, January 04, 2007

monitors for developers

Michael Davies recently blogged that all developers should have big screens. This news has been around for a while, the most publicity for the idea came from Microsoft Research where they did a study showing that for certain tasks a 50% performance increase could be gained from a larger monitor.

If you consider that a good software developer will get paid about $100K and it's widely regarded that in a corporate environment the entire costs for a worker (including management, office space, etc) is double their base salary then you consider each developer to be worth $200K per annum. Therefore larger and more monitors could potentially give a benefit in excess of $100K per annum (we assume that the value provided by the developer is greater than their salary - apart from the dot-com boom that's usually the case).

It's quite obvious that you can get a really great monitor configuration for significantly less than $100K and that it will remain quite current for significantly more than a year (monitor technology advances comparatively slowly so a good monitor should last at least four years).

Some time ago I researched this matter for a client. I convinced all the managers in my area, I convinced a bunch of colleagues to buy bigger monitors for their homes (and bought one myself), but unfortunately senior management saw it as a waste of money. I was trying to convince them that people who were being paid >$100,000 should be each assigned a $400 monitor. Sadly they believed that spending the equivalent of less than a day's wages per employee was not justified.

If I was in a management position I would allocate an amount of money for each developer to spend on hardware or conferences at their own discretion. I would make that amont of money a percentage of the salary of each employee, and I would also allow them to assign some of their share to a colleague if they had a good reason for it (EG if a new hire needed something expensive that would exceed their budget for the first year). I think that people who are good programmers are in the best position to judge what can best be done to improve their own productivity, and that allowing them to make their own choices is good for morale.

On a more technical level I have a problem with getting a big monitor. I do most of my work on a laptop because I travel a lot. I don't travel as much as I did while living in Europe but still do a lot of coding in many strange places. I started writing my Postal benchmark in the hotel restaurant of a Bastion hotel in Utrecht during one of the worst recorded storms in Europe (the restaurant had huge windows and it was inspirational for coding). I wrote the first version of my ZCAV benchmark in Denver airport while waiting for a friend.

What I need is a good way of moving open windows from my laptop to a big external display and then back again. I don't want to logout before moving my machine. With a Macintosh this is quite possible (I'm using a OS/X machine while working for a client and the only thing that has impressed me is the monitor support). With Linux things aren't so easy, it's supposed to be possible but I haven't heard any unqualified success stories yet.

I guess I could try setting up XDMCP between my laptop and a desktop machine with some big displays and logout before moving.

Any suggestions?


Anonymous said...

You want xrandr. The newest version, 1.2 (needed on client, server, and drivers), will allow you to extend your X session onto a new display and back off of it without reconfiguring anything. However, even the current version can switch you onto and off of an external monitor if you set it up in advance. Just set up the appropriate Virtual area, and the right set of modes to include and exclude the external monitor. When you have it set up right, you will see in xrandr's list of modes both the mode to use the internal display only, with its resolution, and the mode to use both displays, with the combined resolution. For instance, I have a 1400x1050 internal LCD and a 1680x1050 external LCD, so I see modes for 1400x1050, 1680x1050, and 3080x1050.

Praveen Kumar said...

What you are saying is absolutely true. I have experienced the improved productivity myself. I would recommend people running dual screen setup on their laptop. I am running dual screen setup where my laptop LCD runs a screen at 1024x768 and an external monitor (21") runs other screen at 1600x1200 using xinerama. It paid well so far.

Anonymous said...

I'm using "synergy" at home.
I've 2 PCs and use both with
just one keyboard/mouse, and I usually
put my laptop between both screens,
and an exit-hook of dhclient automatically
starts synergy on my laptop if I'm at home
so this third screen is just insertet
between the two others..

Anonymous said...

Because the DPI varies so greatly between displays (little high-res laptop vs. external so large that pixels are sizable), I think it's necessary to configure each monitor with its own DPI in X. This requires a multiple X screen setup, xinerama won't do.

Berge Schwebs Bjørlo said...

You could take a look at Xdmx ( It's a multihead Xinerama-like X-server. Which basically means you can connect X-servers on different machines together and have xinerama-over-network. Pretty neat. People have been using it for making seriously large screens (

Please give a shout if you get it working (-:

Lionel Porcheron said...

I have experienced xrandr (which integrates quite well with Gnome) recentely and it works well. The only drawback is when you want to switch from "extend screen" with an external monitor to "mirror screen" for a presentation: you need to edit xorg.conf actually (If I am correct). Otherwise, it works quite well.

Søren Hansen said...

You might want to take a peek at xmove. It's kind of like screen, but for X.