Why Use Linux Rather Than Windows?
A lot of rumors and talk have been swirling about bringing serious, high-end gaming to desktop Linux (Ubuntu, RedHat, etc). This is amazing.
For many developers and tech users, Linux is such a dramatically better workstation OS than Windows. Here’s why:
The Command Line (or shell)
For leisure, tablet style touch interfaces are fantastic, but for workstation use, when you are creating content, writing code, working with servers, managing lots of files, etc, command shells really cater to serious power users and are frequently superior to mouse-heavy GUIs.
For example, how do you convert an image between formats (say .png to .jpg)? The typical GUI user has to find some freeware tool and do a ton of time-intensive point-and-clicking. A good command line user can do this with a simple one-line command that easy to run on a batch of files. Same thing goes for extracting a clip from a video file or resizing an image or many other common workstation tasks.
Windows is really designed for point-and-click. The cme.exe command shell is extremely basic and primitive next to the stuff you find on Linux or even Mac OS X. Windows has weaker support for I/O piping and weaker support for soft-links (aliases). You can get an add-on shell for Windows, and Microsoft tried to build their own power user friendly tool with Microsoft PowerShell, but they just aren’t as good as using Linux.
Linux is really designed with serious command line operation in mind. It defaults with the decent Bash shell, but you can easily use nicer shells like Z shell (zsh) which offers useful features like integration with Git source control. Speaking of Git, the major Windows port of Git, msysgit, comes with its own Bash shell, since there are some tasks you can’t do through regular Windows command shell.
Central Software Repository
Windows users get a lot of their software via finding it on the web, and manually installing and managing. Sometimes this is adequate, but other times it’s problematic. Some apps have cross product dependencies, like you can download a Python app or tool that on Windows needs to be semi-manually configured with the correct Python installation. Linux, makes this kind of thing much easier. Also, Windows manual installs run the risk of install/uninstall bugs, compatibility issues, unnecessary background tasks, ad-ware, mal-ware, and crap-ware. For example, once I installed a game on my Windows system, forgot about it, and months later realized that it had an auto update process running at all times, even when I never played the game, that was hogging CPU.
The Linux software repo system protects you from most of these types of issues.
Less bloat-ware and crap-ware
The typical Windows system comes with a ton of bloat/crap ware. Even if you reinstall Windows and are aggressive about minimizing crap-ware, Linux makes this easier. For example, many VPN clients, SSH tools, and even some printer/scanner drivers have annoying GUIs on Windows, while Linux has cleaner, crap-ware free support for these things.
This is the one thing Linux is currently really poor at. PC gaming is mostly synonymous with Windows gaming. Web browser games, Flash games, Java games (Minecraft/Wakfu), and some Google Chrome NaCl games work natively on Linux, and the occasional rare C-based game has a Linux port, but everything else requires some type of emulation layer to run, which sometimes works well, but can also be troublesome and hinder performance.
Currently, if you are a serious gamer, Linux is a poor choice, but this may actually start to turn around.
Microsoft Only Productivity Tools
A lot of people are dependent on Microsoft office (Word/Excel/PowerPoint) or Microsoft dev tools. If you are a die hard Microsoft fan, you really should stick to a Microsoft OS. However, I’d argue that there are much superior products:
- Microsoft Word: If you can get passed the initial learning curve, markup-based tools are far superior. WYSIWYG products like Word and LibreOffice are clumsy and sloppy in comparison. Think about this: serious web designers universally scoff at point-and-click web page creation tools and insist on hand-coding HTML for precise control and beautiful output. It’s the same thing with documents. If you want your documents to look better than everyone else’s or you have a technical mindset and want a more logical (and completely free) document writing tool, this is really worth trying out. Personally, I am a fan of LaTeX. Try googling for LaTeX output if you want proof that these tools produce better looking output. To get started, I’d recommend installing TeX Live (expect this install to a few hours! really!) and using a light weight editor like Texmaker or something similar. Another great alternative is Sphinx which is excellent for writing for both web and print. Sphinx was originally designed to create the Python documentation.
- Microsoft Excel: Google Docs does everything most people use Excel for in a much better fashion. If you really need an offline tool, LibreOffice is completely adequate for most purposes.
- Microsoft PowerPoint: HTML like reveal.js are very simple and look beautiful. LaTeX is also an excellent choice for making .pdf slides.
- C# and Visual Studio: Scala is a far more elegant and advanced programming language than C#.
For a simpler, easier language with the most vibrant community, Java is a great choice. I was recently comparing various NoSQL distributed data stores for work, and glance at Wikipedia to see which implementation language is popular. For IDEs, use a command line build tool like SBT (for Scala) or Gradle (for Java) along with a full IDE like IntelliJ (community edition is full featured and free) or maybe Eclipse.