Overthunk

Using Emacs in 2020

Well it’s been almost a year since I “started” this blog and to be honest, I can’t say that it’s been off to a very good start.

The last year has been stressful in many different ways, personally and professionally. I’ve changed jobs, struggled with understanding what I want to do with my career and tried to come to terms with reality.

But scratch all that. It’s time to talk about Emacs.

Thousands of people have probably started off blog posts that way. And with good reason. Emacs has plenty of material that is worth talking about. But darn it if I’m going to let a well-trodden road discourage me from putting my own thoughts out there.

So. Emacs in 2020. I’ve been having flashes of inspiration to learn a Lisp for a while now. There’s just something … intriguing about them. The foreign syntax, the hushed whispers of parenthesis hell, meta-programming, macros… The list goes on. Coming from an imperative programming background, these concepts seem pretty foreign but also exciting.

But maybe learning a language just for those reasons isn’t good enough.

You have to justify it with more concrete reasons. You need to conduct a serious analysis on the pros of cons of the language, understand it's ecosystem, it's power, if any well-known companies are using it.

Or

You can just pick something that you saw on Hacker news once and run with it.

That’s how I landed on Clojure. This is not to say that Clojure doesn’t stand on it’s own merits as a programming language. It does. Wait. Maybe it’s too early to say for me. After all I’ve only been learning for a few days now.

Anyway. Once I picked Clojure, the next obvious question is what do i write Clojure on.

Since Clojure is a Lisp, I figured I should pick an “editor” (part of the mythology of Emacs is that it’s not just an editor but we’ll get to that later) that was built with and for lisps. And that would be Emacs.

So what makes Emacs a good text editor:

  • Extensibility is intoxicating:
    Emacs has an extensive list of packages, themes and user contributed customizations. Which makes sense considering the long lifetime of Emacs and it’s storied history as an editor for ”hackers”. What this means practically is that if you want a feature, Emacs probably has you covered. You can download ”modes” for pretty much every single task you could wish to accomplish. And what’s more, you can make your own if you feel like something is missing.

  • The consistency of the UX/DX helps overtake the what seems to be unintuitive experience at the start

  • Every thing is customizable:
    Most modern code editors allow you to change aspects of the editor, like functionality for different languages, themes etc. Emacs goes a step further and exposes every aspect of the editor via a scripting interface. You as a developer can choose to write e-lisp code that can alter absolutely anything and not only will Emacs let you do it, it’s almost expected from you.

  • Emacs rewards the effort put in to making it easier for you to use:
    The more time you spend understanding your workflows and customizing Emacs to fit into it, the better your developer experience will be. Of course not everyone has the time to sit around and play with the settings on their text editor. And that’s ok. Sometimes you just want to get coding. But some upfront effort in understanding how to use Emacs will have larger payoffs over time.

  • Give it shot but remember to temper your expectations:
    Emacs can be amazing once you get used to working with it’s “eccentricities”. But remember, an editor is only an extension of you.