====== Indefinite Scalability ====== ===== Introduction: Hardware determinism ===== Despite wide awareness that current computer systems suffer from dwindling scalability and declining securability, the entrenched architectural choice underlying both problems---the stipulation of //hardware determinism//---is rarely reconsidered. In the traditional approach to digital computing, the physical hardware is required to be //deterministic//: The machine is to operate in clearly-defined discrete steps, and the state of the machine (the values of all its 'bits' collectively) after a step is absolutely and completely determined by the state of the machine when the step began. In the agreement between hardware and software, the hardware is not allowed to produce any surprises or unanticipated conditions: nothing misread or misstated, no oopsies or booboos or broken alarm clocks, no excuses of any kind. If hardware can't perform its duties perfectly, for whatever reason, its final obligation is to kill itself: to crash and "end the world", rather than produce a wrong answer. Deterministic hardware makes the programmer's job much easier, and it has been a remarkable, world-changing success in the marketplace, but it ultimately **scales poorly** and offers **poor security**. However, since hardware determinism now underpins so many other computational design decisions, incremental attempts to move beyond determinism, historically, have struggled to gain traction. ===== An alternative: Indefinite scalability ===== Any individual computing device is a //finite// machine, both in physical size and in computational capacity. But 'finite' doesn't mean 'isolated': To be useful, a finite machine has external connections, at least for power and communications. We define an //indefinitely scalable machine// to be any procedure for tiling space with finite machines, with no //a priori// requirements that such a tiling have any particular properties---like aligning tile outputs with adjacent inputs. So tiling space by, say, laying HP65 pocket calculators out in a grid is admissible as an indefinitely scalable machine---it will just prove not to be a very //good// one, once we start defining metrics on indefinitely scalable machines.