Calle 24

If you’re an Irreal regular, you’ve probably guessed that I’m a fan of Charles Choi and his work. He even got me to change my mind about using proportional text for writing blogs—an idea I was initially resistant to—and marginally improved my workflow.

One thing that we profoundly disagree on, though, is the use of menus and toolbars in Emacs. That’s because I view any use of a mouse as a failure while Choi is more flexible. He’s offered several suggestions that improve on the Emacs default menuing interface.

His latest offering is Calle 24 that provides a more pleasing set of icons for the Emacs tool bar on the Mac. Choi suggests that the reason virtually everybody recommends disabling the tool bar is because the icons are so ugly. He may be right. Regardless, I have never used the tool bar and always shudder when I see someone using it.

Still, the Emacs tent is a big one and there’s plenty of room for everyone, even those who like tool bars. If you do like tool bars and you are a Mac head, you may appreciate Choi’s package that brings Apple’s recommended tool bar icons to Emacs. Take a look at his post to see the new icons.

If you visit his Github site, you’ll discover where the name “Calle 24” came from.

Posted in General | Tagged | Leave a comment

Happy 52nd Birthday To Dark Side Of The Moon

It’s that time of year again. Once again Irreal pays tribute to the greatest album of all time: The Dark Side of the Moon. It’s no secret that we here at Irreal are serious fans of Pink Floyd and their music. As I write this, it occurs to me that at 52, Dark Side of the Moon is older than many Irreal readers and in some cases older than their parents. It’s a tribute to the album that its appeal has lasted so long.

Every year I link to one of their songs that I really like. Originally, those songs were all from Dark Side of the Moon but lately I’ve been including songs from their other albums. This year I invite you to enjoy One Slip from the A Momentary Lapse of Reason album. That album gets its name from a line in One Slip.

It’s a mysterious song that reminds me of Procol Harum’s A Whiter Shade of Pale. In both songs it’s never entirely clear what the song is actually about. Here for your enjoyment is One Slip.

Posted in General | Tagged | Leave a comment

Age Verification

I often say on Irreal that any time you hear the phrase “think of the children” you should check to make sure you still have your wallet. It’s a favorite locution of scoundrels who want to steal not your wallet but your privacy and freedom.

The EFF has an excellent post on age verfication schemes and how they metastasize. The schemes start out, as these things always do, as a plea to protect the children from, say, porn. It’s
simple and benign: we don’t want to stop you from looking at porn, we only want to protect the children. The next thing you know, you need to verify your age to order skin cream. Yes, really.

Take a look at the EFF post to see how age verification, once established, is expanded to monitor all sorts of behavior. The fact that you are an adult is beside the point. If you want to look at porn, or buy skin cream, or whatever else the nannies think you shouldn’t be doing, you first have to identify yourself to prove you’re an adult. Instant surveillance. All in the name of protecting the children, of course. The EFF post even points to a legislator admitting that “protect the children from porn” was a scam with the purpose of opening a backdoor to go after social media, his real target.

We should resist these nannies in every way possible. We can voice our opposition to age verification bills and we can certainly refuse to give them our information. Maybe if skin care companies notice a drop off in sales they’ll refuse to donate to the offending politicians. Or so we hope.

Posted in General | Tagged , | Leave a comment

The Power Of Elfeed

Yesterday’s Red Meat Friday post on Why Lisp “Lost” has a backstory. As I often do, I wrote it the night before and had it queued up for publication on Friday. But I also like to read through the posts one last time before I upload them to Irreal.

When I did that, I realized that I hadn’t provided a link to Alexander_Selkirk’s original post that anchored the whole discussion. I usually keep whatever site I’m writing about in a browser tab so it should have been easy to add that link. But something was wonky with that tab so I thought I’d just restart Safari and get things straightened out. But, unlike all my other tabs, that one didn’t come back when I restarted Safari.

No problem. My post has a link to the offending comment; I’ll use it to reload Alexander_Selkirk’s post. Except when I tried that I got a totally unrelated post in German. Argh! Next I spent an hour trying to find the post in the Lisp subreddit. That, of course, ended in tears.

Then I remembered that I had first discovered Alexander_Selkirk’s post in my feed. Since my feed reader is Elfeed, I realized that I could recover by simply asking Elfeed to find the post for me. Unlike many feed readers, Elfeed keeps a complete history of everything it shows you and has a powerful search capability so it was surprisingly easy to find the post. I simply looked for any posts discussing Common Lisp in the last six months. I was about to add the additional constraint of mentioning Steve Losh when I noticed that Elfeed was already showing me the desired post.

