The Org Editor

Over at the Emacs subreddit, Low_Money_633 has a paean to Org mode. That’s nothing new, of course. Many of us are long time, devout Org mode fans. What struck me about Low_Money_633’s praise was his description of it as “the most powerful test editor”.

At first, I thought that an odd characterization. It is Emacs, after all, that is the editor. Org is simply, in Emacs parlance, a major mode. But after a little thought, I began to appreciate his characterization. If you use Emacs primarily to write prose—as opposed to code—it’s easy to think of Org mode as what Emacs is really about. Emacs is simply the foundation upon which Org is built. It’s raison d’être is to support Org mode.

The thing about writing in Org mode, as Low_Money_633 and the commenters point out, is that it’s all plain text. That means that files tens of thousands of lines long are only a few megabytes as opposed to the several gigabytes that something like Word would take. It also means that the files can live happily in something like Git where previous versions are instantly available when they’re needed.

I’ve reached the point where I write more prose than code in Emacs so I understand Low_Money_633’s point of view. That’s the thing about Emacs: it can adapt itself to be just what you need to the point that you can forget what’s happening under the covers.

As I’ve said before, when I’m writing, regardless of the type of writing, I’m almost certainly using Emacs. That’s because using anything else is too painful.

Posted in General | Tagged , | Leave a comment

How To Speed Up Emacs Terminals

Another great post from James Cherti. This one’s about speeding up Emacs terminal emulators. As Cherti says, Emacs terminals can be slow especially when they get pounded with a lot of output. He offers some suggestions to help.

Those changes are mostly what you’d expect. They turn off things like line wrapping that take extra cycles to calculate. Most of his post is his suggested code to remedy the slowness—although he does offer an explanations of what they’re doing—so rather than repeat what he’s already written, I’ll just send you to his post for the details.

If you’ve been bothered by slow Emacs terminal emulators, take at look at Cherti’s post.

Posted in General | Tagged | Leave a comment

PSA: Homebrew Updated To Version 7.0.0

If you’re a macOS user, you probably know about Homebrew, a repository of easy to install apps and libraries. I use it all the time because it’s so much easier than hunting up all the dependencies required for compiling them yourself.

If you’re a Linux user, you may or may not be familiar with Homebrew. It provides the same services for Linux but my—possible wrong—impression is that its Linux take-up is not as great as it is in macOS.

Regardless, if you’re on Linux or macOS, you should definitely check it out. The TL;DR of this post is that Homebrew has just released version 7.0.0, a major release. That probably wouldn’t be worth an Irreal post except for the “major release” part. On the macOS side, macOS 10.5 and earlier are no longer supported. Being a Mac-head, I didn’t check discontinued versions on Linux so if you’re using Homebrew on Linux you should check that out.

The other big change for Mac-heads is that Intel Macs are moved to Tier 3. You can check out the announcement for exactly what that means but basically it indicates that support is limited and end-of-life is approaching (in September of 2027).

Homebrew is an excellent repository and well worth investigating if you’re not familiar with it. I still have an Intel Mac so it’s a bit of a pain that support is diminishing but I need to upgrade anyway so this is probably the push I need.

Posted in General | Tagged | Leave a comment

Optimizing Line Numbering

James Cherti has been busy producing a lot of posts about optimizing various aspects of Emacs behavior. I’ve just come across his post that discusses optimizing buffer line numbering. It explains the different line numbering schemes and their relative costs.

I not a big user of line numbering. I usually turn it on for the Elfeed index but hardly every use it otherwise unless I have a specific need. In particular, I hardly ever use them in code buffers because I prefer to jump to a particular construct rather than a line number, which, irrationally, always seem to me to be ephemeral.

When I do use line numbers, I like absolute line numbers rather than the two types of relative numbers. That turns out to the right choice as far as efficiency is concerned but many people—including Cherti—prefer relative numbering. That can be expensive, especially for long lines, but there are some settings that can speed things up.

The descriptions of those settings don’t really capture what they do and why you might prefer one value over another so Cherti’s post is especially helpful. If you’re one of the people who like having your buffers numbered in one way or another, take a look at Cherti’s post to see how to get the best possible performance for your choice of representation.

Posted in General | Tagged | Leave a comment

Bedrock 2.0

