I’ve worked with military software for the better part of the past twenty years. Because the military platform I supported was a 1970’s model, the system reflected those times with magnetic tapes containing the code and other archaic means of designing, building and testing the software code. The displays consisted of monochrome and block letters; green text on black backgrounds, similar to the original DOS based computers. Pushbutton keyboards allowed for manual inputs to make changes as needed.
I tested the software in a lab, which was outfitted with this old equipment in a setting that emulated the actual aircraft environment. My tests consisted of running various scenarios simulating real world combat situations.
One of the troubleshooting features of the software allowed the designers an option to guard or modify certain areas of the code by making inputs to one of the displays. Then as the software did its thing, once it hit the address for where this particular bit of modified code resided, it may do a number of things: stop, process differently, slower, faster, or just die altogether.
Upon entering the ones and zeroes in hex (a special math known only to software types), a choice was given to either protect the change or leave it unprotected. If the designer wanted the software to react to this change in just one pass the hex was not protected, if it was desired to keep this hex change in for the duration of the test, then it was protected.
My mentor and good friend, Joni, taught me a lot about software; she even talked me into buying a scientific calculator that would convert binary and hex into regular numbers I could relate to. Of course, it wasn’t easy for this mechanical engineer to learn software. Having been raised in my professional life around fluids and statics and dynamics, I was used to seeing or at least visualizing what I was designing.
You can’t do that with software. You see, it’s all about electrons buzzing through the universe at warp speed. No rhyme or reason to it. I’m an analogy person. I’m forever comparing one thing against what I believe to be a similar and more understandable situation. I asked Joni to provide some comparisons between the electrons and piping. Seemed easy to me.
She struggled with finding the right terminology; I’d call it dumbing it down, so that I could ‘see’ what she was doing in the code. We developed our own special language and after a time she knew what I meant when I explained in mechanical terms how the software behaved. I was doing so well with my lessons that she began to lead me into the world of the hex code.
One day in the lab, she typed in the magic numbers and letters and just as she was about to enter the code I noted she had not selected the protection feature. I said “Wait! Are you sure you want to do that?”
“What do you mean?” she asked, startled at my urgent question.
“You’re about to have unprotected hex, that’s why.”
It’s a wonder I wasn’t kicked out of the lab.