The Ebola Vaccine That Almost Didn’t Happen

Unless you follow these things, you might not know that a vaccine for the deadly Ebola virus has been licensed in both Europe and the U.S. The vaccine appears to be highly effective and is a big deal. Although Ebola has not, historically, been widespread, it is so deadly and its effects so horrible that an effective vaccine is a big deal. That and the fact that Ebola has shown signs of spreading outside of its traditional habitat of Africa means that this is news we should all welcome.

Stat News has an excellent and interesting article that tells the story of the vaccine’s development and how close it came to not happening. The story is involved and complicated so I won’t try to retell it here but it has all the elements that such a story should have: good ideas, luck, independent researchers sharing knowledge and techniques, serendipity, bureaucratic interference, fierce opposition even after trials showed that the vaccine was effective, and much more.

The article is definitely a good read and a reminder of how fragile a success like this can be. Lots of little pieces had to fall into place and it would have been easy for the project to fail. It’s an inspiring story. Take a few minutes to read it.

Posted in General | Tagged , | Leave a comment

Zamansky 64: Notmuch Mail Client

Mike Zamansky has another video up in his Using Emacs Series. This time it’s about the Notmuch email client and how it compares to mu4e. Zamansky uses mu4e for his work email and Gmail for his personal email but decided he’d like to do all his email chores from Emacs. It’s pretty easy to set up mu4e to work with Gmail but Zamansky thought he’d look into the Notmuch client to see if he liked it better than mu4e.

They’re actually pretty similar except for how they organize your emails. Mu4e puts your emails in folders. That’s not as onerous as it might sound. Both Zamansky and I basically just use Inbox, Archive, and Trash folders to hold everything. Notmuch uses tags instead so if you want to save a particular email, you’d just tag it with ARCHIVE. You can, of course, use any tag(s) you like so it’s easy to organize your mail. As with mu4e, you locate emails with the powerful Xapian-based search functionality they both provide.

Although I love mu4e and have no plans or desire to change, there are folks who are just as passionate about Nomuch. Many of them tried mu4e first so their preference is not just “it’s what I use so it’s best.” The use of tags is a very nice feature and a powerful way of handling your email. You can, of course, use the tags to essentially replicate mu4e’s folder system if you like to organize your email that way but ever since I read Ben Maughan’s post on how he handles email with mu4e by keeping everything in a single archive folder, I’ve been a big believer in that method. I don’t need to use brain cells trying to decide which folder to store an email in. I just put them all in the same place and rely on the mu4e’s powerful search capability to find them when I need them.

So what did Zamansky decide? He says he likes Notmuch a little bit better but in the end his choice came down to a mundane pragmatic issue. Watch the video to see what it was. The video is 19 minutes, 40 seconds long so plan accordingly. As always with Zamansky’s videos, it’s well worth the time.

Posted in General | Tagged | Leave a comment

How Fast Is Ripgrep?

Very fast, it turns out. Arne Babenhauserheide has a great twitter thread on how fast ripgrep is:

You should click on the tweet to see the full thread but a précis is that Babenhauserheide extolled the performance of ripgrep by noting that he was able to check the usages of over 200 property-keys in 2,000,000 lines of code in less than 5 minutes. That’s technically true but significantly understates ripgrep’s performance.

The author of ripgrep, Andrew Gallant, responded that that seemed slow to him and after some back and forth it turned out that the process actually took 46 seconds. Gallant says that still seems slow but guessed that it’s because ripgrep was being called once for each of the more than 200 property-keys.

Babenhauserheide ends the thread by saying he was able to replace IntelliJ’s find-reference-in-index by using Emacs with dumb-jump. I do the same thing and have been very happy with the result. Dumb-jump is essentially instantaneous with ripgrep even for fairly large codebases.

Posted in General | Tagged | Leave a comment

Quitting Google: A Story

Regular readers know that I regularly reproach those who depend on Google apps. It’s not that I insist that everybody use open source exclusively—I don’t—but I find it excruciating to read about people committing the only copy their valuable data to Google apps.

