Apple and RCS

I don’t always agree with John Gruber but he’s dead on with his recent post about RCS. If you have even occasionally visited this galaxy, you will be aware of the ongoing battle between Google and Apple concerning the RCS messaging protocol. Android users have been whining for years about green bubbles and Apple’s failure to support RCS.

Now, after years of resistance, Apple has caved and agreed to support RCS. Gruber discusses why this is and why it’s a really bad idea. The reason for the caving is straightforward. China, other authoritarian governments, and even putatively democratic governments like the EU are insisting on it. RCS does not enjoy end-to-end encryption (E2EE) and governments everywhere love this because it allows them to monitor our communications—for the protection of the children of course.

The reason supporting RCS is a bad idea, Gruber says, is precisely because it does not have E2EE. He makes a very strong case that no protocol without E2EE should be adopted by anyone and this includes RCS and he points to the recent AT&T breach as proof of this. RCS is an old protocol without the safety that we have come to expect. Yes, it’s better than simple SMS but, as Apple has shown, we can do better and data privacy and safety demands that we do.

Gruber says that even if they wanted to, Google can’t fix this because RCS without E2EE is already deployed on millions of devices and handling things like key management are very hard problems. But, of course, Google doesn’t want to fix this because like all those government apparatchiks they like spying on our communications in support of their advertising business and have no interest in stopping.

Instead of complaining about green bubbles and other silliness, Android users should insist on a secure messaging protocol with E2EE. There are plenty of non-Apple solutions out there but Google finds it more convenient to put the blame on Apple for its own failures.

Posted in General | Tagged , | Leave a comment

A Vimmer Comes To Emacs

Nathan Dawit Chane has an interesting post on his journey from Vim to Emacs. I can relate to it because his journey is eerily similar to mine. Like him, I spent many years as a Vim user and could be legitimately said to be an expert user.

Like him, I tried Emacs several times but it never stuck. Unlike Chane, I gave up for trivial reasons. I didn’t like the default scrolling and “yank” meant precisely the opposite of what I was used to. Like Chane, I finally moved to Emacs because I started doing all—or at least most—of my programming in Lisp. Emacs—Paul Graham notwithstanding—is simply a better fit for that type of programming. I’ve sacrificed billions of pixels explaining that concept so I won’t relitigate it here.

What finally worked for Chane was to start with a simple Emacs install—complete with the standard Emacs bindings—and become comfortable with that before adding packages. When I started, before ELPA, adding packages was a lot harder so I spent a lot of time just getting used to vanilla Emacs.

Like most of us, Chane came to realize that Emacs was not just another editor but another way of working. It is, as I often say, a light weight Lisp machine that provides an operating environment complete with its own Lisp based programming language. It also happens to have a pretty good editor built in. The thing about that “pretty good” editor is that like everything in Emacs it can be tweaked to make it perfect for you and your workflow.

My sense is that Chane has not yet completely embraced the Emacs way but that he is well on his way. As I often say, Vim is a great editor but it exemplifies another way of working. You may like the Vim way better, which is fine, but if you’re looking for something that recapitulates the Lisp Machine way of working, Emacs is worth learning.

UPDATE [2024-07-27 Sat 17:07]: Added link.

Posted in General | Tagged | Leave a comment

🥩 Red Meat Friday: Minimal Configs

This Irreal post on dependencies and this one on Emacs bloat discussed the idea that many Emacs users have too many packages and other capabilities enabled in their Emacs configuration files. I’ve never worried about that because, really, there’s no reason to do so. Indeed, those who do worry about it mostly fall back on aesthetics as the reason for their worry.

Over at the Emacs subreddit, ptrtoj is complaining that he’s eliminated a lot of packages but his configuration is still over 500 lines long. He’s wondering what else he can do in his quest for a minimal configuration. His post got me thinking explicitly about the value of small configurations and the quest for them.

