One of the big things in Computer Science is “scalability”. Scalability is how we get something that works quickly for a handful of data points also works in a reasonable time for thousands or millions of data points. When things don’t scale (or when they are stressed beyond the anticipated load by too many people visiting/using…) you get things like the Twitter “Fail Whale” and if it happens too much the people that designed/coded the system get fired. Hence software developers really care about scalability and talk about choosing the right algorithm so that the system does in fact scale.

An FB friend, who is also a software developer, wrote this:

I still remember the setting: the first company I worked at, in their third (and final) location. I enjoyed the work, and I really enjoyed the programmer who shared my workspace. A really nice guy, even if he was a crazy conservative. (He listened to Rush Limbaugh! He went to church! Crazy!)

This was the early 90s. Before the internet escaped academia. Networks were LANs or WANs, and the idea of hooking together thousands of computers was science fiction.

But local networks were becoming big. We knew our office would need one. But what kind? The big debate then was client-server vs. peer-to-peer. In P2P, every machine on the network carried some responsibility for the management. It was difficult. It was messy. It was OBVIOUS to me that the superior solution was client-server: a really powerful central server made all the decisions and routed all the traffic, and the rest of the machines were mere clients that talked to it. It was simple. It was elegant. If the network got bigger, you just needed a bigger, smarter server. And I confidently told management to go with client-server.

And then slowly, inexorably, the industry went peer-to-peer. (The modern internet has elements of both. That’s a subject for another discussion…) And I could only scratch my head and wonder why.

So I read. I researched. I tried to understand. And eventually I found articles that pointed out O(n^2) (order n squared), a familiar concept from computer science. It describes a system where the work grows as the square of the number of elements.

And I realized: every node in a network has to potentially speak to every other node. A classic bit of communications theory is that such a network has O(n^2) potential relationships between the nodes. 2 nodes have 1 potential relationship. 4 nodes (twice as many) has 6 potential relationships (6 times as many). 8 nodes (twice again) has 28 potential relationships.

100 nodes => 450 relationships
1,000 nodes => 499,500 relationships—nearly half a million.

And in a client-server network, the server has to be ready to manage every single relationship. In peer-to-peer, each node has a hand in managing its own relationships, and maybe a few others along the way. The work is distributed.

And it finally got through my head: NO server, no matter how large and how powerful, could keep up with O(n^2). Even if it were perfectly designed and never broke down, there was some number of nodes that would crash the server. It was mathematically unavoidable. You HAVE TO distribute the management as close as possible to the nodes, or the system fails.

And this is the part that is just crystal clear in my memory over a quarter century later: in an instant, I realized that the same is true of governments.

And suddenly my coworker’s small government rantings weren’t crazy…

Let it be noted that it isn’t just big government in general that this insight demolishes, it also utterly destroys the specific big government failure of “price-fixing” as opposed to letting the market set prices. One reason why Communism was so bad is that Communism explicitly requires that central planners set the prices and supply and demand levels for stuff. This doesn’t work for precisely the O(n^2) reasaon. No central planner, or even a board of them, can accurately set prices across any nation larger than, maybe, Liechtenstein and quite likely even at the level of Liechtenstein it won’t work well. After all how can a central planner tell that Farmer X’s vegetables taste better and are less rotten than Farmer Y’s and that people therefore are prepared to pay more for a tomato from Farmer X than they are one from Farmer Y.

It is worth noting that almost all successful nations have different levels of government. You have the local town council, the state/province/county government, possibly a regional government and then finally the national one. Moreover richer countries tend to do better when they push more down to the lower levels. This is a classic way to solve a scalability problem – instead of having a single central power you devolve powers and responsibilities with some framework such that they follow the general desires of the higher levels of government but have freedom to implement their own solutions and adapt policies to local conditions. On the other hand almost everything that fails from the NHS to the Soviet Union to Borders has a centralized approach which insists that every location be exactly the same and takes no account of local conditions.

Lefties in the US tend to talk about how wonderful Scandinavian nations are (high taxes, equality, blah blah), they totally miss that in Scandinavia everything from Hospitals to Electricity to the Internet is regulated and financed at a local level. Sure there are coordinating bodies and financial transfers from richer places to poorer ones but the locals raise most of the money from local sources and they control it all too. Moreover the Scandinavians do not control markets (or when they do – e.g. with Norwegian farmers – they subsidize the farmer and his land but don’t set prices on the outputs) so the market still operates and consumers get to decide whether they want locally produced subsidized stuff or foreign not-subsidized stuff. The US probably should do more things like Scandinavia, but to do that the US would need to be cutting most of the federal bureaucracy, and something tells me that all those people who say the US should be more like Scandinavia don’t actually mean it that way…