This is a bit of a rant about why I left Windows 2 years ago and went to Linux. To be honest this is probably mainly for my benifit than anyone else. However Linux folks might find this amusing.

Why I decided to drop Windows

So for many years I have been a big user of Microsoft software and even liked it to some extent. My main reasoning was it was the platform to be on if you wanted to play games and I made money off working with Microsoft tech in large enterprises.

Over the years though I have always had a whole bunch of issues with windows which boil down to the following:

  • To much focus on the GUI. It is becoming less of an issue now with PowerShell but Microsoft is to obsessed with the GUI. My stance is you should be able to do everything you can do in the GUI via a cli or at least an API. If you can’t do it via a cli you can’t easily automate it.

  • Microsoft never finishes anything they start. They always drop it in focus of the new next thing. Just look at their development stacks (Silverlight, modern apps).

  • Microsoft bundles to much into operating system updates. This means you could require the latest version of windows to get some new feature in HyperV or WSL. If you work for a large corporate you don’t want to update right away because it means you get all the feature updates to the ui and potential other bugs. I thought the whole point of doing operating system as a service was you could release individual parts separately, apparently not.

  • Microsoft has a really crappy set of API that doesn’t let you do everything you want. It was designed around what they needed to build a product and not what their users/ developers might need.

  • Microsoft’s new Windows App styles are a total mess. They are creating features around what type of control they want over the platform rather than what people actually want. This has been evident by the total failure of the Windows Store.

  • They started to take controls off users with their idea of Windows as a Service. I like security updates and apply them pretty quickly because I understand the importance. What I hate though is Microsoft bundling some new UI updates or new product features then forcing them on me. A perfect example was when they decided every needed to put their documents folder in one drive all of a sudden, I had Virtual Machines in there so it copied gigs of data up there. Needless to say I was not happy. It is fine to introduce new features but don’t just turn them on by default, if I want that I will turn it on myself.

  • Bundling of crapware in Windows. I really don’t like the fact they bundle junk like candy crush in Windows and have started putting ads in the operating system directly (they call them suggestions but they are ads).

  • Lack of Quality control. Some bright spark at Microsoft decided to fire the QA team and instead create the “Insiders Program” where people from the community can do the testing for them for free. Then they ignored all the feedback and let critical bugs get into the product bricking heaps of computers multiple times.

  • The telemetry is another thing that pisses me off that you can’t just disable it. I get why they want it, it lets them improve their products by seeing what users do and use. However given their other actions like putting crapware in the operating system I don’t think they can be trusted with that kind of data. If they are not selling the information to other companies now they will be eventually.

  • Windows system administration is really painful. Usually it involves using RDP to connect to some system to mess about with a gui. This is really slow and clunky and is a pain to deal with all the time. Also in a lot of companies its the only way to get into a network. So there is no way around it and its really hard to automate.

  • No decent built in package manager with most software. There are things like chocolatey and scoop which are a great additon by the community but they don’t hold a candle to Linux package managers or brew on macOS.

What kept me from jumping over to Linux

Over the years the following things kept me off Linux for the most part.

  • Visual Studio and game engine support.

  • Lack of Support for Video Games. Sure I could mess with them in wine and get some of them working but a lot of the time I don’t want to mess around, i just want to start playing.

  • Lack of support for MS office, One Note in particular.

  • No decent drivers for 3D Cards

  • I would have to invest a lot of time and effort into learning it properly when I was busy working with Microsoft tech at work.

Tipping point

I got a job with a government department who had some old legacy environment and was heavy on manual processes to the point it was really painful. I couldn’t put my finger on one thing exactly but it was like death by a thousand cuts. At the time I was doing lots of manual stuff just to do my job while also dealing with Visual Studio at home while doing a game development course.

At the time I was looking into ways to improve my workflow at home because there was no way I could do it at work. I kept butting heads with Visual Studios, it had lots of stuff you could do but its extension api was really annoying and doing simple things like attaching to a remote process and debugging was really hard to do via an automated way which just seemed like a dumb thing. I also was starting to get annoyed with how bad performance was.

I also at the time as part of my course was playing around with cmake because I liked porting games I was working on to multiple platforms and I noticed that the only platform cmake was a pain in the arse to use on was Windows because of the lack of package management.

Finally a windows feature update came through and messed up my profile by dumping my documents folder into one drive. It was the final straw, after that I decided to try out a bunch of Linux distros and see which ones I liked the work flow of.

I initially put Kubuntu on because I had liked KDE in the past and figured I should use something that wasn’t a rolling release because I was getting annoyed with rolling releases on windows.

I then gave Manjaro a go because it had better driver support for my video card in my laptop. It also gave me a chance to play with tiling window managers.

Finally I ended up on arch because it let me customize everything the way I like and leaves my settings alone.

Lessons learnt

  • Build your workflow based on how you like to work not based on what services you can buy/subscribe to.

  • Don’t let a company control how you use your computer. They will change and discontinue services on you at any moment. Just look at how often Google cancels things.

  • It is ok to use proprietary software if you need to. You can’t replace everything as much as you might like to. Other people are going to use things like zoom or skype. You are also going to run into situations where there are no free services to fill a gap i.e. Netflix, Spotify, YouTube etc.

  • Reduce notifications. Best thing to do is turn off notifications for everything. I have notifications turned on for Instant messaging apps when I am not busy but as soon as I go into deep work I set them to ignore.

  • You will never get everything perfect. Instead you can slowly make steps to improving things over time. A perfect example at the moment is I have the problem of there isn’t really any good options for phones at the moment. For the most part its a choice between locked down iOS and Privacy leaky Android. For the most part I have decided to stick with Android but I am always looking for new options.

  • When making a huge jump like I did from Windows to Linux using a bullet journal was a good option as it meant that was stable while i played with my electronic productivity.