A collection of characters, stories, and other elements
Many devs, especially those who love Vim and Emacs, carefully fine-tune their editor, terminal, and even OS configurations so that their hands rarely leave the keyboard. Roger Peppé, Software Engineer at InfluxData, took a different path, driven by the simplicity and power of the Acme text editor and mouse chording. When Rog joined us for Dev Tool Time on November 10, 2021, he demonstrated a different model of text editing, which will seem at once familiar and strange.
You can watch the recording of this episode at the bottom of this blog post, but first let’s check out Rog’s fully standing desk setup:
Physical ergonomics guide much of Rog’s desk setup, in part due to his shoulder pain. Working at a standing desk alleviates that pain, and over time, he’s transitioned to working entirely standing at his Fully Jarvis desk, often rocking with the help of the Tic Tock Stand Balance Board for comfort during longer hours standing. When he does sit, he has a Varier Balans kneeling chair that also encourages movement.
While Rog types on a highly-regarded Realforce keyboard, his aversion to throwing away hardware has kept him using an aging 24” HP monitor with relatively low resolution, paired with a newer high-resolution monitor. He hooks all these up to a 7th Gen Lenovo Thinkpad Carbon X1 running Ubuntu.
With Acme as his primary dev environment, though, Rog needs a three button mouse, and while he’s tried the Logitech MX Master mouse, he prefers older, sturdier versions from Logitech.
The quality of mouse, and its reliability after heavy use, is important to Rog. Acme’s interaction model is focused on mouse movements, clicks, and chords (combination clicks). While Vim, Emacs, and many other editors have focused on typing, key presses, and key chords for selections, movement around the editor, and actions, Acme presents a different model of engagement–one that is, in many ways, familiar. Need to move your cursor to text in another Acme window? Just click there. Want to select text? Just drag while holding a mouse button, the way you do in so many other applications. Acme coheres with common mouse interactions. Yet, Acme is also a bit strange. Clicking with the right button doesn’t open a contextual menu; it performs a contextual search that can be used for actions like opening files, finding the next instance of a word, or running a regex search. Clicking with the center button, the click-wheel on Rog’s mouse, executes selected text.
As Rog shows, these patterns are remarkably powerful in Acme. In every window, there are sets of commands in what we might recognize as a menu or toolbars. Yet, in Acme, you can write text anywhere and that text is executable. When Rog needs a new command, he writes the script, in Go, the rc shell, or another language, and can execute it just by typing the command name and clicking. Imagine working in Google Docs, opening an edit menu, and clicking on the custom command you wrote. This is the strangeness and familiarity of Acme, which, originally part of the Plan9 operating system, indicated a different way forward from our contemporary mainstream computing practices.
For Rog, the driving benefit of Acme is its simplicity. As he notes, in Acme, everything is text and text is powerful. Any text can be executable, and you can type text almost anywhere in Acme. You aren’t constrained to toolbars or a single command line, or even the mental model of there being a narrow area of UI that’s interactive and command-focused.
You also don’t have to memorize a plethora of keybindings to make you more efficient. While many people talk about keybindings being efficient, Rog finds his mouse is just as efficient and simpler to use. Three buttons are far fewer than the keys on a keyboard and the combinations (chords) are more limited.
“People talk a lot about the keyboard being efficient, but I find … the fact that I can just go anywhere and change things, without using the keyboard, really powerful.”
There are trade-offs though, and Rog notes that there is a price to pay for simplicity. Acme doesn’t support syntax highlighting, graphics, or any sort of rich text. When asked what he might change with a magic wand, Rog mentions that making Acme work coherently with rich text would be great. He doesn’t need syntax highlighting or an LSP, but bold would be nice if it made sense.
Given his answer, we can go only guess that Acme feels like a gift that has continued to give to him year after year.
Check out the recording of the episode below, and be sure to sign up for upcoming events!