It’s like having a associative array into every post that’s ever appeared in your feed. If you’re using Emacs and not using Elfeed, you should think about switching. I’ve said before that Elfeed is one of those packages that alone make it worthwhile to use Emacs.

Posted in General | Tagged | Leave a comment

🥩 Red Meat Friday: Why Lisp “Lost”

Back in 2018, Steve Losh wrote a very nice, long post on A Road to Common Lisp. If you’re a Lisper, it’s well worth reading. Recently, Alexander_Selkirk posted, without comment, a link to that post.

The last time I wrote about childish reactions to Lisp I got a bit of push back but, it seems, uninformed opinions about Lisp push my buttons. There’s nothing wrong with Losh’s post—it’s great—or with Alexander_Selkirk posting a link so we can revisit it. No. It’s the comments.

They all school us on “why Lisp lost”, taking it for granted that Lisp did lose. Sure, there are many, many more Javascript programmers than Lisp programmers but saying that that means Lisp lost to Javascript is like saying Rolls Royce lost to the Ford Fiesta. Mostly, the reason offered for this loss is, of course, parentheses.

That’s to be expected but one comment is so uniformly wrong about everything that it deserves special mention. It makes three claims:

REPL driven programming is not practical
That will be news to those of us who have used it to great advantage. Not every problem is best addressed this way, of course, but many are and it’s far superior to conventional methods. Anyone who’s tried it knows this.
Macros are overrated
That sounds like someone who is mostly familiar with C “macros”. Certainly no one familiar with Lisp macros would make such a claim.
S-exps are unreadable for no noticeable gains and “good” languages avoid them
This is the sort of argument that leads to XML and other monstrosities. Once you get used to them, s-exps are actually easier to read than the conventional notation because, for example, you don’t need to stop and think about operator precedence.

But the best, absolute best, ridiculous claim is that “C#, Java and Typescript are the new Lisp”. I wouldn’t know where to start with that claim so I’ll let you draw your own conclusions.

Posted in General | Tagged , | Leave a comment

EWS: The Talk And The Book

Over at the Emacs subreddit, Hungry-Accountant-99 has an interesting post about Peter Prevos’ Emacs Writing Studio (EWS). I’ve written about EWS before [1, 2, 3] and have always found it an interesting project. Prevos gave a talk at EmacsConf 2024 in which he discusses EWS and the book that he wrote describing it. Naturally, the book was written using EWS.

The idea of EWS is, to quote Prevos, that it’s an Emacs configuration for people who want to work with Emacs not on Emacs. Almost every Emacs user will understand the distinction. Most of us can happily spend hours fiddling around with our Emacs configurations. Prevos is writing for people who just want to use Emacs and not spend time configuring it or even learning how to configure it.

EWS is set up so that writers can just write their text and let Emacs take care of the mechanics. The idea is to write in Org mode and then export to whatever format you need. That’s the normal Org mode workflow, of course, but the idea of EWS is that it just works out of the box.

I haven’t read the book—I just found out about it—but I have watched the video and can recommend it. Its only 13 and a half minutes so you should be able to fit it in fairly easily. I’m planning on reading the book too. If you want to get a good idea about what the book is like, take a look at Hungry-Accountant-99’s post. He gives a good review of the book.

Update [2025-03-06 Thu 19:41]: Added link to Hungry-Accountant-99’s post.

Posted in General | Tagged , | Leave a comment

Remember Mode

One of the things I’m always looking for is an easy way to take quick notes. Currently, I handle this with various Org capture buffers: one for temporary notes and another to capture notes for my journal when I want to keep the notes long term. Naturally, I want everything to end up living in Org mode so that I can easily access it through Emacs.

I’m reasonably happy with my setup—although I’m still looking for a good way to capture notes on my iPhone and easily import them into Emacs—but Jack Baty has an interesting post on using the builtin remember mode for capturing quick notes. He views it as a sort of permanent *scratch* buffer and has even written a bit of Elisp to make that correspondence more explicit.

Remember mode has been around for a long time and was even maintained by Sacha Chua for a while. It has it’s own manual that explains how to use it.

