Linux sucks, and there’s nothing you can do about it

Recently I started working on a startup tech business to implement some of my tech ideas. I got a work-space on campus at University of Memphis and they gave me a desk and computer to work on in a shared work-space area where other entrepreneurs are working. The computer they provided is an iMac, and it is configured to work with the campus network, and forces me to sign in using my University credentials.

In order to do my work, however, I have to have complete control over the computer to be able to install software to develop programs, so my idea was to bring an external drive with me and install a Linux distribution onto the external drive. I pulled a solid-state drive out of my desktop at home and an SSD-to-USB adapter and installed a copy of Linux Mint (which is based on Ubuntu (which is based on Debian)).

I used the iMac to install the OS, and under normal circumstances, this should be no problem. Ideally, the installer (running off of a flash drive) would run in RAM and not modify the internal drives on the iMac. Installing the OS would put the bootloader onto the external drive and put the OS installation in a separate partition after the bootloader.

Unfortunately this did not go as planned. The installer gives users the option of either installing Mint the easy way, and telling Mint to install to a specific drive, or the hard way, where the user has to know how to repartition the drive according to the needs of the OS, which requires knowing what the OS is going to do before it does it, which is a catch-22. So I picked the easy option, and I selected LVM format (Logical Volume Management) as the partition type, so that I can resize partitions easily after installing. LVM allows the user to create other partition types inside of it, which are then able to be resized easily and moved to other drives that are also formatted with LVM.

In the advanced mode, it is impossible to set the system up with LVM, as it does not allow creating partitions inside of an LVM partition.

In the easy installation mode, I selected the external drive, and Mint’s installer put the OS on the selected drive, but then it put the bootloader on the internal hard-drive on the system. It does this because the internal drives are marked as “bootable” (boot flag is set). The installer assumes that the user must want to dual-boot, so it replaces the internal bootloader. Since the iMac boots using EFI (or UEFI, which is newer), the bootloader is actually booted from the NVRAM, which is a special memory piece on the motherboard that boots devices and remembers the default device. The Mint installer decided to delete this NVRAM and replace it with its own information pointing to my external drive’s OS installation. The OS installation then would point to the internal drive’s bootloader partition. The bootloader would then let me choose which OS to boot.

Installer actions:

  • Overwrote NVME
  • Overwrote bootloader on internal drive
  • Pointed NVME to external drive
  • Pointed external drive back to internal drive’s bootloader

The dysfunctional configuration:

NVME --> external drive --> internal drive

This is *incredibly* stupid as a default. I reported this to Linux Mint on their forums, but Mint can’t fix this, because they rely on Ubuntu to provide the installer code, so this has to be reported again to Ubuntu, but they might not even fix it, even though it is an obvious logic error that has an easy fix.

Boot flag work-around

The internal drive can be set to “unbootable” during installation as a work-around for this installer bug. To do this, open up GParted and change the flags before installing. After installing, reboot into the Linux Live CD (or installed OS) and change the flags back.

Fixing the University’s Computer

I was unable to fix the University’s computer on my own. After several hours of research, the only fix to restore the NVRAM and bootloader involved logging in as an admin on the MacOS installation and running the “Startup disk” selection program and clicking on the internal drive to repair it. It requires administrator privileges. The only other option was to re-install the operating system, and this meant giving it back to the tech people, who would take 2 weeks to figure out a 2 minute problem and then probably still re-install MacOS.

Most operating systems allow users to fix bootloaders by running a tool from an installer CD or USB drive. There is no such tool for MacOS.

Luckily, I managed to get someone who knew the admin password to help me fix the computer.

After Installation

After installation, Linux Mint seemed pretty good. I have tried many other distros and had many issues after installing. Mint seemed to avoid most of them, but a few major ones showed up.

First, Mint was unable to install certain programs from the App store (Software manager) including Discord and another program, due to a missing software package that these two programs relied on. Later on this problem went away (I can’t remember why), but this was a problem out of the box.

The other major problem is the drivers. I intended to use this SSD on a few different computers, including my home desktop and my laptop, so that I can maintain a consistent development environment across different machines. Unfortunately, the drivers for hardware on several of the machines are missing or broken.

WiFi on Macbook Air 2013

The first I noticed was the WiFi driver on my laptop (Macbook Air mid-2013). Because of this, I cannot use Mint on the laptop at all. The internet is so integral to programming that this is a real problem.

Sound card on iMac

The sound card on the iMac also was (and is) not working. After doing some research on the issue, it has no known fix. The other reports of the same problem have different symptoms reported by the system programs used to diagnose the problem.

From the research, it becomes apparent that nobody knows what they’re doing, and fixing the problem is a mixture of political red tape, lack of responsibility, and technical incompetence.

What the real problem is

There are two real problems here:

Too many options!

