Migrated from Windows to Linux

I’m the first to admit that I’m more comfortable in a Linux environment than Windows (or MacOS for that matter). It’s the little things that add up to create a faster, better workflow for me. Virtual desktops, focus-follows-mouse and autoraising of windows, a single central mechanism for both application installation and upgrades, shallowly nested menus (rather than the deeply nested hell of Windows’s Start menu), and a file manager that actually knows how to draw a thumbnail of an SVG file. Yes, you can add a lot of these features to Windows via third-party applications, but that’s just likely to make even more of a mess of your already bulging system tray, stands a good chance of reducing your machine’s stability, and often costs money for the best apps.

So when I persuaded my boss that a load of RAM and a bigger hard drive would be a more cost-effective purchase than replacing my five-year-old PC, I also decided to take the opportunity to change my work environment to Ubuntu.

Before I go on, it’s worth explaining what I actually do at work. I develop web applications. Actually at the moment I’m mostly developing XUL-based applications, but the workflow is the same. Most of my work consists of checking code out of CVS (yes, I know…), changing it in a text editor, viewing those changes in Firefox, and checking the code back in. All steps that can be done in Linux just as well as Windows.

The back-end code, however, is ASP and C# based, running on an IIS web server and built using Visual Studio. For my front-end work, VS is overkill, but I still need to be able to build the back-end code. And then there are the legacy web apps which only work on Internet Explorer, but which still need to be supported and occasionally updated. For all these things, I still need Windows.

My solution to this problem was to convert my existing Windows installation into a virtual machine, using VMware Convertor then run that virtual machine on a fresh Ubuntu installation using VMware Player.

My C: drive is shared and directly accessible from the Linux environment, letting me use my preferred Linux tools to modify the files on the Windows machine. The virtual machine has a bridged network card with a fixed IP that is accessible from the host machine (and still appears as my old Windows machine to the rest of the company’s network), so I can use Firefox on Ubuntu to run my XUL apps from IIS on the virtual machine. For those times when I need to use Visual Studio to build the back-end code, or when I have to work on an old bit of IE-specific code, I can access Windows via the VMware Player interface, but otherwise that just stays minimised on another virtual desktop.

I copied my Firefox profiles from the Windows machine into my Linux environment, which immediately gave me access to all my old bookmarks and history – as well as the various Firefox extensions I run. That’s just one of the advantages of the cross-platform nature of XUL. Other documents will get copied across as I need them – I’ve always used OpenOffice, Inkscape and The GIMP on my Windows box anyway, so any files I’ve created using them will be accessible using the same applications in Ubuntu.

The whole process of virtualising Windows, installing Ubuntu, downloading and building VMware Player, copying the virtual machine in place, setting up file shares and migrating data took less than a day, including a few false starts. Unfortunately my original plan to run those few Windows apps that I need via seamless RDP were thwarted by the frustrating limitation that it doesn’t work if you’re connected to a domain. 🙁

The end result of all this is that I can work faster and more efficiently, whilst still having access to the Windows-only apps I need – and all without having to reinstall Windows and lose the settings and additions that I’ve built up over the years. Plus I’ve got the advantage now that when I do eventually need to upgrade to a newer, faster machine transferring my Windows installation is as simple as copying a virtual machine file.