Commercial Emacs

In a followup to his recent post on Modern Emacs, Bozhidar Batsov has a short offering that talks a little about Commercial Emacs. It’s a fork of GNU Emacs but it’s not the first one. There have been several others, most famously XEmacs, which was a reaction to the slowness in getting changes accepted into GNU Emacs. This latest fork was, as far as I can tell, made for the same reason.

The list of things the Commercial Emacs developers say they’ve fixed includes several long standing problems such as (finally) doing something about the long lines problem and integrating tree-sitter to replace the slow and brittle regex-based font locking code. There are other changes, as well. You can see the whole list in either Batsov’s post or the README at the Commercial Emacs GitHub site.

I’m a little surprised by the fork because as far as I can tell, Emacs development is relatively speedy and there have been regular releases so the situation is different from what it was when XEmacs was forked off. On the other hand, there are a lot of FSF politics to negotiate when you want to make a change. Sometimes changes are rejected for political—as opposed to engineering—reasons.

Whatever the reasons, I’m sure that both distributions will benefit from new the blood and ideas.

Posted in General | Tagged | Leave a comment

Red Meat Friday: Duck Duck Go and Microsoft

There’s been a huge number of hot takes—mostly on twitter, of course, but elsewhere as well—about Duck Duck Go (DDG) not blocking Microsoft tracking scripts. The hot takes all treat the matter as a betrayal of DDG’s users and express their outrage. The problem is that all the “hot takers” don’t know what they’re talking about—not just metaphorically but actually.

They think they’re talking about DDJ’s search engine but they’re not. They think they’re talking about DDG letting Microsoft tracking scripts into their search results but they’re not. They all assume the non-blocking of Microsoft involves the DDG search engine. It doesn’t. It involves their browser. “Browser?”, you say, “What browser?” Most people didn’t know DDG even has a browser. I certainly didn’t. But they do and that’s what this is all about.

Gabriel Weinberg, founder and CEO of DDG, addresses what’s really going on in this reddit comment. You should read Weinberg’s comment before you form any opinion about the controversy.

When you think about it, DDG not blocking tracking scripts in their search results doesn’t even make sense. After all, the search results are just a bunch of links generated by DDG so how would a tracking script sneak in? Once you follow the link, of course, all bets are off but that has nothing to do with DDG and there’s nothing they can do about what happens on a target site.

Most of the responses to Weinberg’s comment were supportive. Those that weren’t were clearly from people who didn’t want to give up their outrage. There were questions like, “Why would you even be in an agreement with Microsoft?” That’s something that Weinberg answers explicitly in his comment: Indexing the Web is so expensive (about a billion dollars a year) that only Google and Microsoft can afford to do it so every other search engine has to reach a data sharing agreement with one of them. Most of the other non-supportive comments were also from people who obviously didn’t read Weinberg’s comment.

None of this means DDG is perfect—as even Weinberg admits. I’m still upset at them for filtering information about the Ukrainian mess but that doesn’t mean we get to make up things to be angry about. If you’re still mad about what DDG is doing, reread Weinberg’s comment and notice that even with their dispensation to Microsoft, they’re still doing more than the other browsers to combat snooping. And, again, this is in their browser, not search.

Posted in General | Tagged , , | Leave a comment

Making Emacs Modern

Bozhidar Batsov has a post on one of my favorite hobbyhorses: making Emacs more modern. I’ve written about this several times. See here and here for example. Batsov is not sympathetic either. As Batsov notes, almost all these proposed modernizations are trivial things like “start in dark mode” or “show line numbers by default”. Others may require loading a package—such as lsp-mode or company-mode but are also easily available right now. Still others are essentially impossible (even if they were desirable) such as rewriting Emacs in some other language, which would disable the huge collection of third party packages. Finally, we have proposals to cripple Emacs by making it mouse-centric.

The thing is, most of the people making these suggestions are not Emacs users and almost certainly never will be. They’re always going to prefer an editor with glitz and bling so even if Emacs made all the changes they’re demanding, they’d still go elsewhere.

Emacs has seen tremendous progress lately with such things are native compilation and a host of lesser improvements and none of it would have been possible if the developers had spent their time making silly cosmetic changes. Batsov notes that there are plenty of “modern” editors that are less popular than Emacs so (visual) modernity is no guarantee of popularity.

