by iLemming | 2025-08-20 03:10:35+00:00
> I do have just about every tool/feature you mentioned, just not in a single user interface.

Well, just like I said - you're not getting it, we're talking past each other. It isn't about a "single interface" - not about cramming everything into one window, it's rather about seamless workflow integration. It's like having a command center that orchestrates your existing tools, rather than replacing them. The power isn't in the interface - it's in the programmable glue between your tools.

You say: "I'd open a new tab if I need etymology..." Sure, on the surface it feels like a fair point. However, when you have the ability to request something from any tool or service "at-point", right in the middle of typing a sentence or solving a specific task - it simplifes so many things, and you tend to use those tools more. It's basic psychological phenomenon called 'convenience effect'.

But that's the only half story of it. Here's the practical example I often use as an evidence. I use Google Translate, alright? On its own there's nothing special about it - other editors and IDEs, also probably have integrations like that if not even nicer with GTranslate or some other translating service, right? Yet check this out. I'm learning Spanish, and when I want to translate something like "Colonel was born in 1968", what would GTranslate do? It would translate the text leaving the numbers intact, and that's totally expected. But guess what? I am trying to gain better familiarity with numbers in Spanish, I really do need to see them in their written form.

How long do you think it took me to solve that little personal discomfort? No longer than fifteen minutes. First, I needed to find out what actually was sending the payload to GTtranslate endpoints. I launched Emacs' built-in profiler and performed a task of translation. I found the function. Then I advised it. Advising is an Emacs Lisp mechanism to prepend, append or override the behavior of any given function - built-in or third-party. So, I figured that if I convert the numbers to text first, then send the payload with that text instead of numbers, it will work exactly as I wanted.

I couldn't even find an implementation of numbers-to-word in Elisp, and I didn't want to spend any time trying to write one. So I delegated the task to an npm package. Now, my advising function adjusts the behavior of 'translate' function (that sends the payload) by detecting the numbers in the text and then runs nodejs, changing the payload, so GTranslate spits out: "Coronel nació en mil novecientos sesenta y ocho"

Did I have to write my own browser extension for that? Nope. Did I have to figure out how GTranslate endpoints work? Nope - I didn't even have to open their documentation page. Did I have to re-implement the entire command that sends the payload? Nope - I just needed to tweak one, specific aspect of it, with extreme granularity - the body of the function is ten lines long. If that's not some blackmagickfuckery, I don't know what that is. Maaaan, I wish someone has showed me some shit like that when I was much younger.

> Perhaps I'm just a little too lazy to learn that stuff

Here's a thing about ideas - and don't consider Emacs as a concrete tool, a mere editor, but think of the fundamental idea behind it. You don't need to "learn" ideas. You just have to cultivate some level of curiosity about them. Sure, you may later have to spend considerable time learning the concrete tools behind those ideas, but absorbing the idea is the first step.

And grokking basic fundamentals about the idea of Lisp is pretty trivial - one just needs to learn mainly two things - structural editing and REPL-driven development. Some may argue that even those are not specifically necessary to begin the journey.

You know how the "do" in Taekwondo, Judo, Aikido, Karate-do stands for "path" or "way"? There's no truly "learning" Aikido, you either practice it or you don't. It's a lifelong practice rather than something you "master" or "complete." The idea of Lisp is similar - it's not really something you "learn" in the traditional sense and then move on from. You practice thinking in Lisp.

The fundamental principles of Lisp - code as data, the power of the REPL, recursive thinking, functional approaches - these aren't just techniques you acquire. They become a way of approaching problems, a mindset you cultivate through practice. The practice never really ends - it just deepens.

I haven't done any martial arts, so I'm just spitting words here, but I bet, if I ask anyone who practiced Aikido for a long time if it makes their lives any better, I bet they'd tell me some koans about zen master pouring tea or some other shit that I'd immediately dismiss as complete bullshit, so I wouldn't blame you if you take my words the same way.

> I guess the path to Emacs was more of a possibility/probability earlier in my career

Just like Aikido welcomes practitioners at any age or stage of life, Lisp is always ready for new practitioners. The fundamental principles align here in more ways than one could imagine - "the journey is the destination", "wisdom over athleticism", etc. Many people discover their deepest appreciation for Lisp (or Aikido) later in life, when they have the patience and perspective to appreciate the subtleties. The best time to start is always now.