sorting the wheat from the chaff

Appreciation for software #1: Emacs

I was reading this blog post on how we often forget to thank and recognize the efforts of the "unsung heroes" of the software world. I find those words truly inspiring, I also had an interaction with the author through GitHub (a very nice person, by the way).

Let's don't forget that many people write software for any reason but money: a sincere "thank you" can often be the best reward. Because, of course, we are humans made of flesh and purposes and need recognition for the things we do.

Therefore I've decided to join him and have my periodical appreciation post on a tool or an application that greatly helped me or simply made me chuckle :-)

The honour of the first post on the theme can't be dedicated to none other than the software I use the whole day for so many things.

Some people joke that Emacs is more of an operating system lacking a decent text editor rather a ... wait ... I see a trap, here: is Emacs an IDE or advanced text editor? It's simply Emacs. Funny how people discuss what Emacs really is: it's a software in its own category.

Learning Emacs teaches you about more than Emacs itself: it teaches you about the quality that software can reach, the complexity and unfriendliness :-) Also a lot about how a truly open system is supposed to be.

After you've been using Emacs for enough time and you need a specific tool for a job, you'll stop looking for a new tool to install: as a first thing, you'll search for an Emacs package to do that.

You'll also learn how much of the stuff you write or need can be in bare text, without binary files. You'll start thinking if the increasing complexity of some software is justified by actual improvements.

Emacs' history is worth reading and despite an ugly icon and an irritating language it became one of the most long-lived software ever written; and this alone, more than 40 years later, is a remarkable achievement in itself.

I am by no means an experienced Emacs user, nor I dwelved into elisp unless forced by overarching annoyances, but I spent a lot of time documenting my Emacs experience and writing my own guides; to me it's simply impossible to remember all the keycombo for all the Emacs packages I use.

Here's my Emacs setup. I'll copy-paste the list of the tool that I use:

  • ag: super fast grep replacement
  • jedi: Python autocompletion
  • flycheck: Python syntax-checking
  • elpy: Emacs Lisp Python Environment
  • flycheck-rust: Rust syntax-checking
  • emacs-racer: Rust code-completion, goto-definition and docs browsing
  • yaml-mode: Major mode fpor YAML files
  • py-autopep8: Python PEP8 linter
  • git-gutter: git diff on the fly
  • org-journal: great tool to write a developer's diary
  • xclip: (linux only) yanked text in emacs is available in X11 (overwrites X11 clipboard)
  • ox-wk: module to export from ORG mode to Dokuwiki

Not to mention the tools available out of the box:

  • org-mode: "your file in plain text". Documents, TODOs, notes. And export to whatever format you want.
  • IRC client

Each developer of each of these packages should deserve a personalized praise.

There are downsides in using Emacs, of course:

  • Once into "Emacs-mode", it's hard to switch back: this also means that if you are the guest on another workstation, you feel so clumsy. And your pair-programming buddy might find awkward seeing you constantly inserting random text or closing windows by mistake. Some IDEs have an "emacs-mode" but my experience (f.e. in IntelliJ) not satisfying.
  • The documentation, although exhaustive, is not an easy read. I gave up on reading it, I can easily find answers on Stack Overflow anyways.
  • Although extensible, I honestly hate Lisp (and it's my fault, no problems admitting that); nonetheless that's a major road-block for me to write my own tools

So, Emacs is not for everyone and should be approached little by little: for example, first try it as TODO or note taking tool, see if that improves your workflow. If yes, then try adding another tool. And so on and on.

And maybe, one day, you'll have a laugh when presented this choice on VisualStudio Code:

So, am I usually using an abnormal editor?

Comments closed for this article