Three years ago, I wrote about the Bedrock starter kit for Emacs by Ashton Wiersdorf. Now Wiersdorf has issued a new major release of the kit. It’s mainly an update for Emacs 31 and requires that version to run. I liked his announcement and description of Bedrock 2.0 and decided to write about it on Irreal. To be honest, I’d forgotten that I’d already written about Bedrock and didn’t discover that I had until I chose the obvious name for the post source file (bedrock.org) and found that such a file already existed.

You should read what I wrote before; everything from that post applies to the new version. The TL;DR is that although I don’t generally care for starter kits, I do like Wiersdorf’s because it mainly concerns itself with simple variable settings rather than configuring a bunch of packages that a user may or may not want1. His init.el is well commented to explain what everything does and some items are commented out with an explanation of why you might want to enable them. You can see the file here.

If you’re looking for a simple, minimal configuration for Emacs as a starting point or you know a n00b who is, take a look at Bedrock.

Footnotes:

1

There are, as with the original version, some auxiliary files that bring in some packages that Wiersdorf finds particularly useful.

Posted in General | Tagged | Leave a comment

The 2026 Ig Noble Prizes

We nerds have no problem understanding, at least at a general level, the Nobel Prizes. We may not understand the details of the physics, chemistry, or biology involved or the exact details of what the winners did to win the prize but we understand the general story. Many people do not.

On the other hand, the Ig Nobel Prizes are generally understood by everybody. A common misconception is that the Ig Nobel prizes are for silly and unserious research but that’s not quite right. The truth is that the winners have produced legitimate research but research that does not rise to the level of world changing. They win the prize because the subject of their research sounds amusing.

There is, for example, research on what, exactly, a kiss is, the physics of blowing your nose, the optimum shape of urinals, the pleasing odors of newborns, and the energy efficiency of cockroach milk versus cow milk. None of these represents a significant leap forward in human understanding of our world but they do increase our understanding of our environment. One can reasonably ask, “What do you consider more important: a splash-free urinal or the latest quantum particle?”

In any event, take a look at this years Ig Nobel Prize winners and enjoy celebrating the less significant research results.

Posted in General | Tagged | Leave a comment

Why Irreal Doesn’t Do Politics

Most Irreal readers know that we here at Irreal have a strict rule against dealing with politics. It’s not that we don’t have political opinions, it’s that we think they’re mainly relevant in the voting both and shouldn’t spill over into our day-to-day life.

Marco Arment, who is well known in tech circles, has a beautiful post on politics in everyday life that really resonated with me because it reflected my own views so faithfully. Arment tells the story of some of his neighbors while he was growing up. He didn’t know or care about their politics, only that they were good neighbors and helped his family and their other neighbors whenever they could. He wonders why he should be expected to shun good people simply because their politics differ from his.

Sadly, the opposite view is prevalent today. If you’re a Republican, a Democrat is one of the “other” and vice versa. I remember years ago reading someone saying that they could never date a Republican. That struck me odd and I couldn’t understand it. Why, if you met someone you liked and found attractive, would their politics matter?

My family and I have good friends of many political persuasions and we get along well by simply not dwelling on our differing political views. Sometimes we even discuss politics but always with respect for each others’ views.

One of the worst aspects of this is the dismissal of someone’s (nonpolitical) views and work simply because of disagreement with their politics. In our field, Richard Stallman and Eric Raymond come to mind as targets of this. Despite their significant contributions, some would dismiss them because they don’t like their politics. The world would be a much better place if everyone adopted Arment’s views.

Posted in Blogging, General | Tagged | Leave a comment

How Advertising Corrupts

Regular readers know that the Irreal bunker is a resident of the Apple Exosphere but we don’t consider ourselves fanbois. We like Apple but it’s not a religion. One area where we are especially critical of Apple is their embracing of advertising. Not advertising of Apple and its products, of course, but of its deciding to sell advertising spots to third parties that sully their users’ experience. The inevitable end is that the user gets replaced by the advertiser as the customer. It’s an ugly and disgusting process and those who pursue it deserve the backlash that they will surely experience.

Case in point: General Motors. Despite fierce opposition from their customers, GM decided to eliminate Car Play from their new cars in favor of their own multimedia system. Their given reasons for this are so laughable that they don’t deserve comment. The real reason, of course, is that they want to capture user data so they can sell it to advertisers. And so the car buyer is replaced by the advertiser as the customer.

