Choose and configure your software wisely in order to protect your mind from unnecessary burden. Unfortunately, a lot of applications and default installations force functionality upon you which are simply not worth the effort. This article gives some examples on how to get rid of them for good. It is mostly useful for advanced users and software developers to get some fresh ideas.
I started using Linux way back in the 1990s. I physically went into a computer shop, asked for Linux, and left again with a copy of SUSE Linux 5.3 consisting of a few CD-ROMs. At this time, the problem was missing hardware support. Otherwise things were fine with hardly any bugs.
Back then, software was showing you the underlying concepts and inner workings. For instance, I was using the mail client of KDE. Whenever it was communicating with a mail server, it would show the POP commands it sent in its status bar. On one hand, this was educational as you learned something about how sending mails actually works. On the other hand, it allowed one to better deal with problems.
Something sinister is happening since about 2010. Status bars no longer show commands sent accross the wire in an educational way. Heck, status bars have disappeared entirely and scroll bars along with them. Repeated UI design changes force one to relearn muscle memory again and again. Sometimes UI design changes hide or even remove important features. Software becomes more and more unreliable. Generally, the tendency for applications to hide the underlying concepts and mechanisms keeps increasing. Technologies such as HTML and HTTP are mindlessly changed while their fundamentals get forgotten. Hidden features get introduced and security issues with them due to the user's unawareness.
All of this forces one to learn and constantly relearn irrelevant things. One needs to keep much more in mind than is actually required to achieve the task at hand. This article walks through a few examples on how you can reduce the load on your mind. If you are a software developer, the examples might be directly useful to you. If not, this article might at least show you a little bit that many problems you experience with software are not due to your inability but rather because you, as a user, ecourage or even pay software developers to go into the wrong direction.
This section touches on several examples of how you free your mind of irrelevant issues. Each of these examples may get their own dedicated article in the future.
To write small or large documents or even letters, you might consider to use an office application such as Libreoffice or, god forbid, Microsoft Office. While these applications do know the concepts of document structure, they discourage you from using them: They have many buttons in their toolbars where you can select family, size, weight, and colour of the font but they have just one drop down in the toolbar where you can select from the actual concepts that describe the document structure such as chapters, sections, and titles.
Instead of using an office suite, you could use HTML, Docbook, or LaTeX. All of those encourage or even force you to work with the concepts of document structure. Especially LaTeX will make your life much easier when writing large documents or letters which you intend to print or share as PDF.
Virtual machines nowadays are subject to layers upon layers of management systems such as Libvirt which come with all sorts of problems. But these things are not actually needed except in large installations. On Linux, start your VM with a single command using QEMU. Run this as service from your service manager such as the highly touted systemd, which allows you to configure, start, and stop it just like any other service running on the system.
In the VM itself, a whole operating system including kernel and boot loader is installed. This makes it unnecessarily complicated to create the VM. You don't need that if your VM and your virtualization host are both Linux. QEMU is perfectly capable of loading a Linux kernel from the host's file system. This means no boot loader, no boot partition, and no partitions at all.
For networking, simply set up a bridge and tap interfaces with a
static configuration on the host. Writing an
/etc/network/interfaces
is all it takes.
Use E-Mail. It just works. It is widely implemented: It can be used on all operating systems and on all mobile or non-mobile devices. It is non-disturbing: You decide when to read your mail while still being able to set up alerts at your choice.
I do prefer the mail client Mutt myself. It runs in the terminal and its UI is not going to change anymore. It is configured via text files. For instance, configuring encryption in Mutt actually makes sense. Any other mail clients I have ever seen do not make any sense when it comes to encryption.
The version control system Git is the perfect example of software that lets you directly operate on its internal data structure. Version control denotes a system to store the history of changes made to documents (text files or other), to restore old versions, to inspect differences between versions, and to allow several people to work on the same document at the same time. Git is one of many implementations of version control.
Internally, Git stores each version of your files as a complete tree of directories and file contents as part of a commit. Each commit includes a reference to the preceding commit, which includes all directories and files of that preceding version and also a reference to its own preceding commit. A commit can even include a refence to multiple preceding commits. Such a commit is called merge commit and brings together multiple commits by different users into one, combining the changes the users made.
The data structure formed by the commits is known as a directed graph. This is well reasearched data structure in theoretical computer science. It is also easily visualizable. Each operation that Git allows directly acts on this data structure:
git commit
git merge
git push
git fetch
git rebase
In case of Microsoft Windows, install it yourself, don't use the version preinstalled by the manufacturer of your computer. Do not attach your installation to a Microsoft account. If the installer tries to force you to create one, you can trick it to skip that step. Only install the software you really need. If you plan on gaming or are security concious, deactivate redundant services running in the backround. Then, Microsoft Windows is usable to some degree.
Do not use anything from Apple. People I know using it always have problems with the hard- and software. It looks ugly and is unintuitive to use. It is far too expensive for what it offers. It has a tendency to hide from you the underlying mechanisms, probably even more than Windows does.
On Linux, use a tiling window manager such as i3 or XMonad. Use SysVinit or an even more minimal init instead of systemd. Prevent D-Bus, PolicyKit, and the NetworkManager from ever being installed. Use the logical volume manager only if you really need it. You can do full-disk encryption without it. Opt for static configuration when in doubt. Alsa is good enough, you don't need PulseAudio. Following this advice, you get a rock-stable, flexible, and intuitive operating system, much unlike Microsoft and Apple could ever do.
Setting up and mantaining servers has become unnecessarily complicated. Heck, it seems no longer possible to set up a minimal Debian Linux server without anything breaking right after installation and without anything unnecesary running. Often, a freshly installed system behaves as follows:
/etc/fstab
only has a single entry.
Here is a suggestion:
/etc/fstab
.
Skip all the fancy nicknack. No JavaScript, no cookies. Just leave it. As an extension, don't import any client-side analytics tools such as Google Analytics. Your server produces log files. You can analyze these with separate software.
Use HTML and its elements according to their meaning.
Avoid nesting stuff in div
elements: CSS is
advanced enough nowadays to not require this.
If you are a software developer yourself, consider these hints:
It turns out that it is possible to make your life much easier and to relieve your mind of irrelevant information and tasks by choosing the right products. This requires more work from your side upfront but will effectively reduce your workload in the long term.
You making the right choices will also make it more likely for individual developers and whole institutions to make their products less cumbersome in the future.