Chen On Red Squiggles
All of us are familiar with the red squiggles that appear under spelling errors when we’re writing text. They appear in Emacs buffers and probably most other applications as well. One place they certainly appear is in Microsoft Word documents. Word is, in fact, where they were born.
Raymond Chen from Microsoft has an entertaining post that examines the history of those squiggles. In early versions of Word, spell checking was a blocking operation that had to be initiated by the user. Later, the spelling check ran in the background so that the results would be available when the user asked for them but that background operation was also blocking so users tended to turn it off. Tony Krueger who worked on many of the early versions of Word was the first to implement on-the-fly spell checking—what we Emacsers call “flyspell”—in Word. To indicate misspellings, he underlined the misspelled words with the red squiggle that we’re familiar with today.
Chen also relates a story involving Penn & Teller and Weird Al Yankovic who were fans of the squiggles and autographed pictures for Krueger. They were, reportedly, cherished by Krueger.
None of this really matters, of course, but it’s a nice piece of our shared history and the story behind a ubiquitous notation that we’re all familiar with but probably didn’t know the origin of.
Linking A Diary Event To An Org Heading
Ray Zeitler has a useful post that describes how to solve a niche problem involving Emacs diary and Org mode. The problem is you have an event scheduled in your diary and you want access to an Org heading for clocking and note taking.
It turns out that it’s pretty easy to arrange that. Take a look at Zeitler’s post to see the exact recipe.
Toggling Ghostel
Randy Ridenour is living proof that you don’t have to be a young nerd to master Emacs and Elisp. Ridenour, a professor of Philosophy, has shown repeatedly that it’s possible for a nontechnical person to become sufficiently proficient with Emacs and Elisp to bend the editor to his will and make it work as he needs it to.
Irreal has recounted some examples of Ridenour’s past use of Elisp to customize his work environment and now there’s a new one. Lately he decided to try ghostel for his terminal emulator. He was already using ghostty as his macOS terminal emulator so the change made sense.
The change worked out well and Ridenour was pleased with the result except for one thing. With his previous Emacs terminal emulator, eat, he was able to toggle the emulator on and off easily but it didn’t work with ghostel. Rather than look for another package to solve this, he decided to fix it himself.
The desired functionality was
- If no instance of ghostel is running, start one in the current window.
- If there is already a ghostel instance running in another window, switch to it.
- If there is a ghostel instance running in the current window, bury it.
Ridenour implemented that functionality with two functions. The first gets the active buffer of any running instance of ghostel or returns nil if there is none. The second function implements the three steps above in a straightforward way. The code is in his post and easy to understand so take a look if you have a similar need.
🥩 Red Meat Friday: Programming Epigrams #93
Someone reposted a list of Programming Epigrams by Alan Perlis from 1982. Many of them are funny, some are just silly, and others are probably incomprehensible to today’s programmers. They are sufficiently well known that they’re mentioned in Perlis’ Wikipedia entry. One that stood out to me was #93:
When someone says “I want a programming language in which I need only say what I wish done,” give him a lollipop.
I’ve heard that before and it always resonated with me but in view of Last Friday’s Red Meat Friday it seems especially timely. What, after all, is “vibe coding” but a desire to simply tell the computer what you want done and have it magically happen?
One could argue that with Vibe Coding the dream of “do what I say” has been realized and that celebration is in order. I’m more inclined to think that Perlis’ prescription is the better reaction.
Simulating The Unix at With Emacs
Charles Choi has a nice post on simulating the Unix at command with Emacs. Back in the old days, Choi used to use the Unix at command to notify himself of various events. In macOS, the at command is disabled by default because its use can deplete the battery. Old habits die hard though, and Choi wanted a way to get the same behavior.
He started with the Emacs run-at-time function that does roughly the same thing as the at command except it runs an Emacs function instead of a command line function. Choi filled that gap with a macOS shortcut that he calls nota. The idea is that a small Emacs function schedules nota with the desired message at whatever time you want.
If you’d like to use his workflow, his post has a link to his shortcut that you can download. Of course, the shortcut bit works only with macOS but I doubt it would be hard to adapt to any Unix-like system. As far as I can see, the shortcut mechanism is merely a convenience and could probably be replaced with something like the Unix message command.
Regardless, if you’re looking for a handy way to serve a notification at a certain time and, like Choi and me, you have Emacs running all the time, take a look at his post.
Why (Some) Bosses Hate Remote Work
Irreal’s opinion about remote work and those who oppose it is well established. It’s basically that absent special circumstances or obvious misfits like retail sales remote work is a win for everyone concerned, employees and employers alike. Indeed, Irreal has often speculated that the insistence on workers being on-site had more to do with some managers being control freaks than any business need. Study after study has shown that in-office policies serve no business need and that remote works tends to foster the results that businesses care about.
That last part is pretty well established now. The part about control freaks could be dismissed as delusional rantings from the Irreal bunker denizens. But now the New York Times has published an article entitled The Secret Reason Bosses Want Everyone Back in the Office, Every Day of the Week. The reason? The bosses who oppose remote work are narcissists.
That’s not just an opinion. In research that studied bosses for and against remote work, researchers found that the only quality that reliably correlated with opposition to remote work was narcissism. Take a look at the article for details. It’s pretty damning for the control freaks who justify their opposition with meaningless cant about water coolers.
There are, of course, plenty of reasons why remote work may not be appropriate for a particular job and there’s some recent research suggesting that working remote 100% of the time may not be optimum. The takeaway is that wholesale opposition to remote work is a more reliable indicator of problems with the denier than with those being denied. Perhaps it’s time for those questioning the motives of employees who want to work remotely to turn their questioning inward.
Posted in General | Tagged Remote-work |
YouTube Radio Player
As you all know by now, I’m not a Google fan and generally avoid using their products. The one exception is YouTube for videos. Apparently, YouTube also has a radio channel, which is a sort of music streaming service. I listen to my music offline so I’m not interested in steaming services and even if I were, I’d probably use Apple’s or maybe the Amazon service that I get for free as an Amazon Prime member.
Still, lots of people don’t share my antipathy to Google and at least occasionally like to stream music. One such person is Álvaro Ramírez who sometimes has the urge to listen to YouTube radio channels and, being Ramírez, built an Emacs player, ytr, to do that. As usual, he built ytr to scratch and itch and is using it to experiment with its UI with the long term goal of possibly integrating it into his music player, ready-player.
Ytr is still at an early stage of development and will probably change as Ramírez gets more experience with it. It’s not yet in MELPA, of course, but you can get a copy from its GitHub repository where you’ll find installation instructions as well as a command summary.
If you have any interest in playing YouTube radio from within Emacs, take a look at Ramírez’s post and the ytr GitHub repository.
Update [2026-06-24 Wed 10:08]: Álvaro Ramírez reached out to me offline with a clarification. What ytr actually does is download the audio track from any YouTube video. As Ramírez says, often the video portion is secondary to the audio. I’ve noticed that that’s especially true for older recordings where the video portion may consist simply of a picture of the album cover or the artist.
Structured Emacs Editing With Builtin Commands
Bozhidar Batsov has an excellent post that considers structured editing using builtin Emacs commands. It turns out that all those commands (like forward-sexp) that you think of as Lisp-specific commands work in many other modes. The secret is that the target mode has to tell the commands how to find structure boundaries.
There are several ways of doing that. The oldest is to use the mode’s syntax table but that doesn’t work if the structure is bounded by things like structure … end. The more modern method is to provide functions that can find these boundaries and, of course, the most modern is to use Tree-sitter with an actual grammar of the target language.
Pay particular attention to the Ctrl+Meta commands. If you’ve done any Lisp programming, they’ll be familiar but they’re useful for a lot of other languages—even plane text. For example, I use Ctrl+Meta+Space all the time to progressively mark words in a text buffer. It’s a bit easier than using Ctrl+Space and then some motion command to do the same thing.
As Batsov says, the Ctrl+Meta commands keep getting smarter as more major modes teach them about their syntax. His post is full of good information that I haven’t mentioned here so be sure to head over and read it.
Let Emacs Teach You Emacs
Charlie Holland has a followup to his post on Emacs Help that I wrote about the other day. It’s a reconsidered, condensed version of the original post. As Holland puts it,
This is a condensed version of my very long June Emacs Carnival post on the same topic. I wanted to make this as I felt it would be more intuitive for beginners, who are most likely to benefit from learning Emacs’s auto-discovery features.
It actually is more useful both for n00bs and experienced users alike. The best example of that is his explicit calling out of what he calls “the prefix trick”. The idea is that there are a handful of prefixes that begin many help commands. One example is describe- that begins all the help commands that describe something: describe-function, describe-variable, etc. The “trick” is that you can type Meta+x describe and then Tab to get a list of all the describe commands. That’s something that most of us know implicitly but it’s useful to have it pointed out explicitly.
The other useful fact, which I wasn’t aware of, is that Meta+x which-key-show-top-level will show all the commands without a prefix.
The point of Holland’s followup is that you don’t need to memorize a lot of arcana to use the Emacs Help system. If you know the prefixes to use with Meta+x and Ctrl+h Ctrl+h to bring up the Help cheat sheet, you’re good to go.
Update [2026-06-23 Tue 11:15]: Added link to followup.
Changes Coming In Emacs 31
Rahul M. Juliato has an informative post on what’s coming in Emacs 31. Juliato doesn’t mind living on the edge and has been tracking and using Emacs from the Master and emacs-31 branches. He says he likes to know “what’s in the box” and the way to learn what’s coming is to is to live in it. That’s a little too exciting for me and perhaps for you but Juliato’s post gives us a view of what to expect.
The list is a long one and his post reflects that. It’s a lengthy post but it does a good job of describing what to expect. The thing he’s happiest about is that with this release tree-sitter “just works”. Now installing new grammars is pretty much automatic and there are grammars for more languages.
For those of you who have to—or for some reason, choose to—use Markdown instead of Org mode, the new markdown-ts-mode will be a welcome addition. The new mode has an Org mode feel so Org users will feel comfortable using it.
For those of you who like the completion system making your mind up for you, there are many enhancements to eager completion. That definitely not something I would want; I hate having the system change what I’m typing without my asking for it.
There are several other changes. Check out Juliato’s post for the details. It looks to be a nice release with plenty of improvements. People like Juliato help the development process by thoroughly testing new features for bugs and for suggested improvements.
The minions are insisting that I let you know that you can and should view Juliato’s post in light mode by flipping the switch at the top of the page. Sorry for the boring announcement but none of us wants to deal with disgruntled minions.