I have been stubbornly developing Drupal on Windows, even running Drush locally using Xampp and bugging moshe weitzman et. al. about supporting Windows. I don't think drush mmas works yet on Windows, perhaps it never will.
Recently I needed to use ffmpeg for media conversion, and although there are Windows binaries, Drupal modules did not know what to do with the Windows version. I ended up working on the dev server, which was not my usual process. Usually I work on a local version of the files and database, synchronize them with Git or SVN version control, and ultimately upload them to a development server before staging and production.
During a week hiatus between projects, I decided to set up a Linux workstation, to better match the LAMP web hosting environment.
Since then, I have installed Ubuntu as a desktop OS on a couple of cheap computers from Property Room as gifts for friends, and also when a friend's Mac had terminal kernel panic, I wiped the drive and installed Ubuntu. People who were never used to Windows found Ubuntu pretty easy to use.
Ubuntu has come a long way, and with the addition of the PHP GD image library in Ubuntu 10+, it is pretty compatible with the web hosting servers I use, in fact my last project was hosted on a server running Ubuntu.
So first thing I did was get the wubi Windows installer for Ubuntu Desktop 12.04 LTS so I could install it as a dual-boot (I'm not abandoning Windows, I'm just broadening my horizons). Why Ubuntu? Many web servers run CentOS or Red Hat Linux - I installed CentOS at VPS.net - but Ubuntu is particularly well suited for a destop operating system, and hey, Linux is as Linux does. Plus I have a friend who runs Fedora on his desktop so he gets the latest updates - and he's always crashing and patching. I used the Virtual Machine in Windows to test web sites on Internet Explorer 6 running on XP (glad we mostly don't have to do that anymore) and I'm not very interested in using Virtual Box to run two operating systems at once. I also read warnings that it's easy to accidentally restart Linux in the Virtual Box, and that can destroy your Linux system.
Each release of Ubuntu has an alliterative animal name, 12.04 is called
Next I needed to set up my machine for Drupal development, which also requires a web server, and MySQL and PHP (the "MP" in LAMP). I'm not sure what the best guide is, but the first one I followed was pretty old, and it told me Ubuntu doesn't let you create web site directories at /var/www so I had to create a symlink from /home/www to /var/www and it caused lots of problems and eventually I ditched my configuration and started over without the symlink and everything is fine. The second pass I also found an excellent post about configuring Precise Pangolin for Drupal by Laura Scott with some nice tips. I had trouble posting a thank you comment, Laura had to tweak the Mollom anti-spam settings because it was refusing everything, the shoemaker's children always go barefoot.
In short, I had to install the Apache web server (I briefly considered nginx server, but mostly my projects are hosted on Apache), PHP and MySQL. Set up a vhost (virtual host) for the localhost web address in the browser, and a database. I have been configuring vhosts and databases for some time in the Xampp Wampserver for Windows, so I already knew how it works.
Finally, I installed Drupal 7.
Now that I could code and view the web site on the local server, I had to think about some productivity tools, and other stuff I was used to on Windows.
I didn't take naturally to BASH commands in the terminal - but that is how I installed and configured most of the stuff. Lately I am used to using the terminal more and more on projects, particularly for Drush. On CentOS I was used to using rpm and yum package managers - and I looked for them in Ubuntu but I found out that Debian Linux uses apt-get. It no longer uses synaptics by default, I could have installed it but since I wasn't used to synaptics I didn't miss it. I installed something called apt-fast too. It still scares me to type in a line of text and watch volumes of messages scroll by while the system does its stuff; but using the package manager it's also easy to uninstall and roll back, as I had to do with my first botched server config. I installed the Guake terminal since people seem to like it, but personally I prefer the default Ubuntu terminal.
I installed a Linux port of the PuTTY SSH and Telnet app, it's familiar to me and I have configurations for various servers already saved in my Windows PuTTY. Also I installed Filezilla ftp, and I easily exported my Filezilla settings from Windows and imported them to Ubuntu.
I remember trying to configure the Evolt email app that used to come with Ubuntu, and ditching it for Thunderbird; thankfully Thunderbird now comes as the default email client for Ubuntu. Since meebo is ending its web-based IM client, I have been using another Mozilla app for instant messaging, Instantbird. I was able to download it from their website (it's not an "official" Debian package). Although Adobe Air is not supporting Linux anymore, I found a recipe to install it, so I could add Tweetdeck. I tried out the Hotot Twitter client, but it didn't seem to update, and I found new messages on TweetCaster on my phone that weren't in Hotot. I also added the HootSuite app in Chromium, but it intimidates me with its breadth. I added Dropbox, and Xchat for IRC.
I started out using Firefox, my primary web browser on Windows, but it is even worse at hogging memory and slowing down on Linux, so I switched to Chromium, the Debian flavor of Google's Chrome browser. I was glad to find most of my Firefox web development tools extensions have Chrome versions, like MeasureIt, Web Developer, and even the Xmarks bookmarks/session extension that synchronizes multiple browsers (it used to be Foxmarks but now it works in Chrome too). And by default Chrome has a DOM and CSS inspector like the Firefox Firebug addon. I also added the Buffer extension which I have been using to schedule posts sharing links to Twitter, Facebook and LinkedIn since I joined Empire Avenue about a month ago and ramped up my social media presence.
I use Keepass to manage my passwords. I don't trust cloud-based password managers, and prefer local storage. I can synchronize my Keepass database on my laptop, phone, and also on a USB stick. It took me a while to find the Windows filesystem (tucked nonchalantly under "host" in the Ubuntu filemanager Nautilus) and now I am using the same database as the Windows application for Keepass in Ubuntu - not a synched one, the same file.
I know some people complain about the Unity desktop, but it's okay with me. I broke it, losing the menubar and launcher, but then I fixed it. I like the Docky ribbon for launching apps. Funny, because I always found "the ribbon" on Macs to be annoying.
For screenshots, I looked for an app like the Windows snipping tool I use so frequently. First I installed KSnapshot; then I found ScreenCloud that (optionally) uploads the captures to the web so you can send someone a link. I used that the first day to show Laura the problems I was having commenting and contacting her through her web site. Also, the Gimp image editor, good enough for a web developer. If you want to make fancy shadows on your wireframes in Photoshop, give me a flat image I can look at.
The one app I haven't found yet is a simple - AND FREE - time tracker/invoice generator. I have been using John Wu's Ora Time and Expense Adobe Air app for a few years, it's very simple. I don't need Quickbooks or anything like that. I just want to enter task descriptions and times by client/project and Ora is perfect for that. Although I installed Adobe Air on Ubuntu, I was unable to use the web-based Ora installer. Like my passwords, I would prefer to have a local app, not in the cloud. I just haven't found one yet, I tried out a couple of Chrome plugins which either didn't work or were too complicated for me to figure out. Like I said, I want to KISS. Recommendations welcome.
Well, now that I'm all set up, I will probably be using a Windows desktop for the next month because my current client has their system pretty locked down with firewalls. But I know that whenever I want, my Linux laptop is ready - and Windows 7 is just a reboot away.