I tend to write very freeform, please forgive me.

My main computer is a desktop that hit a year old last month. It contains an AMD Phenom X4 @ 3.6GHz, 4GB RAM, and an SSD (60GB, one of the OCZ ones - I wasn't picky) for the OS and programs. I've started to use VMs more often, so I'm starting to hit the memory limit, but the overclocking needs a bigger fan, which I had to install over half the RAM slots. No, really. Compile times are through the floor, though, and I might go hexa-core in the near future, depending how much the quad-cores go for on eBay.

Recently I was doing some research work with graphics cards, so I had high-end Nvidia and ATi cards in both the PCI slots, and no way to link them. It would make gamers cry. Although I downgraded one of the cards, I still get to have three monitors: an Acer 24-inch monitor in the middle, and two 19-inch Dell ones in portrait mode on the side, along with an Ergotron for the middle one that keeps my desk clutter-free. I find it easier to tell things apart by confining them to a separate screen rather than a workspace - the left one always has a shell, the right one always has compilation info and help, the middle one usually has my open files or a web browser. I don't run IM while working, because having it permanently visible would probably be a productivity nightmare!

I type dvorak on a Kinesis Advantage (the black one). It's like headphones - if you switch from the pair you got with your iPod to a high-grade audiophile set for several months, you won't notice the difference until you switch back. Typing on the Kinesis feels great now I'm used to it, and the dvorak doesn't make it any faster, only more comfortable. The mapping is done in hardware, so I don't have to go back to hunt-and-pecking qwerty when typing on a computer I've just built. I also use a Logitech Performance MX mouse that I'm ambivalent about.

Software: The machine runs Windows 7 for general use, alongside an Arch Linux VirtualBox VM that houses my development tools. I've tried setting up Windows the way I like it, but when Linux is available it doesn't seem worth it. Even if you can, I honestly recommend virtualising your development environment, especially if you use Unix-friendly tools such as Emacs or Vim - I had a bug report of my program working in 32-bit Linux but not 64-bit, and setting up the 32-bit environment took five minutes (four to install the tools and one to let Dropbox sync the files over)

I use emacs for editing. My config (there's always config) is spread over seven different files, although only a few lines are actually important: a few adjustments for dvorak, keybindings, and working with various modes. Every source file I touch on the VM gets put in a shared folder which is linked to my Dropbox account, so my files are always accessible, even when the machine isn't turned on. Dropbox is also my primary backup method - not every file I have is irreplacable, but those that are fit on my share. My secondary backup method is some DVDs I burn once a month, then store away from my house. When I'm away from home, I fire up a Medium-sized Amazon EC2 server which has most of the same programs on it.

After listing Emacs and Dropbox, I can't think of anything else that I'd call significant. I use Firefox with the Tree Style Tabs extension, which works wonders with a widescreen monitor. DisplayFusion is a wonderful little tool that gives you a taskbar on each monitor. I ran TrueCrypt over all my drives, and it's been completely transparent. Gmail holds my mail - it's the one utility I'm willing to keep on the cloud, rather than just have it there as a backup. Other than that, it's mainly programming languages and too many Unix shell utilities to list.

Before I tell you my dream setup, usesthis.com-style, let me ask you a question: Do you know of an editor or IDE that allows you to seamlessly work with files in the cloud? I'm not talking about working on a webapp, which practially requires a remote machine to work on, but one that allows you to offload any hard work (compilation or computation) somewhere else while you're working on a netbook.

It's all well and good to ask for infinite amounts of CPU and RAM, and another thing to try to get that. I dream about having twelve cores available, but as that requires both money and replacing half the parts, I stick with four, and only boot up an EC2 server when I know I'm going to have to compute something for an hour, or want to be in full-on programming mode.

Once you have enough processing power available, not every processor cycle needs to be necessary. I have an emacs hook that compiles and tests my code in the background every now and then, on the off-chance that I wanted to do it. A while back I started relying on emacs to save my files for me, too, since I realised I was saving after every line, and if I wanted to make destructive changes then I'd be in a new branch in version control. Sure, my disk activity and CPU usage are through the roof, but I've stopped waiting for things, and it's pretty damn good. Anyway, that's my dream setup: seamlessly scalable.