What would be the perfect programming environment?
I started thinking about this recently while doing some work and when I was setting up my linux box and windows notebook. The answer is obviously very subjective, and I'm sure there are many different ideas, techniques, tools, etc. that can be shared, so I figure I'd write down my thoughts about what I would like and what I use.
The first step is the hardware and having a computer is obviously a must (unless you happen to be Kintaro Oe). It is not enough anymore to work with just one platform and most of us find ourselves working with at least two if not more and usually on multiple OSs. I find it the most convienient to have two PCs running Windows and Linux individually even though dual booting is very easy easy to setup. It is just nice to be able to access both at the same time. For those with access to only one computer and still want simultaneous access to both OSs, an alternative is to use something like VMware and run virtual machines inside the primary OS, but this is more oriented towards x86 architecture. If you want to work with Mac hardware which is developing a growing programming community with OSX and its adoption of Darwin (a BSD derivative) has really made Apple an alternative then you'll either need to buy a Mac or try an hardware emulator like PearPC. Unless you plan to focuse primarily on working on a Mac, you might just want to try the small form factor Mac Mini which at $500 without a display is fairly reasonable (not quite enough for me to get one yet). I saw a few and I have to admit it is pretty darn quiet and small enough to have on your desk without it feeling it's crowding you.
I used to be a fan of large monitors (21"+), but I find my preference going towards having two smaller monitors. At work, I traded in my 20" LCD for dual 17" screens and it's great. At home, I've had two LCD monitors for a long time and it just feels better for me and it's hard for me to go back to a single monitor no matter how big. It's great to be be able to have an editor opened all the way on one screen, but still see the browser, email that's on the other screen. Use a KVM switch like the Belkin to share the display with multiple computers to save deskspace.