It’s not that I object to people using, say, Google Docs but that they commit their only copy of their data to it. If it’s a letter to your Aunt Millie the worst that can happen is that they’ll scan your document and arrange for you and Aunt Millie to receive some targeted advertising. But what if it’s the Great American Novel you’ve been working on, or a business plan, or a copy of your family’s history? Google’s algorithms may decide that they don’t like what you’ve written and lock your account—don’t laugh, it’s happened before—and your data could easily be gone forever.

Using a single app like Google Docs is one thing but suppose you were all in on the Google ecosystem. All your documents, pictures, music, contacts, home automation, and other important aspects of your life were held by Google. That’s where Kyle Piira was when he got an email from Google telling him his account was suspended. In Piira’s case, it worked out all right because it was an old throwaway account that was being suspended but the event served as a wakeup call and he moved away from Google towards open source solutions.

I was feeling pretty smug after reading his story but then I realized that I’m not innocent either and that I depend a great deal on the Apple ecosystem. There is, however, a difference. I’m okay with Apple curating my data to make it easy to access from digital devices when I need it but

  1. I keep local copies of all my data in an open source format. None of it is committed exclusively to Apple.
  2. I have reasonable trust in Apple not to harvest and monetize my data and—more importantly—not to scan it looking for something that offends their sensibilities.

I am, I know, like the old man shouting into the wind but if your data is worth something to you, why would you want to entrust it to someone who may not share your beliefs and convictions or who may decide that a particular app is just not worthwhile and terminate it? As Piira says, it’s hard to move away from Google completely but you can limit it to things like YouTube.

Posted in General | Tagged | Leave a comment

The Online Shopping Experience

I don’t usually indulge myself like this but the following so perfectly captures my experience of dealing with my health insurance provider yesterday that I couldn’t resist.

Thanks to Karl Voit for the link.

Posted in General | Tagged | Leave a comment

Using Org-mode To Capture and Report Git Commits

Like most developers, Andrea Richiardi has a certain amount of logging and reporting he has to do to document his work. One such item is a report on the commits he’s made while working on various tickets. He wants to capture:

  1. The ticket number,
  2. The text of the commit description, and
  3. The time and date of the commit.

At the end of the week we wants to generate a report containing all this information.

He manages this with Org-mode and a bit of custom Elisp. He describes the solution in his post Build your productivity tools with org-mode. Almost all the work is done by the built-in Org capture and agenda functionality. Most of the Elisp is simply a couple of regular expressions that retrieve the ticket number and commit description. The only non-obvious Elisp deals with capturing the text of the commit buffer or, possibly, a selected region of text.

The template he uses for capturing the data formats it, adds some metadata, and stores it in an Org file. He has a custom agenda command to list the entries he’s captured that he can use to send the information on.

It’s a nice system that you may find useful but even if you don’t, it serves as an excellent example of how to leverage the built-in Org tools to make what might seem a complicated task easy.

Posted in General | Tagged , | Leave a comment

Little Improvements Add Up

All Irreal readers, I’m sure, are familiar with the power of compounding if only because they know about “compound interest.” Every now and then, Paul Graham (re)tweets an interesting mathematical fact. The last example I wrote about is the fact that any well-shuffled card deck is almost certainly unique in the history of the universe. Recently, he offered this fact about compounding:

Much like the size of \(52!\), this doesn’t seem too surprising at first glance but consider: if you can improve some skill—a musical instrument, programming ability, typing speed, whatever—by just 1% a day, at the end of the year you will have improved 3,778%.

Posted in General | Tagged | Leave a comment

Zamansky: ClojureScript 2

I’ve written a few posts lately about working in the Slime and Geiser environments to write and experiment with Common Lisp and Scheme code. What’s great about them is that they enable an “interactive programming” style where you can try out small code snippets to see what happens and build those small snippets into larger bodies of code. The snippets can be as small as a single expression. My two go to examples of this are the beginning of Magnar Sveen’s Web Rebels talk and Kris Jenkins video on building a Spotify client. You can find links to both of those in this post from 2013.

