Perry Metzger: The Editor for the Next 40 Years

The videos from the Emacs Conference 2019 are up at YouTube. As many of you know I’m a big fan of Perry Metzger’s 2014 talk on 31 years as an Emacs user so the first video I watched was what amounted to a follow up to that talk. In Emacs: The Editor for the Next Forty Years, Metzger looks at the future of Emacs, where he thinks it’s going, and what it needs to do to remain the premier editor that it is.

As Metzger says, it’s not 1992 anymore and many of the younger hackers aren’t adopting Emacs so we need to update it to meet modern needs. Of course, as Metzger also notes, Emacs has undergone continuous development and modernization throughout its lifetime. The question then—and the theme of the talk—is what changes do we need to make to Emacs? Much of what he has to say will probably ruffle some feathers or at least be controversial but whether you agree or not his arguments are well-formed and I found them cogent.

One of Metzger’s major points is that whatever we do, it must be done incrementally. One of the problems that every proposal for significant rewrites of Emacs has to face is the fact of the huge amount of existing code written for the Emacs ecosystem (Org-mode alone is 120K lines of code). That implies, for example, that implementing a new extension language means that it must interoperate seamlessly with Elisp and use the same run-time system.

Metzger’s summary at the end of the talk lists what he thinks the most important issues are:

  • HTML rendering
  • LSP support built into Emacs
  • Modern email and PIM support
  • A safe concurrency model
  • A new extension language

The body of the talk builds the case for each of these changes and discusses how they might be achieved.

In a second video, Metzger takes questions on the talk. The questions are also worthwhile and expand on the talk. The two videos are 58 minutes and 23 minutes long so you’ll definitely need to set some time aside but if you care about Emacs this is an essential talk. The slides from the talk are also available.

Posted in General | Tagged | Leave a comment

Scimax and Reproducibility

The College of Engineering at Carnegie Mellon has an interesting article on their Web site about John Kitchin and his work on Scimax. I’ve written about Scimax several times (1, 2, 3, 4, 5, 6, 7) so longtime Irreal readers will be familiar with it. If you’re new to Scimax, it’s a package of Emacs applications to make writing scientific papers easier and, in particular, to enable reproducible research: Here’s Kitchin’s Web page on the package.

The CMU article mentions several of Irreal’s favorite topics: Emacs, Org-mode, Writing with Emacs, and reproducible research. In the article, Kitchin makes the point that if your research can’t be verified, no one can tell if it’s the truth or not. Without reproducibility, anyone can say anything and you have to take them at their word. Kitchin says that the point of Scimax is not just to make writing papers easier but to increase the level of research integrity by making its results replicable.

Posted in General | Tagged , , | Leave a comment

Emacs 27.1 Coming

Eli Zaretskii has issued what amounts to a last call for new features to appear in Emacs 27.1. He’s planning to create an Emacs-27 release branch in about a week. After that, only bug fixes for the release will be accepted.

There’s still a lot of testing and release candidates to be done, of course, but we’re getting close.

Posted in General | Tagged | Leave a comment

The Pros and Cons of a Cashless Society

Over the last month or two, I’ve written a bit about the idea of eliminating cash and moving to a digital payment system. There are some problems with eliminating all cash so my preferred outcome is merely that it be possible to handle fiscal matters digitally while keeping physical currency available for those who prefer it. Over at The Balance, Justin Pritchard has a nice article that sums up the pros and cons of going cashless and takes a quick look at what a cashless society would look like.

The advantages fall into two groups: convenience and less crime. The convenience aspect is mostly obvious. You don’t have to deal with handling, storing, and replenishing cash. It could also make international travel easier by eliminating the need to buy local currency.

The anticrime aspects are a little—but only a little—less obvious. It would certainly eliminate most armed robberies since there would be nothing to rob. It would also eliminate some non-violent crime as well. Money laundering and tax evasion, for example, would be more difficult because there would be a paper trail.

The main problem, as I’ve written before, is that a certain segment of society—poor people mostly—don’t have bank accounts and credit cards so there needs to be a way for them to buy things without cash. Another problem is what happens when the technology fails. If some natural disaster results in a loss of power for, say, a week, how are people going to buy food and other needs? Similarly, if cybercriminals drain your account, what are you going to do until things get straightened out? And, of course, that paper trail that helps prevent money laundering and similar crimes also means that we all lose some privacy.

Pritchard examines each of these benefits and concern so it’s definitely worth reading the article if you have any interest in what a cashless society would look like and why or why not you might want one.

Posted in General | Tagged | Leave a comment

Chris Wellons on PRNGs

I’ve long been an admirer of Chris Wellons’ work and have written about him many times. I almost always learn something new and useful from his blog posts so of course I take notice when he publishes something new. His latest post is about building a linear congruential pseudo-random number generator. If you know anything at all about linear congruential PRNGs you might wonder what there is to say. Quite a bit, it turns out. Although they are very simple—just the recurrence relation \(x_{n+1} = x_{n} × C + A \bmod M\) where \(x_{0}\) is the seed—properly choosing the values of \(C\), \(A\), and \(M\) is important.

A good strategy is to choose prime numbers with certain properties for \(A\) and \(C\) and Wellons shows how easy this is to do using the excellent Calc utility built into Emacs. One of the things I learned from the post was that Calc has a function for the Miller–Rabin primality test. That’s not on the Calc Cheat Sheet so I’d long since forgotten about it and always cranked up my own Scheme version when I needed to check for the primality of large numbers. Having it available in Calc is a big win, especially since I’m probably making the calculations in Calc anyway.

