I think the author has some good points, but I disagree with the narrative they construct out of them. Anyone who ever managed to get lost in a book for a few hours will realise that monochrome non-interactive text can be just as immersive as the flashiest “place”. I’d also say that mindfulness is about being in the present, not necessarily about awareness of being in the body, so I doubt that working in the terminal makes you more mindful.
There’s plenty to criticise about the unhelpfulness of the current UIs, the failure of computers as a medium, and the attention grabbing services, but practising GUI abstinence or interactivity denial is not the answer.
I think that working on a single task at a time might be a more fruitful change, and it would take care of the browser and the Google Music complaints in one swoop.
I think what distinguishes emacs as a “place” is that it’s a completely customisable place, so one can, for instance, recreate vi(m) in it. So I would never have thought to compare emacs with google music for instance, since the latter is a very fixed place that’s very much not in my control, like a Starbucks; whereas emacs is like my own home.
Depending on how strict one is about banishing the browser, it’s possible to treat both Firefox and Chrome more or less this way and still have fast-starting browser windows. The trick is that both browsers can rapidly spawn new windows from a running instance, so if you park a minimized empty ‘master’ window for the browser off in some dark corner you can then rapidly open new windows, interact with them for however long you need them, and then close them again.
(I have a relatively complicated setup for this to make it very low-effort to go from an URL to new window, complete with Google searches on demand and various other special URL features.)
I’ve done this (for a different reason; I originally started it because I wanted to use my window manager to track open pages, which is far more effective than the browser’s pitiful tab bar) but I’ve noticed similar benefits of making the browser seem like less of a “place”.
I like the distinction of “tool” and “place”. It feels like a useful mental concept.
I can see a relation to the economics of software development. Companies want their products to be places, so they capture a slice of your attention and deepen awareness of their brand. Nvidia is an example: It is just a single part of the computer hardware, yet it comes with a GUI tool and often demands attention.
Free software can afford to become a tool. Imagine if you boot a Linux desktop and various involved projects show you a series of splash screens first: This desktop experience brought to you by systemd, dbus, dnsmasq, CUPS, NetworkManager, PulseAudio, Gnome, Mozilla Firefox, Gnome Keyring Daemon, gvfsd, and bash.
It’s an interesting dichotomy, and drastically more interesting than the same old “minimalism” tirade I was expecting from reading the title of the post.
My choice of editor went through a long journey, from vi, to vim, to emacs, to viper, to evil, back to nvi, to neovim, and currently acme. I still have a long .emacs left for my collection of org-mode files, but I am mostly live in a bunch of full-screened acme’s, one per project.
I guess I’ve just become lazier. I can still work out a string of vi commands in my head, and yank and @ the register. I can write an elisp function to do fancier stuff, with the help of the info. However, I grew fond of two-one mouse click, two-click, mouse select and write a |shellCommand, and etc. Recompile? Middle-click the compilation command. Error? Right-click the error line. File link in my notes? Right-click. I don’t think the mouse slows me down any more. There is the simplicity and purity that prevails.
Do you do much customization in acme? I’ve always had a strong bent towards very simple systems that are trivial to customize (with Smalltalk being that both for a language and environment for me), so I’ve always wanted acme to be my main general-purpose editor, but I’ve never quite been able to make it work as such.
There have been lots of little frustrations, such as the (AFAICT) truly mandatory three-button-mouse, meaning I can’t use it on my laptop; or the deliberate lack of any text formatting whatsoever, which means that while e.g. it’s possible to write an IRC client for acme, its interface is more spartan than even I would like. But the bigger deal is that I’ve found using acme effectively requires me spending a tremendous amount of time drafting my own plumbing rules, minicommands, and so on, for every single language, because the community’s just so damn small. Given that Atom, Visual Studio Code, NeoVim, and Emacs come out-of-the-box with tons of packages these days, and that it’s comparatively easier to disable all the fancy stuff in one of those than to add fancy stuff I need back to acme, and I’ve found it tough to use it for any meaningful length of time. But maybe I’m doing it wrong.
How do you handle the lack of text formatting? Is it truly a place for you, as it is (by necessity, if nothing else) in Plan 9, or is it “just” your editor? Do you find that you have built up enough of a toolbox that you’re not bothered anymore by the lack of a large community? Maybe there is such a community, but it lives somewhere odd (e.g. the 9front and acme-sac mailing list archives being solely available via 9fs, to my knowledge)?
Not gonna lie, if you feel the strong urge to customize anything, acme is definitely not for you.
I’ve been there. I had a very long .emacs file. Over the years, though, I started accepting the default more and more, until only some configs of evil and org-mode left.
That been said, I have been adding a few customizations to my acme ecosystem, too. Instead of many elisp functions, I have added a few custom plumb rules for a few compilers (nim, for one), and I have collected a few shell/awk/sed scripts. Instead of enriching my life in emacs, now I am enriching my life in the whole command line ecosystem. No, I don’t spend tremendous amount of time just for the sake of customizations. I used to write those crazy one-liners any way for my work. Now I just type those in acme instead of a terminal.
What acme gives me is a nice window system to the whole command line ecosystem. If I’m testing a module, instead of M-x compile RET myTarget (or :!make myTarget, or switch to a terminal and press up-arrow RET), I just move my mouse to the already highlighted string “make myTarget”, and middle click it. In a sense, I just use acme as a fancy terminal that has multiple windows having their own $PWD, write my command line once, and middle-click it many.
As to the mouse requirement, I am happy using the touchpad on my MacBook Pro, with ctrl, opt, cmd, for 1, 2, and 3, click.
Talking about “editing an image” instead of “going to Photoshop” is sharply contrasted by “going to Slack” to chat about things. Why aren’t we “opening a chat”?
There’s reasons, of course. Perhaps our future involves being able to use something like Netflix’s libraries without having to actually go through their UI. This would unlock a lot of stuff for power users, and those who like experimenting in UI.
Really well written, it didn’t matter much to me what the author was talking about, there’s a sort of music in the words that imparts a style of thinking.
I’m not giving up colorful text schemes or immersive experiences anytime soon, but one nice affordance of the acme scheme the author uses is that it could make coding on low-color outdoor displays (e-ink, transflective lcd, epaper) more usable.
This was a stunningly well written blog post. I disagree philosophically with many of the opinions (as a die-hard Emacs user and as someone who builds GUIs/front-ends) but very much appreciated the thoughtful sentiments. The poetic idea of Emacs as a place really stood out. This was a joy and I would gladly read and consider more opinions I disagreed with if executed with similar skill.
The other place that remains in my windowing environment is my email client. My concerns are roughly the same. There’s a lot of state, a lot of unrelated documents that end up being opened up next to each other, and a long load time.
I bet there’s some interesting thinking to be done about whether there is something in what we use these applications for that leads to this kind of behavior, and whether it could be resolved by changing how we handle the data. In a sense the whole GTD/Inbox Zero movement was about this: when you get an email, capture it by parsing in some way: transform from unstructured to structured data, maybe by making a note in your to-do list and archiving the email. Your to-do list is not necessarily a place; when well-maintained it’s something you can summon up when you need it and dismiss when you’re done. Of course, if handled poorly, your to-do list can become another place, an entity that sticks around keeps its own state and requires you to come to it
I’m implementing GTD fully since a couple of months. My browser tabs went down from 50+ to <10 - and all related to the current tasks. After evaluating how I used browser tabs - it was a mess. Things I wanted to perhaps read later, things I might want to reference later & things related to what I am doing now. Now, I constantly close tabs either by filling them as a TODO in taskwarrior with notes & annotations (things I need to do later), adding them to my calendar (deadlined events) or just filling into my archives (like that nice code snippet you found and might want to use later on). I picked separate tools on purpose: taskwarrior for lists of tasks, the filesystem for archives & a dead tree a5 daily calendar for calendaring. Having them separate means I don’t have to parse out what’s what & I now know where to look for things. It worked amazingly well at auto killing my bad tab habbit - I now get nervous if I have too many tabs open as it takes MORE mental work to filter out which tab is for what compared to a tab that gets filed into one of the existing systems.
I think the author has some good points, but I disagree with the narrative they construct out of them. Anyone who ever managed to get lost in a book for a few hours will realise that monochrome non-interactive text can be just as immersive as the flashiest “place”. I’d also say that mindfulness is about being in the present, not necessarily about awareness of being in the body, so I doubt that working in the terminal makes you more mindful.
There’s plenty to criticise about the unhelpfulness of the current UIs, the failure of computers as a medium, and the attention grabbing services, but practising GUI abstinence or interactivity denial is not the answer.
I think that working on a single task at a time might be a more fruitful change, and it would take care of the browser and the Google Music complaints in one swoop.
I think what distinguishes emacs as a “place” is that it’s a completely customisable place, so one can, for instance, recreate vi(m) in it. So I would never have thought to compare emacs with google music for instance, since the latter is a very fixed place that’s very much not in my control, like a Starbucks; whereas emacs is like my own home.
Depending on how strict one is about banishing the browser, it’s possible to treat both Firefox and Chrome more or less this way and still have fast-starting browser windows. The trick is that both browsers can rapidly spawn new windows from a running instance, so if you park a minimized empty ‘master’ window for the browser off in some dark corner you can then rapidly open new windows, interact with them for however long you need them, and then close them again.
(I have a relatively complicated setup for this to make it very low-effort to go from an URL to new window, complete with Google searches on demand and various other special URL features.)
I’ve done this (for a different reason; I originally started it because I wanted to use my window manager to track open pages, which is far more effective than the browser’s pitiful tab bar) but I’ve noticed similar benefits of making the browser seem like less of a “place”.
I like the distinction of “tool” and “place”. It feels like a useful mental concept.
I can see a relation to the economics of software development. Companies want their products to be places, so they capture a slice of your attention and deepen awareness of their brand. Nvidia is an example: It is just a single part of the computer hardware, yet it comes with a GUI tool and often demands attention.
Free software can afford to become a tool. Imagine if you boot a Linux desktop and various involved projects show you a series of splash screens first: This desktop experience brought to you by systemd, dbus, dnsmasq, CUPS, NetworkManager, PulseAudio, Gnome, Mozilla Firefox, Gnome Keyring Daemon, gvfsd, and bash.
It’s an interesting dichotomy, and drastically more interesting than the same old “minimalism” tirade I was expecting from reading the title of the post.
My choice of editor went through a long journey, from vi, to vim, to emacs, to viper, to evil, back to nvi, to neovim, and currently acme. I still have a long .emacs left for my collection of org-mode files, but I am mostly live in a bunch of full-screened acme’s, one per project.
I guess I’ve just become lazier. I can still work out a string of vi commands in my head, and yank and @ the register. I can write an elisp function to do fancier stuff, with the help of the info. However, I grew fond of two-one mouse click, two-click, mouse select and write a
|shellCommand
, and etc. Recompile? Middle-click the compilation command. Error? Right-click the error line. File link in my notes? Right-click. I don’t think the mouse slows me down any more. There is the simplicity and purity that prevails.Do you do much customization in acme? I’ve always had a strong bent towards very simple systems that are trivial to customize (with Smalltalk being that both for a language and environment for me), so I’ve always wanted acme to be my main general-purpose editor, but I’ve never quite been able to make it work as such.
There have been lots of little frustrations, such as the (AFAICT) truly mandatory three-button-mouse, meaning I can’t use it on my laptop; or the deliberate lack of any text formatting whatsoever, which means that while e.g. it’s possible to write an IRC client for acme, its interface is more spartan than even I would like. But the bigger deal is that I’ve found using acme effectively requires me spending a tremendous amount of time drafting my own plumbing rules, minicommands, and so on, for every single language, because the community’s just so damn small. Given that Atom, Visual Studio Code, NeoVim, and Emacs come out-of-the-box with tons of packages these days, and that it’s comparatively easier to disable all the fancy stuff in one of those than to add fancy stuff I need back to acme, and I’ve found it tough to use it for any meaningful length of time. But maybe I’m doing it wrong.
How do you handle the lack of text formatting? Is it truly a place for you, as it is (by necessity, if nothing else) in Plan 9, or is it “just” your editor? Do you find that you have built up enough of a toolbox that you’re not bothered anymore by the lack of a large community? Maybe there is such a community, but it lives somewhere odd (e.g. the 9front and acme-sac mailing list archives being solely available via 9fs, to my knowledge)?
Not gonna lie, if you feel the strong urge to customize anything, acme is definitely not for you.
I’ve been there. I had a very long .emacs file. Over the years, though, I started accepting the default more and more, until only some configs of evil and org-mode left.
That been said, I have been adding a few customizations to my acme ecosystem, too. Instead of many elisp functions, I have added a few custom plumb rules for a few compilers (nim, for one), and I have collected a few shell/awk/sed scripts. Instead of enriching my life in emacs, now I am enriching my life in the whole command line ecosystem. No, I don’t spend tremendous amount of time just for the sake of customizations. I used to write those crazy one-liners any way for my work. Now I just type those in acme instead of a terminal.
What acme gives me is a nice window system to the whole command line ecosystem. If I’m testing a module, instead of M-x compile RET myTarget (or :!make myTarget, or switch to a terminal and press up-arrow RET), I just move my mouse to the already highlighted string “make myTarget”, and middle click it. In a sense, I just use acme as a fancy terminal that has multiple windows having their own $PWD, write my command line once, and middle-click it many.
As to the mouse requirement, I am happy using the touchpad on my MacBook Pro, with ctrl, opt, cmd, for 1, 2, and 3, click.
happy to see your words!
I’m extremely fascinated by the place metaphor.
Talking about “editing an image” instead of “going to Photoshop” is sharply contrasted by “going to Slack” to chat about things. Why aren’t we “opening a chat”?
There’s reasons, of course. Perhaps our future involves being able to use something like Netflix’s libraries without having to actually go through their UI. This would unlock a lot of stuff for power users, and those who like experimenting in UI.
Really well written, it didn’t matter much to me what the author was talking about, there’s a sort of music in the words that imparts a style of thinking.
I’m not giving up colorful text schemes or immersive experiences anytime soon, but one nice affordance of the acme scheme the author uses is that it could make coding on low-color outdoor displays (e-ink, transflective lcd, epaper) more usable.
Yes, it got simpler to use projectors too!
This is off-topic, but do you live in Sunset Park? I live here too and was surprised by the blog name.
Anyway, great post. It’s going to take me a few reads to process but there’s a lot of interesting stuff here. Thanks.
I used to :) Now I live in Windsor Terrace. You know, I have to rep BK.
South(ish) BK represent!
This was a stunningly well written blog post. I disagree philosophically with many of the opinions (as a die-hard Emacs user and as someone who builds GUIs/front-ends) but very much appreciated the thoughtful sentiments. The poetic idea of Emacs as a place really stood out. This was a joy and I would gladly read and consider more opinions I disagreed with if executed with similar skill.
Extremely well written article - it really resonates well with me.
http://blog.zdsmith.com/posts/digital-minimalism-for-the-working-hacker.html#fn:5
I’m implementing GTD fully since a couple of months. My browser tabs went down from 50+ to <10 - and all related to the current tasks. After evaluating how I used browser tabs - it was a mess. Things I wanted to perhaps read later, things I might want to reference later & things related to what I am doing now. Now, I constantly close tabs either by filling them as a TODO in taskwarrior with notes & annotations (things I need to do later), adding them to my calendar (deadlined events) or just filling into my archives (like that nice code snippet you found and might want to use later on). I picked separate tools on purpose: taskwarrior for lists of tasks, the filesystem for archives & a dead tree a5 daily calendar for calendaring. Having them separate means I don’t have to parse out what’s what & I now know where to look for things. It worked amazingly well at auto killing my bad tab habbit - I now get nervous if I have too many tabs open as it takes MORE mental work to filter out which tab is for what compared to a tab that gets filed into one of the existing systems.
That was deep.
You’re such a great writer!