This article is part of a series. For more information, see the synopsis and index of articles in this series.
My chosen desktop operating system is Windows. While it's not the greatest choice for programming, in the past decade or so it's become very stable and almost always just works. However, trying to do any programming on Windows can be like pulling teeth. You're always stuck with the mediocre Windows command line prompt, unreliable tools ported from Linux, and a nagging feeling that you should have gone with Linux or bought a Mac. But there is a solution here: virtualization.
Virtualization is a technology that allows you to simultaneously run more than one operating system. For example, you can be running Windows and inside of that you can run Linux. Or vice versa. If you have a Mac (a recent one with an x86 chip) you can run Linux or Windows on OS X (though running OS X on Windows or Linux is technically unsupported, I have heard it is possible). The operating system running natively on the computer is called the "host" operating system in virtualization parlance, and the operating system you'll be running inside it is the "guest" operating system.