Just getting done

The thing in software world that is unlike to others, is that you can achieve perfection at some point. You can build perfect system, that will work fast, low on memory and easy to use and extend by user. At least we can think so and proof using maths, which is the source of this feeling in IT. Generally, all the programs are models of some processes we tend to see in world surrounding us. Task managers, calendar organizers are models of organization systems. Messengers and social media are models of people communicating. There are more of those models of real life entities.

But, in fact, all the models have their issues. Mostly they are some projections that shows only some properties of process it models. So, for sure, you can't achieve perfection, because the closer you are, the less of image is left and more of real world you get. It can take lots of time and effort to implement all the features people will ever need.

“Why you are telling me this?”, you probably will ask. Well, the thing I am talking about now is: “Perfection is hard to achieve, and mostly is not required at all”.

I've switched to Windows for two weeks lately. I've been using it for different sorts of things: gaming, general web browsing, software engineering and performing some ops tasks. And after two weeks, I've switched back to Linux even though while installing Windows I made a promise to myself that I will focus on getting things done instead of making things work perfectly fast and suit me. And I did this because I wanted to keep the promise.

Windows became pretty nice platform nowadays. They offer pretty decent and performant workstation that fill most needs in computer:

But there is one thing that makes this all irrelevant for me. I do software development for web, and *nix-compillant operating systems are first-class citizens there. So, the windows system has gotten some duality of things happening around: some things worked withing windows environment and some – withing linux environment. And lots of time, I was just trying to find a good windows-native way to deal with things. For instance, I couldn't find a good way to work with ssh keys for windows that could be used by git, vscode and intellij at the same time (without using 3rd party tool PuTTY). Mostly one of things didn't work at all. And bash scripts written for linux didn't work exactly like they did in linux. And the containers in fact were running in virtual machine... which made them not that lightweight. I know about WSL, but it is like wine today: generally working, but not exactly. And WSL2 is still a virtual machine. I did pretty same thing with VirtualBox and it worked way better than official Docker for Windows.

So, Linux is in fact the way of getting things done for me. I still can do gaming, general browsing and software engineering. Yes, gaming is not that awesome on Linux, but good enough for me. For all the other tasks, I achieve more by doing in fact less.

Making conclusion, you have to understand better, which things give you most of issues and which give you more possibilities. The “easier” and more “user friendly” system may be worse choice for you if it will make your work done slower or worse quality. And there is no shame at all in using proprietary systems or even those who track you if it is really the best way of getting things done. See software selection as an investment. If you make a bad one, you may end up spending lots of time doing things that are not actually a problem for anybody.