Why I Use Ad Blockers

If you’ve been around Irreal for a while, you know that I’ve always been conflicted about ad blockers. On the one hand, I recognize that content providers have to make money some how and that the only reasonably way in today’s Internet is through ads. Because of that, I’ve always said that I’m willing to see ads just as I was in the old days when we consumed content from magazines and newspapers.

My only objection was that the ads had become surveillance mechanisms that would track you wherever you went on the Internet. Enough is enough and I finally declared that I was going to block ads and would stop when the advertisers stopped tracking me. In today’s world, that means never.

Happily, my use of Magic Lasso removed all the trackers and much more besides. As a result, I could still surf the Web and not have to worry about being tracked. I was still waiting for the advertisers to stop tracking so I could turn off the add blocker.

Sadly, I have to upgrade that policy. As I’ve written before, I use Xwidgets to display my Emails and Elfeed entries in HTML. The thing about Xwidgets in Emacs is that it doesn’t run Magic Lasso or any other ad blocker so I get to see what the Web is like without ad blockers.

It’s not pretty. There are multiple popups that cover the content, videos that play—and loudly—without permission and many other affronts to one’s sensibilities. As Cory Doctorow is fond of saying, it’s the enshittificaiton of the Web.

I’m not against sites showing us ads in a way similar to what magazines and newspapers have traditionally done but if you want your ad to pop up and cover the content I’m trying to read or you want to play some video without invitation, I’m going to continue blocking your ads until you stop.

Posted in General | Tagged | Leave a comment

Exporting From Org Agenda To macOS Calendar

Aimé Bertrand has an nice post on how he exports scheduled items in his org agenda to his macOS calendar. He mostly lives in Emacs and Org mode but, like, me also likes to have his appointments and other scheduled events in his macOS calendar. The main attraction for doing this to me is that it will sync all your appointments to all your devices as well as share it with appropriate other people. Sadly, Emacs doesn’t run on iOS and given Apple’s no interpreters policy, probably never will.

Bertrand wasn’t concerned with keeping the two calendars synced; he only wanted to export his Org scheduled events to the macOS calendar. This turned out to be harder than you might think. The existing solutions didn’t quite do what he needed so he decided to roll his own.

You can read his post for the details. He has a couple of different ways of approaching the problem. The details aside, the takeaway for me is the flexibility of Emacs and its ability to interact with other applications that may never have heard of Emacs.

If you’re using Emacs on a Mac and would like to ensure that all your Org scheduled events are reflected on the system calendar, take a look at Bertrand’s post for one way of solving the problem.

Posted in General | Tagged , | Leave a comment

Writing SF With Emacs

Theena Kumaragurunathan, a filmmaker, photographer, and writer, has an interesting post on using Emacs for writing science fiction. There’s nothing new about that, if course. Several well known SF authors use Emacs. Kumaragurunathan’s post is interesting for two reasons:

  1. The story of his journey from using a word processor, to a customized Vim/NeoVim editing environment, and finally to a happy Emacs user.
  2. His use of Emacs as a model for his “Brain Computer Interface”, a central part of his story.

The brain computer interface (BCI) is how the technical elite communicate with a sentient AI 500 years in the future. The BCI is more complicated and featureful than that described in Niven and Pournelle’s Oath of Fealty. Instead of dealing with buffers, it deals with thought patterns and, as with Emacs buffers, they can be manipulated in various ways by a programming language built into the BCI.

It’s an interesting concept but for those of us in 2026, the real value of Kumaragurunathan’s post is his journey from word processors to Emacs. The journey is one of a quest to control his writing environment. Many Irreal readers will relate even if they have to substitute “programming environment” for “writing environment”.

Kumaragurunathan is promising a followup post in which he will discuss his Emacs workflow and how he uses it for writing fiction, research notes, film scripts, and even for programming. I’m looking forward to it.

Posted in General | Tagged | Leave a comment

Winpulse

Álvaro Ramírez has a new Emacs app available. The app, winpulse, is his answer to keeping track of the active window. What happens is that every time the focus changes the new window flashes so you get a visual indication of the new window.