Of course, you can write Elisp this way too and the other great thing about Slime and Geiser is that they, too, run in Emacs. That means you can write, test, debug, and run your code from the comfort of Emacs. Why would you want to write code any other way?

Mike Zamansky has been experimenting with another language that enjoys a similar environment: ClojureScript. As with Common Lisp and Scheme, Emacs provides an interactive environment for ClojureScript: Bozhidar Batsov’s excellent Cider. In his second video on ClojureScript, Zamansky continues with the application he started in Using Emacs 63 that I wrote about here.

The video isn’t really about using Emacs but Emacs nevertheless plays a large and important role. Zamansky shows how easy it is to try things out and track down bugs while working on an application. Because Zamansky is a ClojureScript n00b, the ability to try something to see if it does what he expected and change things if it doesn’t is invaluable. It’s another example of the power of interactive programming.

The video is just short of 26 and a half minutes so you’ll definitely need to schedule some time but I found it interesting, enjoyable, and well worth time time.

Posted in General | Tagged | Leave a comment

Ebook Stupidity

I haven’t written about the publishing industry for some time but a recent post by hoakley over at The Eclectic Light Company has reignited my rage. Publishers have been doing things the same way for hundreds of years and don’t seem able to adapt to the changing landscape. This isn’t just about ebooks—although that’s a large part of it. Even with physical books they’re letting companies like Amazon eat their lunch.

It gets much worse with ebooks. Amazon convinced them that they must use DRM and as a result Amazon was able at the same time to lock in their customers and effectively corner the ebook market. That, in turn, means that the publishers pretty much have to meet Amazon’s terms. All because of their addiction to DRM.

Hoakley’s post, Publishers determined to kill electronic books, explores the publishers’ most recent chapter in their slow motion suicide. His post was inspired by the publishers’ latest Pyrrhic victory in Europe’s high court, the CJEU. The court ruled that, yes, it is a copyright violation to sell used ebooks. That, as hoakley says, is the publishers proving to their customers that their ebooks are worthless.

Judging from the comments to hoakley’s post, people are not amused. Almost all of them say that they routinely remove DRM from their ebooks to protect themselves from the publisher going out of business or deciding that they don’t want to maintain their authorization servers anymore. Some of them said that they won’t buy ebooks with DRM and that the problem would be solved if everyone followed suit.

Everyone will not follow suit, of course, and even if they did it’s not clear the publishers would care. I suspect that they would be happier if ebooks would just go away and they could get back to the way things have always been. The publishers’ rank and file apparently understand all this but the bean counters in charge simply can’t get over the notion that everybody would just steal their books if they weren’t protected with DRM. They don’t seem to know or care that everyone who would do that is already doing it by downloading a copy from which someone has removed the DRM. As usual, the honest people suffer while the dishonest are not deterred in the least.

Posted in General | Tagged , | Leave a comment

Emacs Modifier Keys on the Mac

If you’re an Emacs user who works primarily on some sort of Mac, you may be interested in a post by Nick Drozd in which he suggests a keyboard layout for avoiding pinky fatigue and all that goes with it. The TD;DR is that he switches the ⌘ Cmd and Ctrl keys in Emacs and then maps Caps Lock to Ctrl at the system level. That gives you a Ctrl and Meta key on both sides of the keyboard and they can both be reached with a thumb rather than a pinky finger. Drozd gives you the Emacs settings for switching Ctrl and ⌘ Cmd and, of course, you can map Caps Lock to Ctrl by clicking on the Modifier Keys button on the Keyboard pane of System Preferences→Keyboard. Drozd’s settings also map the fn key to Hyper. I’ve used that to give me a Hyper key for many years and really like it. It doesn’t interfere with the system function keys so you have the best of both worlds.

I haven’t tried this yet because I’m worried that it will mess up my muscle memory for the ⌘ Cmd key. It’s probably not a big deal so I’m still considering it. If you’re not worried about such things, give Drozd’s system a try. It’s easy to set up and easy to back out if you decide you don’t like it.

Posted in General | Tagged | Leave a comment