Protesilaos Stavrou (Prot) writes about Emacs, free software and philosophy, and makes the Modus themes and Denote note-taking package.
Commenters recommend it to Emacs newcomers for its configuration guides and videos, and praise the Modus themes as a good base for custom themes.
I'd like to make some points more explicit about my philosophy.
1. Yes, everything has a maintenance cost. Some choices have less. For instance, electing to choose Todoist instead of org-mode for my todo list means I no longer have to worry about syncing, merge conflicts, or whether the mobile app I've chosen fully conforms to the spec (well, whatever attempt at creating a spec existed at the time).
Of course, I am paying a very literal cost for convenience, and offloading maintenance to the Todoist engineers.
2. Emacs is a cool piece of software, and I am glad others have figured out how to leverage it, in such a way they have a configuration for life. I spent a lot of time marvelling over the set up that Protesilaos had for his writing [0]. It just wasn't for me.
3. For Emacs, if I want to use it like I wanted to, I have a couple of options. Install a package like Doom Emacs, which gives me most of what I want, with a whole lot of cruft I don't. And I have to keep that up-to-date, and worry about random community plugins breaking. Or figure out what set of plugins (after first picking a package manager) to incorporate. Or figure out the Elisp to do it myself. And my writing config would differ from my software engineering config.
No shade on the people who want to do this, but I just... don't? I can use Zed, or VSCode, and I'm 90% of the way there. Install (or configure) the Evil mode equivalent, and I'm happy.
4. One of the smartest engineers I worked with couldn't…
Take a look at EmacsConf talks and count how many talks are not programming related. Start delving into the speaker's backgrounds as well.
Hang out at the Emacs subreddit and you'll see a similar trend.
Follow Sacha's weekly Emacs news and you'll see a similar trend.
Some of the authors of very well known Emacs packages don't do programming for a living - in fact quite a few learned programming just so they could improve Emacs for their own needs.
Protesilaos is practically a legend these days. He went from no programming or Linux knowledge to expert level in a very short time.[1] His background is in philosophy, law and economics.
The author of helm, one of the most popular and possibly the most powerful completion package in Emacs, is a ski instructor.
Although I learned Emacs primarily to code, I myself did not use it primarily for programming for the first 5 years. I was using it for email and org mode, and did my programming via Visual Studio. The number of people who primarily use it for org mode is huge. There are plenty of people who code in anything else (vim, VSCode), but use Emacs just for magit.
[1] https://protesilaos.com/codelog/2021-04-16-emacs-moral-lessons/
Protesilaos in this piece https://protesilaos.com/codelog/2019-08-11-why-emacs-switch/ has the following closing paragraphs:
"The gist is that you should be learning by doing. It takes patience and dedication. Study and reuse other people’s code, but do not blindly copy-paste things: patterns of behaviour you do not understand will quickly accumulate, resulting in a potentially fragmented, frustrating experience. The key is to not expect instant gratification. I know, this is how most of the world works these days. Thankfully, Emacs runs contrary to the zeitgeist: it caters to the user who cares deeply about the quality and functionality of their tools." From my reading of the computer history books, it seems like there was a time when this sort of dedication to taking things slow and investing time into your tools and moving steadily towards mastery of all aspects of your craft were seen as de rigueur, part of the game.
Moments like this, you want to imagine that some people will turn back to that. I guess when the next big thing comes along with the hype and marketing and "ease-of-use", we'll be off on the same cycle again, though.
I grew up on green CGA, goldenrod Hercules monitors and grayscale mono VGA ones.
Indeed, for the past decade I also prefer the light themes, though I find these dark themes pretty usable too:
https://protesilaos.com/emacs/modus-themes-pictures
As I've noticed, the main problem with dark themes is the low contrast usually.
These modus themes were designed scientifically, to meet the contrast ratios recommended by the Web Content Accessibility Guidelines.
Also, back in those days mono-monitor days, people just kept the brightness at the same level they used during the day and complained how tiring is it for their eyes to "use the computer for so many hours".
My eyes never got tired, because I was constantly adjusting the brightness to match the ambient lighting and I've drastically lowered it, when I was coding in dark.
I've noticed that dark-theme users (eg during live streaming) crank up their brightness/contrast to compensate for the low-contrast dark themes, then they are surprised to be blinded when they open a webpage, which is extremely likely to be light themed and they keep complaining about light themes...
My advice is to use a LLM for that - they are often surprisingly good at producing decent elisp. Maybe not in "publish on ELPA/MELPA" quality, but it can absolutely cover user needs. I know the ecosystem and can read elisp as a coincidence of playing with common lisp - it is enough for glueing things together. The most complicated code I have is around org agenda and export of org tasks - there I needed some LLM help, but I was able to identify and fix performance bottlenecks in some packages and write a config from scratch on my own.
Prot has an intro book on elisp[1] which I want to go through, because some specifics of text processing and buffer usage are a bit unique - it is a lisp for a text editor, after all! But it is still just a lisp, and it even has a lot of common lisp functions in cl-* namespace!
[1] https://protesilaos.com/emacs/emacs-lisp-elements
Very nice to see him using eshell, which is a highly underrated shell: https://www.youtube.com/watch?v=9xLeqwl_7n0
With time, I find myself relying less and less on tmux and scripts, while increasingly using Elisp macros, Eshell, and Emacs-based applications more generally.
Those who see Emacs as a mere editor or as the ancestor of VS Code may also want to read these:
- https://protesilaos.com/codelog/2024-04-24-re-what-keeps-you-emacs/
- https://protesilaos.com/codelog/2019-12-20-vlog-switch-emacs/
Emacs provides a highly hackable and open TUI framework for digital sovereignty. Somehow, it embodies the spirit of free software. Just M-x your way through and shape it to your needs.