Here’s a heretical thought: why are minimal configurations a good thing and why should we pursue them? To be sure, every Emacs user eventually accumulates cruft in their configuration: packages they no longer use, workarounds for a bug in Emacs 22 that’s long since been fixed, customizations no longer serving a purpose, and other things they don’t need anymore. No one is arguing that we shouldn’t get rid of the cruft but that’s a bit different from seeking a “minimal configuration” as if it were a good thing per se.

I would argue that on the contrary a large configuration is a sign of users who have—probably over time—made the effort to optimize Emacs for their particular workflow. That a large configuration is, in fact, a sign of a serious—and possibly master—Emacs user.

On reflection, I don’t understand what those desiring a minimal conjuration are seeking or why they’re seeking it. In these days of virtually infinite memory and unlimited CPU power, a minimalism enforced for no clear reason doesn’t make sense.

Posted in General | Tagged , | Leave a comment

Dedicated Windows

Marcin Borkowski (mbork) has a very interesting post on something I didn’t know about: dedicated windows. The TL;DR is that dedicated windows are restricted—more or less—to the single buffer that they were displaying when they were set to dedicated.

Mbork’s use case is reading a technical book in one window while taking notes and trying code snippets from the book in another. He notes that if there’s an error when executing those code snippets Emacs will open an error window over your book. By marking the window as dedicated, you can avoid that and force Emacs to open a third window so you can see all the pertinent information.

Although dedicated windows have been in Emacs for some time, there’s never been an easy way of invoking them. That changed in Emacs 30. Now’s there a convenient key sequence to mark a window as dedicated (Ctrl+x w d).

To be honest, my workflow doesn’t have much use for this feature but, of course, that can change without warning so it’s nice to know that there’s a way of pinning a window to a particular buffer. If you think that you have a use for such a feature, be sure to take a look at Mbork’s post for the details. The easy UI won’t be available until Emacs 30.1 but you still set a window dedicated by calling the appropriate function. See the documentation for the details.

Posted in General | Tagged | Leave a comment

A (Too) Short Interview With Brian Kernighan

As you all know, I’m a big fan of Brian Kernighan. He’s not only the co-author of the iconic K&R book on C but also wrote a lot of of the Unix utilities that we all depend on today. Not least among those is the AWK utility. It’s one of the premier examples of a a little language or a domain specific language.

Kernighan is a master of the genre and has generated lots of examples, big and small. Even today, he maintains and improves the original AWK. Here’s a (very) short interview with Kernighan about his developmemt of little languages.

Kernighan, in his usual self-effacing way, downplays how innovative his inventions were. He says that associative arrays, while newish, were already pretty well known and the pattern/action paradigm underlying the AWK workflow was also known if not widely used at the time. In any event, he says, yacc and lex made it all easy.

Kernighan is a treasure and one of the few remaining people who were there at the beginning of Unix and can tell us stories of what it was like. The linked interview will take you less than a minute to read and is very much worth your while. Take a minute to spend some time with one of the luminaries of our craft.

Posted in General | Tagged , | Leave a comment

Mastering Emacs (Emacs 29 Edition)

I just got a notice from Mickey that the latest version of Mastering Emacs is out. It is, when you think about it, a modern miracle. You buy a really great book on Emacs once and keep getting the new editions for free.

This version brings the book up to date as of Emacs version 29. The two megafeatures of version 29 are Tree Sitter for finally rationalizing syntax highlighting and Eglot to provide smart completion and other “modern” IDE-like functionality. But as Mickey says, there are a “million” other, smaller improvements.

Speaking of buying Mastering Emacs, Mickey is having his usual new edition sale on the book. For a little more than the next day, you can get the book for 29% off. If you have any interest at all in Emacs, you really should have this book and now is the perfect time to get it. By the time you read this, the sale will be almost over so act now if you’re interested.

Posted in General | Tagged | Leave a comment

Ready Player Mode On MELPA

A couple of week ago I wrote about Álvaro Ramírez’s ready player mode. The idea is to be able to take a quick peek at a media file from within Emacs. At the time, the app was still beta quality and not yet on MELPA.

