Microsoft, IBM, And The TAB Key

Raymond Chen has an amusing story just in time for Mothers’ Day. It’s a story from the joint OS/2 development effort of Microsoft and IBM about the mismatch in organizational structures between Microsoft and IBM. In those days, at least, Microsoft had a relatively shallow management structure whereas IBM epitomized a stolid bureaucracy.

A dispute arose over which key to use for moving from field to field in dialog boxes. The Microsofties wanted to use the Tab key and implemented that in the code. The IBMers were unalterably opposed although Chen doesn’t say what key they proposed to use. IBM insisted on escalating the debate to Redmond where the answer came back that they supported use of the Tab key.

The IBMers were not satisfied and escalated the issue up about 7 levels of IBM management to the VP level. The VP was also opposed to the choice of the Tab key and demanded that the Microsofties escalate the issue to an equivalent level at Redmond.

The local Microsoftie’s reply was hilarious and apparently ended the discussion. Take a look at Chen’s post to see what that reply was and what it had to do with Mothers’ Day.

Posted in General | Tagged , | Leave a comment

Emacs Keyboard Ergonomics

Protesilaos (Prot) has an excellent post on keyboard ergonomics for Emacs users. He considers various strategies for making Emacs commands easier to use and less likely to cause RSI damage. He considers everything from split keyboards to evil-mode.

He says he has both a split keyboard and a keyboard with a normal form factor. He says that the split keyboard is not a magic solution and that what works best for him is to configure “one shot modifiers” where the modifier is simply pressed—but not held down—before the key it modifies. So, to use his example, Ctrl+x is typed by tapping the Ctrl key and then the x key.

Along with that he suggests ordering the modifier keys in a way you find comfortable. The most important thing, he says, is to keep the Ctrl key close to the space bar so that you can use your thumb to press it. It’s also important to have the modifier keys located symmetrically so that, for example, you can use either hand for the Ctrl key.

As for the common advice to map Caps Lock to Ctrl, Prot says that’s okay but that it encourages the bad habit of always using your left pinky for Ctrl.

There’s a lot more information in Prot’s post—including how to configure one shot modifiers—so be sure to take a look at it.

I’ve been incredibly lucky. I use a standard keyboard, map Caps Lock to Ctrl and don’t have any symmetric modifier keys. Nonetheless, I haven’t suffered any RSI problems despite spending the majority of my day at the keyboard. But, as I say, I’m lucky. The smart thing to do is to read and head Prot’s advice.

Posted in General | Tagged | Leave a comment

Coffee: It’s Good For You

An old joke, known and beloved by every developer, is “A programmer is a machine for turning coffee into code.” It’s certainly true that it’s an important component of my productivity, coding and otherwise. An overwhelming proportion of Irreal readers, I’m sure, have a similar story.

It turns out that we’re on to something. It’s not just that coffee gives us a boost—everyone knows that—but that coffee is actually good for you. That’s also been known for some time but less widely. For some time, coffee consumption has been correlated with longer life, and less risk of chronic diseases.

Now scientists think they understand why. They believe that the compounds in coffee activate the NR4A1 receptor a protein associated with aging, stress, and disease. It’s not just the caffeine that does the trick. Several coffee compounds are involved, which explains why decaffeinated coffee also offers the health benefits if not the boost of regular coffee.

In the mean time, the researchers don’t recommend any changes to your habits concerning coffee consumption. Take a look at the linked Science X report for more details on how the benefits work and how the researchers believe that there are almost certainly other receptors involved.

At the end of the day, I suppose this doesn’t make a lot of difference. Programmers will continue slurping coffee but it’s nice to know that you can be healthy without eating spinach.

Posted in General | Tagged | Leave a comment

Prot’s New Org-to-buffer Package

Protesilaos (Prot) has a new, interesting package available: buffer-to-pdf. It does just what its name suggests. It takes the current Emacs buffer and exports it to PDF preserving things like theme, and font characteristics.

It’s easy to use. You simply call buffer-to-pdf and you get a PDF of your current buffer. You can specify the orientation—portrait, landscape, or current window—for the output but that’s the only choice you have to make.

The most complicated thing about the package is its pagination. If you have an Org file, each headline is a new page. The idea is to turn it the org file into a set of slides. Again, this all happens automatically.

For a simple text file, buffer-to-pdf paginates at screen borders. That seems like a natural thing to do and allows a certain amount of control over where the page breaks occur by adjusting the window size.

Finally, you can specify explicit page breaks by inserting a form feed (^L). Prot’s video doesn’t make clear how the form feeds interact with the window boundary heuristic but, as Prot says, the best way of thinking about buffer-to-pdf is as a screen capture that produces a PDF. It’s a perfect way to share an Emacs buffer with someone else.

If you’re interested in this package, take a look at Prot’s video at the above link. You can check out the package’s Git repository here.

Posted in General | Tagged | Leave a comment

The Start Of The Emacs 31 Release Process

Sean Whitton writes to say that the Emacs development team is planning to start the Emac 31 release process next week. That means that they will cut the Emacs 31 branch and start the process of testing and refining it in preparation for the final Emacs 31 release.

I really like how the development time is handling releases lately. They plan on a major release about once a year and in between time issue updates to fix bugs or problems in the latest major release.

If you follow the Emacs Devel mailing list, you’d think that the developers’ full time job is Emacs and that they have no family. It’s incredible how much unpaid time these people devote to Emacs
for the benefit of us all. As I always say, if you find yourself in a bar with any of them, the drinks are on you. These guys really are heroes.

Posted in General | Tagged | Leave a comment

A Couple Of Emacs Quickies

