The headline was straight out of click-bait heaven. “Hungry penguins keep self-driving cars safe from hackers.” It had everything: cute animals, cyber-threats, and scary autonomous vehicles. Throw in a few UFOs and a long-dead mobster and you’d have the perfect Facebook meme.
The reality proved somewhat less sensationalistic, though more useful to actual programmers. A university research team had been exploring ways to make safety-critical software safer and more reliable, and they had found a useful example in... penguins.
This story is part grave digging, part mythology, part forensic analysis, and part courtroom drama. It’s new and it’s old. It’s about computers and it’s about people; good guys and bad guys; intrigue and betrayal. And it’s all true. Well, most of it, anyway.
Some of you already know the story – or think you do – and it starts like this. A computer science professor named Gary Kildall, working out of his house in tiny Pacific Grove, California, invented his own programming language called PL/M as well as an operating system he called CP/M. When he wasn’t teaching, he consulted part-time for Intel, but the chip company wasn’t interested in his new OS.
Programming with parallelism is sometimes illustrated with a kitchen example. One cook working by himself has to do everything in sequence: turn on the stove, mix the batter, pour the sauce, grill the meat, etc. That’s serial programming with no parallelism. That's how all computers worked until fairly recently.
But two cooks can work faster than one. While one stirs the batter, the other can be checking on the meat or seasoning the broth. Ideally, the work gets done twice as fast. In practice, it’s not usually that perfectly efficient, but, even so, two heads are almost always better than one.
Taken to extremes, you might think that 20 cooks in the kitchen would work 20 times faster. A soufflé in 15 seconds! A medium steak in under a minute! But of course, that’s not how it really works. That many cooks will get in each other’s way, colliding and bumping and interfering with everything. Not to mention arguing over who gets to use the whisk. There’s such a thing as too much togetherness.
“As you get older it is harder to have heroes, but it is sort of necessary.” – Ernest Hemingway
They say you should never meet your heroes. But I met one of mine, and it couldn’t have turned out better.
Meeting your heroes is supposed to lead to disappointment and regret. Your favorite sports star will turn out to be a foul-mouthed child abuser. A respected civic leader will be taking bribes from all sides. Your childhood movie star crush will be revealed as a rude, self-absorbed, talentless twit. Better to cling to the gauzy illusions than to discover the ugly reality.
"The most exciting phrase to hear in science, the one that heralds new discoveries, is not 'Eureka!' but 'That's funny...'” – Isaac Asimov
According to Adam Savage, the difference between science and just screwing around is writing it down. It’s the measurement – the annotation, the calibration, the methodical note-taking – that separates good science (and engineering) from mere hacking and tinkering. Without good measurements there can be no good science.
So raise a caliper and spare a thought for the measurers in our industry - the ones wielding the oscilloscope probes, the voltmeters, the electron microscopes. For they are the ones who enable us to produce better, faster, and more reliable electronics.
They’re also the ones who get to say, "That’s funny…"
"Don't sweat the petty stuff and don't pet the sweaty stuff." -- George Carlin
They say football is a game of inches, and League of Legends is a game of millimeters. Well, making microprocessor chips is a game of atoms.
Most of us aren't very good at statistics, but we do have an intuitive kind of understanding about the law of averages and the law of large numbers. If you have a big truckload of oranges, losing one or two oranges doesn’t make much difference. But if you have only three oranges in your hand, losing one (or gaining one) is a big deal. Obvious, right?
Semiconductor fabrication works in a similar vein. If your chip was built in the 1980s using 1.0-micron technology, a few extra atoms here or there didn't make a lot of difference to its size, weight, performance, reliability, or power consumption. A bit of stray copper or polysilicon wouldn't have affected the device’s operation. Indeed, back then it probably wouldn't have been measurable or even detectable. Ignorance was silicon bliss.