George Supreeth

Everything in Emacs

emacs

In the early 1990s, during my first year at art school, we were expected to take calligraphy classes as a prelude to hand lettering. This was around the time when mainstream print-publishing workflows were still catching up with Desktop Publishing (DTP) and my art school was still years away from updating their curriculum. We were expected to create typographic layouts by hand.

So, on the first day of calligraphy class, I became a little anxious when I saw some of my classmates bring out sleek calligraphy pens. These were expensive instruments, and there was no way I could afford them. The alternative was to buy regular, cheap fountain pens and grind down the nib, to obtain a slightly flat edge, which was a hit or miss affair, because it would quite often ruin the nib. Even when it worked, it was useless for calligraphic strokes broader than a millimetre or two.

The solution to my problem came from a senior, who took me to a park with a bamboo grove. We harvested dry bamboo sticks, and he taught me how to cut and sand the edges to create a reed calligraphy pen.

Suddenly everything changed. I had a dozen calligraphy pens, of various sizes, capable of creating smooth strokes. These wonderful bamboo pens were free of course, but it did more than save me money. The idea that I could make my own, high quality tools, gave me a sense of freedom and accomplishment that felt incredibly empowering.

divider

I started using Emacs because I wanted nice software to write in. I was also aware of org-mode and a just a little in awe of people who would use it to build incredible workflows for all sorts of things. A lot of it went over my head.

What interested me most of all was reading about people who claimed that they used Emacs for everything. I read about people crafting IDEs, managing their email, browsing websites and so on. I was incredulous. Why would someone even want to do that? I used Thunderbird for email and Firefox for web browsing, both of which are polished products. How could a text editor provide even a small fraction of the rich functionality I could expect from stand-alone products?

There are situations in life when the only way to understand something is to experience for yourself. In the six years since I started using Emacs, I too have moved my email, RSS feed reader, read it later apps like Pocket (now dead) then Wallabag, my document writing, task management and so on into Emacs.

Why? It’s hard to explain now that I’m on the other side of the fence. Each software application in your system has its own peculiarities and ways of functioning. They each have their own user interfaces and commands for accessing their unique functions. Other than a hand-full of commands such as opening files, cut and paste, and so on, individual software behave differently. Now imagine if you had a universal set of commands that you could use across all these different applications. It doesn’t matter if you’re in your file explorer, or in your task manager or browsing a website. Imagine if the same set of commands did the same things across each application. Using Emacs feels like this.

More importantly, it is immensely flexible, and allows users to build new functionality, which extends Emacs in any direction the user wants to take it.

I can verify this. I’ve now turned into one of those people who never want to leave Emacs. I’m no programmer, and can neither read nor write code, and even I have extended Emacs in ways that make this software fit me like a glove.

spacer

Zim-wiki in Emacs

Before I discovered Emacs, I used a personal wiki called Zim-wiki. For a decade or more, this amazing software helped me manage my work and my interests. I made notes about everything. One particular practice was clipping snippets of articles or ideas I came across. Over a decade, these clippings accumulated into a couple of thousand notes on various topics.

I use Emacs now, but I didn’t want to port these clippings over to markdown or org-mode formatting because I like the way Zim-wiki structures its notes in nested folders. I didn’t want notes to lose their links to attachments.

So I asked ChatGPT to help me create an Emacs mode for Zim-wiki. A way to create new notes, add basic zim-wiki formatting, to created nested attachment folders and to link between notes. After some experimentation, I had a functioning Zim-wiki mode, which is a delight to use. Now I don’t need to open Zim-wiki at all to use my precious notes. I have a org-capture system that creates new notes, consult-notes to access and browse my notes quickly, and the zim-wiki mode to edit my notes. It’s a beautiful setup.

spacer

Gtimelog in Emacs

There are a bunch of other such functions I ‘built‘ the same way. I track my time using Gtimelog, a simple and effective way to get a sense of what I worked on each day. The problem was that ~sometimes~ quite often I would forget to make an entry, and lose information about a chunk of work because it was not logged. Another minor friction was the report generator within the app. To create a daily report in my work journal, I had to navigate to the report section, cut and paste it into my daily notes.

Again, ChatGPT helped me replicate the system within Emacs. Now I have a capture mechanism that logs activity, and also a report generation feature that inserts the report into my daily notes file, at the exact spot I need, with just one command.

spacer

Helper Functions

Using A.I, I’ve generated many other such functions, most of them are simple but very helpful. What generally happens is that, as I progress through the day, I notice small areas in my workflow that could be slightly improved. I keep a list of these, and when I can, I generate little functions to act as helpers. Some examples are:

spacer

Visit the Emacs website, and you will see it described as – an extensible, customizable, text editor, and it’s true. Since the time I started using Emacs, I’ve modified it in increments to the extent that it would be very hard for any one else, but me to efficiently use it. It perfectly reflects my interests and idiosyncracies (even biases) but it is uniquely mine.

Emacs is obviously not going to turn into a video editor, but where text is at play, it feels malleable enough to extend in any direction I need. I don’t need to beg developers for small software features, like I used to on GitHub or on software forums. Developers will (and should) say no to edge-case features that serve only a small section of the user base. But with Emacs, I can build them myself and cannot describe how empowering it is to be able to do these things.

divider

spacer

#Emacs