Back to Microsoft?

I'm sure that you guys know by now that I am a HUGE Linux fanboy. But that wasn't always the case. I was once so dedicated to Microsoft that I would have bought anything they put out into the tech world. But Linux entered my life at just the right (or wrong, depending on your point of view) time. That being said, things may be changing. But first, let's talk about why I left Windows for Linux in the first place.

The Exodus

After years of sales, I decided I needed something different. I wanted a 'real' skill set that would land me a well-paying job while still being extremely rewarding. Development was it. I went with web development over software thinking it would mean for an easier transition into the world of development (spoiler alert: it worked) as a new career path. I was using Windows 8 at the time, patiently awaiting the arrival of Windows 10. I was as stoked as you could be. I even signed up for some kind of program that I didn't care about so that I could get it ASAP rather than having to wait for my actual turn to download. It's worth noting that at this point in my journey, working for Microsoft was the end game goal.

But two things happened, and perhaps, unfortunately, happened at the same time.

I had read on several forums that, if I wanted to be taken seriously as a web developer, I needed to at the very least get familiar with Linux, if not use it as my daily driver. So I downloaded Ubuntu 14.04, installed it as a dual boot option, and used both. But over the next few weeks, I found that I was using Windows 10 less and less. Windows 10 just felt slow and sluggish compared to the extremely lightweight Linux OS, and I was learning at an insane pace. Linux was just comfortable, and I was a very proud supporter of open source software. And during this 3-year span where I was so heavily dedicated to the world of Linux, I was admittedly down-right obnoxious about it. I couldn't step foot inside Best Buy without wishing that SOMEONE would ask me about antivirus software.

for those of you who don't get the joke, Linux basically never needs anti-virus software. It's practically useless.

But this was only half the equation.

Shady Practices

Windows did a lot of really shady things to get Windows 10 on as many PC's as possible. People went to bed with Windows 7/8, and woke up with 10. Productivity was lost, files were lost, things that many people depended on such as Windows Media Player were entirely gone with no recommended replacement, and this resulted in a lot of upset people. For more, look into the debacle with the "GWX" control panel and read about how that had been altered slowly over months to literally trick people into accepting an upgrade when they thought they were just closing a pop-up.

Then there was the fact that Microsoft laid off their Test division and decided to use the consumer as their guinea pigs. Now they're not alone in this, so it's nothing that by itself should be judge- worthy. But paired with the upgrade tactics and a few other practices that I'm not going to get into, it merits a mention. We actually talked about some of this stuff in our blog about Microsoft Buying Github. Now, this isn't the first time that the company had controversy, but it was the first big disappointment in the reign of their latest CEO, Satya Nadella, who had only been CEO for about six months at the time. To try and say that this was a reasonable decision by which to measure all future decisions was, I have to admit, childish and narrow minded.

A Change of Heart

So here we are, nearly 3 years later. And it honestly seems that Microsoft is trying to be a better company. After having some time to think about it, Microsoft buying Github is no surprise. They were already one of the biggest contributors, so there would be a huge issue if it were to go under. If for no other reason than selfish preservation, it made sense. But this still means that all of the other work provided by the rest of the world's developers also get to continue to use the platform they had grown so accustomed to using. But their dedication to open source software has gone much further than that.

Microsoft recently became a huge contributor to the Linux foundation, a dramatic change of heart from the Steve Ballmer days when it was referred to as a cancer by the then CEO. And since joining, they even developed their own Linux distribution (though it's not open source) to use for an added layer of security. They have also open sourced the C# language, the flagship of windows development, as well as the .NET core framework. Software for all platforms, including mobile applications, can be created using C#, all because of their decision to open source the language, and buy into the technologies that truly add value to what they want to accomplish as a company.

And things like the UWP (Universal Windows Platform) even allow me to build applications and games for the Xbox. And while we're on the subject of gaming consoles, let's talk about one other thing. Console Wars are real, but Microsoft doesn't really want it to be that way. On several occasions, they have tried to make cross-platform games happen. Even Xbox and Nintendo Switch players are able to play a few games with each other. Sony has actually been the hold-out here, not wanting to play nice.

And for anyone who says this is impossible or hard, stop. I played an online game by the name of Final Fantasy XI for YEARS, and it was on the PC, PS2, and XBOX 360 during it's lifespan, and they all used the same servers, and Final Fantasy XIV (also an online game) is on both PS4 and PC.

This new approach to innovation of working with, rather than against, their competitors has spread into other markets as well. As much as they wanted Windows 10 phone to happen, they ultimately realized that market wasn't for them. So instead of continuing to beat a dead horse, they decided to start developing for the already popular, well loved platforms of Android and Apple. We're talking true, native applications that function every bit as well as those built in Swift or Java for the respective platforms. Even the Office suite can be found on both, and there is even a Web Application version available through any browser.

For years, Java has been considered the most versatile language, at least in the respect to it running on anything with the JVM (Java Virtual Machine) installed on it. But Microsoft is catching up in that aspect as well with what they the CLR, or Common Language Runtime, that has it's own host of languages like F# and Visual Basic, all working together with C#, just like how Java can work with other JVM languages such as Scala or Kotlin. But it gets even better. When you build a C# desktop application, you can basically tell the compiler to include a single instance of the CLR with the application. This enables you to run the application on Linux or Mac OS without having to install ANY additional dependencies. Just run the app as if it were on Windows. No,w this does come with a small difference in that you have to compile the application once for each platform you want to run it on, but you still have the added benefit of using a single, unified codebase for ALL versions of your application. As a developer, this kind of forward thinking is what makes my life immeasurably easier. It's a big part of why I love working with the web. As long as I'm building in the LAMP stack, my web app will run on damn near every server that you could imagine, be it GoDaddy, BlueHost, or even a self managed VPS with Digital Ocean or AWS.

Sure, Micorosft always prefer you use their platforms over others. Edge over Chrome or Firefox, to use Windows over Mac OS, but gone are the days of Microsoft trying to 'punish' people for using other options. This is what drives innovation, and this is what has caught my attention. This is what inspires me to make myself a better, more knowledgeable, more open developer, and why I am proud to be a part of an industry that continues to push our global civilization further into the future. Microsoft wants to make the world a better place for everyone that lives on this pale blue dot we call home. I want to be a part of that.

A Learning Experience

Now, this isn't to say I'm about to ditch Linux as my daily driver for Windows 10, and I certainly will not stop using Linux completely even if I did. I will always be a LAMP stack Web Developer first, and the "L" literally stands for Linux. I will never regret my time with Linux because it's made me a better developer, a smarter computer user, and an all-around more experienced professional. Any web development work I do, at least with the LAMP stack, will always be done inside Linux. Unless of course, I decide I want to use C# for that as well, and also for some reason decide to run on a Windows Server.

Yes, I am well aware that C# web apps can run on Linux, but my OCD won't let me.

But as I look into the world of downloadable desktop software and mobile applications, the idea of having a single, unified code base built around a powerful language that is backed by one of the most influential companies in the tech industry, Microsoft is really, really starting to catch my attention and making up for what I still feel were poor business decisions. But just like I wouldn't want to be judged for a 3 year old bad idea, I should extend the same courtesy to Microsoft.