First, there are too many options for how to debug the problem, and none of them are simple. Linux breaks the UNIX manifesto: “Do one thing, and do it well, and make things work together”. Debugging a problem in Linux requires users to research too much. The commands that are relevant for debugging the problems do not do one thing and do one thing well. There are too many options for how to approach solving the problem. This is a fundamental design flaw in modern UNIXy operating systems and should be a warning to future OS designers on what not to do as a developer.

Too much reading!

The other problem is that Linux’s debugging process is command-based. Tools on the command line are terribly inconsistent in their interfaces. The syntax for using the tools is unintuitive and finicky, and the presentation of information is typically organized according to the mental handicaps of the developer and is often overloaded with details that are irrelevant to the user. This requires users to memorize commands, instead of providing a way to debug configuration problems by exploring and inspecting a visual representation of the system’s configuration. While the terminal is a uniform interface, the languages and syntaxes of the programs within them are very inconsistent and require too much reading to be used efficiently.

General principle: Linux is not brain-friendly

The general principle behind “Too many options” is that Linux is not compatible with how the brain learns to do things. Likewise, the general principle behind “Too much reading” is a combination of “too much memorization” and “too many irrelevant details”. The UNIXy command lines are hard on the brain’s auditory cortex, temporal lobes, hippocampus, and prefrontal cortex (PFC), and they do not make use of the visual cortex efficiently.

What do these pieces of the brain do? From Wikipedia:

The auditory cortex is the part of the temporal lobe that processes auditory information in humans and many other vertebrates. It is a part of the auditory system, performing basic and higher functions in hearing, such as possible relations to language switching.

The temporal lobe consists of structures that are vital for declarative or long-term memory.

Auditory Cortex

The temporal lobe is involved in processing sensory input into derived meanings for the appropriate retention of visual memory, language comprehension, and emotion association.

Temporal Lobe

The hippocampus (from the Greek ἱππόκαμπος, “seahorse”) is a major component of the brain of humans and other vertebrates. Humans and other mammals have two hippocampi, one in each side of the brain. The hippocampus is part of the limbic system, and plays important roles in the consolidation of information from short-term memory to long-term memory, and in spatial memory that enables navigation.


The Visual cortex is powerful

The visual cortex is the strongest part of the brain for processing data. For example, the use of videos, demonstrations, and diagrams are very effective teaching tools, and the world around us is full of visual stimuli that must be processed quickly and efficiently in order to respond quickly and orient ourselves in a complex environment. The only way to do this is with vision. A simple test: walk outside and close your eyes, and try to find your way around for a few hours. It is incredibly slow and error prone.

Vision is much more powerful than other senses:

In the brain itself, neurons devoted to visual processing number in the hundreds of millions and take up about 30 percent of the cortex, as compared with 8 percent for touch and just 3 percent for hearing.

The Vision Thing: Mainly in the Brain, Discover Magazine

The UNIX command line and most programming languages are ineffective and slow tools, because they do not make use of the brain’s ability to process visual inputs quickly in parallel and contextualize large amounts of details into a cohesive idea. The visual cortex is the largest part of the human brain, occupying almost 1/3 of the mass of the brain. Humans evolved to process visual stimuli with massive parallel processing, so it is inefficient to have to sit and read one character at a time or even one word at a time. This bottleneck is partly why GUI’s were invented.

So, the next time you pop open your command line or a text editor, ask yourself, “do I want to use 3% of my brain or 30%?”.

Linux programmers are stupid

Because of the Linux community’s inability to grasp these basic psychological concepts, Linux will forever be crap. Linux programmers are so smart that they are in fact stupid. While they sit and worry about every detail of their software’s architecture, they ignore the brain’s architecture and its limitations and abilities.


  • Operating System: Linux Mint 19.2 Cinnamon
  • Cinnamon Version: 4.2.4
  • Linux Kernel: 4.15.0-66-generic

