Why Isn’t There An Emacs 2?

Over at the Emacs subreddit, Available-Inside1426 asks why there isn’t an Emacs 2. By that he means a rewrite of Emacs to address what he sees as problems with Emacs. Those problems include the usual silliness like a better GUI implementation, better mouse support, a client-server architecture, and so on. The only improvement he suggests that makes sense to me is implementing threads.

Of course, everyone would like Emacs to have a robust thread implementation but the problems are legion. Here’s an account of one brave soul’s attempt to implement them. The TL;DR is that in the end he gave up because there’s just too much shared state built into Emacs.

One thing you hear all the time and that Available-Inside1426 repeats is that “Emacs was made for a different world”. I don’t know what that means. Sure, Emacs was made in a different world but I don’t think it’s true that it was made for a different world. After all, it was made to edit text as efficiently as possible and in that it still performs better than any other editor. My cynical suspicion is that what “made for another world” really means is that it doesn’t have enough bling, and is not centered on point and click.

Emacs development is, in fact, proceeding apace and everyone with even a bit of software development experience knows that rewriting a mature system always ends in tears. Emacs doesn’t need to be rewritten. Sure, some things would benefit from improvement but that exact process is always underway. Your pet wish may not be as high on the list as you’d like but if it’s worthwhile, it will certainly be implemented eventually. Who knows? Maybe we’ll even get a good thread model.

Posted in General | Tagged | Leave a comment

The End Of The Story (Finally)?

If you’re a younger engineer, this probably won’t mean much to you but if you’ve been around since, say, the turn of the century it’s a huge story. Darl McBride has died and, oddly, no one seems to have noticed. McBride was at one time the bête noire of the open source movement. That was due to his Quixote-like suit against the Linux community claiming that they stole source code from Unix, which as the CEO of SCO, he claimed his company owned.

As it turned out, the courts ruled against his ownership claims and the suit died only to rise again and again phoenix-like every time it was putatively put to rest. If you weren’t there at the time it’s hard to understand its effect on the open source community. We all—all of us—obsessed about the case daily and religiously followed Groklaw, which often seemed to know more about what was happening than the lawyers involved.

The legacy of the SCO suit is that when its architect died, no one noticed. Linux, of course, has prospered and I’m pretty sure SCO, in whatever guise, has ceased to exist. Think of it as a moral lesson about the wages of turning to lawyers instead of actual engineering to save a dying company.

Posted in General | Tagged | Leave a comment

CFPB: Customers Own Their Bank Data

The Consumer Finance Protection Bureau (CFPB) has ruled that, essentially, consumers own their banking data and banks must make it easy to retrieve that data and, if they wish, transfer it to another institution. That’s big news and another chapter in the FTC’s recent ruling that companies must make it as easy to quit a subscription as it is to sign up for it. I wrote about that here and here.

It’s the same issue as the FTC’s ruling because banks have been using the same tactics to keep their customers in the stable. They make it as hard a possible to transfer your data and thus change banks. The banks are, of course, upset that they will have to share their data with competitors but as the EFF says, it’s not their data, it’s yours.

All of this is important because banks charge wildly different fees for their various services and their policies make it impossible to comparison shop. Banks love that, of course, and you can be sure that they won’t acquiesce to this ruling quietly. Indeed, they are already suing the CFPB to block the rule. It’s for our own good, of course. Just ask them. The CFPB, it seems, is specifically authorized to make rules such as these so the banks may have a hard time convincing the courts.

Let’s hope that the CFPB prevails and that the banks are forced to stop these abusive practices. Let them, for once, compete on the quality of their offerings rather than laying down bear traps.

Posted in General | Tagged , | Leave a comment

Adding A Year Tag From A Capture Template

James Dyer has a good idea for organizing his org-based notes. It’s simple: add a year tag to each note. It helps to organize the notes and makes it easy to filter them by year.

When he first implemented the system, he simply hard coded the year into the capture template but then, of course, he had to remember to update it every year. We all know what a fragile process that can be. Dyer decided he needed a better way so he looked into generating the year tag programmatically. He found a couple of ways.

They both involved using the format time specifiers. You can take a look at his post for the details but it turns out to be really easy so if you’re interested in doing something similar you should definitely spend a couple of minutes reading his post. It’s another great example of the flexibility of Emacs and Org mode.

Posted in General | Tagged , | Leave a comment

The Blogosphere Is Dying(?)

As a nice contraposition to yesterday’s post on how the blogosphere is the only remaining vibrant part of that segment of the Internet dedicated to what could loosely be called “social media”, Venkatesh Rao opines that the blogosphere is dying.

After 17 years, he is retiring his blog, ribbonfarm.com saying that the main reason is his belief that the blogosphere is dead. Unlike Winer, who believes that blogs are the only worthwhile part of the social media scene remaining, Rao thinks that the age of the blog is over and is being replaced by things like Substack.

I’m with Winer on this. Of course, I am: I’m a blogger. Still, it’s hard to see how blogs are dead or even dying. To be sure, the original concept of moments from my life—today I had a tunafish sandwich for lunch—has long been replaced by blogs concentrating on commentary of some sort. The two main types are technical and political but there are many others. Whatever subject you’re interested in, there’s sure to be blogs covering it.

As for Substack and the like, they seem to me to be blogs by another name. A lot of the writers on Substack are journalists who either ran screaming from Twitter when Musk opened the doors to the Hoi Polloi or who were trying to escape from the dying traditional media. As journalists, they would, of course, rather die than admit to something as déclassé as blogging. Even though the average Substack post is longer than the average blog post, they are immediately recognizable as blog posts.

My conclusion is that blogging is not dying and is in fact emerging triumphant over the noise from the rest of social media.

Posted in General | Tagged | Leave a comment

