EINVAL: Valid solutions for invalid problems

Skeletons in the Closet

After my previous post I continued to dig deeper into the Emacs skeleton system. Not all of it was beneficial for my sanity, so strap in and let me explain some more cursed parts of it!

Emacs Skeletons: The Missing Manual

The venerable Emacs skeleton system, while powerful, lacks documentation in some areas. For example the topic of subskeletons is only touched on with little to no examples. This post attempts to alleviate it to some degree. A basic Elisp familiarity is assumed.

Running shell commands from Emacs Dired

dired-do-shell-command (bound to ! in dired) can handle multiple marked files in a few different ways. They are quite intuitive but I always wished for a cheatsheet with all the options, so here I am, creating one.

Multiple cursors considered… suboptimal

The famous “considered harmful” would be a vast overstatement, but I see them as a solution preventing better solutions. I’m going to talk about the GNU Emacs flavor of them so not all problems and alternatives will apply to other text editors.

Emacs as a Shell

, updated on

When I log into a new server, one of the first things I do is install a minimal Emacs package1. Of course assuming nobody minds if the server is not strictly mine, I’m not a monster. Emacs serves me as a de facto shell when setting up whatever there is to set up. By “shell” I mean a broader meaning of this word than just a command prompt: it’s the central program I use to interact with the system.

One year with Notmuch

Email… One of the last bastions of non-proprietary communication with the freedom to choose both service providers and clients alike. Some call it archaic but none can avoid using it to some degree. For years I struggled to find an email client I actually liked. I tried all the usual suspects: Mozilla Thunderbird, mutt, alpine, and others. Even mu4e didn't scratch that itch. I've spent the last few years on Thunderbird as I made a point that even if everything else is failing, email must work, so I tried to avoid any unnecessary hackery.