Now, Ramírez has announced that the app is on MELPA and ready for general use. Take a look at Ramírez’s original post to see what it can do and why you might want it. Now that it’s on MELPA, it’s easy to install.

Posted in General | Tagged | Leave a comment

Casual RE-Builder Improved

I recently wrote about Casual RE Builder, one of Charles Choi’s Casual Suite apps. As I wrote then, it goes a long ways towards making RE-builder usable for those of us who can’t remember all the commands necessary to export the resulting regex to a useful place.

While he was working on Casual RE-builder, Choi discovered that sometimes—usually in the Dired subsystem—Emacs expects “grep-like” regular expressions rather than the Emacs style. This is undoubtedly because Emacs outsources certain tasks to external grep routines. The fact that the particular regexp subset used depends on what flavor of grep you have installed makes things even more complicated. If you’re like me, all of this is news to you. Somehow, I’ve managed to stumble through using Dired without realizing that it was pulling a bait-and-switch on me.

Regardless, Choi has come to the rescue. He’s changed Casual RE-builder to add an option to export the regexps from RE-builder in grep format. It’s a small thing but it makes Casual RE-builder even more useful.

I’ve already installed Casual RE-builder and presumably I’ll get Choi’s latest changes with my next update. This is, I say again, a really useful package and if you use regexps at all in Emacs, you should take a look at it.

Posted in General | Tagged | Leave a comment

A Blast From The Past: Stderr

I’ve written about this before but that was 9 years ago and it’s a great story so perhaps a reprise is due. The story is about the birth of stderr. As I wrote last time, the concept seems so natural and necessary that it’s hard to believe that it wasn’t invented at the same time as stdout but it wasn’t.

In these days of cheap laser printers that just about anyone can afford, it’s hard to comprehend how difficult and messy things were when the Unix typesetting program, troff, was written. In those days, the C/A/T typesetter—the machine that did the actual typesetting—was a washing machine sized device that was driven by a separate computer. Unlike today’s printers, the C/A/T didn’t produce finished copy. Rather it produced a film that had to be developed separately to produce a hard copy.

Given all this, those early users wanted to limit errors as much as possible so they could avoid repeating this messy and difficult process. Then one day, several users got a printout saying that such and such a file couldn’t be opened. A couple of days later, after grumbling to the appropriate people, stderr was introduced so that errors would be delivered on a different channel.

I love this story because it not only tells us the history of one of the fundamental Unix mechanisms but also gives us an idea of what the early days of computer typesetting were like.

Posted in General | Tagged , | Leave a comment

Red Meat Friday: Roundabouts

I grew up on the South Shore of Massachusetts and as far as I knew there was only one roundabout (Massachusetts calls them rotaries) in the world. It was on Cape Code and although I never thought much about it as a child, once I started driving, approaching it always raised my stress level. I really hated it and always thought that this time I was going to get into a crash trying to maneuver through it.

As most of you know, I now live in Florida and I have discovered that roundabouts are more common than I thought. My impression is that they’re even more ubiquitous in Europe but, of course, I have no direct experience. One thing I know for sure: I don’t like them.

I am not, it appears, alone in my hatred of them. As Andy Boenau says at the link, there are few things that unite people as much as their dislike of roundabouts. Still, he says, they are the safest way of routing traffic flow through intersections. He’s got the statistics to prove it but as he says, no one wants to hear about it. They (we) are all united in our hatred of roundabouts and nothing seems able to convince us otherwise.

Traffic engineers claim that, among other things, they slow traffic down and thus make it safer than, say, intersections controlled by traffic lights. Bah! My experience has been that what actually happens is that cars speed up so that someone entering the roundabout can’t get in front of them.

None of that matters. It appears that despite near universal disapprobation, traffic engineers are intent on foisting these monstrosities on us. There is little that you or I can do to stop the madness but at least I feel better after ranting about it.

Posted in General | Tagged | Leave a comment