The IBM System/360 Model 40 told you to WHAT now?
- Reference: 1647851406
- News link: https://www.theregister.co.uk/2022/03/21/who_me/
- Source link:
Our story this week comes from "Ivor" courtesy of his experience with punched cards and the IBM System/360 Model 40.
This particular bit of kit was aimed at businesses that had outgrown more simplistic hardware. There were rows of lights, magnetic tape, and dryer-sized magnetic disk units. CRTs had yet to make an appearance at Ivor's facility, but punch cards were still in use for programming purposes.
[2]
And output? Via a typewriter that chugged along at around 12-15 characters per second.
[3]
[4]
After spitting out whatever message it needed to, the computer would use the typewriter to punch out "READY FOR COMMUNICATIONS" – informative, yes. Performant? Not really. Not when one considers how many times per day the operators were presented with the message.
"Luckily," said Ivor, "at that time in their history, IBM provided the operating system as a box of punched cards (source code) that were assembled into executables and so for those interested, one could replace a few or many punched cards and modify the operating system.
[5]
"There were magazines that published code modifications for various improvements and as a junior assistant system administrator, a code update that would reduce the operator message to something shorter seemed like a great improvement."
So the next time the system was updated, Ivor made a change. The message text got updated and, in a different module, the length in the print command was set to two.
"Operations staff loved me," he recalled happily, "as now they were presented with 'GO' instead of the lengthy previous status message."
[6]
Months went by. Ivor moved on to other projects. He was therefore unprepared when the inevitable phone call came in.
[7]Prototype app outperforms and outlasts outsourced production version
[8]IT blamed after HR forgets to install sockets in new office
[9]IT advice fuelled by beer is the best IT advice of all, right?
[10]Beware the techie who takes things literally
It transpired that something odd had happened to his message. Software updates, you see, were issued every six months and somebody had helpfully fed them into the computer. One update was to the module responsible for printing the status message, effectively backing out of Ivor's two-character speed up.
The operators were a bit alarmed by the output.
"What the hell is that?" demanded the datacenter manager, pointing to the console typewriter.
Ivor peered at the page. Instead of just a cheery "GO", the entire message had been printed. And Ivor had been a very naughty boy indeed.
The "GO" was still there, but was followed by a strongly worded suggestion (in deference to more delicate eyes) that the operator might like to, er, go away.
The message had been repeated over and over again.
"It seems the latest update had replaced the print command with one with the original message length, but my replacement message which had never seen the light of day due to a truncated print command message length was now exposed to all."
Ah, the delight of receiving a call when a long-forgotten bit of code explodes in a user's face. Would you have hurriedly solved the problem, or adopted a funny voice and pretended the caller had dialed a wrong number? Confess all with an email to [11]Who, Me? ®
Get our [12]Tech Resources
[1] https://www.theregister.com/Tag/Who,%20Me?/
[2] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/front&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=2&c=2Yjha5sJ0vDo6Z7sO5rXqtgAAANE&t=ct%3Dns%26unitnum%3D2%26raptor%3Dcondor%26pos%3Dtop%26test%3D0
[3] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/front&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44Yjha5sJ0vDo6Z7sO5rXqtgAAANE&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0
[4] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/front&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=3&c=33Yjha5sJ0vDo6Z7sO5rXqtgAAANE&t=ct%3Dns%26unitnum%3D3%26raptor%3Deagle%26pos%3Dmid%26test%3D0
[5] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/front&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=4&c=44Yjha5sJ0vDo6Z7sO5rXqtgAAANE&t=ct%3Dns%26unitnum%3D4%26raptor%3Dfalcon%26pos%3Dmid%26test%3D0
[6] https://pubads.g.doubleclick.net/gampad/jump?co=1&iu=/6978/reg_software/front&sz=300x50%7C300x100%7C300x250%7C300x251%7C300x252%7C300x600%7C300x601&tile=3&c=33Yjha5sJ0vDo6Z7sO5rXqtgAAANE&t=ct%3Dns%26unitnum%3D3%26raptor%3Deagle%26pos%3Dmid%26test%3D0
[7] https://www.theregister.com/2022/03/14/who_me/
[8] https://www.theregister.com/2022/03/07/who_me/
[9] https://www.theregister.com/2022/02/28/who_me/
[10] https://www.theregister.com/2022/02/21/who_me/
[11] mailto:whome@theregister.com
[12] https://whitepapers.theregister.com/
Re: No rude but I always laughed
I believe they actually had a good reason to mess with [1]/bin/true . The original implementation was an empty file. The OS interpreted that as a command to do nothing, which it completed successfully. AT&T added a copyright notice as a series of sh comments but missed out the magic sequence to identify the file as a sh script. Apparently Solaris saw a non-empty file with no magic to identify the interpreter so AT&T's updated implementation exited with an error until it was fixed.
We are very lucky that diligent GNU programmers implemented /bin/true as a C program with command line options. If Larry can demand billions for rangeCheck imagine what Darl McBride would have wanted for an empty file that wasn't his.
[1] http://trillian.mit.edu/~jc/humor/ATT_Copyright_true.html
how did that escape?
Go back 40 years .... I was told nth hand of a product running on the mainframe, which had a problem which was very difficult to solve. He put some "temporary" debug code in along the lines of
* We can never get here. But if we do we are in deep trouble. Phone John on 01962......
WriteOperator "We can never get here"
Normally all the code was inspected before it went into test; to stop bad code and comments from escaping. Temporary code was not reviewed as it was not shipped.
6 months later after the product had shipped the phone rang - it was a customer "is this John ? We've had a problem, and the source says to phone you..."
Re: how did that escape?
"Temporary code was not reviewed as it was not shipped."
I think I see your problem ...
Re: how did that escape?
I think I've mentioned before that some of my colleagues forgot to replace "OutOfCheeseError" before the product was shipped.
Re: how did that escape?
Thank you for the Monday morning @Pratchett reference! Duly upvoted.
Re: how did that escape?
Excellent PTerry reference.
And while we’re at it, this recent SMBC cartoon (which is completely off topic) also brought a smile to my face since I recently read through all discworld novels again :
https://www.smbc-comics.com/comic/scythe
Who among us ...
... never patched binary code to change text strings into something pithy?
As a grad student I was near constantly yelling at the freshmen who thought they were being clever in a way that nobody had ever been clever before ... The advent of Usenet brought some relief from this (at the expense of those of us actually using Usenet), but that only lasted a month or so. Until Delphi, followed by AOL, allowed the Great Unwashed in to revel in the Eternal September ... but that's a rant for another day.
A pint for the old fogies who can commiserate ... The rest of you kids, get orf me lawn!
Found in translation
A colleague changed an error message that would NEVER need to be printed - it was in one of those cannot-possibly-happen clauses after several other error conditions had been detected and reported - so that it simply printed "Merde!". Of course, it showed up almost immediately after shipping the product. And the customer complaint was that they didn't understand the problem since they were not running with a French locale.
Unfortunately
Much like it may seem like a good laugh, it's never worth putting in potentially offensive messages (or method names etc) as (even if you think it should never occur / never be seen) invariably the message will be seen somewhere (be it in the frontend, error log etc.) and it just looks unprofessional & you will get hassle from it, especially if a customer end user sees it.
Easter eggs
About 5 years ago while doing some website admin training at a company whose website I looked after I showed said admin how she could change system / user messages via the localisation feature and how one could include tokens such as user names and how messages where tied to roles.
I did this as an exercise after she asked what the localisation system was for. Tuition moved on and I thought no more about it.
About 2 years later I got a a call from the companies MD demanding to know why, when he tried to delete some users, the website told him by name that he did not have the intelligence to carry out this operation and that he should employ a proper admin and not be such a cheap *******.
Turns out he had made the website admin redundant and she had left some "Easter eggs" for him (and other execs) some of which were very rude and probably impossible.
She exhibited a high degree of Bofh'ness so I hope she went on to have a nice career.
My boss asked a client we were building a system for what it should do if somebody tried to access a function that they shouldn't. "Tell them to bugger off!" was his response.
The system was only running for a day or two before the first complaint came in. Mind you, we did get it to play the Monty Python theme whille it slowly painted "BUGGER OFF!" in large letters over the whole screen! (This was in pre-gui days)
Ah, they'll never see this error message
9 or 10 IFs down the error trap I thought the code had reached the point where the only thing that could cause it would be a bad hard disk and that something or someone else would have picked that up before my code did.
"If you ever see this message, RUN TO THE HILLS! The only thing that cause this is Hell boiling over, the sky falling on out heads or those idiots finally pressing the button. Don't stop to kiss your arse goodbye, just run!".
Ten years later a former colleague rocks up my desk with a hand full of music-ruled fanfold which by now was a long since forgotten thing. "Did you write this?". Turned out that a bad sector on the disc would knock out the database but not the whole ICL EDS drive.
Password generator turns sweary
Boss at a previous job had a role at an ISP where one of his jobs was to write a password generator for their users. It all worked very well until it was demoed to some prospective Japanese investors whereupon it proceeded to output profanity after profanity in Japanese! AFAIK, they didn't invest and the password generator behaved perfectly afterwards.
Stupid
I understand the allure of doing something daring and it not being discovered, whenever I’ve tried I’ve vs always been caught out so don’t bother trying anymore!!!
If I was lucky enough to have never been caught then maybe i would have persisted but I now just mash the keyboard or write “test-test” repeated for the length required, it comes the same as putting something ‘daring’ in there with the bonus of it being obvious it shouldn’t be there if ever discovered (probably by me at silly o’clock when something is busted).
It is truly stupid to put something that could be career limiting in something that someone could see if I’ve got the config wrong if someone else amends it after me.
On a very old website..
We had a search page which took some time after submitting to produce results, so in the C apache handler (I told you it was old), we would write out part of the page, with a message saying that the search was happening and please wait a little while, and then follow on with the rest of the page redirecting to the results once they were actually ready (this was the "solution" to just waiting until the results were ready and displaying them, which left the user on the search page and able to keep hitting the search button and submitting multiple requests).
And then came IE 4, which refused to display our message. It turned out that it was waiting for at least 8kb of content to be sent from the server before it would start rendering the content on the screen. My solution to that as an eager young developer, 6 months on the job, was to put the script to the Monty Python "spam" script in to an HTML comment, followed by variations of the word "spam" in capitalisation and geekcode - 5p4m sPAm $pAM etc. Worked perfectly, everyone's a winner.
10 years later*, I get an email "We've been hacked" and "Tom, CVS says you made this commit..". A client had got fed up with waiting for their search and hit stop in a way that had exposed the python's skit in full
It got replaced with the rather dull but less prone to inflame excitable clients "Padding for Internet Explorer" repeated a thousand odd times.
* Which goes to show, the shiny bits of the website had been rewritten several times in to python, then python + javascript, (its now react I think), but the boring functional part still uses that original search code in C - too scary to update, too reliable to warrant replacement.
No rude but I always laughed
I had a problem with inetd services on a Sun box and started looking at the start script in /etc/init.d. I always loved the comment: # Why oh why did we mess with inetd?