This commit is contained in:
Nathan Fisher 2023-10-01 12:31:01 -04:00
parent a71c09d065
commit d21ff10f75

View file

@ -68,7 +68,7 @@ One of my other projects also happens to be a text editor, Vapad. It's got some
## Some types of software should be complete and unchanging
If I were to remake Star Wars today, during the scene in Empire where the Falcon is running from Vader's star destroyer Han would pull the lever to "go to lightspeed" only to find that the hyperdrive was currently unavailable due to an automatic software update.
Think about infrastructure for a moment. Things like traffic lights and elevators. Imagine if we treated their operating systems in the Laissez-faire way that we treat "productivity" software. Imagine we rolled out the elevators in a 99 floor building downtowm while their control systems were still in Beta, with obvious bugs that 3% of the time left people stranded for hourson the 42nd floor with the doors closed. Imagine that once things settled down, the engineers immediately began working on a new replacement for the software running those elevators because the interface wasn't deemed beautiful enough. Imagine traffic lights stopped working one day because the developers were following new human interface guidelines that clearly state that "traffic lights are a bad design pattern and they're not coming back". How about a nuclear submarine that got an OTA update while submerged using ULF radio, where the bytes were coming in at a few tens of bytes a second. Imagine that's a security patch to prevent another nation from taking control of a pressure valve in the reactor's cooling system remotely, and imagine the sphincter clenching going on in that fragile metal tube as they watch the bytes crawling in.
Think about infrastructure for a moment. Things like traffic lights and elevators. Imagine if we treated their operating systems in the Laissez-faire way that we treat "productivity" software. Imagine we rolled out the elevators in a 99 floor building downtowm while their control systems were still in Beta, with obvious bugs that 3% of the time left people stranded for hours on the 42nd floor - with the doors closed. Imagine that once things settled down, the engineers immediately began working on a new replacement for the software running those elevators because the interface wasn't deemed beautiful enough. Imagine traffic lights stopped working one day because the developers were following new human interface guidelines that clearly state that "traffic lights are a bad design pattern and they're not coming back". How about a nuclear submarine that got an OTA update while submerged using ULF radio, where the bytes were coming in at a few tens of bytes a second. Imagine that's a security patch to prevent another nation from taking control of a pressure valve in the reactor's cooling system remotely, and imagine the sphincter clenching going on in that fragile metal tube as they watch the bytes crawling in.
Some software can afford to follow this modern pattern we've fallen into, where "software is never finished". I don't understand why we put up with it being this pervasive, however. If I buy a device that has "no user servicable parts" then I want to know that it's not only functioning perfectly on day one but that it's always going to function exactly the same way. I don't really want my car to be networked in the first place. I grew up with manual window cranks and door locks. I actually have a strong preference for that type of construction in consumer devices, because every extra gadget you add is another failure point. When those gadgets are controlled by a networked computer, they are also attack surface.