Hacker News new | ask | show | jobs
by metroholografix 2239 days ago
I've been using and programming Emacs for ~12 years. After all this time, I am at the level where it really feels like an extension of myself, almost like a cybernetic extra sense that I can put to use as I see fit. Practically, as I go about my daily programming, if I feel something is off and could be improved, I have a pretty accurate idea of how long it'll take for me to implement it. Usually it's not that long and frequent 10-15 minute diversions of this sort happen multiple times a day. It simply means that the process works as expected, I'm approximating an ideal -temporal- mind model.

A few times a month, I'll do more extensive work, focusing on a number of long-term projects or exploring various ideas I've had and put down in my notes. All this work is geared around helping me manage information more effectively. I'm an information junkie, hopelessly addicted to the Internet and that's by choice. I wouldn't give it up for nothing.

Emacs is the tool that makes the difference since this continuous feedback loop of me adapting Emacs to help me deal with more and more information, allows me to keep up. Being an information consumer is easy today, you simply sit back and absorb what's being blasted at you. Being plugged into numerous signal sources and managing that information _on your own terms_ is the tricky bit and where Emacs shines while most other tools fall flat, since they're either too constrained or lack the necessary programmability.

1 comments

> I've been using and programming Emacs for ~12 years. After all this time, I am at the level where it really feels like an extension of myself...

The problem is that these days, you could use vscode or atom for a month or two, and get that same feeling. Emacs from scratch is not a great use of time anymore.

Maybe so, but the ceiling with those tools is very low. I simply can not do what I do every day with Emacs using vscode or atom. I know why you compared them, but I feel that these comparisons are meaningless. A category error.

Emacs is simply something else.

What are some examples? I'd say the ceiling is marginally lower (maybe) than emacs, but the learning curve to extend is orders of magnitude more approachable.

And I'm not sure the ceiling is actually lower.

Almost everything I do on the computer happens inside Emacs, using programs written in Emacs Lisp:

Writing code, reading/sending email across ~30 email accounts spread out over different services, reading newsgroups, mailing lists and RSS feeds, maintaining a presence in 7 different IRC servers with ~30 channels total, using a variety of connection methods, watching and filtering certain twitter feeds, controlling external applications through Apple Events [1], file management local and remote, remote system management, local virtual machine management, note taking, calendar, agenda, notifications, bookmarks for external applications (Chrome and Preview), password manager, version control, music playing.

I can keep going. The only programs besides the OS and Emacs I use on a regular basis are Google Chrome, Preview.app, VMWare, Calibre, mpv, bash/ssh, Unix command line tools (less and less) and my bittorrent client written in Common Lisp.

I've almost finished an Emacs Lisp controller for Chrome, allowing me to bring a lot of information (e.g. tabs) into Emacs in order to rapidly manage it on my terms. I've done the same for Preview.app. I treat it as a dumb vessel that does the rendering. The actual information (filename, metadata, current page, date etc) is extracted from it, stored and manipulated in Emacs. That way I don't rely on Apple to dictate how I'm allowed to use my computer. I can experiment with different paradigms and find the one that fits me best. Emacs is the magic that makes all of that happen.

[1] https://github.com/atomontage/osa

That speaks to the general breadth of the emacs extension/package ecosystem, which is impressive (but somehow not as impressive as you'd like), but how many of these things did you engineer yourself? And how many these things could not be implemented in modern editors? I'm not sure any couldn't be. Most already are.

Extensibility was emacs' killer feature when its main competition was vim and vimscript - that's just not the situation anymore.

Emacs main competition in the noumenal realm of ideas wasn't vim, but the commercial Lisp Machines mainly Symbolics. They were superior but technical superiority doesn't mean much in the domain of "Worse is Better" [1].

I didn't write all of the Emacs Lisp programs I mentioned, but I did go through most of them, changing the way they work to fit how I wanted to use them. This was an iterative process that is still ongoing.

What should impress you is not the breadth, but the paradigm itself as expressed in Lisp. You can probably write an IRC client in JavaScript and have it in VSCode. But that's not what I'm talking about. We're not ticking boxes down a feature list here to say "JavaScript can do that!". We're talking about a paradigm, and specifically about interactive development with a short feedback loop through Lisp which is "a difference that makes a difference" [2]. But in order to truly understand this, you have to go through the process. Philosophical truths can not be transmitted like pieces of eight.

[1] https://www.dreamsongs.com/WorseIsBetter.html

[2] http://www.informationphilosopher.com/solutions/scientists/b...

VSCode is quite restrictive in how it can be extended actually.

Atom is much better, and feels closer to Emacs in terms of allowing you to extend and modify almost every part of it.

That said, Emacs is just the king. Not only can you really just change absolutely everything, it is really easy to modify it all at run-time on the fly, which even in Atoms isn't quite so.

I had settled on Atom for a while, but the slow performance and high memory use made me switch to Emacs.