Being an Emacs user is great. One of the few downsides is having to listen to the constant dirge demanding that it be modernized.

Posted in General | Tagged | Leave a comment

A Clueless Journalist on Apple’s Self Repair Program

Long time readers know that Irreal doesn’t hold journalists in high regard. Oddly, the worst offenders are journalists on the tech beat. It’s odd because you’d expect them to know the difference between a computer and a composter but they often seem more confused on the difference than the general public.

A quintessential example of this is Sean Holister’s article in The Verge complaining that APPLE SHIPPED ME A 79-POUND IPHONE REPAIR KIT TO FIX A 1.1-OUNCE BATTERY. The level of cluelessness here is hard to capture. When I first saw the headline, I snorted in contempt and moved on. Fortunately, John Gruber is made of sterner stuff and after reading the article wrote a brilliant takedown of it.

But really, you don’t need a reasoned rebuttal of this nonsense. Just the headline is enough to tell you the writer doesn’t have any idea what he’s talking about. Holister seems to think that an iPhone is just a 21st century Heathkit that anyone should be able to work on with a screw driver and a pair of pliers. It’s not, of course. It’s a miracle of miniaturization and manufacturing that fits more power than that of a 20th century computer into a package smaller than a deck of cards. Of course it requires special tools and knowledge to work on.

Holister’s article boils down to the entitled whining of someone who thinks he should be able to replace an iPhone battery with a screwdriver and a one-sheet set of instructions and to do it for less than Apple or one of their authorized repair centers charges. Is it any wonder that everyone hates these clowns and holds them in contempt?

Posted in General | Tagged | Leave a comment

Elisp Cheat Sheet

Wow! This post from Mickey is something I had no idea about. In Emacs 28, there’s a builtin cheat sheet for Elisp functions. You call shortdoc-display-group and are presented with a list of categories or “groups”. When you choose a group, you get a cheat sheet that covers all the Elisp functions in that category.

It’s easier to try than to describe. Just call shortdoc-display-group, pick a group, and take a look at the resulting cheat sheet. To the first order, that’s all there is to it but, of course, it’s Emacs so there is a bit more. You can extend the cheat sheets. See Mickey’s post or the documentation for more information on that.

If you’re an Elisp programmers this is a boon. There are a lot of Elisp functions and no one I know has memorized them all. You can, of course, look them up in the manual but it’s harder to locate the function you need and not nearly as convenient. If you do a lot of Elisp programming it’s probably worthwhile to bind a key sequence or alias to shortdoc-display-group. One could, for example, set the alias cheat to shortdoc-display-group. That’s easy to remember and a quick way of invoking the command.

This is a really worthwhile (and more or less hidden) addition to Emacs 28. I’m really glad to have it.

Posted in General | Tagged , | Leave a comment

Creative Writing With Emacs

If you’ve been around Irreal for a while you know that I love reading about how people are using Emacs for non-engineering/scientific purposes such as creative writing. It’s hardly a surprise that creative writers, for example, find Emacs a superb tool for their writing. After all, its raison d’être is the efficient entry and editing of text. Of course, Emacs’ superiority doesn’t stop there. Its configurability means that each writer can adjust it to exactly match their individual workflow.

Christopher Fin has an great post on tips for writing novels with Emacs. The post lists some of the packages he uses and why he finds them useful. One interesting feature of his workflow is that he has slightly different modes for “writing” and “editing”. The writing mode is the creative part where he puts his story into words. In this mode he turns off error-checking packages (like git-gutter-mode) and turns on things like Olivetti mode. In editing mode he turns on things like flyspell-buffer and langtool-check-buffer that help with editing his manuscript.

Another useful feature that Fin added was some custom word counting functions. He writes in Org mode so there’s a certain amount of boilerplate in the buffer. He solves that by exporting the buffer to text and running his word counter on that. That’s a nice trick worth stealing if accurate word counting is important to you.

Fin’s post is specifically intended as a selection of things he’s found useful for book writing with Emacs not as a comprehensive guide. For a more complete guide, he points to Jacob Moena’s post on Creative writing with Emacs. Moena gives much more detail on how he uses Emacs and packages for his writing. It’s a long post but worth reading if you’re interested in using Emacs for creative writing.

These are two very worthwhile posts and deserve your attention if you use Emacs for writing.

