A review of the Ferguson code review

Recently, Toby Young, on his Lockdown Sceptics blog, published a code review of Neil Ferguson’s epidemiological model of SARS-2, written by an author writing under the pseudonym Sue Denim [1,2].

We express here some of our reservations about this review.

First, “Sue Denim” criticizes Neil Ferguson for a lack of transparency – because he has not released the source code of his original program. But at least we know who Neil Ferguson is. We know who funds him, we know his background, we know his biases, we know what he stands for – and, most importantly of all, we can independently check those things. But while criticizing Ferguson, “Sue Denim” hides behind an anonymous pseudonym. We know nothing about who she is, what her agenda might be, who she might be connected to, who funds her. Is that transparent? Or is it hypocritical? We believe this is important. “Sue”‘s deconstruction of Ferguson’s model is being used by try politicians to try to push the ‘herd immunity’ agenda again. This agenda is based on the premise that the virus is ‘just the flu’ and that we should let it wash over us. Which was the first entity to promote this narrative – the virus is not dangerous, it does not spread from human to human, no medical staff are infected, you have nothing to worry about and you should do nothing about it? The Commnunist Party of China – which unleashed this virus on us, and which is now following this up with a propaganda misinformation campaign. Fifth generation warfare. Using their shills and agents of influence in the West. They are the main beneficiary of our response to the pandemic being chaotic, disorganized, incompetent and inadequate. When someone has something to contribute to this debate, we believe it is important that we know who this person is, what they stand for, who they are connected to, and what their agenda might be. Most of all, we want to be able to verify this information independently.

Next, some caveats and some background. Both Neil Ferguson and his mistress appear to belong to the pro-Remain political left. We do not share their politics. Neil Ferguson broke the UK’s lockdown rules. He resigned from SAGE as a result – which in our view, he had to do.

It does not, however, ipso facto follow that his work as an epidemiological modeler was flawed, or that his estimate of the likely total number of deaths if the UK took no steps to mitigate the epidemic was wrong. As the Daily Mail [3] says “Other researchers made the same prediction.” We made our own calculations at the end of January of the likely mortality rate of this virus, using a completely different approach, and our own estimates were higher than Ferguson’s. It is not difficult to see that this virus is deadly. The ratio of the number of deaths divided by the number of resolved cases started at around 29% and has stayed consistently above 20%. Another back-of-the-envelope calculation is that for the first month of the outbreak, the ratio of the total number of deaths to the total number of confirmed cases was consistently 2.5%. Since the epidemic was growing at a relatively constant daily rate and there is a relatively constant delay between being confirmed as being infected and dying, you can estimate the mortality rate from that too. The number we got was again 28%. Granted, these are very imprecise estimates, and there are issues with under-reported cases (but also under-reported deaths), so these are not accurate numbers. But this virus is clearly not the flu. You don’t get these sorts of numbers in a flu outbreak and ICUs and morgues do not overflow in flu epidemics (as they did in Italy and Wuhan). We also know that this virus has already killed 30,000 in NHS facilities in the UK in the first 2 months of the outbreak, and probably another 15,000 in the UK have died at home and in care homes – 45,000 in total. If you look at the total number of excess deaths (perhaps the most objective measure), the number may be even higher. Those who say “it’s just the flu” should consider that (apart from the fact that SARS-2 appears to be a completely different disease of the blood) the seasonal flu in the UK kills 600 in a typical year and 13,000 in a bad year such as 2008-2009 [5]. The Spanish flu in 1918-1920 killed 220,000 in the UK over a period of 3 years. The 1957 flu pandemic killed 70,000 in the USA during its entire course of over a year; SARS-2 has killed 80,000 in the USA in the first 2 months. Here is another way to estimate the total number of likely deaths if everyone were to become infected. Slovenia has conducted an antibody test of a randomized, unbiased sample of the population. Importantly, that is, not those turning up to be tested because they think they may have the virus and are thus more likely to be infected than the general public, but a true, unbiased, random sample, large enough to be statistically significant. They concluded that approximately 3% of the population of Slovenia has been infected to-date. This is still well below saturation and it’s clear that if the epidemic was allowed to run its course in Slovenia, it would still be in the early stages of rapidly accelerating exponential growth. This actual experiment also puts, in our opinion, a large dent into the hypothesis that the virus had been in Europe for months before January, that nearly everyone has already been infected and that most people have only had a mild or asymptomatic disease (although this was already difficult to reconcile with the fact that hospitals and morgues in Italy only started to become overrun in February, after a hospital failed to follow protocol and the virus is believed to have started spreading to more than a handful of people; and with people not presenting in A&E’s & hospitals with the very specific and unusual SARS-2 symptoms earlier). In order for the UK to be able to estimate the total likely death toll if everyone were to be allowed to become infected, it would have to run a similar randomized study and then extrapolate from the number of deaths to-date. I am not sure why this has not been done. But let us first assume that the rate of penetration of the virus is the same in the UK as it is in Slovenia – 3%. Then the total number of deaths if everyone were to become infected in the UK would be 1.5 million. Let’s now assume instead that the number of known positive tests under-estimate the total number of infections by the same multiple in the UK as they do in Slovenia. In Slovenia, 1,500 people have been confirmed to have been infected, but the estimated total real number of infections is 60,000 (3% of the population), so an under-estimate by a factor of 40. In the UK, 200,000 people have been confirmed to have been infected to-date, which, if it under-estimates the true number of infected people by a factor of 40, translates into 8 million total infected people. That’s still only about 1/9th to 1/8th of the UK’s population. 45,000 times 8 is 360,000 and 45,000 times 9 is 405,000.