I had the same problem but solved it in a different way. I made the modeline of the active window a strikingly different color so that it’s easy to spot the one with focus. I like my solution better because the indication has longevity. If I get up and then return to my computer, I can immediately see which window is active. The nice thing about my solution is that it simply amounts to a set-face-attribute as you can see in my post or below.

None of this will come as news to Ramírez, of course. He simply prefers a different way of indicating the active window and, as always, Emacs makes it easy to have it your way.

Ramírez says the the app is brand new so it won’t be on Melpa yet but you can get it from its GitHup repository. If you like just having a momentary indication of the active window, Ramírez’s solution may be just what you’re looking for. If you prefer something a little stickier, changing the color of the modeline has worked very well for me. You could, I suppose even use both methods.

For the record, here’s the current code from my inet.el:

(set-face-attribute 'mode-line-active nil
:foreground "black" :background "goldenrod" :box '(:line-width 1 :color
"black"))

Unless you have a tan background, goldenrod probably isn’t the right color for you but you can experiment to see what works well with your theme.

Posted in General | Tagged | Leave a comment

Snippets With Regular Expressions

It’s been years since I wrote about Gilles Castel and his astounding ability to take LaTeX notes so fast that he was able to keep up with the the instructor in his Mathematics classes. Sadly, Castel died in 2022 but his blog—including the two posts [1, 2] that deal with taking Mathematics notes with the associated diagrams—is still up.

Castel used Vim so he didn’t have AUCTeX but he did have a large collection of UltiSnips snippets that he used to make entering LaTeX fast and relatively painless. One feature of UltiSnips that he leveraged was the ability to specify the trigger word with a regular expression. For example, he uses that capability to recognize subscripts so that a2a_2. See his post for other examples.

Naturally, we Emacs nerds went crazy and attempted to replicate his system in Emacs. Karthink had a particularly good solution using AUCTeX, CDLaTeX, and YASnippet. Still it would be nice to be able to specify triggers with a regex.

Over at the Emacs subreddit, nmorazotti has a solution. He’s put together a snippet package, Resnippets.el, that can recognize a regex as a trigger. If you’ve been yearning to try Castel’s approach to taking LaTeX notes, resnippets may be useful.

I won’t be using it for two reasons. First it’s LLM generated and I have a prejudice—rational or not—against AI generated code. Second, and probably more important, is that the snippets are all autoapplied. I HATE that. I want to explicitly invoke the snippet with a Tab. Actually, UltiSnips has this right. By default you invoke its snippet explicitly but you can, on an individual snippet basis, choose to have them invoked automatically.

I don’t know if anyone is still interested in all this but it was fun for me to revisit it.

Posted in General | Tagged | Leave a comment

Casual For Registers, Rectangles, And Windows

As you probably know, I’m a big fan of Charles Choi’s Casual Suite. His latest offering deals with registers, rectangles, and windows. Much as I like the Casual Suite, I won’t be using these latest menus. Choi, as usual, is absolutely correct about the various bindings being difficult to remember but I can remember that Ctrl+x r is the prefix for both registers and rectangles. If I type Ctrl+x r and wait a second, which-key will pop up a display with all the completions. This seems easier to me than invoking a Casual menu.

As for windows, I hardly ever want to rearrange them. Mostly I just want to switch focus between them and for that the excellent ace-window does the job nicely and I have it bound to Ctrl+x o one of the first bindings you learn as Emacs beginner. The only rearrangement I ever want to do is to switch two windows and ace-window does that if called with the universal argument.

Of course, all that’s just me. You may not use which-key and may often move your windows around. If so, Choi’s solution may be just what you need. He even has bindings for using the numeric keypad keys if you have a full size keyboard. If you already have Casual installed, all this is already available and all you have to do is specify some bindings for it as shown in Choi’s post.

Posted in General | Tagged | Leave a comment

Toggling Between Let and Let*

If you aren’t an Elisp programmer—or at least some sort of Lisp programmer—this post won’t make much sense to you. If you do write in Elisp/Lisp, it tells you how to sand down a tiny bump in your workflow. It falls under the category of a small itch that you ignore until you can’t stand it anymore.

Over at the Emacs reddit, sauntcartas recounts how he always ended up needing to switch between let and let*. The difference is subtle—it concerns whether or not any of the arguments depend on any of the others—but the need to switch comes up naturally, often right in the middle of writing the code. It doesn’t take a lot of effort to navigate back to the let and add or delete the *, of course, but it does provide a bit of friction, especially if you write a lot of Lisp.

Emacs to the rescue. A tiny bit Elisp looks for the enclosing let and toggles it between the two forms. It’s a minor itch to be sure but it’s another great example of how Emacs can make your editing easier. If you write in Lisp, you really should add this bit of Elisp to your init.el. Sauntcartas’ code even reindents things if necessary.

Posted in General | Tagged , | Leave a comment

Declarative, Reproducible Emacs

Jacob Boxerman has a nice video and related blog post about his approach to configuring Emacs in a declarative and reproducible way. By “reproducible” he means that if he installs his init.el on a new system, he gets the exact same Emacs environment. That doesn’t mean just things like colors and key bindings but also that the same versions of the same packages are loaded and available.

By “declarative” he means, essentially, that he uses use-package and straight.el to specify and configure his packages in a declarative way. The goal is that the order of the declarations doesn’t matter and if one declaration s deleted, no other package is affected.

The video is a tour through a sample configuration based on Boxerman’s that shows how he accomplishes these things. The declarative part is mostly handled by use-package while the reproducible part depends mostly on straight’s ability to lock a file to a specific version. Take a look at the video and associated blog post for the details.

If, like me, you don’t have multiple machines that you require to provide exactly the same Emacs environment, you can probably omit straight.el but the idea of putting all your configuration in use-package blocks is a good one. It goes a long way towards ensuring that changes in one area won’t affect things in another.

Boxerman describes an excellent way of keeping your Emacs configuration under control and avoiding problems when—inevitably—you have to make changes. The video is only 8 minutes, 23 seconds so it’s easy to find time for it. If you find his ideas useful, take a look at his post, which explores them in a bit more detail.

Posted in General | Tagged | Leave a comment

Org Capture From Anywhere

Just a quickie today. Jack Baty has a short post on how he enables Org capture from anywhere on his system. He does pretty much what I do except that I use yequake instead of his custom script.

Yequake probably handles the edge cases but either way you simply evoke Emacs and ask it to run a bit of custom Elisp. If you aren’t doing something like this, you should take a look at Baty’s post or Alphapappa’s yequake. No matter where you are, you can bring up your capture menu and bring notes or a browser link into Emacs. I use it many times a day, especially for capturing items that I might want to write about in Irreal.

This is just another example of how Emacs can ease your workflow. You simply pop up an Emacs frame, capture you note, and deal with it later. It’s about as easy a way of capturing a quick note without breaking you out of the flow as you can get. If Emacs is at the center of your workflow, you should definitely check out Baty’s post or Alphapappa’s yequake.

Posted in General | Tagged , | Leave a comment

Remote Work: Advice From A Veteran

For reasons having to do with adverse serendipity, I’ve never been able to achieve one of my long held employment goals: remote work. For one reason or another, I’ve always ended up working for control freaks who just knew that if they couldn’t see and monitor their workers in real time they were going to goof off. That probably says more about them than those who work for them but it is a reality that can’t be ignored.

Rion Williams has been working remotely for a decade and has some advice. If you’re in a position to work remotely and suffering some anxiety you should definitely take a look at his post. The secret, he says, is balance. But the balance is a two-way street. You must balance your work flow so that you give your employer full value but maintain a separation between your work and non-work life so that you don’t burn out.

But you can’t make remote successful on your own. Your company also has to do things to make it work. Most important, of course, is giving up the micromanagement. Theoretically, that’s actually pretty easy. Companies have to start valuing and rewarding results rather than attendance. In actuality, it can be very hard for companies to make this adjustment and if they can’t, remote work is going to fail.

Given that you and your company have the proper attitude towards remote work, there are still some things to keep in mind. Take a look at Williams’ post to see what he thinks you should do to make it work.

Remote work isn’t for everyone. The smartest person I know went back to the office during the COVID-19 epidemic because he had difficulty knowing when to stop working and was afraid of burning out. He found it easier to leave the office at the end of the day than to stop working at home. But if remote work is for you, Williams’ post is worth reading.

Posted in General | Tagged | Leave a comment