A Priestly View Of Emacs

Priests and other religious leaders of various persuasions have been known to use Emacs. It’s not common, of course, but Irreal has mentioned a couple of them—most recently Randy Ridenour—but in almost 16 years, I can’t remember more than two.

Until now. MykhailoKazarian is a priest in the Orthodox Church of Ukraine and is far from a casual Emacs users. Rather than using Emacs to write his sermons, papers, and keep church records, Father Mykhailo is an actual coder who’s worked with Pascal, Python, and Java.

Due to the current difficulties in the Ukraine, Father Mykhailo has had to work with less than ideal conditions, including poor Internet connections and—what some would call—under powered hardware. Through it all he’s been an Emacs user. He says he’s still an Emacs user in 2025 and has a long post on why.

One of the things you often hear about Emacs is that it’s bloated, needs a lot of memory, and won’t run reasonably on anything but the most powerful hardware. Put aside, for the moment, the history of Emacs that puts the lie to that claim, Father Mykhailo is running Emacs on a Raspberry Pi—sometimes, when conditions warrant, powered by an automobile battery—and still manages to enjoy the many benefit that Emacs offers.

Father Mykhailo’s post goes into a lot of detail on why he’s still using Emacs after 20 years and plans to keep on using it. Take a look at his post for a deeper dive.

Posted in General | Tagged | Leave a comment

Entering Dates In Calc With Org

Marcin Borkowski (mbork) has an interesting post on entering dates in Calc mode. The short version is that he often enters dates in Calc but it’s a painful exercise. He’d much rather enter them the same way you do in Org mode, which is intuitive and flexible. That flexibility comes at the cost of being complicated but that’s mostly because there are so many easy ways to specify a date.

Naturally, mbork wanted to be able to enter Calc dates in the user friendly Org mode way. That turns out to be surprisingly easy. After the boilerplate it’s just a couple of lines of code plus another line to bind a key sequence to the function in the Calc key map. Read mbork’s post to see what I mean about easy.

What struck me most about the post was his mention of org-read-date, which Org uses to read dates. It’s incredibly flexible and, as mbork shows, usable in non-Org contexts. Take a look at the doc string for org-read-date to see what I mean. Even though I spend a huge amount of time in Org mode and enter a lot of date/time stamps and even though I’ve read the documentation on entering dates in Org, I didn’t remember how powerful the function is. Take a look at the doc string to see all the ways you can specify dates.

This is just another example of Emacs’ extensibility. Mbork had a problem and was able to solve it by gluing together a couple of existing Emacs functions that nominally had nothing to do with each other.

Posted in General | Tagged , | Leave a comment

Extensibility In Lisp And Emacs

Joe Marshall has a nice post on Why Lisp Still Matters. He observes that Lisp tends to attract the very best programmers but the reason for that and the reason for Lisp’s enduring success is its extensibility. As Marshall says, the thing about Lisp is that it’s based on the Lambda calculus, which means, among other things, that the language can be extended in terms of itself. In practical terms, that means that you can use macros to define new syntax and provide the semantics of that new syntax with some functions.

All of this is fairly well known and Marshall has a good exposition of the argument in his post. As I was reading it, it popped into my mind that it’s the same with Emacs. It’s not—just—a matter of Emacs being written in Lisp. The similarity is based on their extensibility. Like Lisp, if you need some new Emacs functionality it’s easy to build it yourself using the language the Emacs itself is written in. As with any Lisp, you can even extend Emacs’ Lisp language if you need to.

A lot of Emacs’ extensibility is, of course, enabled by it’s being written in Elisp. That fact should give pause to all those who are always agitating for Emacs to be rewritten in Java, Javascript, Python, Ruby, or whatever. I doubt every much that we’d have the same level of extensibility if that were to happen.

Posted in General | Tagged , | Leave a comment

How To Reveal You’re An Emacs User Without Saying So

Here’s a bit of humor that I’ve had sitting in one of my browser tabs for some time. Over on the Emacs subreddit, Hlorri asks you to Tell me you use emacs (without telling me you use emacs). Although meant to be humorous—and many of the answers are humorous—a lot of them reveal important things about Emacs.

The most common humorous answer involves the strength of the user’s pinky. A typical example is, “I thumb wrestle with my pinky.” Another, that I really liked and could relate to was, “My editor’s config file is older than some of my co-workers.” Several offerings involved the wearing away of the text on the CTRL key.

Among the answers that weren’t so much funny as telling were:

  • I expect to get things done in a single app.
  • I cannot use essentially any other piece of software without accidentally opening 10 print dialogs or new blank documents/tabs at some point. (and several variations on this theme)
  • There’s a mixture of awe, confusion, and mystery when I pair program with co-workers.
  • Whenever someone wants to give me any “advice” I frown.
  • I interactively do right what other people write programs to do wrong.
  • I use the same program for e-mails, coding, calendar and keeping notes (and probably much more).
  • I write utilities in elisp instead of bash.
  • You mean your code editor doesn’t have a media player, or a planner, or its own window manager?