Like all of Wellons’ posts this one is interesting and instructive and definitely worth your time.

Posted in General | Tagged | Leave a comment

What Did They Think Was Going To Happen?

I can’t stop laughing:

I’m evil, I know, but the schadenfreude is killing me.

I don’t feel even a little sorry for these people. They’ve been warned repeatedly about something like this happening. Some organizations, like CERN, saw this sort of thing coming and started investigating alternatives but most just went blithely on assuming everything would be okay. Until it wasn’t. Of course, this is just a blip and by the time you read this Microsoft will undoubtedly have found and fixed the problem. But here’s some questions for those addicted to Microsoft Office:

  1. What happens if something like this occurs when you have a hard deadline? Imagine a law firm, say, that can’t file a brief in time and costs a client their money/freedom/life.
  2. Could your organization survive for an extended time without email?
  3. What happens when Microsoft end-of-lifes Office? Will you be able to read your old Word documents or Excel spreadsheets?

I know I keep harping on this but you must retain control of your data and the means to access it. If you don’t, sooner or later you will experience massive hurt. When that happens, don’t bother moaning about how evil your software vendor is because no one will feel sorry for you then either.

As a practical matter, this means you should use open-source/open-standards software. If you don’t, disaster will eventually strike and it won’t matter that you were using the “industry standard” office suite. Your data will still be gone.

Posted in General | Tagged , | Leave a comment

Ken Thompson Talks About Computer Chess

Someone posted a pointer to a 2005 interview of Ken Thompson by John Mashey in which they discuss Thompson’s work on computer chess. It’s unusual, as far as Thompson interviews go, because it doesn’t mention Unix except to note that one of Thompson’s first chess programs appeared in the some early versions of Unix. The interview concerns itself entirely with computer chess.

One of the things that comes through clearly is that a lot of Thompson’s success came about from his playing around with computers just for the fun of it. Most of us know that Unix came about largely because of that dynamic and his successes with computer chess are the same. It’s clear from the interview that he really enjoyed the computer chess tournaments and that he was doing it not for fame or to win prizes but for fun.

Most people think of computer chess as a premier application of artificial intelligence but, in fact, there’s virtually no AI involved. It’s all brute force. The algorithms are mostly concerned with generating possible moves at each board position, pruning infeasible solutions, and picking (one of) the best of those that remain. Thompson says that the winning computer was usually fastest because it could look at more possibilities in the given time.

An interesting thing I learned from the interview was how computer chess programs handle endgames. It was widely held that a program would never be able to handle endgames. One chess expert even poked fun at Thompson for thinking otherwise. Of course, Thompson took that as a challenge and showed that it could be done. The method is entirely different from that used in the beginning and middle games. It’s worth reading the interview just to see how Thompson solved the problem.

If you have any interest in computer chess or in seeing another example of Thompson’s genius you should take a look at this interview.

Posted in General | Tagged | Leave a comment

Zamansky 62: Magit Forge

Mike Zamansky has posted another great video in his Using Emacs Series. This video takes a look at Magit Forge. It’s available from Melpa and is easy to install. Zamansky shows how easy in the video.

Once installed, it just becomes part of the Magit status panel. From there you can make and respond to GitHub—or other Git Forges, such as GitLab—pull requests from the comfort of Emacs. Zamansky demonstrates making and responding to the PR from Emacs and from GitHub. The only thing he couldn’t do from Emacs was to merge code from the PR into the Master branch.

The video is just shy of 18 minutes so you’ll need to schedule some time but it’s definitely worth a few minutes to watch the video.

UPDATE [2019-11-19 Tue 20:50]: Tarsius provides a pointer to a reddit post on why there is no dedicated merge-pull-request.

Posted in General | Tagged , | Leave a comment

Probably the Worst Password Advice You’ll Ever See

I have no—because there are no—words to describe what a stupid idea this is:

What you won’t know unless you follow the link to the Vice article is that in addition to this terrible advice the bank also charges its customers to change their passwords.

Posted in General | Tagged | Leave a comment

Generating Technical Documents with Org-mode

Mike Hamrick has put up an excellent video on using Emacs and Org-mode to publish nice looking and consistent technical documents. In preparing a document, Hamrick uses literate programming and—although he doesn’t mention it—reproducible research techniques. That’s important, because as he notes, if the code or data used in the document changes, things that depend on that code or data will change as well and it’s important to keep them in sync.

This is exactly the problem—or at least one of the problems—that Org-mode’s Babel was designed to solve. By having Babel embed the results of running the document’s code against its data into the document itself, you’re guaranteed that everything will stay consistent.

Hamrick has a few tricks that he uses to get a nice looking document and keep it consistent. For HTML, he uses Fabrice Niessen’s ReadTheOrg theme, which I’ve written about before, to produce beautiful HTML documents. The other trick he uses that I really liked is to have a file of helper functions that he can call from the text he’s writing. These do things like return the length of a string or the first 2 characters of a string. By using them, he ensures that his document remains consistent even if the data the string is from changes.

Don’t worry about trying to absorb the source code from the video. He’s put all the code and data for the video on GitLab. Similarly, his configuration files are on GitLab so you can see his publishing setup.

The video is 22 minutes, 42 seconds long so you’ll need to block out some time but it’s very much worth it. If you use Org-mode in your writing, you really need to watch this video.

Posted in General | Tagged , | Leave a comment