- 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
Actually, back then "chad" was a collective noun: "a bucket of chad". It wasn't until the 2000 election that the media got ahold of the term and mutated it into a count noun: "hanging chads". Using it as a count noun marks you as a kid, I'm afraid.
But I liked your joke!
...phsiii
Captcha: giggity -- hot giggity gog!
Admin
I think there is something which is vitally important that we are all missing in this discussion. At one point in time there was such a thing as a "Punch Card Girl", and she was required to talk to every programmer that needed access to the computer.My mother was a "Punch Card Girl" (her title was "keypunch operator") at Univac around that time. She talked about how the male programmers would often insert "humorous" innuendos into their code, knowing that the code was being manually punched in by the female keypunch operators. The thing that puzzled her the most, though, was that there was an actual policy stating that women could not be programmers. This was because programmers have to lug around boxes of punchcards which sometimes weighed over 20 pounds. Obviously, women (who were expected to lug around struggling toddlers) could not be expected to heft a 20 pound box of cards.....
Admin
$1/byte? Yikes! So My 2.5 Gig of Ram machine at home would've cost...ELEVENTY-BILLION DOLLARS!
Admin
Ladies and gentlemen, a new TDWTF meme is born.
Admin
Wow, talk about memories! I wasn't working on mainframes then, I started that around '79/80. I NARROWLY avoided punch cards, they still had the equipment, but basically my class was the first one to get to use the new-fangled KSR-33 teletypes and DecWriter keyboard/printers. They also had one Tektronic(?) VDT that could do an APL character set. At that time I could hold up an 80 column program source card to the light and figure out what was printed on it, just for perversion's sake it'd be cool to re-learn the punch and zone system.
We're talking dial-up acoustic-coupled connections: dial the mainframe, wait for the squaking, slam the handset into the cups on the modem.
I never tried what the article quoted, but I heard that if you left off the first period on a cobol source deck that every line in the program was rejected at three error messages per line.
Admin
"This is like trying to hash a hash value to get the original value."
Yeah, I've know hashes like that...
The ebg13 hash comes to mind...
Admin
It does not read punch cards, and I would also not say it never crashes, but check out the Boomerang decompiler (Open Source): boomerang.sourceforge.net
Maybe we can some day use it to find WTF's in already compiled code ;)
(yes I'm shamelessly promoting the project, but I think it deserves it)
Admin
Thats nothing.
Try editing a Macromedia Flash site with a hex editor because the original .FLA is lost.
Admin
I arrived late to the party. Who is Abstract Mark? And yes, I already de-compiled TheDailyWTF to look for his denouement. WITH and without caps, too.
captcha: zork! I LOVE Zork!
Admin
Oops...see, I can barely TYPE "1GB": after all these years, when my brain says "large memory chunk", my fingers still say "megabytes"...
...phsiii
Captcha: truthiness
Admin
what's wrong with that? You just do what you did backwards to undo the hash, right?
Admin
Sorry, all out of greenbar. How about some bluebar?
Admin
One of my first jobs (1979) was as a key-punch operator--and i used to type in the programmers program list--its actually what got me interested in becoming a programmer myself :)
Admin
Interesting question about digital camera storage... should that be 1GB or 1GiB?
Admin
Pick 40 numbers between 1 and 50, at random. Add them all together, divide by 11, and get the remainder. The remainder is a crude hash. True hashes are orders more complex, but the same principal applies. Running the same 40 numbers through that formula will always produce the same hash, but the idea is that (most) other samples won't.
Admin
Generally speaking, inputs and their hashes don't map one to one. You can have several inputs hash to the same output.
Reversible hashing is usually called encryption.
Further, the story seems to indicate that this fellow put the compiled cards back into the source card input, which is akin to performing the same hash twice in the same way and expecting your original data out (like an XOR would give, or ROT13 as people keep suggesting).
Finally, as a friend of mine is fond of saying, this post is quad-ROT13 encrypted. By reading it, you're breaking the DMCA. :P
Admin
$1 a byte was extrordinarily cheap for 1971. Ferrite core was going for up to $2 per BIT. However, we did use 9 level mag tape for source and object code storage and many of us made 'achival' backups of source using the PTP: device (paper tape punch - a six bit wide medium, which was fine as we had no lower case letters in source or even on the line printer anyway.) As I recall, we were charged $1 for every kilo-core-second of program residency on timesharing during the day and $0.10 per kcs after midnight. Using batch was a lot cheaper. And I can recall a few hundred page diagnostic output printouts from misplaced cards in the deck too.
Thing is, it was not completely unreasonable to decompile an object code deck. You'd get assembler source code with no comments though. Much later, in the days of the Apple ][, the ROM operating system was more than glad to disassemble anything in memory for you. All you had to do was enter an address range, followed by the command 'D'. You'd get a disassembly with a hex dump.
As I recall, the mount command in the PDP-10's operating system at that time actually sent a message to the operator's console that told him which tape to take from the cabinet and install in a tape dirve cabinet.
Admin
I got the IBM 407 story from Eddie, the tab machine operator. For those of you who actually used the 407, do you remember it skipping to the top of the page r-e-a-l-l-y s-l-o-w-l-y (3 or 4 seconds to skip a whole page) or fast (less than a second)? Eddie said he was there the day the technician removed a wire and suddenly the page slew was fast. Eddie asked why the technician had never removed the wire before. The technician said "A Remington Rand patent just expired."
Now I would never question Eddie's veracity but obviously IBM would never do such a thing as build unlicensed patented circuitry into a product in anticipation of the patent expiring, so maybe Eddie was exaggerating just a little.
The company had been the data processing department of a locomotive manufacturer and had been running on punched cards since the 1930's. When the locomotive manufacturer went out of business the department was spun off as a service bureau. It was not always up to date on the latest and greatest things. As late as 1974 Eddie was still working 40 hours a week in the tab room, running jobs that had still not been computerized.
We did have Panvalet by 1974 but that was after Albert left. Probably Albert's adventure was part of the decision to get Panvalet. Management could not always be persuaded of the need for something until it was too late. (The company went out of business for good a few years after I left.)
When I was hired, it was as a keypuncher because I could type 90 words per minute. So I was one of the Punch Card Girls -- I was the token male. The girls were nice to me and treated me as a sort of mascot. But it was quite clear that the gender-appropriate career path was keypuncher to computer operator to programmer (both of which I preferred to keypunching) and so up I went. For the female girls the career path was to wait for the supervisor to die or quit. I think I already said that this company was not always up to date on the latest things.
captcha: know hu time an -- WTF is that supposed to mean? That makes like totally no sense, knowhutimean? Fer shure.
Admin
Easy - there are a few free online.
A David Green whom I had the pleasure of corresponding with on these matters has uploaded an emulator of the SILLIAC computer along with scans of the manuals and some software. Just google 'SILLIAC'. He is also a very nice person who will be glad, I think, to help you out.
SonOfLilit
Admin
This brings back many memories. I still have the card decks from my first few training programs, and a flat metal pick we used to pull shredded bits of cards from the punch machines now & then. We were rarely allowed to punch our own. We put coding sheets in a heavy plastic envelope with cost center and instructions, sent them through a little window. The next day (maybe) there would be a stack of envelopes with results in them. The object deck went to tape so we didn't get those cards back. If the program compiled, you could then send coding sheets for the Run This Program cards. The next day (maybe) you got back sysouts. Whew. We had to keep tasks open on like 8 programs at once to stay busy.
We didn't have no stinkin COBOL at first, either. The company got bored waiting for the COBOL committee to deliver a spec so Bert Neff wrote his own language called MEL. http://en.wikipedia.org/wiki/Met_English My team had the largest, most complex MEL program in captivity so Bert sometimes came to see us and test new compiler releases. At one point we changed from Honeywell to IBM hardware. Bert was semi-retired I think so a team of smart young guys wrote an emulator to run Honeywell machine code on IBM. Things ran forever. When Bert found out he wrote a new compiler. Had to learn 370 Assembler first. Took him a weekend as the story went.
A friend of mine wrote a really nice 370 decompiler. Saved my butt for sure. We inherited a mission critical calculator with no source code and a legally mandated change on the horizon. Didn't generate COBOL of couse, but very readable assembler which was enough to keep us alive.
Admin
Wow, I didn't know they ever made 1mb SD cards!
Admin
As one who was both alive and working in 1971, there were several IBM models that could be 'upgraded' by cutting the 'go slower' wire. IBM charged you up to $250k (pre-inflation) for cutting that wire. the actual price depended on the CPU model.
Compilers generally *had* to plough all the way through the program, regardless of errors. Only like that would the programmer ever have a llisting that he could use for debugging. You just can't read a deck of cards, not in any useful way, even though the program line was printed along the top edge of each card.
One of the pleasures of programming with cards was dropping the card deck down the stairs and then finding that they had not bee sequenced in columns 73-80. Or the computer operator put the box of cards on top of the card reader (programmers were definitely not permitted to enter the computer room) and then, as he took the cards out of one end of the box to put them in the reader, the weight of the remaining cards in the other end of the box caused the whole lot to spill onto the floor.
Admin
Wow... this makes me really grateful for the Sex Discrimination laws we have nowadays! The 20 pound thing sounds like a bunch of idiots fishing round for an excuse for their own prejudices. Still, isn't it amazing how times change in 30 years or so .. from moronic policies like these to government initiatives to get more women into computer careers.
Admin
Server Application "/" Error: No error. You can post again :D
Admin
My guess is that the compiler would try the card again on errors, and since the machinary is optimized for quickly loading one card after another, reloading a card to re-read was probably a slow process (since it should only happen every once and a while, due to an error in the machine or a slightly damaged card). It might have even required backing up a whole chain of cards, or even manual intervention to reset the machine or reload the deck, on the assumption that if many cards are unreadable, then you put them in upside down or something and just need to get the whole deck back to reload correctly.
Reed
Admin
I still have two boxes of 17" greenbar...but nothing to feed it through. Kids love to color on it though, since it unfolds to massive lengths.
Admin
Fortunately, we still only have to pay you 78 cents on the dollar.
Admin
Are the girls on the right "Punch Card Girls" ?
Admin
I got something nearly as good at an old-books sale of my university's library: a book on Unix from the mid-70s. I really love the chapter on text editors, where the author describes vi as "a new editor that hogs so much memory it's nearly unusable".
Admin
Almost; the point is to get people to pay as much as they're willing to pay, by giving those who are willing to pay more a reason to do so. It's done in all kinds of industries. For example a café: Some people will pay $2 for a coffee, some will pay $3. If you price it at $3, you lose the $2 customers. But you can't just offer the same thing for two different prices either - people aren't that stupid. So you have to give them a reason, for example by offering "fair trade" coffee at $3 (which costs you 10 cents more, about 1 cent of which goes to the cofee farmers, which is still a substantial improvement to them).
Admin
It's even better... there were actually quite a lot of women working with the very first computers, because "computer" used to be a job description for someone manually doing parts of a complex calculation by hand, according to a plan, an algorithm. Such clerical work was considered well-suited for women, so a lot of them did it, and consequently many were employed when it came to transferring the same methods to electronical computers.
Admin
I'm having PROBLEMS controlling the VOLUME of my VOICE!
Admin
Way back when there was a magazine called DATAMATION for the punched-card set. Once they had a contest: compile some cards and try to get the most number of error messages per card of input.
Now I don't remember who won exactly, but it was something like: feed a card of all slashes to the IBM COBOL compiler, that's it. Out came something like 448 error messages! something like:
COB4621: SYNTAX ERROR IN COLUMN 1 PARAGRAPH 1, BEFORE IDENTIFICATION DIVISION, CONTINUING.
COB4677: TOKEN ERROR IN COLUMN 1 PARAGRAPH 1, BEFORE DATA DIVISION, CONTINUING.
COB4677: SCANNER ERROR IN COLUMN 1 PARAGRAPH 1, BEFORE PROCEDURE DIVISION, CONTINUING.
COB4646: LEVEL DEFINITION DECLARATION NOT IN CORRECT COLUMN, CONTINUING
.. repeated for each column of the card.
ended by:
COB7322: END OF DECK BEFORE END DIRECTIME
Admin
>> It's even better... there were actually quite a lot of women working with the very first computers, because "computer" used to be a job description for someone manually doing parts of a complex calculation by hand, according to a plan, an algorithm. Such clerical work was considered well-suited for women, so a lot of them did it, and consequently many were employed when it came to transferring the same methods to electronical computers. <<
I had occasion to read a 1965 memo about the planned introduction of a new plan of life insurance for an insurance company. The memo estimated that it would take about "65 girl-hours" to do and check the necessary calculations for the rates, cash value and reserve factors once the actuary had set up the calculation spreadsheets. In those days, spreadsheets where sheets of paper with a rectangle for each digit. Accounting sheets had digits grouped into colums and within the column by thousands and cents and some applications used freeform grids of small rectangles. I used to use 11"x17" sheets of the stuff.
Admin
Punch cards? COBOL?
Two things I have not had to ever deal with.
I do like the idea of being able to cut a wire to increase perfomance. Maybe I should try that with our clients IBM P5... I am almost certain they will let me in their server room.
captcha: <Born in '82>
Admin
I was alive and working (in college) back in the late 60s and early 1970s. This one has Urban Myth written all over it.
While I have no doubt that "Albert" existed and tried to "decompile" the object deck, I'm a bit dubious of the card reader slowdown. I suspect that the machine might have printed a few thousand lines of error messages on the line printer.
I'm also dubious about the "testing on Saturdays only" scenario. While these mainframes were crude in comparison with today's machines, the System/370 and it's earlier sibling, the System/360 did have multitasking operating systems (MVT and later MVS, just to name a couple). There were even "interactive" systems such as TSO (Time Sharing Option) and CP/CMS (Control Program/Cambridge Monitor System).
The "Punch Card Girls" were more properly known as "Keypunch Operators".
Admin
Before canning him, they should have tried to feed Albert his own excretia, explaining that they wanted to see what he ate for lunch.
Admin
Things didn't change much, it seems. Try this in Visual C++ 2005:
and you get something like:
Error 1 error C2065: 'Fox' : undeclared identifier d:\Projects\experimental\Folgefehler2\Folgefehler2\Folgefehler2.cpp 9
Error 2 error C2065: 'fox' : undeclared identifier d:\Projects\experimental\Folgefehler2\Folgefehler2\Folgefehler2.cpp 9
Error 3 error C2061: syntax error : identifier 'Fox' d:\Projects\experimental\Folgefehler2\Folgefehler2\Folgefehler2.cpp 9
Error 4 error C2227: left of '->Jump' must point to class/struct/union/generic type d:\Projects\experimental\Folgefehler2\Folgefehler2\Folgefehler2.cpp 10
Error 5 error C2227: left of '->Twist' must point to class/struct/union/generic type d:\Projects\experimental\Folgefehler2\Folgefehler2\Folgefehler2.cpp 11
Error 6 error C2227: left of '->RollOver' must point to class/struct/union/generic type d:\Projects\experimental\Folgefehler2\Folgefehler2\Folgefehler2.cpp 12
Error 7 error C2227: left of '->WagTail' must point to class/struct/union/generic type d:\Projects\experimental\Folgefehler2\Folgefehler2\Folgefehler2.cpp 13
Error 8 error C2227: left of '->Bite' must point to class/struct/union/generic type d:\Projects\experimental\Folgefehler2\Folgefehler2\Folgefehler2.cpp 14
Error 9 error C2541: 'delete' : cannot delete objects that are not pointers d:\Projects\experimental\Folgefehler2\Folgefehler2\Folgefehler2.cpp 15
(Yes, allocating a local, nonpolymorphic object on the heap without at least using a smart pointer is bad practice. It's just an example.)
Admin
Back when I was fresh out of college in the late 70s, I worked on a Fortran program with an unusual structure: each subroutine was around 1900+ lines long, with perhaps a few subroutine calls in the last few lines. Sure enough, the original author had worked with punched cards, with a rule of thumb that 1 subroutine = 1 box of cards. He would write straight-line code until he came close to the end of a box, then throw in a CALL statement or two to continue his work with the next box.
Admin
It was a legend by the time I heard it, but I heard it directly from the people who worked with "Albert." (He left the company shortly before I joined.) We had GRASP when I was an operator, but it was probably HASP when Albert was there. The disadvantage of HASP (compared to GRASP) is that the job would not start printing until after it was finished (and if the spool file filled the disk, the job aborted -- too bad!) So instead of printing zillions of pages, Albert was filling up the disk. (By the way, did you know that SPOOL stands for "Simultaneous Processing and Output On Line"? Did you know that DUMP stands for "Dynamic Unformatted Memory Print"? One computer company claimed it did, although I'm not sure they didn't just come up with an expansion for an existing word.)
I would have loved to have played on MVT or TSO or CP/CMS, but just because something was available didn't mean we had it. We had just replaced our 360/40 with a 370/145 and were still running DOS. Now some of you may be saying, "Oh, yeah, DOS, I remember that! I was running it on my IBM PC in 1983!" Nope. Not that DOS. That DOS was a very sophisticated operating system by comparison. The DOS I'm talking about used disks, but you had to specify the sector address when you wrote a file. You used the "// EXTENT" card for that. Most programmers were careful to not overwrite some other programmer's files. (Guess which one wasn't.)
DOS did have two partitions so you could run two programs at once. Both were busy running production during the week. You could submit tests for the operators to run during the week, but there was no hands-on testing by the programmers during production times.
Why wasn't there a separate testing system? You kids today. You've got three computers on your desk. You've got a complete replica of the production system just for developers and another one just for QA. Well, this company had one IBM/370. And not only that. This company and all its customers put together had one IBM computer. We were a service bureau. What we did was run data processing for companies that did not have computers. (See if you can guess when the company went out of business, and why.)
The "Punch Card Girls" may have been properly known as "Keypunch Operators" in other companies where employees cared about speaking properly. We did have one female programmer, and she was treated badly by some of the employees. She would have had grounds for a lawsuit today.
Admin
Alex Papadimoulis wrote the following post at 10-06-2006 3:23 PM:
All of you who weren't around in 1971, this is a MUST read: Real Programmers Don't Use Pascal. Make sure you read the story of Mel as well. In fact, Alex, you might consider posting this as a regular entry.
Krisis
Admin
Yes. But far fewer and much more descriptive.
Admin
If there was no HASP or other spooler, then the mainframe would read a card, process it, and print the result or the error message(s). If the program was full of errors, it's reasonable that the rate of reading cards would slow down tremendously, as the printer printed one or more errors for every card it read.
Just because HASP was (or might have been) available in 1971 doesn't mean every shop used it. I think that mainframe shops were slower to change things than we are today. If a system worked reasonably well, it might have stayed the same for years.
Admin
CP/CMS is still around; they are part of the VM operating system (now running on IBM System/390 or System/z or clones). CP is the multi-tasking control program, and CMS is the (mostly) single-user operating system that runs under CP. (CMS used to be able to run bare on a mainframe, but not any more.)
Admin
> From an old USENET list...
> "I heard this story from someone who worked for a French company, they had a
> problem with a program on punched cards written for them by a US subsidiary.
> The programs never worked when loaded in France but the US systems house swore
> blind that they did at their end. Eventually, in exasperation, someone followed
> the working set of cards from the US to France. At French customs, they
> observed a customs official remove a few cards at random from the deck.
> Apparently, the french customs are entitled to remove a sample from any bulk
> item (such as grain), so a few cards from a large consignment shouldn't matter,
> should it?"
classic wtf?!?!?! it compiles/runs on my computer
Admin
Wow you can do that, and I thought my data was lost forever!
Admin
The moral of this story is the you don't want 'sweet gals' and 'nice guys' on your team.
Admin
In one shop I worked in circa 1983, the spaghetti code program listings were so voluminous that we used to stand on them so we could see over the cubicle walls and talk to our coworkers. Some of those listings were four and five inches thick!
Admin
I want to be paid /\
Admin
The irony is that the first ever programmer was Ada Lovelace, daughter of Lord Byron. Who was working with Charles Babage on the first mechanical computer and had a language named after her.