The point is that Ferguson’s estimate that 250,000-500,000 will die in the UK if the Swedish ‘herd immunity’ policy, which the UK was already pursuing earlier in the year, was adopted again, is likely to have been correct – or an under-estimate. Sweden is already being forced to admit that them following this policy is having (predictably) disastrous results.

Following Ferguson’s departure, many in the UK are now calling for a Swedish-style approach to be adopted again, and they may, indeed, have helped push Ferguson out to further their own agenda. These calls should not be heeded. We are not suggesting that the UK government’s handling of the pandemic has been correct, or even competent. We have outlined elsewhere what we believe the correct approach to have been [4]. We are pleased to see that the UK Government is finally adopting the two proposals we suggested were the most important ones: first sealing the border and imposing a mandatory 14 day quarantine on anyone trying to inwardly cross it, and second wearing masks in public. Less encouraging is that it appears that the UK government’s new advisors are telling them that the most effective single measure has been closing down the schools, and that the most prominent feature in the UK government’s plan on how to ease the lockdown is – re-opening the schools!

Even worrying to us is the UK government’s apparent new push to “combat coronaphobia”. A ‘phobia’ is an irrational fear of something, and there is nothing at all irrational about fearing a virus which is very deadly and apparently causing long term disability through multiple organ damage via multiple micro-ischemia in a significant proportion of its survivors. Do the elites really believe that people cannot think with our own heads and that the reason the people fear this virus is because of anything they have said? In our experience, it is precisely the opposite: the people have come to their own conclusions and have been appalled by the government’s early failure to act, for many months.

Now back to “Sue Denim”‘s code review.

The first issue with this review is that it focuses only on the superficial, and reviews Feguson’s model purely as a software engineering project, from a software engineer’s point of view. It does not evaluate the model from the perspective of how good it is as an epidemiological model. The review does not even describe what the model does. Is it flawed? Is it not flawed? Is it innovative? Is it not innovative? Is it clever? Is it not clever? Most importantly, is it likely to reflect and model reality well, and does it contain parameters which need to be calibrated on real world data which can reliably, stably and robustly be calibrated, or does it depend on parameters which cannot possibly be stably measured? This would be really interesting to know. And this is the sort of question that a competent review should address. We cannot answer any of these questions, as we have not ourselves looked at Ferguson’s program, we are not epidemiological modelers, we do not have the time to undertake such a review, and doing so is not a priority for us.

Ferguson is not a software engineer. He is an academic, a mathematical modeler in the field of epidemiology. As an academic, it’s unlikely that he has a large team of well-paid and well-funded professional software engineers working to support him either. He did not have 6 months to refactor his software, develop automated test units, subject it to systematic regression testing, put it through 3 months of quality assurance testing, and submit it to regulatory certification before using it in anger. He was faced with a sudden epidemic outbreak, he was working under pressure, and he had to use whatever he happened to have to hand to the best of his ability. And what he had was a 13 year old 15,000 line monolithic program, which he adapted to the evolving circumstances. Ferguson uses computers as a tool to do his job, and it is this job that he should be judged on, not his quality of software engineering. We know plenty of electrical engineers who write programs to help them with their designs. Their software is an absolute rat’s nest of spaghetti code, but their engineering is brilliant.

Reading Sue Denim’s review sounds like if “she” was living in 1939, she would be criticizing the mechanical engineers who built the spitfires used to defend Britain from German bombing raids because they did not properly document their designs, they did not use modern 21st century engineering practices, they did not obtain CE and UL approval before using their planes, their slide rules were not multi-threaded and the pilots’ visors were fogging up! Clearly, we would be much better off allowing the Germans to invade and develop a herd immunity to the Hun.

Now addressing some of Sue Denim’s specific contentions in turn

1) The review complains that Ferguson’s code exhibits race conditions when run in a multi-threaded environment. The code was first designed 13 years ago. 2007 is when multi-core CPUs were just about becoming available on commodity hardware. They were nowhere near universal & the CPUs that did support truly simultaneously running multiple threads supported only a small number (like 2 or perhaps 4) of them. What is the point in writing a multi-threaded simulation if you only have a CPU which can run a single thread at a time in hardware? There is no benefit. Indeed, there is a performance penalty as your computer switches between different threads while running them on a single-threaded CPU. 13 years ago it was perfectly sensible to write single-threaded programs, and it still is in many cases. Standard software libraries contain functions which are known not to work in multi-threaded programs. Ferguson’s program then evolved and became 15,000 lines long. The review tells us that a part of it is likely to be the result of automatic translation of Fortran to C. C is not the best programming language to write multi-threaded programs in as its primitives are such that race conditions are hard to avoid. If you’re going to add multi-threading functionality to a simulation, the proper way to do it is to rewrite it using more modern tools designed for the purpose. This is not a small job, especially if you’re starting with 15,000 lines of 13 year old undocumented C code. We think it should simply be accepted that this program only works in a single-threaded environment for which it was originally designed and not criticize 13 year old code because it was not designed with a modern multi-core CPU environment in mind.

2) The review complains that Ferguson’s code exhibits non-deterministic behaviour even in a single-threaded execution environment, when its randomized algorithm is run with a pseudo-random number generator using the same seed. But it appears that this bug is merely a consequence of the corruption of the seed the program is using to generate the random sequence it depends on. This is not great, but also by itself is not material, as the random sequence that will be generated is still a valid random sequence which results in a valid run of the simulation. It may or may not be indicative of general poor code quality, but if there are genuine bad bugs in the program, the review would, we assume, have been pointing those out instead, and virtually no software is entirely bug-free. Further, the bug appears not to have been present in Ferguson’s original (and still unreleased) code, but appears to have been introduced when, with the help of Microsoft, the code was rewritten in a modularized form in order to be published. Furthermore, the review states that the bug was fixed shortly after it was reported. Since the code cleanup was only performed in order to release the code and is therefore, we assume, very recent, it follows that this bug was only present in the software for a very short period of time and likely had no impact on Ferguson’s original computations, which presumably used his original code. Therefore, this criticism appears to be a bit of a red herring.

3) The review complains that Ferguson has still not released his original code. This does not surprise us. Even the cleaned up code is being attacked for not complying with best modern software engineering practices. Nobody is cutting it any slack because it is 13 years old and written by someone who is not a professional software engineer. And nobody is analyzing it the way they should be: that is, whether it is a good piece of epidemiological modelling or not, rather than whether it is a beautiful example of modern software engineering practices or not. No wonder Ferguson doesn’t want to release it.

