Sunday, April 12, 2009

Computer setup

After thinking a while what to write in my first blog post I decided to talk about my computer setup at work. I often discuss this topic with other software developers, so I thought it would be nice to have my own configuration described on the web.

My setup consists of two computers, a desktop and a laptop. Apparently this is a standard combination in some software companies. The desktop is running Linux and that's where I do most of my development work. It typically has only a few applications open at any time: IDE (IntelliJ IDEA, for those curious enough), terminal and PDF viewer. I try to run as many processes as possible within the IDE, including an application server and use terminal mostly for remote sessions.

The laptop, on the other hand, runs Windows XP. To set things straight, I am not a huge Windows fan, mainly because of the poor command line. However, I really like some of Microsoft’s software, such as Outlook, which I find to be the best e-mail client out there (after experimenting with numerous other clients) and Office 2007 (especially Word and Visio). Additionally, I keep Firefox open on Windows as well, as it runs faster than on Linux.

So, now that I've covered which app runs on which machine, here is the best part: I only use a single keyboard and mouse and there is no KVM switch. This is thanks to an awesome piece of software called Synergy. It works great with the Windows-Linux combination and as of now the Mac OS support is not yet fully complete. This is a partial answer for all those who wonder why I use Linux as a desktop OS, when there is OS X. The other reason, of course, is that a Linux box is much cheaper than a comparable Mac one. Don't get me wrong, I use Mac OS at home and believe there is no better desktop OS, but in my case where the majority of my work is done inside the IDE, it doesn’t make that big of a difference. Again, the lack of proper Synergy port is a deciding factor here.

And finally we come to the last piece of the puzzle: monitors. There are total of four: the desktop is hooked up to a widescreen 22" and a 19" one. The laptop also has a 19" external monitor attached to it, in addition to its own widescreen 15.4" display.

These four screens is something for which I get most of the remarks. Some are nice comments and some are teases (“So, what’s the deal? Do you get paid by a monitor?”). My wife thinks I am a snob because of them (“How can the rest of us perform all our work with only one or two?”). Some people ask me why bother with multiple monitors when large ones became moderately affordable recently. Although I've never had a chance to work with a truly large monitor before, I think the biggest advantage of working with multiple regular ones is that you are free of window management. Namely, all the apps on any of my monitors are usually maximized and I never re-position them on the screen or move them around.

Now, let me provide some more details regarding specific application to screen allocation. The smallest screen - the laptop display, has Outlook open so that I could glance at any moment over new email (even though I would personally like to check my email less often, our development team is distributed and email is unfortunately used as a primary communication tool). Second screen is reserved for Firefox, since web is used as a reference in everyday work. Furthermore, the external widescreen monitor is a best fit for the IDE and the last fourth one is interchangeably used for terminal windows and documentation viewing.

Overall, I believe the above described setup allows me least amount of window switching and thus highest degree of productivity. To be able to work on the code, browse through APIs and read documentation at the same time as well as have visibility into e-mail inbox is my dream come true. Here is a photo, to illustrate how it all looks like: