Ricochet is the best place on the internet to discuss the issues of the day, either through commenting on posts or writing your own for our active and dynamic community in a fully moderated environment. In addition, the Ricochet Audio Network offers over 50 original podcasts with new episodes released every day.
A couple of months ago NASA’s Perseverance rover arrived on Mars. On the exploration vehicle was a small helicopter, the Ingenuity, intended to fly above the surface of the red planet and take photographs and other measurements. Ingenuity performed a rotor spin test this week, and an alert triggered by the craft’s on-board software has prompted NASA to delay the planned launch date for the tiny four-pound flying machine until sometime next week, or perhaps later.
I feel for the people who build these things. I write robotics and automation software, and I’m familiar with the stress accompanying every demonstration of a new automated system. I’m not a flashy programmer nor a particularly fast one, but I do write rock-solid software that does, in almost every instance, precisely what I intended it to do (though whether or not I understood the requirements correctly is another question). Even so, I’ve had my share of embarrassing failures during product demonstrations over four decades of software development, so much so that I never approach a software rollout without at least a little anxiety.
To NASA’s credit, their software quality standards and procedures are astoundingly mature. But Ingenuity is currently 15 light-minutes away from Earth: it will take off, fly about, take its pictures, and (we hope) land successfully all within a minute — and we won’t know what happened until a quarter of an hour later. Or perhaps never, depending on how it goes.
I made a decision many years ago not to write software for life-critical applications. I simply don’t want the stress. While many of the machines I program are capable of seriously injuring someone, I’ve always relied on the presence of hardware interlocks and physical barriers to prevent my software from crushing, cutting, or otherwise mangling an operator. The most recent machine for which I provided both software and electronics actually features a circular razorblade spinning at 5,000 RPM attached to the end of a pneumatically operated arm: it has a legitimately menacing aspect about it. But, again, hardware safety relays and multiple interlocks prevent anyone from getting close to the whirring knife while its motor is still powered and its arm still enabled.
I get to test my software and am often present when it’s put into production. The creators of the Ingenuity have undoubtedly tested to the best that NASA’s ample budget and their project time constraints allowed. But I will be very surprised if any of the developers sleep soundly the night before the machine flies — and I’m sure that, when it does, its programmers will experience the longest 15 minutes of their lives.
Here’s hoping to a continuation of a so-far successful mission.Published in