I was browsing through metafilter on Sunday last and came across a surreal insider joke which a lot of commenters were getting off on but which I failed to understand. I share it with you here:"QA Engineer walks into a bar. Orders a beer. Orders 0 beers. Orders 999999999 beers. Orders a lizard. Orders -1 beers. Orders a sfdeljknesv". As always, check the comments for war-stories: "I took the latest build home for the weekend and tested it on one Mac and one PC (because those were the ones I owned). I came back on Monday with a list of over 400 bugs or other issues I’d found. The list was not happily received."
I should have got it because I was a software engineer back in the day although I didn't think of myself in those terms: not least because the software I wrote worked, was reasonably robust but the sky wasn't going to fall if it tripped out or went clunk. And I was my own QA insofar as I tried to think of the dopiest thing a user [almost always my later self or someone in the same lab] might try to do with my code and try to catch the problem before something blew up.
The one piece of software which I wrote for publication was, like all my code, was a kludge. Bits and pieces of code were clagged together into a menu-driven compendium to analyse a particular subset of DNA sequences. It was menu driven because clickable buttons weren't really a thing in 1992: certainly it was before the WWW. The version that worked (for me) presented a list of 9 options and paused after the instruction:
Enter a number between 1 and 9:
maybe the colon : blinked in anticipation. I had worked to ensure that an input of "2" fired up the 2nd lump of the program. But when I gave it to the students in the lab to see if it worked for them, one of them entered l "el" instead of 1 "one" and the whole thing stopped with deeply unhelpful
"SYSTEM STACK ERROR"
I had, lazily, innocently, assumed that if the program asked for a single digit, then no user would enter a letter. The solution was easy: I wrote a few lines of code to take any input and check if it was a digit 1 to 9. If not, I had the program repeat [resistance is useless]:
Enter a number between 1 and 9:
That program was The Thing for that sort of analysis for a couple of years and then superseded by better, faster, more comprehensive software for doing the same sort of analysis. I also moved on from writing [crap, slow, inefficient] code leaving that to people who were properly trained and knew how to use an associative array. With that back-story bubbling up, I could begin to 'get' the purple joke above about large numbers, negative numbers and alphanumeric strings.
The responses were also informative. There is apparently a Big List of Naughty Strings, which wakes you up to how things can go wrong:
I had, lazily, innocently, assumed that if the program asked for a single digit, then no user would enter a letter. The solution was easy: I wrote a few lines of code to take any input and check if it was a digit 1 to 9. If not, I had the program repeat [resistance is useless]:
Enter a number between 1 and 9:
That program was The Thing for that sort of analysis for a couple of years and then superseded by better, faster, more comprehensive software for doing the same sort of analysis. I also moved on from writing [crap, slow, inefficient] code leaving that to people who were properly trained and knew how to use an associative array. With that back-story bubbling up, I could begin to 'get' the purple joke above about large numbers, negative numbers and alphanumeric strings.
The responses were also informative. There is apparently a Big List of Naughty Strings, which wakes you up to how things can go wrong:
- strings which may be blocked by profanity filters
- Scunthorpe General Hospital
- magna cum laude
- Super Bowl XXX
- Dick van Dyke
- strings that can be interpreted as code
- undef
- null
- True
- $HOME
- %d
- simple ascii emoticons
- ( ͡° ͜ʖ ͡°)
- ¯\_(ツ)_/¯
- People’s names fit within a certain defined amount of space
- People’s names sometimes have prefixes or suffixes, but you can safely ignore those
- People’s names are written in ASCII
- My system will never have to deal with names from China, or Ireland
No comments:
Post a Comment