And a bunch more. Take a look at Hlorri’s post to see them all.

Posted in General | Tagged | Leave a comment

The Brilliance of UTF-8

Vishnu Haridas has a nice post on UTF-8 and how it works. He’s impressed with the brilliance of its design. And why not? It provides code points for virtually every written language in the world while maintaining compatibility with ASCII. Among other things, “compatibility” means that any ASCII character is represented the same way in UTF-8 and that every file containing only ASCII characters is a valid UTF-8 file and that every UTF-8 file containing only ASCII characters is a valid ASCII file.

It almost seems like magic and Haridas is right to be impressed. He doesn’t mention the back story and if he’s unfamiliar with it, he’d be even more impressed. As I’ve written before, UTF-8 was designed over dinner on a paper placemat by the legendary Ken Thompson and Rob Pike. But wait. There’s more. After dinner Pike and Thompson returned to Bell Labs and while Thompson implemented the packing and unpacking code, Pike dug into the Plan 9 graphics library and began changing it to use UTF-8. By the end of the night they were done and by the end of the next day, Plan 9 was running UTF-8 and only UTF-8.

These days it seems we can’t even get a vacation request accomplished that quickly but Thompson and Pike designed, implemented, and ported into Plan 9 a world changing character encoding that revolutionized digital typography in the space of a couple of days.

Another part of the back story is that Pike and Thompson didn’t just decide to invent UTF-8 on a whim. They were motivated by what they considered the inadequate, committee designed proposals floating around and, in particular, one from IBM that they were asked to review. You can read the whole story as told by Rob Pike if you want to know all the details and get a peek at Thompson’s original code.

Posted in General | Tagged | Leave a comment

Bell Labs

Editorial Note

I’ve had this post in my queue for over a month because just as I was about to publish it, the link to Tasbolatov’s post stopped working. It’s just now come back on line so I’m happy to be able to finally publish it.

I’ve been a long time admirer of Bell Labs and the culture that they engendered. It was a marvelous thing and for a while I dreamed about being part of it. We nerds tend to identify Bell Labs with the CSRC and Unix but it was so much more. They did, after all, invent the transistor, the laser, and surprisingly the “modern” vacuum tube, as well as many other things that we now take for granted.

If you’re interested the history of Bell Labs and their many accomplishments, this post by Sabyrzhan Tasbolatov is a nice, short summary that explores the major Bell Labs achievements and the people behind them. It’s an impressive list.

Even more interesting to me is the article by Areoform that considers Why Bell Labs Worked. If you’ve been around Irreal for a while you know that I have little patience with (non-engineering) management meddling in Engineering activities. It’s easy to think that I’m being naive and that of course management needs to keep a tight reign on the engineers to make sure there’s no slacking off and that company goals are being actively pursued.

I maintain, as I always have, that this is special pleading from the control freaks and is actually counterproductive. The Labs stand as a blazing refutation of the nonsense from the special pleaders. They accomplished achievement after wonderful achievement without micromanaging or meddling from the suits.

Marvin Kelly, the man who built Bell Labs, felt that

[I]t wasn’t Kelly’s job to micromanage people. Yes, they worked for him, but in his model, he wasn’t their employer — he was their patron.

That attitude made all the difference but, of course, according to the control freaks it couldn’t possibly work.

A case could be made, I suppose, that AT&T enjoyed a privileged position due to their status as a legal monopoly and I suppose it did help prevent the suits from constantly asking, “What have you done for me lately?” but at the end of the day, the Bell Labs approach produced far more than the “realistic” approach favored by current day management.

Posted in General | Tagged | Leave a comment

Semantic Line Breaks

Over at sembr.org, Mattt has an interesting post on what he calls semantic line breaks. The idea, as he expresses it, is

Semantic Line Breaks describe a set of conventions for using insensitive vertical whitespace to structure prose along semantic boundaries.

That sounds a little abstract but in practice it means adding a line break after each sentence and after logical breaks in the text. Here’s a more accessible description:

When writing text with a compatible markup language, add a line break after each substantial unit of thought.

There’s a specification at the link that specifies where the line breaks could/should occur.

The point of all this is that it makes it easier for the author or editors to read the input text while at the same time not affecting the way the text is rendered at output time. That works because of the way many markup languages—including, of course, Org mode—work. Take a look at the sembr.org site for the details and the precise specifications.

This seems like something that might be useful for many writers but, personally, I find that using visual-line-mode is enough for me. It shows all the text on screen by default and although it doesn’t break lines at semantically significant places, the semantic structure of the text comes through clearly for me.

But you may be different. If you find that adding an occasional line break helps make the meaning of your text clearer than by all means add them. It won’t affect the formatting of the output and it may help you and any editors you have in the process to parse the input.

