Another Piece Falls Into Place In The COVID Puzzle

The Intercept_ has just reported on a 2018 DARPA grant proposal for gain-of-function research on corona viruses. It’s another piece of evidence in the question of the provenance of COVID-19. That question is the contentious issue of whether COVID-19 had a natural zoonotic origin or was the result of a laboratory accident. There’s still no definitive answer one way or the other but many scientists in the field feel like this is a tipping point in favor of the lab accident hypothesis.

Why is that? The researchers proposed to build a virus exactly like COVID-19. In particular, they proposed to modify a bat coronavirus to have a furin cleavage site at the S1, S2 junction on the virus genome. That’s unusual—actually, unheard of—in SARS-related betacoronaviruses but is, in fact, exactly what COVID-19 had. That feature is what makes COVID-19 so contagious and deadly.

Who were these researchers? Those who have been following the story won’t be surprised to learn that the PI was none other than Peter Daszak who keeps popping up in this saga. He was, you’ll recall, behind the disinformation campaign insisting that a lab accident was a conspiracy theory. He was also part of the WHO investigation team that went to China and concluded, guess what, that COVID-19 had natural origins. Needless to say, he neglected to reveal this grant application and the obvious conflict of interest it entails.

This is a serious, existential matter. If it’s true that this was a lab accident, it’s an expensive wake-up call to stop doing this type of research before we manage to wipe out everyone. That sounds hyperbolic but here’s the Intercept_ quoting Stuart Newman, a professor of Cell Biology at New York Medical College,

Newman, a longtime critic of gain-of-function research and founder of the Council for Responsible Genetics, said that the proposal confirmed some of his worst fears. “This is not like slightly stepping over the line,” said Newman. “This is doing everything that people say is going to cause a pandemic if you do it.”

It’s time Daszak and some of the other players in this drama were subpoenaed to appear before Congress, put under oath, and asked what they know about the happenings in Wuhan. That may finally give us some answers.

Posted in General | Tagged | Leave a comment

Writing Elisp Functions

John Kitchin is back with another in his series of videos comparing Python and Elisp programming. This time it’s about writing Elisp functions. Earlier, Kitchin made a video discussing how to write Python functions. This video is a followup that reimplements the Python functions in Elisp following the original implementation strategy as closely as possible.

The video mostly focuses on handling the function arguments. The canonical Elisp function using defun is pretty straightforward. You call the function by specifying each of the arguments listed in the function definition with the possible exception of optional arguments. There are no keywords. Keywords can be included if you use cl-defun to define the function. That enables certain Common Lisp additions including keywords.

At one point, Kitchin wants to test if every value of a list of boolean values is t. The natural way of doing that is

