Of fascism and functional programming

There’s been a fuss in some circles about the fact that Curtis Yarvin was uninvited from a tech conference after the organizers learned of his political views, which he publishes under the pen name “Mencius Moldbug”.

I don’t particularly want to discuss his political views or whether he should be invited to speak at conferences; rather, I want to point out something I haven’t seen anyone else point out. But before I get to that, I feel like I should provide a little background for those who have been lucky enough not to encounter the “Moldbug” oeuvre.

If you like, you could start with The Baffler‘s article Mouthbreathing Machiavellis Dream of a Silicon Reich, or RationalWiki’s article about the neoreactionary movement.

In case you think those seem like pieces of slanted character assassination, let’s go to the source:

If I had to choose one word and stick with it, I’d pick “restorationist.” If I have to concede one pejorative which fair writers can fairly apply, I’ll go with “reactionary.” I’ll even answer to any compound of the latter – “neoreactionary,” “postreactionary,” “ultrareactionary,” etc.

Restorationism is to fascism as a bridge is to a pile of rubble in the riverbed. Bridge collapses can be dangerous and unpleasant, but that doesn’t make bridges a bad idea.

So fascism was a great idea, says the neoreactionary, it’s just that the Nazis did a bad job of it. He then proceeds to explain that democratic government could be declared bankrupt, and the nation handed to a corporate Receiver:

The best target for the Receiver is to concentrate on restoring the Belle Époque. This implies that in two years, (a) all systematic criminal activity will terminate; (b) anyone of any skin color will be able to walk anywhere in any city, at any time of day or night; (c) no graffiti, litter, or other evidence of institutional lawlessness will be visible; and (d) all 20th-century buildings of a socialist, brutalist, or other antidecorative character will be demolished.

No doubt there will be the usual purges of degenerate art too, though apparently this neofascism will refrain from the death camps that gave the old kind a bad name?

Yet reading carefully, there are hints of familiar racial politics:

Obama, Prince Royal of the Blood, beloved by all God’s children but especially the colored ones, from Bolivia to Clichy-les-Bois? What is he, the second coming of Comrade Brezhnev?

And “Moldbug” has a lot more to say about “colored people”, as he calls them. He’s deeply concerned about the “race rights” he feels are given to some college applicants, and the possibility that people are committing “race fraud” to get those special benefits.

Again, I’m not going to discuss why he’s wrong, someone else can take on that miserable task. However, I can’t help pointing out in passing that when he says:

Race, of course, is hereditary by definition.

…he is, of course, completely wrong. The idea that “race” is something genetically determined and hereditary is a common misconception. In fact, the consensus of geneticists is that race is a social construct. While the phenotypical variations which we use to judge and class others by “race” — such as skin color — are genetically determined, there’s no simple mapping from genotype to “race”. Israeli Jews and Palestinians, for example, seem to be genetically indistinguishable. Meanwhile, two African-Americans may be more genetically distinct from each other than one of them is from a random white person.

The neoreactionaries are no fans of science in general, associating it with ivory towers and Stalinism. But I get the sense that they want to keep alive the outdated racial “science” popular during previous periods of fascist rule. I wonder why that is?

In another article “Moldbug” sets out to defend white nationalism, and explain why he isn’t a white nationalist:

At its best, white nationalism offers a sensible description of a general problem. This problem certainly exists, and it falls under the larger category of bad government. […]

But white nationalism offers no formula at all for how to transition from bad government to good government. Indeed, to the extent that white nationalism succeeds in anything, it motivates its enemies, keeping everyone stuck in the same old destructive patterns.

And the worst thing about white nationalism, in my opinion, is just that it’s nationalism. Nationalism is really another word for democracy – the concept of democracy makes no sense except as an algorithm for determining the General Will of the People, that is, the Nation. And whatever its electoral formula or lack thereof, every nationalist government has seen itself as in some sense a representative of the Volk.

He thinks white nationalism correctly identifies a general problem, though he is coy about spelling out what exactly it is. However, he considers the white nationalists to be no good because they believe in solving the problem though existing political systems. The white power crowd are simply too democratic for him. What a twist!

So, should someone who is that much of a political extremist be invited to — or uninvited from — a tech conference? (Before answering, note that the conference in question is entirely privately organized and funded. They are free to invite and uninvite whoever they want — there is no First Amendment issue here.)

I honestly don’t know. But some have argued that Yarvin’s politics clearly should not be an issue when considering his software projects, that the two should be kept totally distinct in our minds. I disagree with that, because of the point I want to make in this article:

I don’t see Yarvin’s politics as being unconnected with his technological views.

To understand why, let’s move over to the world of technology and look at the software Yarvin gets asked to talk about: Urbit.

He has taken down many of the documents about the project, but he has enough of a fan following that plenty of other people have written about it, and there’s still an intro document on GitHub:

Nock is a stateless virtual machine defined in 200 words. The Nock machine is sealed – all execution is “pure.” Nock’s goal is extreme commoditization of computing semantics.

Hoon is a high-level language which defines itself in Nock. Its self-compiling kernel, 7000 lines of code, specifies Hoon unambiguously; there is no Hoon spec. Hoon can be classified as a pure, strict higher-order static type-inferred functional language, with co/contra/bivariance and genericity. However, Hoon does not use lambda calculus, unification, or other constructs from “PL theory.” Hoon also excels at handling and validating untyped data, a common task on teh Internets. Its syntax is entirely novel and initially quite frightening.

Arvo is a deterministic functional operating system defined in Hoon. While still basically a toy, it can serve web apps and network securely with other Arvo instances. An Arvo instance is designed to be a simple independent computer in the cloud.