Posted in General | Tagged , | Leave a comment

The EFF Announces the End of Life for HTTPS Everywhere

The EFF has announced the end of life for their HTTPS Everywhere program. This might seems like a bad thing but it isn’t. The EFF says that their browser extension is no longer needed because all the major browsers now offer the same thing natively.

The original idea was to keep the Nosy Parkers and nannies out of our business by automatically defaulting to HTTPS when possible. There’s no longer any need for that because the browsers are doing it on their own.

Some browsers need to be configured to implement it, others, like Safari, just do it out of the box. Regardless, there’s no longer a need for the HTTPS Everywhere extensions.

When it comes to protecting ourselves from those who would snoop on our activities, victories are thin on the ground so it’s nice to have this one. Doubtless the NSA can break into our HTTPS sessions if they really want to but they were never the problem for most of us. Rather, it’s the ISPs and others who are vacuuming up our information so they can sell it to data brokers. Using HTTPS makes it harder to do that. Their reaction to DNS over HTTPS shows how much of this snooping is going on and why it’s worth our while to resist it.

Thanks to EFF for their great work and encouraging the browser manufacturers to bake this capability in. I’m in favor of anything that makes the snoopers’ lives more difficult.

Posted in General | Tagged | Leave a comment

Crazy Mode

As a follow on to my discussions of Mickey’s posts about Hippie Expand and abbrev, Mohammed Sadiq has a post on his Crazy Mode project. It’s another completion framework that is aimed at providing efficient shortcuts when you’re coding.

Take a look at the Sadiq’s post for some examples. Again, these are substitutions that happen automatically so, if you’re like me, you might not embrace the package but if you don’t mind your editor making changes to your input automatically, it looks like it could be a really useful addition to your toolkit.

Currently, crazy mode is mostly useful for C and C-like languages so it’s not universally applicable but if you write in one of those languages, it should help make your coding a bit more efficient.

Posted in General | Tagged | Leave a comment

Red Meat Friday: Ties

This is barely Red Meat Friday material because almost everyone here will agree with it and find it noncontroversial. Nonetheless, the minions assure me that there are plenty of suits in our industry who will object strenuously.

The issue is neckties. Stephen Johnson over at LifeHacker says it’s time to Throw Your Neckties in the Damn Garbage Already. It’s hard to take his arguments about the health risks seriously but most of us will be onboard emotionally.

Oddly, the comments were almost universally dismissive of the post. It’s inarguable that ties are an anachronistic fashion accessory that serves no real purpose but people seem have an intense sentimental attachment to them. It’s not unlike those who insist on torturing our children by making them learn the now useless cursive writing system except they want to torture adults instead of children.

I haven’t worn a tie in years and have no plans to wear one in the future. For those occasions that require a suit, I generally wear a turtleneck with the suit and no one seems to mind. I suppose if I attended an event requiring a Tuxedo, I’d swallow my good sense and wear a (gasp) bow tie but that’s the only exception I can think of.

Tie wearers are sure to look down on us refuseniks as a bunch of rubes but, really, who’s acting irrationally?

Posted in General | Tagged | Leave a comment

Leslie Lamport

Most of you probably know Leslie Lamport as the original author of LaTeX but within the computer science community, he’s mostly known for his work on distributed systems. Like Knuth, Lamport was trained as a mathematician but rather than pursue a career in the analysis of algorithms, Lamport devoted himself to solving problems he found in industry.

In this short video, Lamport talks about his approach to computer science and some of the interesting problems he solved. Interestingly, he stumbled onto the thing he’s best know for, distributed computing, by accident. He received a paper on distributed databases and realized that relativity theory—yes, really—could be brought to bear to show the proposed algorithm was wrong. Until he wrote the paper explaining his findings, he says, he had never thought about distributed systems.

Lamport’s career is an inspiring example to those who want to pursue a career in computer science research but aren’t interested in being an academic. His entire career has been spent in industry but he’s authored almost 200 papers in computer science.

The Bakery Algorithm that Lamport mentions in the video is available here. It’s short and easy to read for those interested. Lamport says he didn’t design the algorithm to be as robust as it is but discovered how effective it is when he devised the proof of its correctness.

It’s an interesting video and only 7 minutes, 49 seconds long so you should definitely spend the time to watch it.

Posted in General | Tagged | Leave a comment