Trying out Emacs

30 Aug 2020 - Monte Fischer

My computing environment matters to me, and I have tended to spend a lot of time trying to configure everything to my own satisfaction. Starting in the summer of 2019, I began an experiment in adopting what is known as “the UNIX philosophy”, that is, that a program should do one thing and do it well, and that programs should be able to communicate to each other on a textual basis (piping). Luke Smith’s work has been a great help in this project. By the time I finished my thesis in July 2020, I was using vim to edit text, tmux as a terminal multiplexer, i3 (or, briefly, dwm) as a window manager, ranger to navigate files, sxhkd to bind keys, and the list could go on. I still used Thunderbird for email – getting mutt to work with offlineimap and gmail proved to be too frustrating to convince me to switch. This setup worked rather well – I managed to get a master’s degree using a used Thinkpad X220 to write my thesis (LaTeX) and do all my coding (Python, heavily using Pytorch) with this modular setup.

However, there were a few wrinkles that kept bothering me. First, that all the time spent configuring things to get them “just right” did not make me better at setting up new tools, since any new tool that I added was almost certain to have an internal logic all of its own that might share some default keybindings with the other programs I was using, but that often imposed a cognitive burden all of its own. Compare configuring i3config, muttrc, vimrc, bashrc, tmux.conf, ranger, etc – they are all different! Something like LARBS, Luke Smith’s configuration, works quite well out of the box (thanks to the investment that Luke has made in learning his chosen stack), but so does a “standard” desktop environment like XFCE, Cinnamon, or GNOME. Choosing to roll your own de-facto desktop environment from a basic tiling window manager plus many separate utilities represents a shallow investment across many tools / languages / conceptual frameworks which does not appeal to me very much. The upside is that things can work more-or-less exactly how you would like them to, until you run into a nitpick that could gobble many, many hours of time with very little, or negative, ROI. I ran into this trap many, many times. The main point: Learning how to glue together many conflicting configurations is not intellectually rewarding. Obviously this is a personal preference, but I suspect that most people with a substantial education in or taste for mathematics would agree. This kind of system configuration is something I might be happy to do for money or practical purposes, but not for my own personal enjoyment and enlightenment. It is easier and more rewarding to read an old book.

I recently came across Xah Lee’s website, specifically some of his articles and videos about ergonomic keybindings and computer configuration. His criticism of tiling window managers shook me out of a soft dogmatism I had acquired about the superiority of my chosen system configuration. I tried some parts of the challenge Xah proposed in the article. For the past few weeks I have been using the xfce4 desktop environment with a single workspace, and bound my numpad keys to activate my most commonly-used programs. I found this to be a surprisingly freeing and pleasant experience. One unusual thing I did was bind some keys (like numpad 1,4,5, Mod4+n, Mod4+r) to activate my terminal (running tmux) and send a sequence of keys with xdotool to switch to a particular tmux session (this website, a scratchpad, a to-do list, the newsboat RSS reader, ranger). This setup is fairly functional, and I have been able to use it productively.

Yesterday, I returned to a video by Protesilaos Stavrou about switching to Emacs from a tiling window manager + tmux + vim setup, like I had been using. Prot is one of the most articulate and reasonable public personas in this space, and when I discovered his videos some months ago I was definitely impressed. I decided to stick with what I had for the purpose of finishing my thesis on time. Back then, what I needed was a reliable and coherent text editor, and vim fits that bill wonderfully. Today, I am interested in a coherent, integrated, and extensible environment that I can use to do things like

And so on. The key: my computing environment should be as mathematical as possible. In mathematics, notation works to encapsulate thought in an extensible way. Good notation allows its users to coherently describe what they know, and explore the boundary of current knowledge. Most importantly, good notation refers to fundamental mathematical reality. A notation that is only good for a single paper or problem is no notation at all. One’s computing environment is a kind of notation for interfacing with algorithmic / programmatic reality. A computing environment, as a product of relatively unobstructed human design, is quite a different beast than a mathematical theory. From the little I have experienced and learned about Emacs, it offers a much stronger kind of coherence than the window manager + tmux + vim approach (which should have a name, maybe WMTV)?

I have heard Emacs criticized for being bloated. A question, for those of that mind. Is this bloated?

\[\int_{\partial \Omega} \omega = \int_\Omega d \omega\]

Maybe. There are many, many “dependencies” required to parse this statement of Stokes’ Theorem. But it is also beautiful and insightful. Perhaps we should seek the same for our computing environments.

(This post written in Emacs)