106 comments

[ 3.5 ms ] story [ 185 ms ] thread
Interesting read, but ultimately I was left confused as to the purpose of the article. As far as I can tell it was to express the author's disdain for the modern web stack (an embarrassment for web devs, to be sure) and to advocate using vim (yawn).
While I'd heard about Plan 9 and acme from following Rob Pike's work, I didn't know about acme-colors and that it takes a different approach than the typical syntax-highlighting theme. I found it interesting enough to experiment with.
I think I mainly understand the point author tries to make: for example, it takes time to learn all of the shirtcuts in any GUI application (let's say, Slack) and become a power-user in it; so why not have a proper console interface if it's the same case for pushing buttons?

Nevertheless Slack still manages to do it badly: Cmd+Shift+K takes 3 seconds to load the list of channels for a quick jump. How's that considered usable?

It's something I generally miss: the ability to do actions using the keyboard. I think IDEA did it relatively well: their double-shift "Search everywhere" window works both fast and literally searches everything, providing something quite familiar to the console.

> it takes time to learn all of the shirtcuts in any GUI application

I'd say in most cases it takes more time to learn a console application. GUI's these days are, mostly, pretty intuitive. CLI applications are not intuitive at all.

The difference is, for me, that GUI use quickly levels out in efficiency. _If_ I have learned the CLI commands and know them well, I generally can do tasks a whole lot quicker than a GUI I know well. It just has a higher up-front cost, which may be very worth it, to not worth it at all, depending on how much you use the application.

CLI programs that have decent --help feel very intuitive to me, especially if they're designed by someone with experience using command line tools.

GUI programs can be intuitive too, but they also have their own special anti-intuitive things: meaningless icons, weird drag and drop paradigms, etc.

What I am speaking for here is not the CLI per se, but the fact that a CLI interface is generally a flat interface. That is: there's one place where you will be able access all of the commands, and as much the help for them.

A multi-tabbed configuration would be the worst counter-example of the former. On the other hand mentioning IDEA again - their config window (Cmd+,) directly allows one to search for the elements of the configuration in a flat manner. That's damn efficient.

Have you ever tried to scroll through a list of 100s of items? What if all of these items are in pop-over menu that closes if you accidentally click outside it? How much easier that is in a console though.

I would always vouch for software that is both easy to use right from the start, but neither does not hide it's functionality anymore: just the way we have moved from yellow pages on the internet arranged in a tree-like fashion for a purely flat Google interface, I would like to be able to use software in the same non-hierarchical way.

For what it's worth, you can just to Ctrl+K (and I assume Cmd+K) in Slack to quickly jump to a channel, no need for shift.
Thanks for the tip. But I am still appalled: 0.5 sec to show the dialog, 2 more seconds to load the chat window (MBP 2014). That's depressing.
I understood the purpose to be identifying "immersive" (emacs-like) programs that sick you in and trigger a mental context-switch, versus vim-like transient tools that you pick up and put down as you need them, all without leaving the mental "place" you're in. He then argues that this effect is significant and wonders how we can get less immersive software.
>As far as I can tell it was to express the author's disdain for the modern web stack

It goes into way more than that.

If by "purpose" you mean "what I get out of this", then not much. It's a rant, not some tutorial.

I think the author echos some things I've been feeling about my work environment (the desktop). There is a lot of friction that comes when each of my applications wants to be its own immersive experience. My take-away from his post is that he seems to be iterating away from those rich, colorful, and distracting interfaces to something that is kind of interface-less.

This, too, is my dream (or sorts).

- Spotify without the spotify interface. (Google Music, in his case)

- Slack without the slack interface (IRC, I guess)

- Email without the web-client or sluggish Apple mail interface.

I know there are CLI for each of those use cases. But it takes commitment to learn and get them working to your liking.

I think I'd go a little further, even: not only is there friction moving from one "immersive" application to another, there seems to be some expenditure of energy necessary to actually make the switch. Each fights in it's own way, not only to deliver on it's function but to somehow tempt you into spending ever more time with that particular application.

A console or text-based interface seems like a big equalizer; for sure it's often easier to manage a console application but it puts hard limits on how much attention these applications may siphon away. Perhaps it's easier for my attention to wander than others, but when the task at hand is particularly boring or unpleasant, I find I can waste quite a lot of time browsing through music or "catching up" on likely useless Slack conversations. Since I've moved them to a text-based interface, I do feel I am wasting time like this far less often.

This is exactly the reason why I've tried to port as much stuff as I can to my terminal. Productivity in the sense of using a program faster is a nice by-product, but preserving my attention is way more important to me. To me it seems nowadays you don't pay hard cash for things online, you pay in attention. I'm trying to get my digital experience to serve me again instead of me serving to something which I'm using.

On a sidenote: Any tips on making my digital experience less attention focused? For instance I would really like to use surf or uzbl but they don't have support for MacOS and I would still need an adblocker/ reader mode.

You mean a MUA (Mail User Agent) like outlook ?
The problem is applications. Applications, even within an environment of standardized widgets, still present a wildly disjointed experience to users. Now you throw in the infinite number of UI paradigms available with HTML/CSS/JS and you have a modern desktop that requires so much context switching between one use case and another that users who are trying to be more efficient with their computing are slammed in the face.

I believe that's why "power" users gravitate to the command line. With the command line and terminal you have a much more cohesive experience with your computing.

Jeff Raskin with the Canon Cat (http://www.canoncat.org/) and his son Aza with Enso (https://therichwebexperience.com/blog/aza_raskin/2007/01/ens...) and later with Ubiquity (https://venturebeat.com/2008/08/27/mozilla-labs-aza-raskin-t...) attempted to address this problem.

Actually, the first time I started to recognize this issue was back in 1996 when I read about David Galernter's Lifestreams (http://www.cs.yale.edu/homes/freeman/lifestreams.html).

The current state of affair;, Emacs goes quite a ways to solving this problem. Where Emacs falls down is the ability render html content and graphical content in general the way a browser does. If Emacs could render graphical content then I think it could be used to implement my ideal UI.

My ideal UI would be this:

1. Command input component similar to browser omni bars or Emacs M-X interface which parses command input and delegates to service.

2. Result of command entry is a list of 0-N items presented in a tree list view with the first item in the list selected by default. Think old Usenet UI.

3. Any item selected in 2 renders its own view. Again think of old Usenet UI. However instead of just text this item renderer can be anything. Text, graphics, embedded video, etc.

4. The resultant list of any command can, in turn, be used as input to a following command. Think Unix pipe.

The result is an interface that's a hybrid of the command line and Emacs M-x but is modern enough to handle more than text rendering. With this interface you don't develop applications but agents/verbs that return items and you provide renderers for each item

> 1. Command input component similar to browser omni bars or Emacs M-X interface which parses command input and delegates to service.

You might find what you're looking for in dmenu: https://tools.suckless.org/dmenu/

Yeah, so dmenu might potentially cover the command input bit but AFAIK it's really just like Enso, QuickSilver, Launchy etc. What I'm thinking of doesn't really index executables per say but allows for the registration of commands.

What I'm thinking of is limited in scope to "commands" that are registered with the component. Maybe dmenu can be bent to this use case; thanks for the link.

What are executables on your PATH but registered commands?
dmenu at it's core takes a list of input (dmenu_path), fuzzy matches it, and then just fork()s off or something like that, it's tiny so it'd be trivial to alter it so it does something else with that match. You could hook it up to xdotool or something and have it send a command to alter the current X app or whatever.
Actually I noticed something related with websites. It's not that they want to be "an immersive experience", they want to be the immersive experience. In the world of free, apps and websites compete for our attention. This is what "please register" is about. Every website wants to be your home of sorts, track you, give you badges for activity, wish you happy birthday or new year. Few of them recognize that you just want them to be useful. Just use them and get the job done.
This is generally my goal with Emacs customization. I'm basically just using APIs (Spotify, Outlook Exchange Server, myFittnessPal, Reddit, HN) in a common Emacs interface. The downside, of course, is that it's a lot of work to develop and maintain.
I've been running basically the same stuff for the last six years. I have a somewhat modified fork of dwm, a lightly modified version of Termite (simplest working VTE3 terminal I could find), and my emacs (which has had basically the same configuration for the last four years). Most things take up the whole screen or the left or right division of it. I run the same thing on my high memory Xeon workstation that I do on my repurposed Chromebook and my OpenBSD ThinkPad.

I can't really do anything about employer mandated Slack, but most corporate or hosted email is accessible through IMAPS and SMTP. Can't do much about Spotify, but I don't use that while working anyway, I tend to buy music files if it's convenient to do so, and I play those in cmus.

Do you prefer VTE3-based terminals to urxvt?
Yeah, I need iBus support for Japanese and Cyrillic input, and VTE3 interacts very well with input methods. I also find that VTE3 has the most legible (antialiased) text rendering and spacing/geometry of all the terminal emulators I've tried on Linux or OS X, especially when compared at smaller text sizes (7pt, for me).

The default keyboard shortcuts are also pretty great in standard VTE3 terminals like Termite and GNOME Terminal (Ctrl + Shift + V for paste, Ctrl + Shift + C for copy), though that isn't specified by VTE3 itself. Rectangular selection works better in VTE3 than in URXVT or XTerm.

It looks nice, however there's no support for standard readline bindings?
Clementine is the simplist Spotify replacement application I could find to avoid using their clunky app.
I wish one of the streaming services would just embrace the mpd model and ship as a music daemon that speaks a well-defined protocol + a reference client. They could brand this as something like “music for IoT”
The way I see it, my whole computing environment is necessarily a kind of place. Emacs happens to be a really good one.

So, I use Emacs as a window manager. My computer boots into a full screen Emacs, so I don't think of it as opening Emacs — I think of my computer as an Emacs-based thing, which in turn contains a bunch of other tools (like M-x shell for running shell commands).

The way the author uses xterm with tmux and Vim, I use Emacs instead.

My environment has a large font and no syntax highlighting. I find that language mode regexps so often get confused that they're more annoying than convenient.

I would really, really like to try working with an e-ink monitor. Slow latency and monochrome would be a benefit as far as I'm concerned.

> I find that language mode regexps so often get confused that they're more annoying than convenient.

For what language modes do you have that experience? I haven't used emacs myself much, but in other editors, most syntax highlighting descriptions are pretty good. The only exception to this rule is highlighting Haskell, which is apparently a monstrous challenge that no-one can even do remotely well.

It's really, really hard to make a completely correct mode based on regexes—just consider the challenge of writing a regex that correctly highlights the syntax of regex itself, which you need for JavaScript, Ruby, and lots of other languages.

Heredocs in shell, metaprogramming tricks in Ruby, reader extensions in Lisp, nested quotes, etc etc etc—I might be weird, but I feel like I run into these edge cases a lot, when editors think my parens are unbalanced when they're actually not, and so on.

Auto-indentation rarely formats things the way I want, too, and I very rarely need anything more advanced than shifting blocks in and out.

I also just find it a bit strange that we have culturally started to believe that editing code is nearly unthinkable without different colors everywhere!

I completely agree that highlighting code with regexps is almost useless, but if emacs is not capable of doing more than that (or its language modes usually do not do more than that), I think that emacs is at fault here, not syntax highlighting.

In sublime text, for example, the syntax definitions are basically stack machines (if I'm not mistaken), and can therefore parse any context-free grammar. This is clearly powerful enough to handle all the edge cases you mention.

i3wm has been a huge productivity boost for me as a development machine at home for the following reasons:

  - no distractions
  - minimalism, most navigation on the keyboard
  - easy to setup a startup script that preloads your default screens / workspaces / apps setup
  - easy to map your workspaces in your mind
From machine boot to coding: 30 seconds.

https://twitter.com/Phonosheet/status/952179820447911936

I've been experimenting with moving my "getting work done" setup over to an old laptop running just Mint Linux for that exact reasoning. I end up getting so distracted on my MacPro desktop, because it's got everything on there. Movies/Games/Messaging/Email etc. I need just a distraction free environment that still allows me to do web development.
Instead of mint, if you are doing a new install and looking for a minimalist approach with i3, consider wattOS distro microwatt edition.

I found it on distrowatch; I installed it about 6 months ago on an old laptop and I'm pretty happy with it.

Thanks for the response, is that based on debian/ubuntu? I need to have that environment to mirror production environments.
Is there an equivilent to i3 in the mac ecosystem? I currently use iTerm with tmux... so would using a window manager, on top of all that, be overkill?
I used Amethyst and KWM in the past, but ultimately settled on Spectacleapp, which is great for basic window management. Sadly, neither of them can really compare with i3wm when you take into account the tabbed mode and easy window splitting.
I finally got around to trying i3 a few weeks ago and I wish I'd done it a lot sooner. I installed it on my fairly crap dell laptop that can barely run windows 10 (windows in unusable on spinning disks) and it flies, everything is instant, alt+enter and the new terminal is just there, alt+d and the searchable program menu appears (windows could take several seconds to a minute), alt+3 and I'm on different virtual screen. The only time I find myself waiting for anything at all is a new browser window or the funky lock screen installed but I'm pretty sure both of those are solvable.

The interface is fantastic, it's the first WM I've used (apart from maybe tmux or vim) that actually manages my windows well. In hindsight the desktop metaphor is such and obviously dead end that we've wasted for too much time on. It will take some retraining, but even things like tabs in the web browser no longer feel necessary, the WM can handle this and give a consistent global interface. MS is kind of heading in this direction too: https://www.theverge.com/2017/11/28/16709190/microsoft-windo... .

I started off with the manjaro distro (https://manjaro.org/category/community-editions/i3/), it's got a fair bit of bling that you won't get by default elsewhere but the performance is great.

I thought I was alone.

Every one of us minimalists draws the line somewhere else. I like vim, Python, Rust, RSS, web of documents rather than web of applications, static blog generators, roguelike games, symbols and symbolic graphics in computer games and boardgames. I prefer Ultima IV graphics to Ultima V graphics , because the latter started drawing individual torches, chairs, dishes, bushes, etc.

I'm not anti-modern. I just have an eclectic taste. I pick what I consider the best of various areas. I dislike most social media. I would like Twitter if it wasn't overrun by bots. I have a phone I can throw and break a window with, in fact I fell on it from my bike and it's still okay, but my clavicle broke. When people are starting at their smartphones I either look around (in a bus etc), at other people, through window, or read a book. I'm saving for an E-ink device, it's too bead the technology stagnated because of tablets and smartphones.

I hate being labeled a luddite or cranky because I don't sheepishly run into every innovation. Not all change is progress.

It's pleasant to know you're not alone. Same here: cli, tmux, vim, rust, lisps, unix way of system development, webapp allergy, gopher > web, irc, dumb phone, eink reader that lasts months.

I'm not anti-modern either, but it's hard to pinpoint what makes me choose differently than many others. Here's two relevant outlooks I hold, but I'd say that they are insufficient to explain this behaviour. Trend following has no value, unless to fool someone. Solution's popularity does not imply that it is better.

> I'm saving for an E-ink device, it's too bead the technology stagnated because of tablets and smartphones.

While I'm one who thinks there's always room for improvement, I've owned about 5-6 various Kindles and if you're interested in having hundreds of books on one portable device you should just grab one.

I've got the 1st (I believe) Paperwhite and it's all I need. I've looked at the newer Paperwhite and the Oasis but I just don't need the improvements they offer. Any paperwhite is fantastic. The reason I did upgrade to the paperwhite from whatever Kindle I had prior was the backlight was an absolute revolution. I used to have a battery powered light I had to stick on my previous kindle.

The $80 for a Paperwhite is a great deal for what you get. I have 0 complaints. It could be a little faster and I prefer buying books on Amazon from my phone or laptop (edit: and not through the Kindle directly) then reading them on the Kindle but it's not a show stopper at all.

Also, word of advice, if you're into Audible you can often find better deals by buying the Kindle version w/ Whispersync. I've almost bought $15-20 audible books before then saw that the kindle book was $7 and after that purchase the audiobook would be $3-5. It's not always the case but I can frequently find good deals on buying both.

It's more matter of lack of money than "waiting for the right one". I would prefer a colorful screen so I can comfortably read programming books too, but there are workarounds, like typeface trickery described in the article.

Also, I would prefer a device that isn't from Amazon. They're probably all "made in China" anyway so any of them can be bugged, I guess...

Learn a little about electrical engineering and you can take off your tinfoil hat about everything being "bugged"
iPad Pro is the best e-reader I ever had.
"There’s a way in which you could say that Emacs is a place whereas vi is a tool."

As an Emacs user, I agree with this. The author's preference for more tools and fewer immersive applications still resonates with me because I see Emacs as a place for all the tools I need for development and writing.

That's true. Emacs is a platform, a virtual Lisp machine. The Web is another platform. Plus our OS plumbing, usually Unix.

Understanding my computer this way has brought me a lot of sanity. I only use a tiling window manager (xmonad), Emacs, a browser (firefox) and a Unix terminal (urxvt).

Previously I was trying to move most of my computing into pure Unix CLI. While it was fast and simple, I found most ncurses applications (e.g. mutt, remind, irssi) do not really compose as well as simple Unix programs do (e.g. wc, grep, xargs). Moving everything to elisp packages instead (e.g. org, notmuch, magit), where all elisp nicely blends together has been a great improvement. Plus dealing with configuration in a functional way, by switching to NixOS.

Indeed; Emacs is a place that I take with me wherever I go, because it adapts to wherever I put it with little to no configuration on my part. My tools come with me wherever I go, not unlike a travelling caravan.
Can someone please identify the font used in code snippet (image)?
It's Computer Modern, from LaTeX. He mentions it in the article. The css trick mentioned in the other comment doesn't work for fonts in images.
> There’s a way in which you could say that Emacs is a place whereas vi is a tool.

This really resonates with me, and I have to say I agree.

I try to treat my browser as a tool, it holds state only for as long as it's open. I pretend that at any time the browser (or computer) could crash and I would loose my place.

I use my web browser (I switched back to Firefox from many years with Chrome) very similar to how I use my email inbox.

For email this is "inbox zero". If I need to reread an email, respond, or do something with a message, I mark it as unread. Unread stuff gets cleared at least once a day (often more now that I have a smart phone). I open my email and work it down to zero (or as close as I can) and then I close it. Email acts as a tool, a communication / todo list, hybrid.

An unread email is the same as an open browser tab, it symbolizes work-in-progress.

With my web broswer, I open it as needed and open as many tabs or even windows as I need. When a tab, window, or page is no longer needed, I close it.

To "save" a page I create a bookmark (but I can't tell you the last time I've actually used bookmarks to find something). Another way I "save" is when I'm tearing down my web browser, I pull a page's tab out into it's own window. This marks it as "unread"; I need to do something with it.

This process doesn't really save the page, it just allows me to clear out the other tabs and context out of my head. It helps me focus, and reminds me to just do that task on the single tab instead of letting it linger.

I close my web browser multiple times a day.

I follow this practice with my terminal windows as well.

To easily emulate this sort of browser behavior, just use it in Porn Mode (Privacy Mode).
To me, true minimalism on my desktop came from stopping messing around with different window managers, IDEs, whatever to try to maximize my experience.

Specifically, command line interfaces to Slack and GPM just add more headache and frustration.

My setup: a terminal with tmux; Firefox; Spotify. (Recently switched from GPM, would recommend). Stock everything except dark themes on some stuff and caps lock->ctrl.

I don’t have some super-enlightened workflow where everything is in terminal or has keybinds or something. But more importantly, I’m not continually wasting time on changing my env and adding complexity.

Try Spotify in Firefox. Even simpler.
And enable DRM in my web browser? No thank you.
Which is it CLI or GUI is better for you its not clear and for an experienced developer often CLI is better than GUI a shell to MySQL is better that the abomination that is PHPMYSQL.
Really saying that a CLI to a RDBMS is better than a GUI (PHPMYADMIN) there must be more script kiddies on hn than I thought
No, just a lot of people who like punctuation.
Learning to stop spending so much time customizing everything and work with the defaults was one of the hardest but most productive lessons I’ve learned over the years. I used to have a custom bashrc and custom vim and everything on my phone was custom and I put a lot of effort into it. I even found the perfect keyboard layout for me and switched my keyboards to that. To the point where I couldn’t effectively use someone else’s machine.

And then I became a consultant and was logging into someone else’s machine every day, often when I couldn’t install any customizations at all. I learned to love bash as-is, and vim as-is. And my custom launcher stopped working, so I switched back to the default Android launcher. And then my work gave me an iPhone that I couldn’t customize. And suddenly I was spending more time working and less time customizing and my productivity shot through the roof. All I had to do was stop seeking things to make me work better and actually just start working. And in addition to higher productivity, I now had more free time in the day because my work got done faster.

It really is freeing in a Zen-like fashion to just use a tool as-is and not constantly wonder how you could make it 5% better or 3% faster.

The most important, non-default vim configuration for me is line numbers, and a simple "set number" when ssh'ing onto a machine to check logs has basically become my digital equivalent to getting a solid, familiar grip on a hammer before swinging it.
:set rnu nu

All I need to get started.

I got fed up hand-tweaking my environment, but instead of forgoing creature comforts, I started managing my laptop exclusively through configuration management and version control.

When I got a second laptop last year, within an hour it had my python development tools, desktop wallpaper, browser plugins, wifi passwords, and the master branches of my most recent git repos cloned into $HOME. No more taking weeks to hunt down all the tweaks and utilities I need.

Automation takes effort, but having a consistent reproducible environment has been well worth the effort!

Recently I've had the opposite experience, trying to un-customise my Emacs config.

First I've tried mg. Nope, back to Emacs. Then I've tried no init file at all, but the defaults were really driving me crazy.

I've tried Spacemacs in Evil mode. It's an amazing and very polished package, and so many things just make better sense... But the Vi editing style is just not for me, I needed to get stuff done and muscle memory was getting in my way. Next I've tried Spacemacs without Evil, and then Prelude, and both were quite decent, except I was missing maybe half a dozen of my most common tweaks... Like C-x C-a to call align-regexp. When I started copying over just the bits from my old config that I needed the most... And turning off some of the more annoying stuff in Prelude (eg. I dislike both helm and ido)... Look, we're back to square 1.

I went back to my old config that I've been tweaking endlessly for over a decade. I finally feel productive again.

This is pretty much my exact setup, and I've been loving it. (the new Firefox is 99% super awesome)

The only thing I still have some configuration for is vim[0]. Mostly to make it work better with tmux and for an improved JavaScript development workflow.

[0]: my .vimrc: https://github.com/mxstbr/dotfiles/blob/master/vimrc

I've been fantasizing recently about using a Bluetooth keyboard (Twiddler3) connected to an eInk reader to do most of my work both locally and on remote machines/instances. The eInk reader would have just enough power to run spacemacs. I can currently do this on an Android smartphone, but the experience is lacking because of the screen-size.
I already have enough frustration using an eink screen for reading books around the refresh rate of updating that page that I couldn't even imagine the pain of trying to use one interactively.
Imagine then what life was like when an editor meant a line editor and output universally referred to stacks of fan-fold green and white lined paper.

The 'refresh rate' of a line editor would be a couple of seconds at best and to do an edit-compile-test cycle would be on the order of a couple of hours, two per day if you are lucky, but most likely only one per day.

It seems I'm heading in similar direction as author of the post. I switched from Gnome to i3 (I don't even have display manager installed), from Nautilius to ranger and then to [lf](https://github.com/gokcehan/lf). I use a lot of CLI tools like weechat. I'v been using Emacs for few months but now I prefer Kakoune - it's easier to customize. My [website](https://www.teddydd.me/) is pure html+css brutalism without single line of JavaScript...

I just feel tired of huge, complicated software that requires big time investment to customize. I want things to be simple and modular. My setup is not beautiful, might have fewer features than full DE, but it's ergonomic and I understand what all my configs do.

Does anyone else remember the WinAmp era of music software? There was a time when basically every app for playing music on your computer lived inside a little floating window that you carried with you to all of the other apps you were using at the time.

That really did help me think of my music player as a tool and not a place. Though the little scrolling text could be distracting sometimes, I do occasionally find myself missing that style of interface.

Hahaha I was going to post that one, I just wanted to read other replies first.

My WinAmp substitute is Audacious. It plays music, has repeat, shuffle, playlists, and little more.

I tried to use Amarok to see what the fuss is about and was repulsed. It's not an audio player, it's an unfocused sound-related system thingy.

Pretty sure Foobar2000 is still the most common go to audio playback software for audiophiles and enthusiasts.
This is perhaps the opposite of minimalism, but I miss the days of Winamp and really awesome visualizations. When Winamp fell away, iTunes and the rest just never bothered to make many entertaining visualizations. It's too bad - some of the wa visualizers were so entrancing that it really did enhance the "listening" experience.
Well, I've never had a single reason for abandoning WinAmp for playing music that lives on my hard drive - so yes, I do remember.

WinAmp is a tool, and it still works. If you aren't using it, perhaps you actually want a place instead of a tool?

I do still want a tool, but I no longer maintain a local corpus of music files. I prefer streaming services these days.
Yup, but a streaming music service is a place. A tool is something that you have.

For that matter, Winamp is still a tool you can use to access streaming services: rtsp streams / internet radio / ShoutCast / etc.

The problem is not with the tool, it's with the places you want to bring your tools to. They specifically don't allow you to do that. They close down the API's and take down alternative clients.

Spotify feels like a place because it is a place, and it's not your home.

> Every change I’ve made in my working environment over the past year or so has also been a lessening of immersiveness. My interfaces have become less rich, less colorful, less dynamic.

I really like the author's place -vs- tool metaphor to contrast wannabe immersive experiences with tools that stay out of your way. I don't think it makes sense to avoid having places you go to (where you feel "at home") -- I mean that very generally, but even in the specific case of computing, your goto places might be your favorite browser, the command line, the unix system, Emacs, your IDE etc. A place where you feel at home, at control, with a sense of the multitude of possibilities lying ahead, and still in the driver's seat.

The important requirement then is that the environment shouldn't try to nudge you around (especially towards misaligned goals). This is where most web/software platforms of today come up short, IMHO.

This metaphor is also the best elucidation of Alan Kay's pithy quote (reproduced approximately): To me, a computer is worth more than my car, because of all the things it enables me to do. Most people, however, pay about as much for a computer, as they pay for a TV, and use it in roughly the same way.

I also 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.

Is there an Acme / Plan 9 theme for Sublime? Initial Googlings don't show anything.
I like various discussion forums and talking to people online (often on IRC - when I'm programming). I like exchange of ideas, even arguing - as long as it remains respectful.

I consider message boards / forums bloated and clunky. I miss usenet and threaded discussion. Disqus technically does that, but it takes what, 20 seconds to load ? And after recent acquisition it's only going to get worse.

I think threaded discussion is much more like natural human conversation than "topics" on message boards. That's shoe-horning discussion. They invariably get off topic sooner or later, and moderators pride themselves on deleting posts that stray too far.

It boggles my mind why topic-based message boards remain popular.

Maybe Talkyard is a bit different? It's new forum software, threaded, inspired by Hacker News: https://www.talkyard.io. (I'm developing it)

With improvements over HN: https://www.talkyard.io/-32/how-hacker-news-can-be-improved-...

Hmm I think threaded discussions, make the more sense, the more people join the discussion. If 999 people talk about something, they're going to split up into smaller groups, each group talking about a sub topic = thread. And everything laid out in a flat way = a huge mess. But if just 5 people talk about something — then they can stay focused on the same thing all of them. Flat = more ok.

I think that is a pretty cool project there. I like it but I don't know, do you get many people using it? I think there are quite a bit of forum platforms out there.
> do you get many people using it?

No not yet. So far I've been focused on coding though (and I've learned that's the wrong way to get things done, I should instead start with validating the idea). But now a MVP is finished, and I'm shifting focus to marketing & PR. And one of the first steps, is ... to rename the project from EffectiveDiscussions to Talkyard. That's what I've been doing the past week, and ... the plan thereafter is to focus a bit on embedded comments for static site generators. There seems to be a slight vacuum here; Disqus isn't so popular any longer, it seems to me, among tech people = those who use static generators.

> there are quite a bit of forum platforms out there

Yes that's a problem for me. When I started this, in year 2010, there weren't. But I spent many years doing the wrong things, getting a job again & doing this on the spare time only ... and now suddenly there's Discourse, Flarum, Slack, Mattermost, Rocket Chat, Spot.IM, Discord, Matrix, and others. Maybe I was too slow. On the other hand, Talkyard is the only project with HackerNews topic types + chat features combined, so maybe it can find its niche.

Indentation depth is an issue for me, too. I would solve this differently: color coded post backgrounds (or similar indicators).

Parent post = red indentation 1 = orange yellow, blue, green, brown, grey, black, white, etc. Then colors could cycle.

I think it would make it easy at a glance to recognize which posts respond to what, after some initial getting used to. No clicking required and I think it's more intuitive.

For colorblind users you could use SVG pattern backgrounds. In fact, it could be better for everyone, because you could have more patterns than visually distinct colors.

(comment deleted)
This is an interesting idea I think. Actually, on narrow screens, I don't use more than one or two indentation levels. Thereafter everything is flat — and instead of arrows, there're clickable "In reply to @username" text one can click and jump to the parent comment. Here, the color coding you describe, could maybe be helpful.

When there is enough space for indendation, though, I'd prefer indenting. Otherwise, cannot visualize more than the first indentation depth, right.

(Hmm not sure what you have in mind with "no clicking required" — Hacker News and Talkyard also don't require any clicking?)

I don't mean colors instead of indentation, I mean in addition to. Indentation works well when there are very few replies and few indentation levels. But once there's a long debate, it becomes a well. Then when the well ends it's very hard to immediately tell what it's responding to.

No clicking required - I mean clicking to jump to parent. That's introducing GOTOs to online discussion. If possible, I'd rather have a more intuitive way. Or maybe even something as blunt as printing the indentation level directly as a number!

Aha, now I think I better understand what you mean. When coloring posts in the way you have in mind, then, to find the parent comment, one would look at the comments above, for a comment in a certain color? Then one won't need to rely so much on the indentation depth.

Hmm that's an interesting idea. I'm a bit worried the resulting page would make use of too many colors — maybe a grayscale and patterns would be better (like you mentioned).

One would, however, still need to click-and-jump, or scroll-manually, to find the parent, if one needs to reread it, and it's not on screen. I think the colors would mainly be useful on large screens, where one sees the parent comment without scrolling. On mobiles, I think click-to-jump-to-the-parent is more user friendly (rather than scrolling-scrolling-scrolling and scanning for a certain color).

After thinking about it a bit, one of main advantages of HN and reddit is to me very good signal to noise ratio. Screenshots of Talkyard seem to repeat those "socia" etc icons a lot.

Most message boards are ugly in this aspect: they use more vertical space for displaying irrelevant user information and avatars, instead of focusing on content. A post 'td' or 'div' is always at least as high as the left box with avatar and user info. Posts with few words become very wasteful. I think it should be the opposite: the post row height should be only as high as needed to fit post content. If the user doesn't post enough, his avatar/user info is trimmed. That should be doable with SVG avatars at least.

Emacs is sort of a weird beast -- simultaneously tool and workbench. It can be infinitely shaped to fit the task at hand -- while it is in use -- but it integrates relatively smoothly with all the other tools available in a modern Unix environment, allowing those tools to extend the reach of Emacs without becoming part of it.

But really, I -- and everybody else -- should really just use an IDE. For OO languages you need to have intelligent refactoring (and IntelliSense) and so you need to have an IDE. Refactoring tools are to programming what nondestructive editing is to image editing: a total paradigm shift in workflow that no one these days can live without. It takes a lot of effort to extend Emacs to understand the target language well enough to support these features (and it won't be done in elisp).

There's a lot of arguments that various people make regarding the supposed superiority of different setups.

1) It is claimed that using keyboard-only controls reduces "context switching."

2) It is claimed that tiling window managers are simpler and more logical, because you use more of the screen real estate and keep everything open all the time.

3) It is claimed that vim and emacs are better because the brief keyboard commands allow for amazing power with few keystrokes.

Alas, these are almost all arguments voiced by people who grew up with technologies built around severely limited hardware constraints. GUIs were terrible for the longest time, and ten or twenty years ago you certainly couldn't get acceptable performance on them when working remotely.

There are very good reasons why people would avoid all of these tools. Hardware is much better. Compositing window managers are much better.

It is particularly understandable that people avoid vim and emacs. And there's really no empirical evidence at all that they save time, improve accuracy, or anything else.

And any empirical studies on this question would have difficulty isolating the variables. People who do understand systems at the low level, and with all the historical context, could very well be better programmers in some ways... but not because of their environment.

Thinking you could become like Richard Stallman by using emacs is cargo cult reasoning.

Funny because I just went the other way. I was running Arch/i3 on a Lenovo W530 I had for work. At some point I couldn't take it anymore. I wanted to use my headsets over bluetooth. I wanted to have no issues with monitor DPI and scaling and the dreaded optimus Nvidia technology. I don't want to have to think about which port I use to connect to an external monitor. I want Wifi to be a solved problem. Boot the laptop, choose the network, enter password, done. I want good battery life and the most basic compositing features enabled.

In hindsight it's crazy that I'd fiddle with WM_STATE_SOMETHING in compton so that X has shadow but Y doesn't if they overlap with transparency (or something like that). My dunst notifications looked very aesthetically pleasing but... so do countless default notifications on mainstream distros.

Yes, the whole mopidy/mcp/whatever looks really rad, especially if a program uses vi(m) keyboard shortcuts, but my music player really isn't something I want to think about and learn. Playing music isn't such an integral part of my work day that I need to make it more efficient.

I am now using a MacBook Pro at work and on my desktop at home I use Antergos with Gnome. The latter is perfect as it gives me up-to-date packages and easy access to the AUR, while still coming with the bells and whistles of Gnome.

I am also not sure if tiling windows really improve your productivity. I would say that most people would be better of having their apps on full-screen, to minimize distractions, instead of having all sorts of windows side-by-side.

Ultimately I nowadays resonate more with what some other posts have mentioned: pick a platform and programs with sane defaults and only deviate from them if it's really worth it. If your job requires you to look at several terminals at the same time constantly and things like terminator/tmux/gnome-terminal don't do it, then sure, look into i3 (herbstluftwm/[insert flavor of the month]). Anything else I would now consider premature optimization.

Emacs doesn't feel like either a tool or a place to me. If you use emacsdaemon and emacsclient, it becomes not a fixed place you work in, or a completely static tool, but something like a part of the ether you can draw from when needed. There's background state, but much less of the spatial/navigational burdens the author talks about. It's interesting they go on to mention mpd.

I'm not just saying this just to nitpick - I think the stateful daemon concept is a useful extension to the place/tool metaphor and might be a way to achieve the author's desired web browsing experience.

For example, what if web browsers could move tabs to a sort of "invisible window", and there was some shell command like "recall-tab Hacker News" which foregrounded them into a new window? I think something like this might be already possible with something like surf or uzbl and window manager cooperation.

I think avoiding mouse interfaces is a valid goal. Mouse is necessary only for a few things:

- graphical programs (but Blender makes a heavy use of hotkeys) - some games - new interfaces. Mouse is easier to use initially. Websites fall into this category, I'd say they're even a pathological case: it's pretty common for a website to radically change its interface. It can be partially dealt with, for example Konqueror used to display link hotkeys when you press CTRL. I need to look it up.

Most of the time you don't require extra precision a mouse offers. A button press is binary, so why require precise movements, mess with icon sizes, etc ?