Wednesday, 10 April 2019

Like Losing An Old Friend

18th March 2019

Emacs is an amazing piece of software which I have been using for well over ten years. If you don't know (and you probably don't) Emacs is an interactive environment for programming in Lisp. Lisp, if you don't know (and you probably don't) is a (family of) programming language(s) which was widely used in the later half of last century, but have been largely superseded by more programmer-friendly languages (like Python), except in certain niche fields.

Do I spend a lot of time working in one of these niche fields? No. Well then, what am I doing using Emacs? I'm glad you asked. You see, the genius of Emacs is in its simplicity. The program generates work-spaces, known as buffers. Each buffer looks like a blank page, but is actually an invisible grid of squares. Each square can hold one character of text. You can then use Lisp code to manipulate this text in any way you see fit. What this means is that any task which can be accomplished using a plain text interface, can be done inside Emacs, provided you know how to write the accompanying program in Lisp.

Emacs is free and open source software, and users who modify existing Lisp programs or write their own, are encouraged to contribute their efforts back to the community. As you might imagine, there are thousands of Lisp programs out there that run in Emacs. This means that Emacs can be used …

  • as a basic text editor
  • as a computer code editor
  • as a word processor
  • as a spreadsheet
  • as a file manager
  • as an email client
  • as a web browser
  • as a chat client
  • as an RSS feed reader
  • as a calculator
  • as a calendar
  • as a day-planner
  • as a music player
  • as a computer command terminal
  • for accessing files on other computers
  • for about a thousand other things

Being able to do so much in the one application is pretty neat, especially since most of Emacs' "modes" (ie: Lisp programs) use the same keyboard shortcuts, meaning you can do 99% of your work without ever having to take your hands of the home-keys.

Of course, I don't use Emacs as a web-browser. Given the way websites are coded these days, using a text-based browser just doesn't cut it anymore. Oh, and I don't use it to play music while I work. Clementine is a really pretty looking music player with a tray icon that shows me how far through a track is, and has a quick access menu for all the important features. And I haven't used it as a command terminal since I switched to TMUX a while back. And since I started using ZSH as a command shell, I rarely need to open the calculator mode anymore. As for email, contacts, and calendar, I made the switch to Thunderbird last year. It was handy to be able to render HTML in emails properly, and the calendar and contacts features are really, really nice. I've also recently been using an RSS feed reader with proper HTML rendering capabilities, and can't see myself going back. I've switched to VSCode for writing computer code (as well as blog posts). Not only does it look gorgeous, it has features built into it that would take me months to replicate in Emacs Lisp code, as well as a few flashy graphical features which simply couldn't be implemented in a text-only environment—on top of which, maintaining them and keeping them up to date would probably be close to a full-time job. Oh, and I'm also looking at the possibility of switching to a separate text-based file-manager called Ranger, though I haven't made up my mind on that one just yet.

You see what's happening though, right? Bit by bit, I've been replacing my beloved Emacs with a gaggle of other applications, each of which just happens to do that one specific task a little bit better. At this point, the only thing Emacs is still unchallenged at is as a day-planner/project-manager/to-do-list. If I find a better alternative for doing that stuff … well, that's going to be the final curtain.

I suppose I should be happy that I've found superior alternatives that make my life better and my work easier; but strangely, I'm actually a little bit melancholy about the whole situation. I dunno how to put it exactly, but I guess it's a little bit like getting a new job in a new town and having to leave friends and family behind. Well, maybe not quite like that … but you get my drift, right?