4) The review calls Ferguson’s code “a decade of amateur hobby programming” while seeing no irony in the fact that this is exactly what it is and that this is the light in which it should be evaluated. Again, Ferguson is not a software engineer but an epidemiological modeler who is using the computer as a tool. The real question is: is he good at what his actual job is, or is he not? We do not know the answer to this question, and nor does Sue Denim. At least we admit that we likely do not have the knowledge and experience to answer this question credibly, while Sue Denim presumes that she does, while, we suspect, she doesn’t. She says that not even Microsoft were able to put Ferguson’s coding effort right. Actually, any software developer worth his salt knows that Microsoft is possibly just about the worst software company in history when it comes to quality (and we would suggest, many other things, like ethical and often even legal behaviour). They have set the entire computer industry back 30 years multiple times, e.g. when they couldn’t produce a multi-tasking memory protected operating system for more than a decade after everyone else had already had that technology for many decades, and their operating systems were riddled with bugs and vulnerabilities to viruses, when no one else’s was, because they had no clue about security. Their attempts to rip off CP/M, Macintosh, Netscape Navigator and others were, while destroying the company which actually produced the respective innovation, mediocre at best. They have likewise put the video-conferencing world back more than a decade when they bought Skype and ruined it. Zoom today does not do what Skype was already able to do 15 years ago, but is now useless since Microsoft rebuilt it from a peer-to-peer to a centralized server architecture and continuously made its quality worse and worse. It seems much more likely to us that it was precisely Microsoft which introduced the non-determinism bug when rewriting Ferguson’s code in order to modularize it.

5) The review complains that Ferguson’s software is contained in a 15,000 line single source file and is undocumented. This indeed is not best software engineering practice, but Ferguson is neither a software engineer nor was he writing his program in order to release it or for other people to use it, or even read it. Since his program is a tool, this cricitism is neither here nor there. Does the software work for him or not? This is the question that matters.

It is to our dismay to watch many on our side of the great political divide, those who believe in freedom, calling for a total relaxation of pandemic mitigation measures, an adoption of the ‘herd immunity’ policy and demanding we all behave as if everything was normal and let the virus wash over us. To such people we have this to say. You should keep in mind who first started the false narrative that this virus is harmless, nothing to worry about and whose narrative you are – hopefully inadvertently – promoting: China. Red China. Red, communist, murderous China. The sooner we eradicate this virus, the sooner we will be able to return to normal. The longer we run around like headless chickens and pretend the virus is just the flu, the worse the epidemic will get, the more people will die, the more draconian the measures that will eventually and inevitably be required to eradicate it will be, and the worse the economic damage will be. Again, we are not saying the governmental police state measures which have been adopted by nearly every government in the world are the ideal approach – see [4] for our recommended way for dealing with the outbreak. As we have argued elsewhere [6, 7], this virus is a result of China’s biological weapons attack on us (whether deliberate or as a result of retrospectively weaponizing a lab accident, you will have to read our article for a full analysis) and we are, like it or not, in a state of war and under attack. The measures you are proposing are not liberty. We explain this in [4]; and to that article, we add: we have lost our liberties long ago. If you want to protest against something, protest against the government owning the infrastructure – the roads, healthcare, etc. Even under libertarian law, as the proper owner of this infrastructure, they are entitled to impose any restrictions on how others are allowed to use it, or not, as they see fit.

Finally, the argument that more people are dying as a result of the lockdown than as a result of the pandemic – cancer patients, transplant patients, etc. These people are not dying because of the lockdown but because of the pandemic. Chemotherapy compromises the immune system. Transplant patients have to take immunosuppressant drugs. These people cannot return to normal until the virus has been eradicated, as going into a hospital which is SARS-2 infested is almost certainly lethal to them. And if we pretend return to normality too early, these people will continue to die – and should be added to the total death toll of the virus, not the lockdown.

[1] Sue Denim, “Code Review of Ferguson’s Model”, Lockdown Sceptics
[2] Sue Denim, “Second Analysis of Ferguson’s Model”, Lockdown Sceptics
[3] Ross Clark, “ROSS CLARK: Neil Ferguson’s lockdown predictions are so dodgy that you wouldn’t even ask him what day Christmas is on”, The Daily Mail, 6 May 2020
[4] Tomaž Slivnik, “How did we get into this mess and how do we get out of it?”, The Freedom Association, 21 April 2020
[5] Influenza (flu), Vaccine Knowledge Project
[6] Tomaž Slivnik, “Our leaders fiddle while China wages war on us and takes over the world”, Unity News Network, 17 April 2020
[7] “Our leaders fiddle while China wages war on us and takes over the world”, The Sarkee Times, 17 April 2020 (as updated from time to time)

Leave a Reply