Microsoft is yesterday
My first steps into programming were tinkering with ASP and Access (later replaced with MSSQL), and for many many years I’ve played only on the Microsoft playground. Although I never upgraded to .NET as a programmer, I kept working in Microsoft environments and remained skeptical about anything that was on the other side of the fence, just like a typical MS fanboy would.
I started deploying Windows based VPS instances, manage AD installations and working with all kinds of Sharepoint and other MS stuff. While I did evolve an open mind about other things, I never took the time to go and explore by myself. I always had somebody that would take care about that non-MS installations and I never bothered looking under the hood.
One day though I set on that journey. I picked the easy way, out of pure curiosity, downloaded an Ubuntu desktop image and created a virtual machine. I was not impressed. Honestly, my distorted expectations were so high that when the clean and sleek desktop booted up I sad ‘that is it?’.
Months later I decided it is time to jump on the wild horse and tame the ultimate goal – the server. It is hard when you start blank. No GUI (just as any MS fanboy would think), you have to go and Google for everything, and absolutely no proper background in managing something like this means everything takes at least 10 times more time than it should. I again picked the Ubuntu distro because I was familiar with the immense reputation the Debian community has and I wanted to play with the latest toys. But Debian was just a little bit to conservative for my taste, and to be honest, the Debian community is notoriously allergic to greenhorns.
Fast forward a year or two – only Ubuntu, only nginx, only MySQL or some NoSQL. The most valid decision I took was to stick with the newest toys and not even trying to work with Apache by skipping immediately to nginx. That was the best decision I made in this journey. I honestly don’t remember when was the last time I setup a Windows machine for work.
When I step back and take away the excitement about learning something new and think about the possibilities that come out of it, I’m baffled. The feeling can be explained by imagining playing in your playground with your toys and thinking you’re right there on the edge of the coolest and best toys there are. Then another kid comes and puts out his own toys and you immediately drop everything from your hands, stare in amazement for a couple of seconds and run to your mom crying about how your toys are rubbish.
For me everything comes down to dead weight. And Windows systems are like bringing a tanker to a sailing contest. IIS evolved very nicely in the last couple of years but when comparing with the simplicity and efficiency of nginx working in tandem with PHP-FPM or anything else (node.js for example), you are simply left without options. Yes, we can argue about benchmarks and performance and stuff, but my point is what can be done with 512MB RAM. On Windows systems – not much (Microsoft does not recommend running Windows on less than 512MB RAM, but even AWS does not support Windows on micro instances).
And when you add scalability, everything becomes a no-brainer.
I feel so sorry for not embarking on that journey sooner, but I’m extremely happy I eventually did. 2 years of using Ubuntu on my laptop and getting ready to switch on the main desktop, pushing Windows to a second place in the bootloader (due to stupid companies developing Windows only software – and I’m not talking about games). I’m not thrashing Windows because I think it is no good. Win7 is the best OS and Win8 has an amazingly small footprint. It is that the big picture has very much changed.
On servers, the story is a fairy tale. The immense simplicity and lightning speed of deploying new instances and fitting it in an existing orchestra of other servers – priceless. I’m sure many will say the same about other Linux distros. And that single Windows VPS that exists due to pure legacy is such a pain to maintain that I’m thinking of doing whatever it takes to migrate services. That’s how far Microsoft went on the server side.
What about the desktop?
— Miran Hojnik (@mhojnik) February 19, 2013