I’m a big fan of open source software, it’s a great concept. You have access to the source code of the software you use on a daily basis, so if you find something that doesn’t work, you can fix it. But what if you have no interest in writing software for your computer to work as well as you want it to?
In my rather quick conversion to using the Arduino IDE, I discovered that I can make things work much quicker using it vs interfacing with the hardware directly (Arduino has functions that hide the hardware from you). If needed, you can quickly get to the hardware and manipulate things, but for the most part, you stay in the “premade functions” land. And in this land, there are many examples to look at, and since Arduino is a standard, the examples work almost right out of the box. By Arduino being a standard, people standardize their code to it, and people with the same hardware can share code easily.
My emphasis wasn’t necessarily on the share-ability of code, it was more on the concept of sharing and of critical mass. With enough people working on a particular platform, wrinkles are ironed out and the share-ability and usability of the platform increases. As a full time developer, both at work and home, I try to iron out as many wrinkles to my development cycle as I can, on each platform that I use. At work, I use Windows, and at home, it’s Linux. It is my overall feeling that I am more productive using Windows than Linux.
That’s not to say that Linux doesn’t have a place, it is a great OS to run a server, or remote desktop on. But graphics wise, video drivers are made for Windows. Most of the time Linux is an afterthought to these companies, which isn’t a fault of Linux, it’s just the current state of things. Consumer desktops and laptops are built to run windows, so it makes sense that you’ll get the most out of them by running windows on them. The great thing about linux is that in most cases you can get your particular running in linux without a problem.
To take full advantage of the hardware and software, you’ll need good drivers. Drivers serve as an interface between the hardware of your computer (disk drives, processors, ram, etc) and the operating system (windows, linux, mac). The best drivers for windows hardware is written in windows. We cannot escape this fact, especially when it comes to graphics cards. One could argue that you can get by without the best graphics drivers, but we are talking about optimized workflow, and graphics drivers is a wrinkle that cannot be ironed out in linux.
It extends to software as well. For me, there is a set of applications that I have grown accustomed to in my workflow, that help me interface with the Windows OS better.
Find and Run Robot *
WinSplit Revolution *
Those are the main ones. With the *rd items, I can use windows with multiple desktops, can quickly move a window anywhere, can scroll any window, and can quickly execute any program without leaving the keyboard. In Linux, there is no alternative to Find and Run Robot that works as effectively. This program alone is one of the programs that I use the most in windows, since it works so quickly and easily. These tools have ironed out wrinkles of code development in windows.
There are many advantages to the Linux platform. Easy program management, updates, core stability. I will be using a linux backend in my home, but I believe for GUI things, Windows works the best.
To summarize: Computers are tools, these tools are used to do things. One typically doesn’t buy a shovel to remark on its beauty. Even though computers serve multiple functions, they are a general tool that needs to be sharpened. It makes a certain level of sense to sharpen your tool so that it can do its job the best, and in my view of running both windows and linux, I feel for a day-to-day computer, running that computer with Windows can get the computer working the best. Linux does have a place, but for me, that place is the backend, not the frontend.