We nerds are probably going to tell GM to go pound sand and take our money elsewhere but what about the normies? Will they look elsewhere or will they just shrug and go along? Now, serendipitously, we have an answer. The TL;DR is that Honda was behind in their electric vehicle program so they arranged with GM’s Chevrolet to sell their EV under the Honda brand. The vehicles are identical in every way that matters except one. Honda includes Apple CarPlay and Android Auto integration. It’s the perfect A/B test1. The results are just what you’d expect. Honda significantly outsold Chevrolet. See the article for the details.

GM and the suits that drove the decision to drop Car Play in the face of customer fury deserve what they get. Maybe a couple of years of plummeting sales will open their eyes and result in a more astute C-sute.

Between writing and publishing the above, I stumbled upon another egregious example. LG Smart TVs were caught spying on their customers. This goes way beyond the sadly normal practice of capturing what the user is watching. It includes recording ambient audio even when the screen is off and the TV unplugged from the network2; scanning for other devices on the local network, including things like smart watches; and even discovering nearby WiFi systems, their signal strength, and their locations. All this information is sent directly to LG’s targeted advertising arm.

Once again, we see the users—the buyers of LG’s products—being replaced by advertisers as the customer. People who care about their privacy should not buy products from this company and, really, never enable smart TV features or plug them into the Internet.

Footnotes:

1

John Gruber, over at Daring Fireball is not so sure. He posits that maybe Honda is just a more popular make or better at selling cars. I’m not convinced by his demurrals.

2

When the TVs are not attached to the network, they store the audio until they get reattached.

Posted in General | Tagged | Leave a comment

Jinx Update Number …

… I’ve lost track. I’ve been using Jinx for my spelling correction for a while now and really like it. When I first started, my main problem was that the selection procedure described in the documentation didn’t work for me. I was almost certain that was because of an interaction with Ivy; my commenters agreed and offered some things to try.

After some experimentation, I still wasn’t able to get that aspect of Jinx working. I decided to wait for Emacs 31 to revisit the issue. Emacs 31 is here but I still haven’t addressed the problem. Most of the reason for that is that I’ve developed some efficient muscle memory for dealing with the problem. I have jinx-correct bound to Ctrl+; and when I call jinx-correct, I continue holding down Ctrl and can easily move down in the list of alternatives by pressing n. Usually the first choice is the one I want so it’s only a single press. Then I type Return to update the text.

That seems like a little more work than simply pressing a number but I don’t need to move my hands or reach to do it so it seems easy to me. I’ll probably do a bit more research and get the default method working when I get a chance but in the mean time, I’m pretty happy with how it’s working for me now.

I’m really enjoying how easy it is to put an “unknown spelling” in a variety of places—the current file, the current directory, or in a personal global dictionary—and am happy I switched. If you haven’t tried it yet, you should give it a spin.

Update [2026-09-09 Wed 11:55]: Fixed title typo.

Posted in General | Tagged | Leave a comment

Make Git Ignore Everything By Default

Alex Pliutau over at Package Main has some sage advice about Git usage that hadn’t occurred to me. The advice is simple: ignore everything by default. The idea is to avoid filling up your repository with junk. Things like generated files, OS generated files having nothing to do with your project, IDE configuration files, AI slop, and even—most critically—secret credentials that are somehow always seeping into git repositories.

All that happens because you didn’t think to add them to the .gitignore file. And it’s an ongoing problem: new files that shouldn’t get tracked are being created all the time. Pliutau’s idea is simple. Flip things around by ignoring everything by default and then add the files you do want to track explicitly.

That turns out to be easy. You simply add * as the first line of your .gitignore file telling it to ignore everything. Then you add the exceptions to that policy on subsequent lines. See Pliutau’s post for any example. You don’t, of course, have to add, say, each C file by hand. A simple !*.c gets them all.

I really like this idea. Like most great ideas, it’s simple yet powerful. I wish it had occurred to me early on. My .emacs.d repository, in particular, is a total mess with all sorts of junk that shouldn’t be in there. It’s been on my list of things to clean up for years. Maybe Pliutau’s hint will inspire me to finally do so.

Posted in General | Tagged , | Leave a comment