Matt Gemmell

My new book CHANGER is out now!

An action-adventure novel — book one in the KESTREL series.

» Find out more

The Dao of the Shell

Productivity & Tech 5 min read

Personally, I prefer the word paradoxical, but my wife – as ever – gets closer to the truth: “You’re a ridiculous human being”.

Be that as it may, I’m a person of tensions and contradictions, particularly in my work. I used to be a software developer, and an unabashed geek. My degree is in that field. I loved to plan and build things almost as much as I enjoyed deconstructing and understanding them.

I loved technology. The thing is, the more you love technology, the more you become involved with it. And the more you become involved with it, the more you start to secretly hate it, alongside your enthusiasm. If you don’t harbour a deep-seated, conflicted, fundamental resentment for tech, well… you’re probably not a very dedicated geek.

I’m now a writer, full-time. I’ve always been a writer; I just don’t hide it anymore, and I don’t try to do anything else professionally. I’m much happier – but I still love technology. Tech lets me carry a tiny, near-perfect laptop and do my work from anywhere. Tech lets me stay in touch. Tech is my wife’s career, just as it used to be mine. I met her while we both studied for the same degree.

So, I still hate technology too, because I still use it so much. I still know how to write code, and I still do a little of that for personal automation tasks, adding functionality to this site, and that kind of thing. I still use other people’s software, and I haven’t lost the x-ray vision that comes from knowing how it all works; that odd ability to intuit how a piece of software might be doing something, and why it’s producing the behaviour that I see.

The only currency I have (and I really mean that; writing does not pay well) is focus. Elimination of distractions, and creating a state and environment where I can be creative – whatever that means – and just get some work done.

I hate tools that get in the way, even if they’re a net gain in productivity. I hate friction. I hate complexity. I hate difficulty. And I lament that so many people, who haven’t had the benefit of studying and practising an inherently complex subject, confuse those negative qualities with the mere idea of a learning curve. Sometimes, harder at first means easier later. Sometimes, intuitive means frictional. Sometimes, complex means flexible. But try telling people that.

Regularly enough, I have to log into the server that runs this site. I made it myself, virtually speaking, because… well, you never really leave the mafia, do you?

I open a terminal window, and then suddenly feel such a sense of peace as I drop into the shell.

Now, hold up there before you mansplain to me – I know what I’m about. Technically, a shell in this context is any user interface to an operating system – your graphic interface with its pointer and windows and icons is still a shell – but the term has become colloquially synonymous with what’s more properly called a command-line interface. That’s the sense in which I’m using it here.

It’s the monospaced text in a console that you see people typing into in the movies. Arcane commands, and indecipherable output. The scary computer stuff that lets you break your machine horribly if you do something wrong. That thing.

And it’s quiet – oh so blissfully calm and formless. You type commands, and things happen. It’s text, everywhere. It’s endlessly customisable, responsive, and flexible. And it sits in silent, sombre, meditative patience until you’re ready to interact. Beyond a thin veneer of apparent obscurity lies a temple for the mind. If you like.

I was compelled to really think about it recently when I resumed my seemingly endless search for an email program I can live with. I’ve never met a GUI email client I didn’t passionately detest within a week. Fussy interactions, lack of keyboard navigation and control, idiosyncratic structure and terminology, trying to do too much or too little… the genre is a minefield of thwarted hope.

Back at university, I dealt with email on the command-line. I didn’t do email, or check email, or manage my email: I dealt with it. In; read; reply or delete; out. On to the next thing. It was Enough, with a capital ‘E’. There’s not nearly enough Enough in the world today.

I’d sort of forgotten that, even though I lived in that place for years. Here’s what it looks like when you deal with email.

mutt, a command-line email program

Poor Iain. We exchanged emails like this back at university too.

This particular program is called mutt. It’s running in the default Terminal app on OS X. If you want to try it out, and you’re willing to mess around with the command-line, it’s actually pretty simple:

  1. Install homebrew. It’ll take you about a minute.

  2. Install mutt, using homebrew. I used the instructions on this page to get a version of mutt with some useful enhancements. That’ll take you another couple of minutes.

I’d advise reading the mutt manual. Amongst other things, it tells you about the huge amount of configuration you can do. If you like the colour-scheme I’m using, it’s here. I also use the Solarized Dark colour scheme for OS X’s Terminal app. You can get it here.

It’s surprising how much it does. I’m using it with Gmail, via IMAP. It has threaded messages, and quote-colouring. Signatures. It can open links in messages using whatever browser you want. It can autocomplete email addresses from OS X’s Contacts app. You can write your emails in whatever editor you prefer, whether command-line (like my beloved nano) or graphical (like my beloved BBEdit). It does a vast number of things.

But it’s also quiet. You can hide most of the stuff in the screenshot above, even. The sidebar with folders. The message list along the top. Even the status info. You can just be there, in your email.

You don’t take your fingers off the keyboard, because the mouse isn’t going to help you. Everything is customisable and configurable… or you can equally just leave it alone. The whole ethos of configuration on the shell is to set up an environment where you type less. That’s a beautiful thing. On a GUI, configuration is often just about giving you more stuff to drag a pointer over to, and then click upon.

My ageing eyes love that I can set a font and size in one place, and then use it absolutely everywhere. I love that I can pick my colours once, too, and not be subjected to the legibility preferences of an eighteen-year-old sniper with the vision of a bird of prey. Or, come to think of it, the design aesthetic of someone raised on mobile phones and reality TV, with a birth year beginning with the number 2. But I’m a grumpy old man.

There’s some potent stillness to be found in what you may – rightly enough, for the most part – think of as your computer’s dork dungeon. Those greybeard mainframe wizards of the disco era may have been working from constraints, but the beauty here was consciously designed. Something so sublimely elegant and simple that it feels inevitable.

The best tools, environments, and even states of mind for focus all share the same qualities. They’re quiet to the ear and the eye. Their practiced use conveys a mastery that belies their apparent simplicity. They inspire a sense of every requirement being ready to hand, but hidden until needed. They place the spotlight of expectation solely upon you. And they discourage you from spending any unnecessary time with them.

That is the deep truth of minimalism, and of an ordered mind, and of making-with-little. It is the perfection of removal. It is the dao of the shell.

Maybe you can find it in a place you didn’t expect. Slide the arrow-pointer off to the side somewhere out of the way, and pull the curtain aside. There’s something profound there, sitting just to the right of the command prompt.

A block cursor, patiently blinking its mantra, as it waits.