- Feature Articles
- CodeSOD
- Error'd
- Forums
-
Other Articles
- Random Article
- Other Series
- Alex's Soapbox
- Announcements
- Best of…
- Best of Email
- Best of the Sidebar
- Bring Your Own Code
- Coded Smorgasbord
- Mandatory Fun Day
- Off Topic
- Representative Line
- News Roundup
- Editor's Soapbox
- Software on the Rocks
- Souvenir Potpourri
- Sponsor Post
- Tales from the Interview
- The Daily WTF: Live
- Virtudyne
Admin
Weren't punch cards usually numbered (in pencil/pen) on the edges to specifically prevent problems like this -- you know, so you could count the cards and realize that one was missing?
Admin
So far, our company has been spared such horror stories. The worst I can remember is how the cleaning staff clearly are not advised of the ESD policies. They don't touch any of the product, so the odds of an actual incident are pretty low -- but still nonzero. We have signs explaining that you must wear an ESD smock with at least three snaps fastened if you wish to cross the stripey lines in the labs, but the cleaners don't pay any attention to them. Their focus is entirely on locating wastebaskets, emptying them, and replacing the liners.
Complaining to the cleaning company had little effect; the staff didn't understand why the smocks might be required if they weren't going to be touching any of the hardware. (At least, not deliberately touching it.) So most of us have adopted the simple strategy of keeping our wastebaskets on the safe side of the stripey line. ;-)
Admin
[quote user="Anon"][quote user="JaySee"]Can someone who knows how punch cards work explain to me why this is a problem?
Punch cards work like this: You write code, the code turns into cards that get punched, the computer runs off the punched cards. So if she was using a punch card, that card was no longer there FOR them to run. It'd be like commenting out a random line of C code.[/quote]
That's ONE way punched cards were used. But the more common use was for data input. You loaded your program from one card deck and when it ran, it read the card reader to get its input from a (usually) separate card deck.
Or, depending on your time-share situation, you might put them together into one big deck and run the whole thing.
So the cleaning lady probably didn't do anything to the code (which still ran), but she hosed up the data the program was reading.
Admin
TRWTF is that she was using a CARD WITH HOLES IN IT to sweep up DUST.
Big dust.
Admin
I'm waiting for someone to tell us they know someone who used a CD-ROM drive as a cupholder. HAR HAR!
Admin
Then why did the code fix itself each day?
Were the punch cards recreated every single day/every single run?
Admin
Ahhhh, Hollerith cards. Memories.
Personally, I never numbered the cards as inserting a new card (code or data) required repunching the deck. Much better to draw a thin sharp diagonal line down the side of the deck, and only repunch when it got too out of hand.
I used to love messing with the phone/electric/gas companies by punching/spindling/mutilating the bill/cards every month just to guarantee it was processed by a human.
Now if only we could punch/spindle/mutilate folks via e-mail...
BTW: they made pretty good dust pans as even a card with a punch in every column was still 99% not-hole...
Admin
Obviously. Big Iron mainframes generate big dust.
Admin
Aanyone know how many of those punch cards could be read before the mainframe ran out of relays to store the data?
I know the newer high-tech mainframes had vacuum-tubes.
I am trying to get our company to upgrade to a state-of-the art solid-state mainframe with these new-fangled transistor thingys.
Joking aside, I assume these mainframes did use transistors and not integrated circuits?
Admin
It is the mid 1960s. Integrated circuits had not been invented yet, so yeah discreet transistors. They were all the rage back then.
Admin
No TrackBack support? That is a good WTF for tomorrow!
Anyway: That Harsh World We Call Reality
Admin
Admin
It is interesting that the programs seemed to work so much better back then than they do now.
Admin
Ok, you win, but as wikipedia points out they were not in commercial use until the early 1970s. It would have been very unlikely to find these in a commercial computer in the 1960s.
Admin
Admin
Holy, Holy Crap.
I'm 31. I don't really know much about punch cards. But after reading all the comments (not the parent story, kinda boring), I am SOOO glad I wasn't alive in the punch card era. I mean, WTF??
Admin
Hehe. If it was in the '60s, I'm pretty sure they would be using those systems that didn't have any kind of EOF marker. At least this was true for older System/360 versions, my dad's friend used to work with these. If that is any indicator, I wouldn't be surprised a program back then would just not detect the missing record. Oops!
Admin
I heard a similar story from a coworker. At his previous company they had a server that would go down every Wednesday night. The company installed $25000 of security equipement and cameras and discovered to their surprise the following day that there was a cron job rebooting the server.
Admin
Good story. Mr Murphy showed himself quite well.
For those too young to remember punch cards, the moral here is when debugging, do not overlook the data and input method(s).
My first job in IT, was in the Army in the mid-80s. They were still using some punch cards on some systems, in spite of DoD mandate to stop. Funny thing, DoD mandated that all divisions should cease using them 1 Jan 87, but the budget to replace the card reader/punch machines wasn't approved until the following year.
Once we had a new maintenance guy who was told to clean the card reader/punch machine. He was thourough, very thourough. He took all of the IC boards (14) out of the machine, stripped it down and vacuumed it out entirely. Unfortunately, he didn't document the order in which the IC cards were supposed to go back in to the machine. It had to be replaced.
Admin
Proof that sometimes Pointy-Haired Bosses are absolutely correct, and that consciousness can be a serious impediment to productive work.
Admin
Actually, it was really kind of fun. Keep in mind that this was all batch processing. The term "interactive" hadn't been invented yet. Writing code involved writing out your program on coding sheets and then punching (or having someone punch) what you wrote onto punch cards. You then grabbed appropriate "pre-punched" JCL cards and stuck them onto the front of your punched deck (extending any program specific JCL cards that you included in your original coding sheets).
For small decks, you bound them together with a rubberband. Large decks you placed back into the card box careful to keep them in order. You wrote your name on the deck (or box) with a sharpie. Then you placed your deck into an input bin (a two sided shelf in the operator's room just outside of the computer room.
Sometime later, the operator would grab your deck along with a bunch of other decks from other programmers. He would remove the rubberbands and cram them all together into the input hopper on the card reader and hit the "Go" button. The card reader would do its thing and 8 out of 10 times it would read all of the loaded card decks without jamming or tearing the crap out of a bunch of paper cards.
Later (on the order of a half hour to eight or ten hours depending upon how busy the system was) your job would run. Printed output from your program would eventually get printed by the huge printers inside the computer room.
When the stack of print outs got big enough, the operator would tear off the stack of pages and carry it into the operator's room. He would then spend five or ten minutes separating the individual printouts. He would then shove the printouts into shelves organized alphabetically by user name.
You as the programmer then went to the shelf, picked up your printout, took it back to your desk, and looked it over. Often, you were presented with a couple of pages of compiler syntax errors resulting from a combination of your dumb programming logic and weak typing skills.
You debugged the code and marked up your print out to correct the errors. You then returned to the card punch machine and re-punched the cards that contained the errors and replaced them in your deck.
And then you repeated the input/run/output process all over again.
When you finally got a clean compile and a fully debugged program, you treated the resulting card deck like "gold". The good news was that some of the card punch machines had a "copy" mode that allowed you to automatically create a duplicate of your card deck. It would even automatically add sequence numbers in columns 72-80 of the generated copy. So you distributed copies of the program to users and never let the original out of your sight.
Programming using punch cards was really quite fun and it taught important lessons. Turn around for just a simple compilation and test run took so long that you were extremely careful every step of the way. You double and triple checked all of your logic and did everything in your power to weed out syntax errors before attempting a run.
Admin
I had a similar issue several times in a small company. It has only about 20 networked computers and a domain server, mail server and a router all of which are actually housed in wooden
tablecabinet. The cabinet itself is quite unfortunatelly suited in a small conference room. Appart from the two servers and the router the cabinet also housed a 3 UPS units and a couple of switches, a cable modem, a couple of 10/100 ethernet converters and maybe some other stuff like that. In order to be able to plug the switches and convertors in the UPS, there was a custom made extension cable which looks like an ordinary extension cable (so that you can plug the various plugs) but the other and plugs into the UPS. Well of course i thought that one day someone might plug something horrible into it - so i taped the empty sockets in the extension cable with bright yellow tape and written on it "Do not unplug anyting. Do not plug anything new into me! Especially NO vacuum cleaners, i hate vacuum cleaners." Well then, someone hired a new cleaner. Few weeks later we lost one UPS. Someone silently send it to repair and plugged everything into the remaining two. Few weeks later i was by pure chance there in the evening fixing something. At the same moment i heard the vacuum cleaner start, the network went down. I went to the server room, found a beeping and blinking UPS and half of the cabinet dead. The conversation with the cleaner went roughly like this:"Umm, hi, what actually happened here?" "what do you mean?" "you know, the beeping - did the power go out or what?" "oh that, i don't know" "haven't you touched the cabinet or the cables or something?" "no" Then i noticed, that she hadn't the extension cord to the vacuum cleaner - they used to have a very long one actually tied to the vacuum so that they can plug it in one room and vacuum all the offices at once. "Where is the extension cord to the vacuum cleaner?" "what?" "that long white cable which used to be tied to it" "oh, that long rope? i removed it, it was very cumbersome, i don't know who put it on the vacuum in the first place" knowing that most of the sockets were hidden behind some furniture i asked: "So, where exactly thit you plug the vacumm in? there is not a socket here." "oh yes there is" Then she reached in the server cabined - from behind thru the hole for the cables, dragged the extension (and a couple of ethernet cables with it), unplugged one of the switch plugs (the one just few milimeteres above the big red text "NO vacuum cleaners" and said: "see? here is an extension" me: "do you have problems with eyes?" "no, why?" "can you read?" "what?"
But there is no wtf there, it's just plain old stupidity. I replaced the text with a skull pictogram.
Admin
"That is data processing" -> ie DP
The way to remember the correct order of Identification, Environment, Data e Procedure divions.
Horrors.... I can still remember that junk too!
Paul
Admin
Wait! Finish the story! I want to know what she said after you beat her over the head with the sign :)
Admin
Just asking.
Admin
Where can I find one of these cool card punching machines?
Admin
If you are running *nix and have the traditional games installed then you already have one. Just type:
"bcd Hello World"
Admin
Worse yet:
ALTER 00190-BEGIN-INITIALIZATION TO 00993-RANDOM-SURPRISE.
Admin
Admin
That actually does not look like it is a standard IBM card since most cards I've seen have rounded corners.
The only exception to this rule I have seen was a diagnostic for a soviet computing system. I therefore believe the illustration photo might be a USSR card.
Admin
I saw cleaning people do thing I couldn't believe...particularly, tripping the circuit breakers for servers with the cleaning machines and not telling you, burning electrical outlets, and so on. I wouldn't think any cleaning lady story can be apocryphal, they exceed imagination.
Admin
My "Cleaning Lady Story". or rather "Cleaning Guy Story", took place at a small company where I worked as a VMS admin. Never mind that they had retired all of their Vaxen and Alphas left by the time I started, as that's another story.
The server room was just a couple of offices with the walls knocked out and a raised floor put in (so that when the air conditioner leaked there would be somewhere for the water to go). Although I tried valiantly to introduce concepts like "rack mounting" and "Unliftable Power Supplies", the inside of the room was mostly filled with tables and desks covered with towers of every description. A few of the higher end servers had accidentally been ordered with redundant power supplies, but in most cases both power cords wound up in the same little white power bar underneath the desk anyway.
The 'Cleaning Guy' part of the story came when the company was going through some expansion and had sent a quite a few more desktops into the server room to pretend they were servers. This naturally meant that the draw on the circuits in that room was a bit heavier, but it was still well within the limits so nobody was all that worried about it.
Naturally, we soon started seeing circuit breakers popping open and servers crashing in the early evenings after everyone had gone home. The first time the director of IT shrugged, closed the breaker again and powered everything back on. After it happened a few more times he started to get suspicious.
As it turned out the nighttime cleaning staff, who were unable to enter the server room anyway because it was locked, came in to vacuum the carpets in the hallway just outside of it. The only outlet in that hallway was a leftover from the Time Before The Server Room, and was on the same circuit as half of the outlets on the inside. The combined draw from all of the servers inside the room plus the vacuum cleaner on the outside was enough to overload the circuit and cause nature to take its course.
Once this was all figured out the proper solution was immediately implemented. The director of IT took out a roll of masking tape, covered up the offending outlet and wrote "DO NOT USE" on the tape with a red pen. Problem solved.
Until the day when one of the new cleaning guys forgot to bring an extension cord and asked the innocent question "Hey, is it okay if I move this tape out of the way?", but that's another story and you already know how it ends.
Admin
Waiting for permission... to check the disk? Fail.
Admin
Aw, cmon! COBOL wasn't all that bad! If you had the self-discipline to use appropriate procedure and variable names, you could pick up a COBOL source after years and still see that it was self-documenting.
Mind you, if one was bouncing back and forth from COBOL to C it was a pain to remember it was a HYPHEN in COBOL variable names and an UNDERSCORE in C.
Admin
Reminds me of a story where a program shipped from the US to France in the sixties wouldn't run. Customs had collected samples from the stack of punchcards ...
Admin
Admin
Happy days indeed. I remember being so used to typing everything in UPPER CASE ALL THE TIME that I (and many others) actually resisted doing anything in lower case until we really had to. And as for having to hit the shift button for underscore rather than good-old-hyphen, well that was culture shock. And I still have a nagging worry about file names that exceed 8 bytes...
Admin
One of my professors told me that in the very beginning all the got was a program counter from the compiler. Then they had to look up in a chart what kind of compile error this address was related to.
CAPTCH: causa (quite fitting)
Admin
Admin
Admin
One of the classic tricks for keeping track of the order of a big deck of punched cards was to stack up the deck (in the right order) and then use a felt-tip pen to draw a big diagonal line across the top of it. It made life so much easier when you dropped the deck and had to resort it.
Admin
I started programming in COBOL back in 1980, we ALWAYS put numbers on the cards - good thing too, because on more than one occaision the operators (the folks who ran the jobs, programmers were NEVER allowed in the computer room!) would drop the deck on the way from the card drawer to the reader. I think there was an un-official competition to see who could carry the most cards. You were SOL if there were no numbers...
And I DO remember the havoc caused when you punched ALL the holes in the card :) (hee hee!)
BTW, those little bits make GREAT confetti!
Admin
You make the common mistake of believing what you see in sales literature.
IBM nor anyone else used IC's until the very late 60's. It just wasn't cost effective until the industry had matured enough. By 1968 there was a standard line of IC's (The TI 74xx series) that had enough functions per chip, and in an economical plastic package, and sourced by several manufacturers. before then IC's were very expensive, needed special sockets, and were single-sourced.
What IBM had in the 360's was a "hybrid" IC. Lines and resistors were laid down by plain old silk-screening. Transistor chips were glued down by hand and little gold bond wires used to hook them up. The whole shebang was about the size of a postage-stamp. About 1000 times the size of a 74xx series chip. It took several large cabinets of these hybrids to make a CPU.
Admin
I worked for an electronics manufacturing company and it was made very simple. EVERYBODY entering production wears ESD shoes and ESD coat and is ESD compliant tested no matter if you cross the lines or not or what is your position in the company. Cleaners had light blue coats, mechanical/maintenance dark blue(dirty work), the rest wore white coats. Anybody seen in production without a coat or ESD shoes got their ass whipped and it did not matter who it was. If it was someones visitor then that someone got theirs. That is really the only solution that works.
Admin
err, i thought it'd be quite obvious that the card was only missing for maybe upto half an hour each week in the evening, when most of the debugging / error checking would have been after the cleaner has placed the top-most card back on the top i assume ..
seriously, did nobody else think of this?
Admin
Admin
There. I highlighted the answer in your own reply... I guess being a "naive C++ speaker" means you lost your ability to think somewhere along the way.
If you're reading a text file until you hit the EOF marker, and someone goes in and deletes a line in the middle of the file, can you tell? (Clue for the clueless: No.) Using a "predefined delimiter" to indicate the end means that, until you hit that delimiter, you have no idea how much data you're going to read; if you knew how much ahead of time, you wouldn't need the delimiter then. Right?
Maybe an actual illustration helps. Let's say I'm supposed to read data from the list below until I hit the predefined delimiter "X", which indicates the end of data. Here's the initial data:
1 1 1 1 1 1 X
Now, I go in and delete a line (any line that's not the one containing "X"):
1 1 1 1 1 X
Which line did I delete? Can't tell? Does that make you one of those programmers "so stupid they just read until people stopped feeding in cards"?
Jeez - it never ceases to amaze me how people lose their ability to reason when presented such simple problems.
Admin
No. Data was never changed, no matter what. Even accounting data - they picked a really good day (financially speaking) and just used that same data every day thereafter. It made their stock prices really good, 'cause they always showed a profit.
Try and use your head a little. It'll be a really nice change for you.
Admin
What he was saying, and you completely ignored, was that the ONLY way that you, as the operator, would not be able to tell from the sequence numbers that a line had been deleted was if the X (being the last one) was the one that was deleted.
Admin
Yeah, but I have a feeling that commenting out a random line of C code would cause the system not to compile / run, at least most of the time.
Therefore, failure to make analogy: 1 Explanation of punch cards: 0