I Guess I Can Talk About it Now

Sometime this morning, my watch buzzed, and I saw the news that the plane Yevgeny Prigozhin had been flying on had crashed, with all ten passengers / crew killed. There are already some light rumors that Russia may be to blame here; given Putin’s known history, these rumors are eminently plausible.

I don’t find this particularly surprising. The last 18 months or so that I was at Boeing, I worked on a project to deal with almost this exact situation. We were very worried that a nation-state actor would install a sleeper virus on a flight control system, and the virus would wait until it saw a particular name on the passenger manifest. Once that passenger was on-board, the virus would activate, and do something to bring down the airplane.

At the time, our scenario was “…and then fly to the southern Indian Ocean, until the plane ran out of fuel.” But “crash mid-flight” is also a reasonable answer. It’s also easier; all the virus would have to do is deploy the thrust reverser, and down the airplane comes. In a modern airplane, all of these actions are mediated through the flight management system, and although complex, it is not beyond the capabilities of a nation-state like Russia.

The project I worked on tried to build a computational equivalent to one part of the human immune system, the innate immune system, which is primarily the dendritic cells. This was modeled with the “Dendritic Cell Algorithm” (DCA). The team made some interesting advances in the algorithm during our work. One I was particularly proud of was creating a model of “inflammation” in a network. (We also managed to get a patent on exponential decay, which I find quite funny.)

However, in the end, the project really didn’t work very well, and I tend to think of it as a failure. A colleague and I did a deep postmortem, and came up with about four fundamental reasons about why the project didn’t work. These are issues that were

  • Number of cells - in the human body, there are millions, maybe billions of immune cells. There was no way to equal this density in a computer system; at best we might have had sixteen to thirty two “cells” on a node doing the processing.

  • No Analogue to protein folding - In a “real” dendritic cell, the major histocompatibility complex (MHC) is the “sensor” for bad things. The MHC is sensitive to both the sequence but also the fold of a protein. In the computer system, we had a light analogue to the sequence of the protein, but we never really worked through what the “fold”1 was going to be.

  • No analogue to diffusion - At cellular scale, diffusion is a serious matter. It’s very hard for a single cell to move on its own; it is much more affected by the flow of the medium it lives in. (There’s a great paper on this, but my google-fu is failing me.) Again, we had no way to model this effect in our systems.

Unfortunately, I now can’t remember the fourth reason. I did find a card with all four written down when I moved back to Seattle, so eventually I’ll update this with the fourth reason. What we found demoralizing was that at least these three issues required many orders of magnitude improvement in computational power (both time and space) before they could be incorporated into the overall system. It might have actually needed some sort of quantum computer to run in a meaningful timeframe.

I doubt there are many records of that project around any more. We wrote it up for a few internal presentations, but it was never formally published. I’ve still got a few notes about it, but the last time I looked at them, I had forgotten so much of the context that they were hard to fully understand.

  1. I was a propoent of using the flow of the program as a model, but we never really got much further than discussing the idea over lunch.