28 thoughts on “Linux sucks, and there’s nothing you can do about it”

  1. Every problem in this post is entirely your fault. Carrying around a bootable SSD that you plug into multiple machines is a terrible idea, and if you’re trying to do something fancy, you shouldn’t rely on handholding-tier Linux distros. You very clearly don’t know what you’re doing (you can’t get wifi working on a Macbook Air 2013 — just install the broadcom drivers lmao) and you Google random details to look like an expert on a topic you don’t know anything about. Then you bring in some nonsense about the brain (completely irrelevant — more grandstanding) to claim GUI supremacy over a command line (because you’ve never found a decent use case for bash scripting).

    Stick to video games and schoolwork. Leave the discussion on operating system engineering to people who aren’t just tourists.

    1. First, carrying around a bootable SSD to use on multiple machines is an excellent idea. This is the ideal use case for a portable storage medium.

      I tried Mint based on a suggestion. I was considering Arch Linux but decided not to use it because it is rolling release, and I got sick of reinstalling when it broke my system’s state with its updates.

      “You clearly don’t know what you’re doing.” I have plenty of general purpose knowledge. The only problem here is mapping it onto a specific distro’s implementation. “Can’t get wifi working on a Macbook Air just install blah blah shit blah lmao”. No, you need WiFi on a device with no Ethernet to install a driver for WiFi. Cyclical dependency much? Installing a driver from another computer is not a reproducible option. A younger me would not have that option, and probing devices and researching which kernel module to install is not a procedure I want to memorize, as it is distro-specific and inevitably will become outdated in the future. Again, you and others that think like you don’t get it: memorization of a text command is an idiot’s answer to a problem. The next time you pick up a rock and want to throw it, I want you to think what command you were supposed to give it. Computers are supposed to be indistinguishable from the objective world. They present an interface, you should not have to memorize an arbitrary string to interface with a computer: it should be self-explanatory. Strings are explicit declarative details in the brain, not implicit procedural concepts. In any human interface, the details should be interchangeable between two different instances of an interface. This is why you can apply a skin to a game or a map and still recognize its elements. As a programmer, you are designing an interface for users (downstream programmers or end-users), so quit shunting the responsibility of the details onto the user’s explicit declarative memory. Remedial learning for you:

  2. Welcome to linux world.

    You have to accept to get something not perfect, and to contribute to fix it.

    If you don’t do that, you’ll be considered as a stupid linux guy, who do not fix problems of others… As you’ve just claimed ! 😀

    1. But you are missing the point. You can’t fix something when everything you depend on drags you back down to the level of stupidity that it was designed at. It is naive to assume that you as a programmer are going to contribute every line of code, but you can make it so that transitioning your expertise to another domain of knowledge is efficient. The fact that we have to continually interface with the C language from every other language because Linus Torvalds doesn’t like the idea of updating to a more digestible, expressive, and discoverable tool set/language means we are constantly being dragged back down into the problems associated with C. It’s infectious. More accurately, it is a network-effect problem (economics concept).

  3. Quite useless read. Life sucks. So what?
    You think this complaining will fix one thing?
    Have you considered contributing?
    How much did you pay to get your specific use case supported?

    1. Have I considered contributing? Yeah plenty of times, to plenty of projects. Do I have the patience to learn their preferred combination of tools/languages and sit and decrypt their particular style of coding and navigate all the research tangents that it will inevitably send me on to memorize and validate their code? No. For free? Certainly not. There are easier ways to inflict pain on myself 🙂 Here’s a thought: if the system were simpler to navigate, then people would be more likely to contribute for free to making it better and more navigable. It’s a cyclic dependency. Shit begets shit.

  4. So you are complaining you do not know how to install linux. Quite ignorant. I installed linux myriad times with dofferent setups and never had problems like yours. If you don’t want these ‘issues’ (namely learn how tools work) then stick to mac or windows, you pay for those systems to do everything for you. Linux by big part is community efford, either you can appreciate this or go elsewhere.

    1. Actually, you’re misreading my blog post and obviously did not read it for understanding. Quite ignorant. I’ve installed Linux many times before this. Perhaps the word “bug” did not tip you off enough. Need I be more obvious?

    1. I’m too stupid to use an installer and it’s all the developers fault.
      If you needed more control over the OS instead of absolutely borking the company’s equipment with your ineptitude why didn’t you request an administrative account?
      I genuinely hope they took notice of what you did and took the appropriate action of terminating your employment

      1. You’re an actual idiot. You clearly didn’t read–and you didn’t even bother to punctuate correctly. “request an administrative account”. Hello, I’m a student at a University. It’s the programmers’ fault/s for hard-coding an idiotic assumption into the installer about where the bootloader should be installed while failing to allow me to manually specify a configuration that uses LVM. This is why I don’t trust Linux programmers and their obvious lack of concern for reasonable defaults. Case in point: NixOS is complete shit because of their refusal to set reasonable defaults. Forcing the user to spend inordinate amounts of time to circumvent red tape is no way to grow a project.

    2. OK there is an ambiguity in your sentence structure, but obviously you don’t know what platform I am writing this on.

      Yes Apple is closed-source. I’m not complaining about Linux not working on a specific closed platform. I’m complaining about the programming profession’s problem with keeping things simple for people to learn and acquire. Languages are acquired, just like natural languages. After you learn it, you think in it. I use the term discoverable alot, and none of these languages are discoverable. Linux just happens to be ground zero for this shitstorm. Linux also portrays itself as an escape path from the closed-source jungle of Windows and Apple, but it presents more complexity and uncertainty than it is worth, and its developers provide no reasonable way to manage that complexity.

  5. Pingback: New top story on Hacker News: Linux sucks, and there’s nothing you can do about it – World Best News

This site uses Akismet to reduce spam. Learn how your comment data is processed.

%d bloggers like this: