Emacs Carnival Writing Experience: Eric MacAdie

The latest addition to the Emacs Carnival on Writing Experience is from Eric MacAdie. He begins by saying that with the exception of source code, he hardly ever writes plain text files anymore, only Org files. I realized, when I read that, that it also applies to me. Even when I’m just taking a quick note, it starts out as an Org file and may later be fleshed out to be a full fledged Org file but even if it’s not, it’s an org file with all the formatting and structure that implies.

MacAdie does the same thing although he sometimes starts with a paper note. We here in the Irreal Bunker long ago gave up the use of such primitive tools but the idea is the same: capture an embryonic idea and flesh it out as your understanding ripens.

MacAdie also uses Org to publish his blog posts about the EmacsATX meetings but his workflow is considerably different from mine. It’s another demonstration of how Emacs and Org mode can adjust themselves to suit your individual requirements.

Take a look at his post to see one way to leverage Emacs and Org for your writing. It probably won’t match your needs exactly but you might get some ideas.

Posted in General | Tagged , | Leave a comment

Emacs Send To

Álvaro Ramírez, whom I’ve a written a lot about lately because of his excellent Journelly app, just announced that an Emacs patch of his has been accepted and merged into Master. That sort of thing happens everyday, of course, but Ramírez’s contribution is unique because it started life as a macOS specific capability. The FSF’s way of punishing apostates who use macOS or other “non-free” software is to refuse to accept patches to Emacs that are specific to such software.

Because of this, Ramírez didn’t have much hope of having his patch accepted but he persevered nonetheless and, thankfully, it was accepted. He rewrote his patch to be a framework that would work on any OS if the necessary support modules were provided.

The patch, as originally conceived, was an Emacs interface to the the macOS share functionality. As accepted, the framework will do the same thing in any system that provides the necessary interface modules.

Like Ramírez, I’m grateful that Eli Zaretskii and Steven Kangas recognized the value of his contribution and worked to make it acceptable to the wider Emacs community. It’s not a groundbreaking change but it will make it a bit easier for us to meet our goal of being able to stay in Emacs as much as possible.

I’m not sure, and Ramírez doesn’t say, when his changes will appear. They’ve been merged into Master but I don’t know if that means they’ll appear in Emacs 30.2 or if we’ll have to wait to Emacs 31. Regardless, it’s a nice change and will make all our lives a bit nicer regardless of which operating system we’re using.

Posted in General | Tagged | Leave a comment

Emacs Everywhere Even In Wayland

I could have written these words:

If you are anything like me, you probably feel something is wrong whenever you have to input text outside of Emacs.

but I didn’t. They were actually written by Thanos Apollo. Like me, he loves the idea of Emacs Everywhere so that he seldom, if ever, has to input text outside of Emacs. The problem is, he’s a Wayland user and the Emacs Everywhere package doesn’t (yet?) work there. Happily, for those of you running Emacs on Wayland, he has a fix for you.

There’s a bit of Elisp to add to your init.el and a package, wtype, to install if it isn’t already on your system. His post shows you how to set things up step by step so take a look if you’re interested.

If you’re not using Wayland—in particular if you’re on macOS—this doesn’t apply to you and you should just install the Emacs Everywhere package. But if you are using Wayland, welcome to the club. I’m sure that you’ll find, like Apollo and I, that being able to input text with Emacs no matter what app you’re in is a game changer and stress reducer.

Update [2025-07-21 Mon 11:00]: Fixed title typo.

Posted in General | Tagged | Leave a comment

Customizing The Help Menu

If you follow Charles Choi’s work, you’ll know that, unlike some of us, he’s not afraid of menus and uses then frequently. His latest hack is to take a look at—and reimagine—the Emacs Help menu. You can read his post for all the details but the thing I really like is popping up help in a new frame. The result is that you can keep the help around for as long as you need it without feeling the need to reclaim the screen real estate.

You can do that with buffers in a single frame, of course, but putting it in an separate frame makes it seem more disjoint from your working environment: it’s right there if you need it but it’s not cluttering up your working buffers.

Choi implements this with three new commands:

  1. Open an Info buffer in a new frame
  2. Open a new Info instance in a new frame
  3. Open a Man page in a new frame

This seems particularly nice if you have enough screen real estate to keep the new frames visible. All the information is there to consult without disturbing your working buffers. It’s a nice way of removing a bit of friction from your workflow.

We here at Irreal prefer not to use menus—although we have been known to under duress—but I really like the idea of invoking separate frames for help. Choi gives the code for his changes so it would probably be trivial to bind the functions to a key shortcut instead of—or in addition to—a menu. Take a look at Choi’s post and see what you think.

Posted in General | Tagged | Leave a comment

🥩 Red Meat Friday: We Should Stop Whining

Want to feel ashamed? Of course you don’t but this post will make you feel that way anyway. Too many of us spend our time whining about the tech we use. One aspect of that is how hard it is to learn Emacs or any other serious editor. Read the technical forums. They’re full of whining: “I don’t have time to learn my tools.” “I’m not wasting my time learning Elisp” “Why can’t it just do what I expect it to do?” “OMG, the keybindings!” And on and on.

Then there’s this guy. He’s been blind since birth and guess what? He’s learned to use Emacs and is thankful for it. He uses Emacspeak for both his programming and writing. He says it fills him with joy.

I don’t know about you but I can’t imagine doing what he does. He can’t see. He can’t even remember seeing but he has still managed to learn Emacs and make it an important part of his life.

What’s that? You don’t like the default key bindings? You don’t like the default theme? It takes too long to load? Get over yourself. If a guy who can’t see—who’s never been able to see—can learn and master Emacs so can you.

What’s most striking to me is that he sees every day as an opportunity to learn something new about Emacs and improve his workflow. We could all learn something from him. We are, really, lucky to have so many great tools available to use, often for free. I’m happy his post pointed this out to me.

Posted in General | Tagged , | Leave a comment

Org Agenda

Chris Maiorana has a post that discusses his thoughts on Org Agenda. His discussion is mainly why you might want to use it and what you’d want to use it for. The main takeaway from his post is that Org Agenda is very flexible and customizable.

You can decide what information you want displayed in the agenda and how you want it displayed. Maiorana lists some of the ways you might want to use the Agenda or, perhaps, not use it all.

Not a bit of it resonated with me. I’ve always simply thought of the Agenda as a list of those headings in certain Org files that have an active date. The traditional way of using it is to have a TODO file or a set of files with TODO items and have those—along with their scheduled and end dates—displayed in the Agenda. I do that too but mostly I use Agenda as a report.

As I’ve mentioned before, I keep a detailed list of my daily activities and these are displayed in the Agenda. This turns out to be useful for more than just taking trips down memory lane. For example, when I have an external appointment, I record when I leave, when I arrive, when I leave the appointment, and when I get back. That way, the next time I have an appointment at the same place, I have an idea of the travel time—and therefore when to leave—and how long it will take to get back. It’s useful information to have and well worth the effort to collect it.

Of course, that’s just one way to use the Agenda and almost certainly not the most common way. But that’s the point: you can mold the agenda to be anything you want.

Posted in General | Tagged , | Leave a comment

The Story Of Mel

I know that I’ve written about this before but The Story of Mel is a classic piece of programming lore that all programmers in my cohort knew. I’m not sure if younger programmers know it so if you’re unfamiliar with the story, take a couple of minutes to read it; it’s not long.

No realistic person would take the story as anything but a parable but the odd thing is that it turns out to be true. Not just sort of true but true. Not only did Mel exist but he did all the things in that story.

The thing I love about the story is that every time I start feeling sorry for myself about how hard my programming work is, I remember Mel and what it was like for him. Imagine having to calculate where to put the next instruction so that it will be under the drum read head when it’s time to execute it. That was literally what Mel was doing.

This a great story and one that I didn’t think was true for a long time. It was only a couple of years ago that I found out that, in fact, Mel really did exist and that the Story of Mel was true. The Jargon File calls the story of Mel one of hackerdom’s great heroic epics. If you haven’t read it or haven’t read it lately, take a look.

Posted in General | Tagged | Leave a comment

You Can’t Make This Stuff Up

Every year or so, Irreal publishes a list of the most popular passwords as determined by those found by exploits. It’s always exciting to see if the perennial favorite password or the hometown favorite (and frequent winner) 123456 will win first place. Every time I see the list my first thought is of Aunt Millie. I’m sure it’s the same for most of you. No one, we think, but the most naive of lusers would use passwords like that.

Sadly, that’s not true. Imagine being a professional developer working for an established company with high profile clients and thinking that it would be a good idea to use 123456 as the default login ID and password for the administrator panel of an applications used by most McDonald franchises to “interview” perspective employees. According to Bleepingcomputer that’s exactly what happened. But wait. It gets better. The security researchers also discovered that the user IDs of prospective employees were simply a counter implemented for each interviewee and that they could access other interviewee’s records by simply incrementing or decrementing the ID.

The result of these two exploits is that the personal information—including, apparently, personality tests—of 64 million people was exposed. After the exploit was reported, McDonalds and the vendor fixed things but who knows how much damage was done.

It’s just inconceivable that a serious company could be making these n00b mistakes. Even “n00b mistake” isn’t quite right. Just about everyone with the least security consciousness knows that those are two things you should never do.

Posted in General | Tagged | Leave a comment

Do We Really Need Lisp Machines?

As you all know by now, I’m a fan of the Lisp Machine concept. Like the majority of people, I never had the opportunity to work on an actual Lisp Machine—they were horrendously expensive and they haven’t been produced in years. They were never commercially successful but nevertheless enjoy an almost mythical reputation.

Today, the best most people can do is Emacs. That’s pretty good, actually, but Emacs can’t begin to match the power of the Lisp Machine operating environment. Still, most of us have come to peace with the idea of Emacs as the modern Lisp Machine.

Most of us but not all. For example, Fulton, over at Fulton’s Ramblings, believes that not only were Lisp Machines were the right thing but that their time is coming again. He notes that while Unix ran on relatively modest hardware, Lisp Machines required significant hardware including lots of memory and a frame buffer. All that was expensive back then and by the time the prices came down, Unix was well established and had captured the market and mind share.

Fulton believes that Unix has a myriad of problems and that those problems will lead to a resurgence of the Lisp Machine era. As much as I love the idea Lisp Machines, I don’t think this is going to happen. Sure, Unix has grown increasingly complex but that’s because it’s addressing increasingly complex problems. Lisp Machines didn’t have to worry about (hideously complex) things like Web Browsers, or even the ubiquitous Web.

Were Lisp Machines to reemerge, they would undoubtedly undergo the same complexification that Unix has suffered. Don’t get me wrong, I’d love to see a modern Lisp Machine but, really, it’s a nerd dream that would almost certainly be unable to gain popular acceptance. After all, we can’t even convince most nerds to learn Lisp.

Even if the nerd market were large enough, what would we use them for? Presumably software development would be the main use but writing software for different Unix platforms is already difficult enough. Imagine how hard it would be if we were developing it on a completely different system.

I’m doubtful that I’ll see the second coming of Lisp Machines but I do have Emacs which is a pretty good approximation and an excellent compromise given the market and technical realities.

Posted in General | Tagged | Leave a comment

Dealing With The Thing At Point

A few weeks ago I mentioned that Sacha Chua is tremendously organized and gave an example of that organization. That example was about how she automated organizing tasks based on her calendar. Now she provides us with another example.

This time, she provides a shortcut for dealing with the thing at point. Someone asked her for a way of either opening the URL at point or searching for the word or region if the point wasn’t on a URL. Chua, of course, not only ran with that but expanded it to be even more useful. She presents code that deals with whatever the point is on in the following way:

  • Unless there is an active region, assume that the thing at point is a URL, word, an email address, or a filename. If it is a region, just add the text for processing as below
  • If there are links, open them
  • If there are email addresses open an email compose buffer with those addresses populating the “TO:” header
  • If it’s a filename, open it
  • Otherwise do a Web search on the word or text from the region

Chua also describes some nice customizations. You can specify what function to call for searching. This is more than just picking your browser of choice. See Chua’s post for the details. This can even be fine grained. You might want to use different “browsing functions” depending on what kind of link it is. Again, see the post for details.

There’s not really enough code involved to make it into a package but if you’re interested, it would be easy to just add Chua’s code to your init.el.

Posted in General | Tagged | Leave a comment