Thinks suck
Hilariously on-point complicated ships telegraph.

Thinks suck

And Human factors ain’t what it used to be.

At least people haven’t got worse. Oh. Anyway...

One of the NASA Mars landers from JPL started rebooting randomly. We will note it was on Mars at the time. The actual cause was a low-priority job hogging the radio, and it’s attendant semaphone, and permanently delaying completion of out a high-priority job, that could not acquire the lock to use the radio, but still got all the CPU, because it was a high-priority job, that eventually meant the watchdog went off and the whole thing rebooted.

The cause was a little old thing called priority inversion, where an unimportant tasks won’t release resources needed by a high-priority job, and nothing get done. The weird thing was that the real-time operating system, which you’d think would be designed to cope with this, had no facility to implement the only known means of preventing this from happening. The OS vendor literally had to add new functions, and give NASA/JPL an updated operating system to fix the bug in. They were not an obscure company nobody used, for real-time they were in the top two companies globally.

The horrible thing about that is that most main-stream programming languages don’t handle that correctly by default because, apparently, reading textbooks is hard. I have interviewed senior real-time software developers for jobs before, and one, who was otherwise a good guy, had no idea what that was. More worryingly, he’d just come from the biggest military development project in $COUNTRY$. So, um, the baseline in the industry is not great. For seniors. And by Senior we mean greying hair, owns a house, has children, Senior, not has two years of experience doing webpages.

For reference, yes, Boeing made planes that actively tried to kill people if a sensor went wrong, and charged extra for the warning light to tell the crew there was a problem. Airbus took a different tack, and discarded all the research NASA did on fly-by-wire human interfaces, to do it backwards. Because, apparently, while landing on the moon might seem like a big deal, Airbus’s human-factors people threw all the babies out with all the bathwater, and make the pilot try to remember what ‘flight laws’ the plane is currently flying under. For reference, the first fly-by-wire vehicle ever was the Grumman Lunar Lander, and you changed flight laws by turning a mode selector switch. So that, you know, the vehicle did what you told it to. (I have no beef with planes not being able to do certain control laws in certain situations. But HAVE A BLOODY KNOB THAT TURNS!)

And yes, there is a way to have a knob the human turns and a separate indicator. The first one was a Ships Telegraph. That’s the lever the helmsman moves that rings a bell, to ask for a certain engine speed. Then the pointer below it moves, (and the bell rings too, to tell you the needle moved.) to what the engines can, actually, captain, take right now.

(What actually happens is there’s an identical unit in the engine room, and the ships engineer does whatever is necessary to achieve the demanded request, then they telegraph what they actually could do. On ye-olde steam ships, reversing an engine involved stopping it first. The ships telegraph is a smart design to tell both ends about requests and responses. That’s why it jingles when either end moves the levers. The Bridge lever moves a needle in the engine room “this is what I want” and the Engine room lever moves the bridge needle “This is what you’re getting.”)

In some military equipment I’m profoundly acquainted with, there was a selector switch, with a pointer. Behind the switch were a set of LEDs – red ones. When the operator turned the switch, the LED’s moved afterwards, once the computer had actually achieved the setting the operator had asked for. It was apparently very valuable for the operator to know if the trigger was connected to the little gun or the big gun.

(Hilariously awfully, the F14 Tomcat (a now-retired jet fighter aircraft, it was the real star of the Top Gun movie) has a two-stage trigger switch. If the mode switch above the trigger, on the top of the joystick is set to MISSILES, pulling the trigger a little bit fires the ranging system, and locks the missiles on target. Pulling the switch all the way in fires the missile.

In GUNS mode, (Maverick yells out “Switching to guns!”) pulling the trigger at all, simply fires the autocannon at whatever is in front of the plane. Bullets, in addition to going away, also fall downwards. But they’re not just bullets, they were explosive cannon shells. There was an incident where a primary school in California got shot up on a weekend, because the pilot in the air above was, he thought, ranging a target over at the far-away firing range in inland California. The presence of exploding cannon shells but absence of children, proved that at least once, thoughts and prayers did prevent a school shooting.)

Important things should not be modal. Stressed humans can’t remember that shit.

I’m looking at you, car manufacturers, Boeing and Airbus.

Oh, and programmers, learn what priority inversion is. It’s a bit of a bugger really. Those hard-to-reproduce hangs? That would be that (in at least one product) them.

Ships engine order telegraph, the easy way
Fully mechanical, dead simple and foolproof.


To view or add a comment, sign in

More articles by Tim Williscroft

  • Continuous Improvement, or Death?

    Warning, contains math. If you don’t have an organisational practice that everything, every company rule, work…

  • 2038 and all that.

    Also known as Y2K38 In 2038, in January, on a Tuesday, if you were counting seconds since 1/1/1970 in a 32-bit number…

  • Death to the Project

    I come here not to praise project management, but to bury it. (And misquote Shakespeare.

  • Reboot, Ignore, Repair

    Why is software flakey? Why is the latest software a flaky, unstable pile of crud? (As an industry, quality…

  • Kanban is not bananas

    Hello, I’m a software developer and long-time manager of software teams. In fact, over 30 years.

  • Different is good

    Different is maybe good? (For business retention, if nothing else.) IBM ruled mainframe computing till the 1990s.

  • How to Remote-First, oh, and do Software Engineering for more than a year at a time.

    With thanks to colleagues from open-source multinationals. They knew some stuff, and taught us how to remote.

  • Y2K38

    When the old Unix timestamp rolls over to negative. In 2038, in January, on the third Tuesday, if you were counting…

  • Why the software industry is awful(er).

    I’m not a young developer. I was once.

  • Older Developers

    It’s an epidemic. Developers are getting older.

    1 Comment

Explore content categories