Posted in General | Tagged , , | Leave a comment

Numeri

Roman Numerals. On the one hand, it’s hard to understand why anyone cares anymore. Some, like the late Rich Stevens considered them an anachronistic barbarism and labeled his books “Volume 1, 2, …” rather than the more conventional “Volume I, II, …”. Others continue to label volumes with the conventional Roman numerals and, of course, there’s all those buildings with their erection date labeled, of course, with Roman numerals on their facade.

It used to be that everyone learned how to read and write Roman numerals in School but, according to a teenager of my acquaintance, that’s no longer the case. Were it not for their ubiquitousness on the front of buildings and multivolume books, I’d be happy so see them disappear from our milieu but for the time being, it seems useful to be able to at least read them.

Really, it’s not much of an effort. There are only 7 symbols and they are combined in a regular way to form all the numbers that we’re apt to see today. It’s true that there’s more than one way to form some numbers but all of them are easy to decipher. It’s hard to see how anyone with more than a couple of brain cells to rub together would take more than 15 minutes to completely master the system.

Still, Common Lisp is famous for having functions to convert between Arabic and Roman numerals. That’s less true for Emacs Lisp but there are, apparently, some functions spread across a couple of packages to do the job. Charles Choi doesn’t like that so he wrote a package to provide the capability in a single package.

I suppose, if you squint hard enough, you can imagine cases where you might want to do this sort of thing programmatically but, really, it’s mostly too easy to do manually to need a function. Still, if you do have a need to do this programmatically, Choi has got you covered.

Posted in General | Tagged | Leave a comment

Obscure Emacs Packages

It’s September so there’s a new Emacs Carnival. This month the topic is Obscure Emacs Packages. I have to admit that when I first saw the topic I wasn’t too hopeful that it would be interesting but, of course, I felt the same about the “Elevator Pitch” topic and we all know how obsessed I ended up being with that.

Now that I’ve read my first post for the new topic, tusharhero’s Obscure Emacs Packages, I guessing that I’m going to end up loving this topic too. Tusharhero’s post actually lists 4 obscure packages—none of which I was familiar with—that many Irreal readers might find useful.

By all means, take a look at his post for all the details but I want to mention two of them that I think could be particularly useful. The first is Tinee that is an implementation of Emacs Everywhere specifically for Wayland, which isn’t supported by Emacs Everywhere. The package was written by Tusharhero himself who says it’s not as full featured as Emacs Everywhere but if you’re an Emacs user on a Wayland system, it seems definitely worth taking a look at.

The other package is Emacs Reader by Divya Ranjan. It aims to be a complete replacement for PDF-tools and DocView. It’s still in the early stages but Tusharhero says it has “RIDICULOUSLY better performance and smoothness and responsiveness in comparison to both PDF tools and DocView.” It’s still early days for this package but if it lives up to its promise, it will be a package that almost everyone will want.

Take a look at Tusharhero’s post and see if there’s anything there for you.

Posted in General | Tagged | Leave a comment

Emacs Bankruptcy

In the developer world, we often talk about two types of bankruptcy:

Email Bankruptcy
This is when we have so many unread emails that we simply give up, delete them all, and start over.
Emacs Bankruptcy
This is when our Emacs configuration becomes so big and complicated that we no longer understand it and start over by deleting our configuration and beginning again with a blank slate.

My Anglo-Saxon upbringing pretty much guaranteed that I’d be resistant to either of these. I’m far too anal to leave any email unread or at least scanned. It’s not really much of an issue today since, unlike the old days, I can access and read my email from wherever I am. That and my zero inbox policy ensure that I never get behind with Email.

As for my Emacs configuration, it’s almost 20 years old and while it has grown and had some minor changes, I’ve never felt the need—or even the urge—to quit and start over. It is, in short, an organic entity that grows and changes in step with my needs. Why would I want to abandon it and start over?

All this discussion is in reaction to a video by TrepidTurtle on the Emacs subreddit about Emacs bankruptcy. TrepidTurtle views Emacs bankruptcy as a natural and common process in our Emacs life. He says, for example, that he was aghast to discover that his Emacs configuration was over 2000 lines long and remedied that by deleting his entire Emacs environment—packages and all—and starting over from scratch. Implicit in his argument is the belief that a minimalist configuration is better.

I don’t understand that. My configuration is 2055 lines and while there may be some cruft most of it is carefully curated packages, settings, and bespoke functions that I’ve developed over my Emacs career. Why would I want to delete all that work?

As for having a minimalist configuration, I add things as I need them or think they will enhance my workflow. I see nothing ipso facto virtuous about having a minimal configuration.

Still, people’s opinions differ and you may be sympathetic to the idea of starting over. If so, take a look at TrepidTurtle’s video for some ideas as to how to do that.

Posted in General | Tagged | Leave a comment