(apply #'and list-of-booleans)

but that doesn’t work because and is a macro, not a function. Kitchin couldn’t remember how to do it and ended up using the -all? predicate from the Dash library. I couldn’t remember either but I did remember writing about it years ago. It turns out that it was 10 years ago so no wonder I didn’t remember. You can read that post for a discussion of the issues and the standard Elisp way of performing an and or or on a sequence of values.

Kitchin says he’s trying to get his viewers to the point where they can begin writing their own Elisp applications. The video is 26 minutes so you’ll need to schedule some time but as always with Kithcin’s content, it’s worth your time.

Posted in General | Tagged , | Leave a comment

Red Meat Friday: Dark Mode, Like It Or Not

I should have been suspicious. The Minions have been uncharacteristically quiet lately and behaving themselves; until they weren’t. Then, of course, they sprung another light-mode/dark-mode post on me.

It turns out there are a lot of sociopaths out there. Here’s a couple of examples:

  • The new Safari (Version 15.0) comes configured to allow any random Web site to force a color change to what Safari calls the tab bar. That’s basically everything above the site’s canvas. The idea, I suppose, is to make the browser display consistent: if it’s a dark-mode site, then the whole browser display is in dark-mode. The problem is that WordPress sites all forced a dark-mode tab bar even for sites like Irreal that are definitely light-mode.
  • Some especially evil person is offering an iOS Safari extension that forces a site’s display into dark-mode, regardless of the site’s preferred presentation.

Happily, right thinking people are not consigned to suffer these indignities. No one has to load and install Dark Reader and there is a way to keep sites from messing with your tab bar: In macOS, you can disable it by opening Safari preferences, choosing the Tabs tab, and unclicking the Show color in tab bar checkbox. It’s similar for iOS but the name of the option is slightly different as explained here.

Meanwhile, I’ve sent the Minions to bed without supper so maybe we won’t have any more of these posts. But don’t bet on it.

Posted in General | Tagged , , | Leave a comment

Drawing Diagrams in Emacs

Junji Zhi has an interesting post on drawing diagrams in Emacs. He wanted to draw diagrams for system modeling and do it from within Emacs. There are several ways of accomplishing that but Zhi chose Mermaid. It basically provides a markup language for the diagram and then renders a PNG. It’s much like the Graphviz’s dot language that I usually use for this type of thing.

For those who prefer a more visual approach, there’s ditaa, which takes an ASCII art diagram and turns it into a very nice looking PNG picture. It’s really easy to use but I rarely turn to it because I find Emacs’ Artist Mode difficult to use. That’s probably because my manual dexterity is challenged even to the extent of dealing with—for most people—the excellent artist-mode.

The point is, there is almost certainly a way of drawing a diagram in Emacs that you will find comfortable. I’ve never used Mermaid but it seems like a nice program that’s pretty easy to use. I’ll probably keep using dot because I’m used to it and it’s similar to Mermaid. I’ve used ditaa but mostly just as a test drive. If you’re good with artist-mode, ditaa is a quick and easy way of getting a diagram without having to learn a markup language.

As usual, Emacs lets you have it your way. Whichever way of drawing diagrams is most natural for you, Emacs has a package that supports it.

Posted in General | Tagged | Leave a comment

Iteration with Elisp

John Kitchen has important things to do so naturally he’s procrastinating. That’s probably bad for him but it’s good for us because he has another Elisp video up. This one considers various ways of iterating in Elisp. Earlier, he had posted a video on iteration in Python and this video considers the corresponding idioms in Elisp.

To me, the most general (non-recursive) iteration technique in Lisp is the do statement. It’s so powerful that you can do significant work even with an empty body. It’s powerful but not exactly transparent. Kitchin mostly focuses on the cl-loop macro. It’s natural and seems to translate amazingly well into Python even though Elisp predates Python by many years.

I’ve never been able to warm up to the loop macro but Kitchen’s demonstration of its use is more persuasive than any polemic could be. Take a look at the video to see it in action. It can do all sorts of things in a natural way much as Python does with list comprehensions.

Kitchin also considers using while. You can specify an ending condition or you can exit from the while by throwing an exception. That’s Lisp’s version of the break verb in other languages’ version of while.

The other iteration method that I use a lot that Kitchin doesn’t mention is the dolist macro. It’s sort of like a list comprehension but easier to use. In those situations where Kitchin uses cl-loop, I’d be inclined to use dolist. Still, Kitchin makes a good case for cl-loop and has encouraged me to spend a bit of time getting more comfortable with it.

The video is just short of 24 minutes so you’ll have to put some time aside for it but as usual with Kitchin’s videos, it’s worth it.

Posted in General | Tagged , | Leave a comment

String Formatting

One of the things we programmers do all the time is to build strings of the sort

In a survey of 342 programmers, 312 preferred Emacs.

where the two numbers and the string “Emacs” are variables. If, like me, you have multiple decades of C experience, the first thing you think of is printf. In C, you would render the above string as

(printf "In a survery of %d programmers, %d preferred %s",
 survey_total, editor_total, editor_type);

This idiom is so well established that you seldom see it done any other way.

Emacs Lisp has a direct analogue called format. Those of us permanently imprinted with the printf pattern seldom think of doing it any other way but Elisp offers several other methods of producing such strings.

John Kitchin has just posted a very nice video that considers several ways of formatting strings. He admits that he usually reaches first for format but some of the other methods he considers make the code more readable.

He looks at six ways of formatting strings:

  1. format
  2. format-spec
  3. f-string
  4. s-string
  5. mustache
  6. templatel

The first two are built in and the others are contributed functions. My years of C have permanently warped my brain so I stick to format almost all the time. If you like to make your code a little less opaque, you might want to give the others a try. The video is a good demonstration of their use.

The video is just over 22 and a half minutes so you’ll need to schedule some time. As usual with Kitchin’s videos, you learn things you probably didn’t know so it’s definitely worthwhile spending a few minutes with it.

Posted in General | Tagged , | Leave a comment

The COVID-19 Disinformation Campaign

I’ve written several times about the origin of COVID-19 but there are still no answers. What has become clear, however, is that we’ve been subjected to an organized disinformation campaign. In February of 2020 The Lancet published a letter from Charles Calisher, Dennis Carroll, Rita Cowell, Ronald Corley, Peter Daszak, Christian Drosten, and others stating that COVID-19 originated naturally through animal transmission and that the idea that the outbreak originated from a lab accident was unfounded and a conspiracy theory. They repeated these claims in another July 2021 letter to The Lancet.

It’s now become clear that this is actually the opposite of the truth. There is, in fact, no compelling scientific evidence to support the hypothesis of a natural, zoonotic origin and the idea of a lab accident is, far from being a conspiracy theory, a plausible explanation. Indeed, those with the means to know and who don’t have a vested interest in the outcome, have long believed the lab accident hypothesis a good explanation.

An article in BMJ examines the possibility that the press—an therefore all of us—were taken for a ride by an organized disinformation campaign by actors with a vested interest in denying the lab accident explanation. The Lancet letter campaign turns out to be an organized effort by Daszak and others associated with the EcoHealth Alliance who did their best to obscure their connection with EcoHealth Alliance.

This disinformation campaign even trickled down—or is it up—to Facebook and Google, both of whom spent a year censoring any content that suggested COVID-19 might have originated in the lab. You can say what you want about those who refuse to “trust the experts” but they might be onto something.

Posted in General | Tagged | Leave a comment

Embracing the Emacs Way

If you’re looking for an introduction to The Way of Emacs, there’s a long article that explores the Emacs way and why it’s worthwhile embracing despite what seems, at first, to be a formidable learning curve. There are a couple of major themes:

  1. Emacs as a framework providing a huge number of functionalities including such non-editor tasks as playing music, reading and writing email, reading RSS feeds, displaying and annotating PDF files, reading ebooks, and much, much more.
  2. Emacs as a philosophy: freedom, longevity, and even minimalism.

The article’s (unnamed) author uses a wide swath of Emacs functionality including Org-mode, Magit, Tramp, Dired, Mu4e, Org-roam, Nov.el, EMMS, Daemon mode, password management, REPL modes, and more. The article is a good introduction to the things you can do from within Emacs. After you read it, you’ll know why so many of us never want to leave Emacs.

He also makes the point that Emacs is becoming a rarity in today’s software world. There’s no subscription model, no user lock-in, no planned obsolescence, and most importantly, your data remains your data. It’s all held locally and is in plain text. Even if Emacs magically disappeared, you’d still have access to your data using any other editor or even simply spooling it to the screen. Compare that to, say, Google Docs. Even if you manage to avoid getting your account closed for some unspecified violation of the ever shifting code of conduct, you’ll still lose your data when Google tires of maintaining the editor and sunsets it.

The longevity of Emacs is indisputable. It’s one of the oldest applications still in wide use. Those who don’t know what they’re talking about are fond of mocking Emacs as old technology of no current relevance. What they mean is it doesn’t have enough bling for them and isn’t mouse/menu driven. Meanwhile, Emacs is undergoing continuous development and constantly introducing technologies—Magit, Org, e.g.—that are shamelessly copied by all the “modern” editors. When we Emacsers hear this nonsense, we just smile and get on with our work using Emacs.

If you’re not an Emacs user and want your eyes opened, take a look at this article.

Posted in General | Tagged | Leave a comment

Annotating a Text File

Chewxy had a need to annotate a text file. He wanted to mark a rectangle of text, capture a classification type, and write the results to a JSON file. He thought about writing a Web app to do it but realized that as an Emacser, it would quicker and easier to write a little Elisp instead.

The result was a minor mode to annotate a text file. To make an annotation, he just highlights the text, captures the resulting rectangle and the annotation, and writes it to the JSON file. That’s all pretty straightforward but there are a few subtleties mostly involving writing the JSON file, and using the mouse to mark the region.

One thing that was not hard was turning his functions into a minor mode. It’s just a matter of adding a bit of boiler plate and a couple of functions to turn the mode on and off.

The source code for the project is here. Note that the link in Chewxy’s post is broken.

Posted in General | Tagged | Leave a comment

Reverse Warrants Explode

The new hotness in law enforcement is reverse warrants. Those are warrants that aren’t targeted at an individual but specify some criterion and seek to identify all individuals who meet that criterion. The most common example is the so-called geofence warrant that demands the user data of everyone who was near a certain location at a certain time. Google, of course, collects that kind of information and has, as a result, seen an explosion in geofence warrants. In 2018 they had 982, by 2020 the number had risen to 11,554.

But wait; there’s more! If being at the wrong place at the wrong time doesn’t worry you, how about warrants asking for the user details on anyone who used some search term? Google and others are getting those too and privacy experts are worried that it’s a growing trend.

There are a couple of obvious points here. First, this is yet another example of the Iron Law of Data Collection. Google and others collected location and search data to be used to target ads. Then, of course, as the Iron Law predicts, new uses were found for the data and suddenly perfectly innocent people are being swept up in police investigations.

The second point is obvious too: stay away from Google and other companies that collect your data. Even with (the deferred) CSAM scanning, the iPhone is a much safer bet than an Android-based phone because they don’t collect location information that ties back to the user so geofence warrants don’t catch iPhone users in their snare (although less accurate cell tower information is still available).

And if you’re still using Google search, stop that right now. Google records all your searches, which means that they’re available to law enforcement. Yes, yes, I know you’re not doing anything wrong but that’s beside the point; you can still be swept up in some wide-ranging search that just happens to involve some search term you were using. Instead, use a search engine, like DuckDuckGo, Startpage, or Brave Search that doesn’t record your search queries.

Posted in General | Tagged | Leave a comment