As much as I like it, I think that, barring special circumstances, Org mode is a better solution. Org’s capture templates can fill in a lot of boilerplate data for you and they’re instantly available with a single keystroke from within Emacs. It’s pretty easy to pop up a capture buffer even when you’re not in Emacs. Baty shows you one way to do this—although for remember mode, but the process is the same—and there are many others. Basically you just need some way of binding a key to call emacsclient with the -e parameter specifying what Emacs function to call.

Regardless, If you’re looking for an easy way to capture notes and you can’t or don’t want to deal with Org mode, remember mode seems like a great way of doing so.

Posted in General | Tagged , | Leave a comment

ESC as Meta

Almost every Emacs user knows that you can use Esc as the Meta key. It started because keyboards between, say, the Space Cadet keyboard and modern keyboards didn’t have an Alt key to act as Meta.

The practice lives on. Guys like Mike Zamansky started with keyboards lacking an Alt key and continue using Esc out of muscle memory. I somehow missed all that and I’ve always considered it a bit odd but dismissed it as ingrained muscle memory as in Zamansky’s case.

Bozhidar Batsov has a different take. He started using the Alt key for Meta but has found that he likes using Esc more.

Batsov makes a cogent argument for preferring Esc and I found myself almost convinced but I know that at this stage it would be really difficult to retrain my muscle memory. It’s not just AltEsc. Rather it’s all those Meta + ... bindings that I think of a unit. I don’t think of them as Alt and then some other key(s) but as a single binding so switching to use Esc would mean relearning many, many bindings.

On the other hand, you don’t really have to choose. It’s not a configuration item: both Alt and Esc work out of the box so you can use either or both. Of course, that adds even more complexity.

In short, I find Batsov’s arguments compelling but not enough to go through the pain of retraining years of muscle memory. But I do have a new appreciation for those who use Esc.

Posted in General | Tagged | Leave a comment

Is Emacs Privacy Friendly?

Over at the Emacs subreddit, Tb12s46 asks if Emacs is privacy friendly. By that he means does Emacs collect telemetry or otherwise spy on its users. On its face, the question has an easy answer. Of course Emacs doesn’t do any of that. The project leader won’t even use a cell phone because of privacy worries and Emacs development is open to all so any nonsense would be discovered immediately. In any event, Emacs is “owned” by its users not some corporation with an interest in collecting and selling users’ data.

But it’s worth considering Tb12s46’s query as a second order question. Is there something about the Emacs architecture that makes it susceptible to privacy abuses? Apple certainly thinks so. They won’t allow it on iOS. Of course, that’s because of its programmability, which Apple prohibits in all apps.

Still, one could argue that the programmability is a weak spot. Even Emacs recognizes this and strives to prevent executing any file that hasn’t been explicitly authorized. On the other hand, Emacs is open source in a way that most other applications aren’t: everything is delivered as source code so it’s much harder to sneak in exploits. Sure, some people just load binaries of core Emacs but many of us compile from source so there can be no hidden “features” not visible in the (public) source. The bigger worry is third party packages but the news is even better in that sphere. There are no binaries there. Everything is delivered as source.

All-in-all, I feel pretty comfortable that Emacs is one of the safest applications that I use. The only realistic exploit is getting me to execute some random file but that’s not something I’d do and even then, Emacs does its best to protect me.

So yes, Emacs is privacy friendly. It doesn’t spy out of the box and it’s not easy to add code that will do the spying.

Posted in General | Tagged , | Leave a comment

More On Emacs Debugging

A month ago, I wrote about Bozhidar Batsov’s post on debugging in Emacs. The idea was simple: if Emacs got an error, you could turn on debug-on-error and rerun the offending command. When the error occurs, Emacs will produce a backtrace to help you debug the problem. This can be helpful even for non-programmers.

Batsov is back with a followup post. In his latest post, he makes clear that Emacs is not just displaying a backtrace. What’s really happening is that you’ve been dumped into the bugger and you can query it for information on what happened.

Batsov provides a list of some of the things the debugger can provide and the (single letter) commands to invoke them. You can, for example, examine the current values of variables, evaluate expressions, step through code, continue execution, view help, or simply quit the debugger.

Programmers are, of course, comfortable with all of this but even less technical people can use it profitably. Take a look at Batsov’s post to help you get ready for the next time you have an unexplained Emacs error.

Posted in General | Tagged | Leave a comment