• operagost (unregistered) in reply to Konrad
    Konrad:
    Allow me to share my first terminal disaster granted this I was 13 at the time and the only thing I lost was Test Drive (version 1) of my own IBM PC XT

    put a floppy disk in

    c:> FORMAT

    Press any Key to begin fromatting C:

    'oh I don't want to do that,' mutters to self.

    [ESC]

    I'll take your word for it that ESC would simply take the default, but I used DOS 3.3 through 6.22 and none of them would format without specifying a drive; and the next prompt was, "You are about to format the fixed disk C:. ARE YOU SURE (Y/N)?"
  • (cs) in reply to Steamer2k
    Steamer2k:
    Mikademus:
    Highly entertaining, but as said above, not a wtf. Perhaps the site should be renamed "The Daily Anecdote From the Past", or maybe a new section (in green?) should be added alongsite the Daily WTF and Daily Code Snippet...

    Captcha: vern (the real WTF is that "Verne" is misspelled, but that's ok, he was never a coder)

    I like Bramster's suggestion of The Daily Oh Sh!t.

    Operations Tales ..... ?

  • (cs) in reply to el jaybird
    el jaybird:
    Within my first two weeks on the job I managed to write a multi-threaded program that had a wee little bug.

    Strip out all the good stuff and my program ended up being:

    while(1) { fork(); }

    ... did I mention the entire floor uses the same server for everyone's software development?

    By the time I realized what was going on it was too late. The call from the IT guy came about 5 minutes later.

    This is why you use process quotas.

    sys<in:</strong>
    MadPad:
    For a horrible moment I thought the title referred to the magic programming language

    Wow, you seemed to have found the one thing on the planet that does not have a Wikipedia entry! Unless it's that MUMPS dialect called "Magic" (but that deosn't seem to be the case based on the URL you provided)...

    It seems to refer to http://www.magicsoftware.com/ which seems to be selling Yet Another Integration Panacea, which seem to be a veritable fountain of WTFs.

  • teamate (unregistered)

    ahh good ole Rod,

    and then there was the team effort of

    DEL LIKE (-)

  • (cs) in reply to regeya
    regeya:
    #rm -rf / tmp

    will ruin your whole day.

    #rm -rf *

    does a pretty good job and ruining your day as well

  • Mike5 (unregistered) in reply to Singletonitis
    Singletonitis:
    Well, since COBOL was designed by a woman, what else can you expect. http://en.wikipedia.org/wiki/Grace_Hopper

    Do not take personal.

    Nothing wrong with that. But while struggling with various Word bugs^H^H^H^Hfeatures (you know, the ones that make you cry "No way this is a bug, someone is screwing with me on purpose!"), I am often reminded that it was designed by a French man.

    Again, do not take personal...

  • Bo, the ancient mainframer (unregistered) in reply to nobody
    nobody:
    If you just wanted to delete a file, there was a null program, IEFBR15,

    Actually, and I'm scaring myself here a bit by being able to remember it, it is IEFBR14.

    The BR14 part of the name is shorthand for Branch Register 14, with register 14 being the place where, by convention, the return address to the caller is stored. So, all IEFBR14 does is to branch back to the place from where it was called.

    There is an old story, probably not true, that the first shipped version of IEFBR14 contained an error - it DID perform the branch but didn't zero the return code. Fixing the error (adding a ZAP R0,0 or MOV r0,0) doubled the size of the program: from one assembler language statement to two.

    And, for an encore I think I'll try to remember the difference between a zoned and a packed number on the mainframe :-)

    Bo, old ex-mainframe guy, now just old

  • Mike5 (unregistered) in reply to Mike5
    Mike5:
    Nothing wrong with that. But while struggling with various Word bugs^H^H^H^Hfeatures (you know, the ones that make you cry "No way this is a bug, someone is screwing with me on purpose!"), I am often reminded that it was designed by a French man.

    Again, do not take personal...

    Although I must admit there was a lot more of those in Workd2k than in the more recent incarnations.

  • echecero (unregistered)

    I love it when I see things like this on The Daily WTF:

    [image]

    captcha: sanitarium

  • Gordon (unregistered) in reply to TR

    If it was your mainframe it would be a "...WTF?" believe you me, boy...

  • angelone (unregistered)

    hehe, i can feel with rod :) had the same problem once.

    we have a lot of ibm machines over here. but nowadays the debugger is a little bit easier to use. with gui and step through and stuff like that.

    back then with the old versions of the debugger, you had no gui. you had to set breakpoints in your programs from the console without seeing the code. this really rocks...

    and today the system dumps per default when an error occurs. and it just dumps for that one program with the error.

    • Martin
  • GreyWolf (unregistered) in reply to steven22
    steven22:
    what's a mainframe?
    Mainframe Hardware and software capable of supporting 3000 users in 64MB of RAM (IBM S/390, OS/390)
    Windows-Intel Hardware and software capable of supporting 1 (one) user in 64MB of RAM, providing you are using a version no higher than Win98.

    CAPTHCHA: kungfu (rm command is kungfu - bling large computah to knees by using own strength against it)

  • (cs)

    "abend in cobolii module!"

    That does sound a bit like an incantation. "Naur an edraith ammen".

    And having done similarly stupid things myself, the Goethe analogy rings true.

    Oh great admin, hear me crying! - Ah, he comes excited. root, my need is sore. Core dumps that I've cited My commands ignore...

  • goethator ;) (unregistered) in reply to Arancaytar
    Arancaytar:
    And having done similarly stupid things myself, the Goethe analogy rings true.

    Oh great admin, hear me crying! - Ah, he comes excited. root, my need is sore. Core dumps that I've cited My commands ignore...

    Well, the whole poem is very much transferable to this whole situation.

    http://german.about.com/library/blgzauberl.htm ("German and English side by side"-Version).

    captcha: darwin. As in "This poem survived natural selection"

  • Delete * from ... WTF? (unregistered) in reply to Franz Kafka

    Yeah, once I killed a production database (two terminals, one terminal production, another test, sounds great, doesn't it) and there was no backup. That was one hell of a week, but I learned my lesson ...

  • (cs) in reply to Anon
    Anon:
    Like one of my mentors used to say... this is a guy I want to hire because I'm guarenteed he'll never make that mistake again.

    And like one of mine used to say: The best way to learn is to learn by pain.

    Yep, I have some painfull memories... :]

  • George Nacht (unregistered)

    Maybe someone has already mentioned this story, but does anybody recall the disaster when launching Mariner space probe back in medieval days of computing? Some soon-to-be-ex NASA programmer typed dot instead of coma(or other way around) in the steering program. This was not a mistake, sadly. it just turned loop command into simple value assignment. Mariner (do not recall the sequence number, but I guess it was 7) then crashed into Pacific one minute after take off. Or can anyone tell me this is urban legend? I would certainly sleep better...

  • J Random Hacker (unregistered) in reply to George Nacht

    The Mariner thing is somewhat apocryphal. The comp.risks archives are an excellent place to track down this sort of thing.

  • (cs) in reply to J Random Hacker
    J Random Hacker:
    The Mariner thing is somewhat apocryphal. The comp.risks archives are an excellent place to track down this sort of thing.

    RISKS is also excellent reading, especially if you're interested in WTF?!s. Some of the things that people have done are mind-boggling. Some were also not obvious before the fact.

  • (cs) in reply to bofh69
    bofh69:
    I remember the days when people would find an unattended screen, and enter the command $ touch \* and then clear the screen. Sooner or later, the hapless user would find the file created, notice that it was a useless file with no content, and delete it. Unfortunately, they sometimes didn't think through the consequences of their actions...

    My favorite variation of this was:

    $ touch -- * -rf

    Which makes it just that much more destructive. Even if you didn't (initally) fall for the -rf file name, doing an

    $ rm *

    would still result in actually doing

    $ rm -rf *

    after wildcard expansion.

    You, my friend, are a sick and evil man.

  • Peter (unregistered) in reply to Maurits
    Maurits :
    SQL Reeeeeeeally needs a SET DELETES_AND_UPDATES_REQUIRE_WHERE_CLAUSE 1 option.

    And it should be on by default.

    But then how would you ever learn to restore from transaction logs?

  • Marek (unregistered) in reply to ringbark
    ringbark:
    I remember the days when people would find an unattended screen, and enter the command $ touch \* and then clear the screen. Sooner or later, the hapless user would find the file created, notice that it was a useless file with no content, and delete it. Unfortunately, they sometimes didn't think through the consequences of their actions...

    $ touch * touch: cannot touch `*': No such file or directory

  • Ross Patterson (unregistered) in reply to snoofle

    I'm not interested in any computer I can lift. :-)

  • dww (unregistered) in reply to Ken

    IEFBR14 OMG. 30 years ago I wondered why they called it IEFBR14. It's taken until today to find out.

    It was no good asking the System Programmer such things. He would just say "it's in the manual" (this was before the term RTFM had been invented). He would then wave at the computer room wall, lined with floor-to-ceiling shelves, completely full of white plastic ring binders containing The Sacred IBM Manuals. One of which might possibly have answered my simple question. If I knew which one.

    I hated him.

    [Captcha: bling. For shame, sirs, there WAS no bling back then]

  • NameNotFoundException (unregistered) in reply to snoofle
    snoofle:
    I think that you aren't really experienced until you've accidentally managed to trash a {mainframe|db server|root file system|network config file|...}

    Holy crap!

    "You aren't a really experienced vehicle driver until you've accidentally managed to trash a {bicycle|motorbike|car|bus|jumbo|...}"

    Wtf?

  • pweegar (unregistered) in reply to operagost
    I'll take your word for it that ESC would simply take the default, but I used DOS 3.3 through 6.22 and none of them would format without specifying a drive; and the next prompt was, "You are about to format the fixed disk C:. ARE YOU SURE (Y/N)?"

    I remeber owning a Sanyo 555 back in the early 80's. It was an IBM "clone". Ya, it had an 8088 cpu and that was about the only part of "clone".

    Anyways, the keyboard was mapped to various DOS commands. Being that I had never touched such a beast before, I managed to hit the proper key combo (control F I think) and hit the enter key. Too bad the DOS diskette was in the drive. It eneded up being wiped out. Fortunately, the store owner where I bought this pc was a friend and he gave me a new DOS disk. Never did that again AND taped over the copy protection slot.

  • (cs) in reply to Ken
    Ken:
    nobody:
    The way to delete files in jcl was to run a program with a data file that was to be deleted afterwards. Something like //RUN IEFBR15 //DD <some stuff> DISPOSE=DELETE

    (my JCL is seriously rusty, so don't criticize. I haven't used it in around 25 years)

    Close, but no cigar. It's IEFBR14.

    The first three letters, "IEF" indicates that it's an OS utility program.

    The 'branch' command in 360 Assembler is 'B'.

    The standard calling convention on the IBM 360 series of mainframes stores the return address in register 14 (aka 'r14').

    Put it all together and you've got 'IEFBR14'.

    Closer, but the instruction is BR, Branch Register. B is branch to a label. :-)

  • (cs) in reply to Stan James

    Ooops, somebody beat me to that BR. Wikipedia has the whole story of how many tries it took to get IEFBR14 right.

    COBOL didn't have a way to produce a core dump at will for debugging the last time I cared. I wrote a one line assembler program that divided by zero. That did the job.

    My first and grandest mainframe accident was trying to uncatalog some disk files. After many tries and errors, I hit on deleting the catalog. Which was the only way to access thousands of everybody else's files. I offered to recatalog them since I had a little EXEC that could generate the JCL in a second, but they sent me away and retyped the names by hand. All night long.

  • Richard@Home (unregistered) in reply to Doodie
    /* Oh, unholy demons of HELL, */ SELECT -- the unforgiven seeds and name them each as EMPLOYEE_ID, FIRST_NAME, LAST_NAME, TITLE FROM -- the darkest depths of eternal, uhh, darkness within the CORPORATION WHERE -- their souls have been tainted -- with the blood of the undead with TITLE LIKE '%MANAGER%' /* Bring forth thy followers and line them within rows and columns */ ;

    I'm staying late at work tonight to update 2 years worth of SQL statements!

  • freelancer (unregistered)

    My first big mistake was when I was twelve. I had installed Linux on our family computer, but I got bored because I couldn't really figure it out. So I proceeded to deleting it, for some reason starting with "rm -rf /". Guess what was mounted under /mnt/windows? And guess who was banned from the computer for a month? :P

  • Tom, another ancient mainframer (unregistered) in reply to Bo, the ancient mainframer
    Fixing the error (adding a ZAP R0,0 or MOV r0,0) doubled the size of the program: from one assembler language statement to two.
    <continuing stroll down memory lane, retrieving corrupted memory, mode="pedantic"...>

    To clear a register, the standard technique was to subtract register, e.g. SR R0,R0. The clever technique was to use XOR instead (XR R0,R0), which avoided setting some status bits.

    ZAP was/is Zero and Add Packed, which was a memory to memory operation, not memory to register.

    There was no MOV instruction; to load a constant into a register you used L (load), or for small constants (<= 4095), LA (Load Address), So one option was LA R0,0 or LA R0,0(R0), since for address purposes R0 always returned 0.

    There was a MVC (move characters) instruction, which was memory-to-memory.

    Packed decimal was 4 bits/digit, two digits/byte, sign in low-order 4 bits. Zoned decimal was 1 byte/digit, with the upper 4 bits being hex 'F', except the low order byte, which had the sign in the upper 4 bits of the byte. The result was that zoned decimal was printable, with the odd feature that the low order byte would appear as a letter - which letter depended on the sign of the number and the low order digit.

  • Chick Counterfly (unregistered) in reply to snoofle

    ..... or fat-fingered the name of your authoritative DNS server.

  • deathbydesignflaw (unregistered)

    I just want to say this was a well done article. The context and story telling were great.

  • Mike5 (unregistered) in reply to Tom, another ancient mainframer
    Tom:
    Fixing the error (adding a ZAP R0,0 or MOV r0,0) doubled the size of the program: from one assembler language statement to two.
    <continuing stroll down memory lane, retrieving corrupted memory, mode="pedantic"...>

    To clear a register, the standard technique was to subtract register, e.g. SR R0,R0. The clever technique was to use XOR instead (XR R0,R0), which avoided setting some status bits.

    ZAP was/is Zero and Add Packed, which was a memory to memory operation, not memory to register.

    There was no MOV instruction; to load a constant into a register you used L (load), or for small constants (<= 4095), LA (Load Address), So one option was LA R0,0 or LA R0,0(R0), since for address purposes R0 always returned 0.

    There was a MVC (move characters) instruction, which was memory-to-memory.

    Packed decimal was 4 bits/digit, two digits/byte, sign in low-order 4 bits. Zoned decimal was 1 byte/digit, with the upper 4 bits being hex 'F', except the low order byte, which had the sign in the upper 4 bits of the byte. The result was that zoned decimal was printable, with the odd feature that the low order byte would appear as a letter - which letter depended on the sign of the number and the low order digit.

    We bow before thee, o mighty wise, old one. I must say it is nice to see some old hackers reading this site. But on the same note, I have to say "You still remember all that???!!! WTF dude!!!" I mean, isn't it time to store all that under the useless knowledge file, and forget about it along with the Z80 assembler and things like that?

  • rudy komacsar (unregistered)

    Probably a bad linklist and security. IGY errors are from the runtime library. S106 is load module not found is due to RACF security. Damn I'm old.

  • Been there, done that... (unregistered) in reply to teamate
    teamate:
    ahh good ole Rod,

    and then there was the team effort of

    DEL LIKE (-)

    Talking about team efforts: I used to be a senior mainframe peripherals hardware engineer, one day I was showing a new engineer round an unattended mainframe computer room and decided I'd take the opportunity to tidy up all the redundant cables under the false floor.

    We successfully removed about a dozen or so old EPO cables and then I told the new guy "Grab that one and yank it out of the socket - it's a duplicate and not needed".

    Two huge strings of disk drives suddenly spun down and the Department of Health nationwide computer system ground to a halt, right in the middle of the busiest part of the day.

    Oops!

    I got promoted to Tech Support soon after that - I think they figured I'd do less damage sat in the office. LOL!

  • Trix (unregistered) in reply to Singletonitis
    Singletonitis:
    Well, since COBOL was designed by a woman, what else can you expect. http://en.wikipedia.org/wiki/Grace_Hopper

    Do not take personal.

    I won't "take personal" if you won't make stupid remarks. Since programming in general was invented by Ada Augusta - ooh, another woman - every programming geek here needs to be grateful for at least one woman's existance.

    (Yes, I'm sure programming would have been invented sooner or later, but still.)

    Captcha: kungfu < kick-arse mode = on >

  • 3eff Jeff (unregistered) in reply to Matthew
    Matthew:
    regeya:
    #rm -rf / tmp

    will ruin your whole day.

    That's why I'm always sure to use systems that are too slow to do much damage before I have a chance to hit CTRL-C. Easy fix, really.

    Or, you do this (in bash): ls <glob> rm !$

    And only run the second command if the first one works (mind you, !$ is a history expansion in bash which expands to the last parameter of the previous command, so you can only use one glob pattern with this).

    Captcha: alarm

  • (cs) in reply to Mike5
    Mike5:
    Tom:
    Fixing the error (adding a ZAP R0,0 or MOV r0,0) doubled the size of the program: from one assembler language statement to two.
    <continuing stroll down memory lane, retrieving corrupted memory, mode="pedantic"...>

    To clear a register, the standard technique was to subtract register, e.g. SR R0,R0. The clever technique was to use XOR instead (XR R0,R0), which avoided setting some status bits.

    ZAP was/is Zero and Add Packed, which was a memory to memory operation, not memory to register.

    There was no MOV instruction; to load a constant into a register you used L (load), or for small constants (<= 4095), LA (Load Address), So one option was LA R0,0 or LA R0,0(R0), since for address purposes R0 always returned 0.

    There was a MVC (move characters) instruction, which was memory-to-memory.

    Packed decimal was 4 bits/digit, two digits/byte, sign in low-order 4 bits. Zoned decimal was 1 byte/digit, with the upper 4 bits being hex 'F', except the low order byte, which had the sign in the upper 4 bits of the byte. The result was that zoned decimal was printable, with the odd feature that the low order byte would appear as a letter - which letter depended on the sign of the number and the low order digit.

    We bow before thee, o mighty wise, old one. I must say it is nice to see some old hackers reading this site. But on the same note, I have to say "You still remember all that???!!! WTF dude!!!" I mean, isn't it time to store all that under the useless knowledge file, and forget about it along with the Z80 assembler and things like that?

    ... except when you actually have to work with mainframes. ph33r ... COBOL is still in use, and so are some S/390's.

    I read RACF and understood what that was ... I fear I will understand the more cryptic messages if I get assigned to what I think I will be...

  • pfarrell (unregistered) in reply to Anon
    Thomas Watson:
    Recently, I was asked if I was going to fire an employee who made a mistake that cost the company $600,000. No, I replied, I just spent $600,000 training him. Why would I want somebody to hire his experience?
  • Malky (unregistered)

    VERY funny - I did the 1st Computer Studies course in the UK for GCE (test crash dummy stuff c1973) and managed to crash an ICL Big Boy at Liverpool Uni. via punchcards - nobody was happy

  • thetechyboy (unregistered) in reply to dww

    I eventually added a new sticky label to the spine of the IBM tape label manual that said 'This is the one you are looking for'.......

  • Hank Miller (unregistered) in reply to thetechyboy

    At least those of you sharing war stories learned from the experience.

    When my sister was about 3 and a 386 was enough to make people jealous of your computer, she managed to do something to it. We (my dad and I, both experienced computer people) wasted most of a day trying to figure out what before going to a full reinstall. I still have no clue what she did. Since she just knew to move the mouse to pretty things happen without understanding what, she couldn't learn from it.

  • Anonymous Coward (unregistered) in reply to el jaybird
    el jaybird:
    Within my first two weeks on the job I managed to write a multi-threaded program that had a wee little bug.

    Strip out all the good stuff and my program ended up being:

    while(1) { fork(); }

    For similar fun, enter this at a Linux shell prompt:

    :(){ :|:;};:

  • (cs) in reply to Marek
    Marek:
    ringbark:
    I remember the days when people would find an unattended screen, and enter the command $ touch \* and then clear the screen. Sooner or later, the hapless user would find the file created, notice that it was a useless file with no content, and delete it. Unfortunately, they sometimes didn't think through the consequences of their actions...

    $ touch * touch: cannot touch `*': No such file or directory

    Yes, you'll get that if you try the command on Cygwin, because the filesystem doesn't support filenames with "*" in them.

    Try it on a Linux box with a Linux filesystem, and it should work fine.

  • GoldenRatio (unregistered) in reply to Cheong
    Cheong:
    Actually, the Sorcerer should have told him how to recovery from those disastious situation before he left.

    For one thing, he is retiring so he wouldn't normally be "standby" want something went wrong. For the others, people tend to do insane try-and-error hoping to recover the damage if they have no idea how to properly fix it, and do more damage...

    Retire, in this case, means "leave", not actually retiring...

  • Anonymous (unregistered) in reply to Foo
    Foo:
    Yuriy:
    Wait a minute, I'm no UNIX/Linux guru, but wouldn't 733 only forbid the non-owners read-access to your files?
    yep....

    744 would be read only to the group and world with read/write/execute for the user.

    I myself prefer in order 740, 770, or 774.

    Learn to use symbolic permission specifiers. chmod has been supporting them for decades!

    733 ==> u=rwx,go=wx 744 ==> u=rwx,go=r 740 ==> u=rwx,g=r,o= 770 ==> ug=rwx,o= 774 ==> ug=rwx,o=r

    I learned this myself by reading 'man chmod', and have been using it instead of the numeric permission specifiers for over a decade. It also makes shell scripts more readable. The symbolic specifiers can also do something you cannot do with the octal numbers:

    You may use [+-][rwx] to turn certain bits on/off without doing the binary/octal arithmetics in your own brain. You can even use [ugo] on the right hand side of the '='. There is also u+s (or u-s) for setting (or clearing) the setuid bit.

  • Big Al (unregistered)

    I remember working on printers connected to an MVS/JES2 system decades ago, and we used to stop and restart jobs by entering @pprt6 then @eprt6 (using Ctrl-Esc or similar to recall the previous entry then over typing with @e). A common occurence was to hit the Ctrl-Esc and enter @p too quickly for the previous command to recall before hitting Enter, resulting in a peaceful and steady slowdown of the system. Even better was if you entered @e :-)

  • Abigail (unregistered) in reply to Singletonitis
    Singletonitis:
    Well, since COBOL was designed by a woman, what else can you expect. http://en.wikipedia.org/wiki/Grace_Hopper

    Do not take personal.

    Well, since you've told me not to take it personally, I shall take it as the light jest you undoubtedly meant it to be... But then, what's so funny about a language that demands correct syntax for correct functioning? :)

    I once heard this description of debugging: "We spend all our time trying to figure out what we told the computer to do." So true.

    (Captcha: Ninjas. Hi-ya!)

  • Abigail (unregistered) in reply to Graham C
    Graham C:
    grinded to a halt
    WTF?? The past tense of "to grind" is "ground".
    Thank you!!

    (Captcha: Pirates. Wow, I've now gotten the two coolest captchas in existence!)

Leave a comment on “The Sorcerer's Apprentice”

Log In or post as a guest

Replying to comment #:

« Return to Article