Why bother with Emacs and workflows?

I’ve written several posts on different ways and tools available to aid productivity, and probably a lot about Emacs. My background is in computational physics, and not in programming, and yet Emacs has been an indispensable driver of my daily workflow for the past 3 years.

The fact is that knowing Emacs (or Vim), or having a custom configuration is not a wildly marketable skill, nor is it mandatory to achieve spectacular results. An Emacs configuration suits personal workflows and style, which may be borderline peculiar to another person. Such a dependence on customised tools would also drastically reduces your speed while using a new IDE or text editor.

So : why add Emacs to the ever-growing to-do list? The question is more pertinent considering that mastery of a ‘text editor’ is not something you can freely talk about and frequently expect empathetic responses or even a spark like connection. Emacs would be considered by many to be an esoteric and archaic software with a steep learning curve that is not beginner friendly.

However …..

This article elucidates many points where Emacs can help PHB’s (Pointy Haired Boss). The internet abounds with several examples on how org-mode and Emacs have changed lives for the better. Here is another cool article by Howard Abrams on using Emacs as his (only) window manager, in place of a desktop environment.

Watching an experienced person handle his tools emphasises the potential art form behind it, especially when compared to the bumbling of an amateur. Yes, the amateur may get the job done given enough time, and depending on his capabilities - even match the experienced professional’s output (eventually).

However, as experience is gained, the workflows and steps to achieve an optimal result become more lucid. I’ve experienced an exponentially increasing and compelling need to implement specific preferences to achieve the required optimized results faster and with fewer mistakes.

It is therefore obvious that the workflow and tools used must allow the provision to evolve, customise and automate. This is particularly true with respect to the world of data science and programming. I don’t think there is anything better than Emacs with respect to customisation.

Imagine the following:

  • having a combination of scripts or snippets in different languages to jumpstart a project, which is available with a few keypresses? (Yasnippet)1
  • Maintaining a blog with a single document, with articles updated automatically on a status change. (ox-hugo)
  • working with multiple R environments in a single document. (Org-babel, ESS)2
  • Different Window configurations and processes for different projects that can be called with a few keypresses (hint : keyboard macros)
  • An integrated git porcelain that can actually help you learn git so much faster (magit)
  • Intimately integrating email with tasks, projects, documentation and workflows (mu4e, Org-mode)
  • A customised text editor available right in your terminal (Use Emacsclient launched off a daemon within a terminal)
  • Not requiring to use the mouse for navigation3

Now : imagine the consolidated effect of having all the above at your disposal, in a reasonably streamlined state. Then, considering the cumulative effect over multiple projects! The above is just a shallow overview of the possibilities with Emacs.

Investing in learning Emacs, has the serious potential to spawn exponential results in the long run.

  1. Articles on using Yasnippet: — Using Emacs Yasnippet against repetitive boileplate code || Tweaking Emacs Yasnippet || Expanding snippets ↩︎

  2. Links to using R with Emacs: Using R with Emacs and ESS || Using R with Emacs || Tips from R Coders who use ESS || Why I use Emacs for R programming ↩︎

  3. See this article of a non-technical user’s experiment with not using the mouse, reporting significant gains in speed and productivity. I’ve experienced this myself after gaining basic proficiency in moving around Emacs. ↩︎