Urbit attempts to rebuild the entire Internet stack with a form of functional programming. Yet it doesn’t use lambda calculus, or concern itself with such decadent trivialities as specifications. It dismisses the last 60 years of computer science theory and attempts to start again from ground zero. When I first read about it, I thought it was either genius or madness.

But having thought about the principles Yarvin bases his political positions on, I’ve realized that there’s a commonality between his politics and technology.

In both the technological and political spheres, Yarvin’s position seems to be that current systems are failing, corrupt, and degenerate. In both cases he advocates that we should tear down everything and start again from the ground up, with a revolutionary new system of total ideological purity.

In the case of both fascism and functional programming, apparently similar attempts have failed in the past, but we will no doubt be told that they only failed because they weren’t carried out properly; that they became corrupted by impure influences. For instance, there’s a section in the Urbit introduction where the necessary evil of calling device drivers is discussed — to be implemented by temporarily recognizing I/O and calling C code until we can bootstrap our way into the glorious pure Urbit-only future and carry out a grand purge.

I’m not saying that functional programming is all mad reactionary extremism. I was in love with Lisp during my college years, and we still see each other from time to time and remain on good terms. But sadly, there are some people who learn about functional programming and seize upon it as religion. They decide that it’s the only good way to construct programs, the solution to all our current problems (maintainability, parallelism, reliability, scalability, and so on). They become FP crazies:

i love functional programming. it takes smart people who would otherwise be competing with me and turns them into unemployable crazies

— William Morgan (@wm) December 30, 2009

Or as xkcd put it:

Functional programming isn’t alone in this tendency. I’m old enough to remember the Object Oriented Programming crazies of the 1980s and early 90s, who treated OOP as religion. There were multiple attempts to build a whole new OS from the ground up using entirely Object-Oriented code. IBM and Apple had Taligent, Apple had another OS project called Copland — both failed. Apple also had a third attempt at an OO OS for the Newton, and that failed too. When Apple finally found a workable desktop OS to replace the outdated MacOS, they got it from NeXT — and it was a high level OO framework layered over a conventional BSD Unix written in C. These days, the conventional wisdom (as expressed by Linux Torvalds and others) is that C++ doesn’t belong in core OS design.

The thing is, I don’t do religion. I failed to become a functional programming nut, and I also thought C++ was pretty awesome for a while but eventually came to realize its major shortcomings. My technological philosophy is that there is no single best programming methodology — not functional, not object oriented, not procedural. Sometimes OO is the best fit for the problem, sometimes functional is the best fit for the problem, and sometimes you just need a state machine. And don’t even talk to me about there being a single best programming language.

Once a mathematician or physicist becomes sufficiently famous, they start to get letters from cranks. They become adept at spotting crackpot letters. One of the hallmarks of crackpottery is that it often claims that current mathematical consensus is entirely wrong, and that the author is a genius who has worked in isolation, overturned everything, and started again from scratch with a whole new paradigm. Throw away Special Relativity, here comes TimeCube! Forget Quantum Mechanics, here’s a new form of Newtonian clockwork physics that works! Let’s throw out thermodynamics and power the world using perpetual motion, this time we’ll do it right!

The thing is, that’s not how progress works. That’s not how scientific progress works, it’s not how mathematical progress works, it’s not how technological progress works, and it’s not how political progress works. Real, lasting progress is a messy business filled with failure, wasted effort, impurity, compromise, and building on progress made to date. Sure, every now and again you throw out a small piece of the structure, but tearing down the whole thing in a grand Year Zero isn’t a recipe for progress at all.

I’ve already mentioned several failed operating system projects, but there’s another project I can’t help thinking of when I ready about Urbit. Back in 1960, a group of extremely talented computer programmers hid away in corporate isolation and set about trying to reinvent network computing from the ground up. They planned a system with automatic distributed reliability, no central naming authorities, location transparency, and a giant distributed global storage and computation system. Sounds kinda like Urbit, huh? Development was carried out in utmost secrecy, largely ignoring the rest of the computer industry. Like Urbit, the project developed its own weird language: tumbler lines, zipper lists, enfilades with dsps and wids, poonfilades and granfilades, berts and ernies. And while the project was massively influential and originated many great ideas, 30 years later it still hadn’t shipped, because as I said before, that’s just not how progress happens in the real world.

Instead, we (eventually) got the World Wide Web. It was a quick hack based on some of the grand ideas; it ignored some important problems, put off a lot of issues to be solved in the future some day, and used existing technology. But here’s the thing: it shipped. It was useful. It was flaky, yes, but it worked well enough to utterly transform our lives.

Obviously the “tear it all down and start from something pure” viewpoint is very appealing to a certain kind of mathematically inclined person who inhabits the autistic spectrum. However, I don’t necessarily think it’s something we should encourage. While the Urbit project may incorporate some interesting ideas that computer science can learn from, my considered opinion is that its broader message and aspirations are delusional.

The best way to prove me wrong, of course, would be to deliver a working useful clean-stack Urbit system that is clearly superior to our current messy system of kludges that keep breaking. But winning everyone over in that way would be democratic, so I suspect Yarvin and his fans don’t consider it a goal which should even interest them. They are content to build their Wewelsburg castle in the air.

Meanwhile my message — that nobody has all the answers, and that we can’t start again and build a clean new perfect world (or even a better Internet) — is hardly likely to set the world on fire. While I believe in democracy, my message is deeply unappealing and will be read by you and six other people wandering the marketplace of ideas. Meanwhile, “Moldbug” expresses contempt for democracy, but his message is seductive and he has hundreds of devoted followers. How’s that for irony?

I’d be remiss if I posted a whole article about neoreactionaries without mentioning one more possibility: maybe “Moldbug” is actually satire, or a piece of Andy Kaufman style performance comedy. It’s possible, I guess, but I can’t help remembering that the Nazis seemed like a joke in the cabarets of 1920s Berlin.