I remember sitting in the second floor of the engineering building late into the night in front of an SGI Indigo workstation during grad school. The machine was a deep purple, and the keyboard was gray, and the screen showed a terminal with a little blinking green box. I spent many nights trying to figure out how to complete work with that little prompt. And now I find myself going back there.
I’m not alone. There’s been a renewed interest in terminal-based applications. There seems to be an increased interest in the terminal as a UI again from founders. Maybe it’s from watching too many hacker movies and developing envy; or reading Dan Luu’s post on latency which proves that our faster, modern computers are slower to respond than the originals in the 1980s; but I like to think of it as a search for a simpler and more focused UI, and one without the mouse.
I started with Vimium, a hugely popular Chrome extension that enables web navigation without touching the mouse. Then, I explored the Cloudinary command-line-interface (CLI) for uploading images that I use in the blog. The last few weeks, I’ve been using Mutt as a terminal based email client, and vim to write blog posts and notes from meetings that end up in Obsidian. Each step encourages the next one; it’s a quest for greater effectiveness.
I’ve benefitted in a few ways from the journey. First, it’s much easier to focus on work. The terminal has far fewer distractions than the web, and not touching the mouse keeps me concentrated on the task at hand, more in flow.
Second, things do happen faster, the UI is quicker to load and more responsive, so the machine feels closer to you because you’re not waiting on it so much. This is very much true on email. I started to realize I’m waiting several seconds for every web page to load, and every update to roundtrip from the server.
Third, you can plunge into a vast ocean customization and configuration. For example, you can configure mutt to have some of the better features in Superhuman, like changing the to: field to bcc: when someone introduces you.
Fourth, you are more powerful and you feel it. Complex tasks take less time, because you have direct access to the functionality and you can automate and repeat things quickly, like uploading a collection of images to a server, or formatting a large collection of files.
Last, it’s like a living history lesson: it’s easy to see where many of the modern Gmail features and other modern programs originated. Rsync is the progenitor of Dropbox, for example.
There are drawbacks. The learning curve is steep, and I mean precipitous. I had to learn vim first, and then I read piles of configuration examples to get things working properly. Most of the documentation isn’t great.
I had to install many other programs to replicate web-based email’s functionality: the client, the address book look up, modern search, and then tame all of the configuration flags. Even then, the workflow can be a bit harder, especially for image pasting in email. There’s no dragging and dropping a screenshot into a terminal window.
And to stick with it, you have to want to do it. Changing any behavior requires sufficient motivation.
We’re entering a phase when most of the American workforce will have been born with a computer in their hand. User interfaces can and will become more sophisticated. Some UIs will mask complexity. Adobe Photoshop uses machine learning to outline a section of an image. Other UIs will expose more power to the end user directly. Tools like AlfredApp and Vimium already do.
And because the number of digital native users will increase there will be valuable opportunities to serve them. That’s to say nothing of the PreCambrian explosion in the number of software engineers who used to number in the hundreds of thousands but today tally in the many millions, most of whom gravitate to the terminal already.
Terminal based applications may not be for everyone, but the core ideas and the power and extensibility they offer will appear in many, many more products in the years to come.