Skip to main content

Getting started with powerful abstract tools: Emacs, Lisp, Clojure et all

Foundation: Text Editors

In his book: The Dip, Seth Godin talks about snowboarding:

Snowboarding is a hip sport. It’s fast, exciting and reasonably priced; and it makes you look very cool. So why are there so few snowboarders? Because learning the basic skills constitutes a painful Dip. It takes a few days to get the hang of it, and, during those few days, you’ll get pretty banged up. It’s easier to quit than it is to keep going.

The brave thing to do is to tough it out and end up on the other side–getting all the benefits that come from scarcity. The mature thing to do is not even to bother starting to snowboard because you’re probably not going to make it through the Dip. And the stupid thing to do is to start, give it your best shot, waste a lot of time and money, and quit right in the middle of the Dip.

In programming world, editors are an important basic skill. I would often read/hear about vim and emacs. In college I tried them couple of times and got stuck and switched to a simpler one: gedit, with plugins.

Finding the Spark:

Both VIM and Emacs are powerful and ubiquitous text editor and both are infamous for their steep learning curve. On my own, picking up such a tool was intimidating and frustrating. Here is what did the trick for me: watch a power user use them, it really hits you if this happens in person. Even better, if you get an opportunity to ask them: wait, how did you do that? That will give you enough escape velocity to go beyond the steep learning curve.

Learning curve

Robert m. pirsig in Zen and the art of motorcycle maintenance talks about "mechanic’s feel".

Handle precision parts gently. You’ll never be sorry. If you have a tendency to bang things around, take more time and try to develop a little more respect for the accomplishment that a precision part represents.

These editors are abstract tools and they carry certain labels: "hard", "for smart people only", "set in their own ways". When all you want is to work on something, getting distracted by your editor is the last thing you would want. Second, I don't consider myself smart and I was keeping my distance from tools that carried that impression.

As Robert bhai says: take more time, don't make it (the editor) the last thing. Keep retrying. Just like how you go through boss fights of a game. You won't scare that easy in next round, you will notice patterns, find your corner, get comfortable and start attacking. It (the editor) will grow on you. You will acquire the taste. And same approach works for all the crafts. Later, as you work on a new problem, these editors won't come in the way, they will provide the structure that will help you focus on the problem.

For me, I was lucky to work with such power users and they allowed me the space to ask stupid questions. I still do, nag them about their setup when I meet them in person. I use Emacs, I can't live aka program without org-mode, magit, tramp et all. I am slowly working my way through its lsp support and setting/tweaking things, one language at a time. When ever I have tried other editors I keep looking for above "features" and any attempt to install plugins/addons doesn't cut for me and I return to the comfortable, cozy space: Emacs.