Here are a couple of quickies. Neither one requires much exposition on my part but they are both interesting. In the first, Prot shares what he considers decent default settings for Emacs. Naturally, I don’t agree with all of them but they’re an excellent start for your init.el. For example, I’d be more likely to prefer Melpa over Gnu Elpa, and I prefer Swiper to Consult but that may be simply because I’m used to Swiper and it works well for me.

Most of the rest of his choices I agree with or at least am agnostic about. That’s the thing about Emacs, you get to choose what works best for you.

The second quickie is a post from Charles Choi that discusses bulk search and replace commands in Emacs. Choi begins with reviewing regular expression syntax. That’s important because some Emacs command use the builtin regexp syntax and others call various versions of grep, which, of course, have their own regexp syntax.

As usual with Choi’s posts there’s a lot there and it requires careful reading but it’s worthwhile. As Choi says, the Emacs bulk search and replace commands make possible workflows that would be harrowing in other editors but they’re also difficult to discover. His post is intended to remedy that.

Posted in General | Tagged | Leave a comment

RSS With Gnus

After reading the sad news that Chris Wellons is abandoning Emacs and the Emacs packages he developed one of my first concerns was for Elfeed. It’s the RSS reader that I depend on everyday for my research and news curation. Wellons will be missed for many reasons but his stewardship of Elfeed is the most important one to me.

I’m all but certain that Wellons will find good hands in which to entrust the future of Elfeed but as I learned in the Boy Scouts, it pays to be prepared. Serendipitously, I stumbled upon this post from Dave’s Blog that mentions he moved from Elfeed to Gnus. The post is about a solution he found for following links referred to in the RSS summary but I was more interested in his use of Gnus in place of Elfeed for RSS.

I’ve considered, off and on, moving to Gnus but I’m really happy with mu4e for email and elfeed for RSS and Network News is, sadly, no longer important so moving to Gnus didn’t make much sense to me. Now, unfortunately, I may have to think about it. Gnus is a powerful complicated program and it seems a shame to use it just for RSS but if worse comes to worst it’s nice to have a mature and reliable fallback available.

As I said, I’m pretty sure Elfeed won’t have any problems finding a new maintainer who will sustain its high quality but it’s nice to know that if I need it, there’s a viable, Emacs-based solution available.

Posted in General | Tagged | Leave a comment

Goodbye Old Friend

I recently opened my feed to discover this post from Chris Wellons. The TL;DR is that Wellons, after 20 years, is abandoning Emacs for Vim. Folks do that, of course, but Wellons is special because he’s been a prolific author of Emacs packages including the absolute best RSS reader, Elfeed that I use everyday and depend on for my Irreal research.

Over the years, I’ve interacted with Wellons several times and always found him to be personable, engaged, and shockingly smart. He’s exactly what you want in an interlocutor: informed but not inextricably bound to his opinions. He was always interested in the truth and willing to be persuaded by facts.

By now, this has been all over the Internet and Sacha has already covered it on Emacs News but I wanted to add my appreciation for Wellons and everything he’s done for the Emacs community. I and the rest of our community can only hope that he returns from the dark side but in any event, we wish him well and thank him for all he’s done for us.

In the meantime, he still has some packages in need of a new maintainer. There’s a list on his post. If you’re interested, get in touch with him.

Posted in General | Tagged | Leave a comment

Fast16

There are few Irreal readers, I sure, who don’t know what Stuxnet was and, whatever their feelings about the underlying politics, don’t consider it a tour de force of software engineering. Recently a new candidate for the championship of such software became known: Fast16. It predates Stuxnet by 5 years and remained undetected for 21 years.

Unlike Stuxnet, its purpose was not to destroy centrifuges or any other piece of hardware. Rather, it’s purpose was to corrupt scientific calculations by giving results that seems correct and were consistent but were, in fact, wrong. It’s goal was probably the same as Stuxnet: to disrupt the Iranian nuclear weapons program.

Fast16 was much more than just a hacked math library. It was highly specific in the machines that it targeted. The delivery mechanism had an embedded Lua interpreter that made it easy to adapt the malware without starting from scratch with a new version.

The heart of the system is a kernel module that first looks for software built with the Intel C++ compiler. Files that match have their floating point calculation routines replaced in memory, not on disk. The new routines do further matching looking for various simulation packages used in weapons development. Those packages have their in memory images altered to give wrong, but seemingly good, results.

There’s a lot more detail in the article linked above so you should take a look at it if this story interests you at all. Most of us are not, of course, interested in writing malware but every software engineer has to admire the workmanship that went into Fast16.

Posted in General | Tagged | Leave a comment

The Sunk Cost Of Emacs

Randy Ridenour has an interesting post on Emacs and sunk costs. His post is in reaction to the idea that using Emacs requires a lot of learning and customization and that those efforts are sunk costs. That is, they’re costs that you’ve already paid and will never get back. All of that is true and Ridenour agrees.

What he doesn’t agree with is the conflation of “sunk cost” and “the sunk cost fallacy”. The sunk cost fallacy is, roughly, the idea that you should continue with some activity simply because you have so much invested—so much sunk cost—in the activity. Everyone has experienced it. Ridenour gives a common example that we’ve all dealt with: the refusal to hang up while waiting to talk to a representative on a support call because we’ve got so much time already invested.

The proper way to think about sunk cost is to imagine you got where you are for free and decide what you should do next without considering how you got there. In the case of Emacs, Ridenour says, that means to imagine you’ve never used an editor and that the expert you consults tells you that he can give you

  1. A ready to use editor that works well but requires you to do things its way or
  2. An editor that is custom built for you, that works the way you want it to, and that has commands that only you care about.

The rational choice is obvious. That’s why Emacs users keep using Emacs. Not because they have so much invested in it but because Emacs is the best editor and can be adjusted to continue being the best editor as their needs change.

Posted in General | Tagged | Leave a comment