That photo of Colossus
tnmoc.org
tnmoc.org
So Colossus brute-forced every combination of Enigma symbols and seeds until it got something that made sense.
Colossus did this in hours, instead of the weeks waiting for code breakers with brain-power and persistence alone, and to my knowledge this was the first application of computers as we recognise them today.
I find it amazing that Turing sat and thought to himself, in the 1940s, "I bet I can make a machine that does this", and built the thing, and built it so well it deciphered the codes within the day, before the seeds changed. I'm sure a brute force on paper existed before Colossus, but Colossus is a stunning, visceral machine to watch.
Seeing Colossus operating is an absolute experience for computerphiles. There's something more soulful (in the laïc sense) in seeing a big wall of spinning disks and tape and reassuring thuds and whirs than in modern solid-state computers.
The machine Turing is famous for his work on was Bombe, which was designed to crack Enigma.
https://www.youtube.com/watch?v=9HH-asvLAj4
Here's a really good video I've watched before and since forgotten the details of which explains Colossus and its context
Earlier in the war the Germans typically sent their call signs in plaintext. Many of the intercept operators in the “Y stations” in the UK became familiar with the “hands” of various German operators. Later in the war the Germans started encrypting their call signs, but Bletchley was generally able to distinguish them by the intercept operator’s familiarity with the “hands” of the German Morse operators.
https://en.wikipedia.org/wiki/Jacquard_loom#Mechanical_Jacqu...
He worked for a company that did industrial control systems and one plant (a steel mill I think) had a very old system controlling it that booted from tape. However, as it was very old the paper tape had long since worn out and had been replaced with a sturdy length of leather. He needed to make an alteration to the boot process so had to resort to the hand-drill.
Oops.
So you worked out some set of instructions with total execution time comparable to storage I/O. And put that into ~firmware. Then you read data from one device, and wrote data to another device. And kept repeating that, with other instruction sets, until you were done.
That's not very different from current usage. Except that most intermediate results go into various sorts of memory. Or /tmp devices, if there's too much data for memory. And at the CPU level, instruction sets are just about as small.
But the point is that one could process ~huge amounts of data. Many GiB, as I recall. Just very slowly, with lots of thrashing tape.
And now one can use the same approach, except with clusters. And process humongous amounts of data.
Thank you.
Guess no one would catch me as a chinese spy to copy that ba.