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.

https://www.linuxquestions.org/questions/linux-hardware-18/no-sound-modules-after-installing-mint-mate-18-a-4175593442/

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.

Hippocampus

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.

Details

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

13 Comments

  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.

  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 ! 😀

  3. Too much text, a simple drawing would have done the job, stupid blog writter ! 🙂

  4. 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?

  5. 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.

  6. That’s kind of weird that you’re complaining about Linux not working on the most closed-source platform in existence.

  7. butthurt macfaggot lel


  8. Stop using BASH, the shell is old as dirt and as a visual interface goes is pretty archaic, try zsh or fish instead.
    Use apps that use ncurses to bring a some visual appeal to the command line (htop, ncdu, calcurse, midnight commander /mc, bmon etc)
    “ranger” gets one around the file structure without to much hassle
    “tldr” gets one past the lengthy (and rarely updated) Linux man pages
    “bat” brings syntax highlighting and default enumeration to cat
    “micro” solves the wonkiness of Vim but still gives you syntax highlighting, or just use nano
    Developers aren’t focusing on HI (human interface) design principles with Linux, but speed and other concerns.
    If you have a complaint about something not being visual enough, develop an ncurse solution to fix it.
    You could have avoided this mess by using Oracle virtualbox, or just installing Homebrew for Mac
    I agree “out-of-the-box” Linux isn’t meant for humans, Linus Torivald didn’t consider this a necessity – Ian Murdock who created Debian created it as a side experiment I recall while in college

    Business loves free, the C programming language is “free”, because of C Linux was born, Make then Ant was born, and all the other stuff. C is a funky language, why Java was born, Java runs on a virtual machine with poor memory management – why Go was born, etc etc ….. so it all goes back to C, which was never considered a language to be used outside of a lab (C was developed within the labs of AT&T).

    When things are “free” you get what you get.

    Remember Beethoven and Mozart (the composers?) Rich families let them live in their mansions free and they got a salary to just write beautiful compositions, if this was done for developers your issues wouldn’t exist.

    I love Linux, but I also know it’s free, so I know it’s as good as it gets

  9. Agree. The entire software industry is broken due to Linux/Windows dominance … Stuck in 1990…

  10. This rant sounds like trolling, so of course I will bite and reply. I am a long-time Linux user and so I suffered through most of the frustrations that you describe, but I think your conclusions are quite wrong. You’re making a false dichotomy by setting off a faulty commandline-based system against an idealized, perfectly working GUI. In reality, the polished GUI systems work because e.g. Apple controls the entire environment, and makes it work. You, however, want to boot your system on multiple machines—and Linux basically tries to do that and almost succeeds, whereas MacOS or Windows would never be able to do that, without stripping the OS to bare essentials using the equivalent of MS sysprep.
    Yes, Linux is quirky, and the boot process is doubly so, what with all the different BIOS/UEFI/partitioning schemes. But it mostly works, and it gets better over time.

    Here’s what I have seen happen many times with your idealized GUI: you click a button, and it works flawlessly. You try it on a different situation, and it doesn’t, and there’s nothing you can do about it—because the symptoms are hidden behind the pretty graphic window. Easy things are super easy, but hard things are impossible.
    In contrast, on a old-style system, you can see the individual steps and their results, you can tweak them and adapt. You have a fighting change, Yes, you have to use your analytical brain, but that’s the deal: someone has to do the hard work, and unless someone else did the work for you perfectly, your visual brain is not going to help you fix your non-visual computer.

Leave a Reply

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