The Ascendance Of The Blogosphere

The Guardian has an interesting article on longtime blogger Dave Winer and posits that the blogosphere is blooming while the rest of the Internet is wilting. By “the rest of the Internet” they actually mean social media. In a sense, it’s a no-brainer. For anyone with an attention span not measured in seconds, a hot take social media post can’t begin to compete with a longer form, more well considered blog post.

That should seem obvious but, according to the article, many journalists were completely oblivious to that fact. You can see that in their embrace of Twitter as the most important media of all time. While they were delivering their jejune hot takes, bloggers were writing longer, better researched, and much better considered posts that actually provided some analysis. You might agree or disagree with any particular post but reasonable bloggers do their best to make a case rather than just express an opinion or, worse yet, a hot take.

Irreal is, of course, a blog but I make no claims to its superiority over the average Mad Magazine strip. Still, regardless of what you think about Irreal, I do think that the Guardian is right: the longer form writing in blogs or blog-likes publications provide a much more rewarding experience.

Posted in General | Tagged | Leave a comment

TSV To Table

Philippe Gaultier has an interesting post on making a table of project dependencies. He’s using Rust, for which there is a tool to produce a tab-delimited (TSV) file of dependencies. The problem, for Gaultier, is that the output is not very human readable.

His solution was to write an AWK script that converts the TSV file to a version of Markdown and then export that to HTML. It works well and produces nice output that he can share with his coworkers. Take a look at his post to see the results.

Not to be that guy but when I read his post I thought, “Gee, that seems like a lot of work. How would I do that in Emacs?” After a few moments thought, I realized that I was already doing exactly that. I have a TSV file that I export from my iPhone and want to turn into an Org table. I simple paste the TSV data into my file and call (org-table-create-or-convert-from-region '(16)) to reformat the data to Org-mode table format.

The '(16) parameter tells org-table-create-or-covert-from-region that the data is tab delimited. There are other possible delimiters, see the documentation for the details.

Again, not to be that guy but this is another example of how powerful and flexible Emacs is. Have some data you want to convert? Chances are Emacs already has a way of doing it. Even if it doesn’t, it’s generally pretty easy to add a bit of Elisp to do it. The worst case is you’ll have to write an external app—in AWK, or whatever—to convert the data in your Emacs buffer to the format you need. Regardless, the whole process can be handled without leaving Emacs.

Posted in General | Tagged | Leave a comment

Define Alternatives

Marcin Borkowski (mbork) has an excellent post concerning a function I didn’t know about. It helps with the following problem: suppose you have a function with several implementations, want to access them with a single function name, and need to choose the implementation to use when you invoke the common function name.

That probably seems a little obscure but the example that mbork gives makes it clear. His use case is wanting to play some music using one of mplayer, vlc, or mpv using a single invocation name.

There are plenty of straightforward ways of doing this, of course, but mbork shows a very nice builtin method: define-alternatives. It’s easy to use and set up. You simply provide an alist of method/function pairs and use define-alternatives to specify a function name that will invoke the method of the user’s choice. See mborks post or the documentation for the details.

Define-alternatives is a great way of handling this situation. It’s hard to imagine a method that requires less code or effort on the developer’s part. As mbork says, the method doesn’t seem to be well known so it’s worthwhile pointing to mbork’s post as a way of getting the word out.

Posted in General | Tagged | Leave a comment

More Hard Coded Credentials

Remember a month ago when I ranted wrote about Solar Winds making what can only be described as professional malfeasance by hard coding credentials into one of their applications? It seemed worth writing about because, after all, that was surely an unusual situation.

It turns out, not so much. The Register has a disturbing article about some research by Symatec Security that found hard coded credentials in several smartphone apps. You Apple people can stop smirking because our favorite platform is not immune either.

The researchers, Yuanjing Guo and Tommy Dong, dryly describe this as the result of “lazy programming”. Incompetence and failure to exercise due caution is a better description. The article lists the apps found to have the hard code credentials but warns that there are probably others. Happily, the Irreal Bunker doesn’t use any of those apps but who knows what else is out there.

There really should be sanctions for this sort of thing. Both for the engineers responsible and for the companies involved. I don’t want to see anyone fired but the engineers responsible should suffer some penalty if only pour encourager les autres. The companies should also suffer some penalty although it’s hard to see by whom or how it would be applied. One thing for sure, that behavior can not be allowed to continue.

Posted in General | Tagged | Leave a comment

Who Created Emacs

Over at the Emacs subreddit, FirmSupermarket6933 asks who really created Emacs. He cites various sources claiming that RMS did or did not create it. Is he responsible only for GNU Emacs or was he there from the beginning? Sadly the commenters purporting to answer his question have no more idea than FirmSupermarket6933 about the editor’s origin.

All of this was long ago and far away but almost everyone who has a reasonable grasp of Emacs’ history agree on some basic facts:

  • Emacs began circa 1976 as a set of macros for the TECO editor. That’s where the macs in “Emacs” comes from. The origin of the E is more controversial. Some say it stands for “Editing” but Stallman and others say it was chosen for more pragmatic reasons.
  • Stallman was heavily involved from the beginning. Guy Steele has produced some email threads that show this definitively.
  • Many others including Steele, David Moon, and James Gosling were instrumental in moving the effort forward. The end of this process is what we now know as GNU Emacs

Even the original effort was more curation than invention. The original TECO macros were collected from the macros that people in the AI Lab were using. The idea was to have a standard set of macros that everyone could use. Even so, there was a surprising amount of work to get everything working. See Steele’s email threads for the details.

All of this began almost 50 years ago so memories are dim and, sadly, many of the principals are nearing the end of their lives so it’s important to get these facts right while we can.

Posted in General | Tagged | Leave a comment