How did people deal with punch cards?
blog.computationalcomplexity.org
blog.computationalcomplexity.org
By the way, if you want to experience punch cards in person, come to the Computer History Museum (Mountain View, CA) on Wednesdays or Saturdays for demos of the IBM 1401 and the opportunity to punch your own cards. You can also see a high-speed card sorter in action.
The central core of the first floor of the building was for the mainframes and supporting gear in the Red Room. The second floor had windows which let people look down on the mainframes and the priests tending the electronic behemoths.
the Red Room definitely had a Stanley Kubrick The Shining vibe to it.
Sounds like scan-tron testing, don’t forget your #2 pencil!
My first year in college was the first year they didn't use punched cards at my college.
My wife and I went to the museum yesterday and indeed got to punch our own cards! It was a super cool experience, thanks for recommending it!
But my first encounter with computers was Fortran on an IBM fed with punch cards. Very unforgiving. No backspace. And local jerks would slip already punched cards into the feed hopper so those had to be checked before punching any cards. And the error messages were absolutely opaque.
Worse - it was split octal. "the memory location after 000.377 was 001.000." https://en.wikipedia.org/wiki/Split_octal
But yeah, better than toggle switches.
This old keypunch machine was a model 026, not the much nicer model 029 that was ubiquitous while I was in college. The 026 had a very basic keyboard, see [1], one could punch the columnar code for the upper case letters and numerals along with a handful of symbols: #@,%$./ and space. This isn't enough to even program in early FORTRAN, the language I was trying to use.
To type say an equals sign one had to use the multi-punch key that allowed punching a combination of the basic symbols that would properly encode the equals sign. It was slow going. One mistake and the card (corresponding to a line of code) was ruined and had to be redone.
I had just finished reading a book on solving linear programming problems, which come up often in operations research, using the simplex algorithm (I still have this book too). Naturally, I decided that that would be the first program I ever wrote. That definitely wasn't the best "hello world" program to try first. I wish I still had a listing of that program; it would be good for a few laughs.
The first working program I wrote printed out a table of sine and cosine values for angles from 0 to 90 degrees. The rest of my programs in high school were not much more sophisticated. I was just trying to learn it on my own as a hobby. I still own my book on Fortran that I bought with my newspaper route income back then, McCracken's book on Fortran IV [2].
A couple of years later I got to write more serious programs and used the IBM 029 keypunch machines that were a lot better. Programs got long enough (hundreds of lines!!) that card management became important. Sturdy cardboard boxes or even long metal drawers designed for holding the stacks of cards were the main tool for source code management.
In college, I was able to use IBM's data processing equipment for punching line numbers in columns 73-80 on each card (these columns are ignored by FORTRAN IV); this allowed dropped cards to be sorted back into order through a series of passes (one for each digit of line number) on IBM card sorting machines. This was my introduction to radix sorting, [3].
One complication when numbering cards was inserted new code between existing cards. Because of this, my initial punching of line numbers in columns 73-80 had to be done with gaps, usually I'd leave one or two zeros at the end of each card number. However, to get the auto numbering machine to do this required pulling out a large (1 foot square) plug board from the equipment and physically connecting jacks with switchboard like cables to make the equipment count by hundreds and punch in columns 73 through 80.
It was all quite primitive. But one did learn to review code carefully before submitting it for being run.
Grad school was better, I still frequently used FORTRAN punched on cards, but I was also able to use the mainframe in a timesharing environment where I used TECO as my text editor at a terminal, there must have been around twenty of these terminals connected to the CDC 6400, [4].
[1] http://www.columbia.edu/cu/computinghistory/026-keyboard.jpg
[2] https://archive.org/details/guidetofortraniv00mccr
[3] https://ibm-1401.info/KensSorter/type83-a.jpg
[4] http://www.bitsavers.org/pdf/cdc/cyber/cyber_70/kronos/60407...
1. You prepared you cards, offline using a punch machine.
2. You got a form from the computer center and filled it in with various details for your job.
3. You wrapped the form around your card deck, secured with a rubber band and placed the assembled package into a box/shelf in the entrance to said computer center.
4. You went about your business for a day or so.
5. You checked your pigeon hole outside the computer center, or perhaps your department mailbox.
6. Eventually your card deck would show up there, accompanied by a line printer (fanfold) output that was whatever your program printed when run.
There were more complex workflows allowing things like tape input/output where you'd specify the tape label either on the form or in the deck.
This is where "Job control language" (JCL) comes from -- a scripting language to facilitate running batch jobs. The precursor to Dockerfiles and Github Actions YAML.
\\GO.SYSIN DD *
DOO DAH
DOO DAH
(Checks beard color and blushes.)
One more trick for the young ones here that I've heard is: With your completed stack of punch cards, take a marker and make a diagonal slash across the edge of the stack from top to bottom. That way, if you accidentally dropped the deck of cards, you could put them back in at least the approximately correct order very quickly. You would still want to look through the cards one at a time to ensure the order, but the process goes much quicker if the deck is nearly sorted.
I mostly used serial terminals connected to minicomputers like various PDP-11s and Dual VAX 11/780s. I did get to experience the joy of trying to complete an introductory CS assignment near the deadline. The machine slowed to a crawl, but didn't crash. You would type in one character, and wait for it to appear. We were warned to submit our assignments early!
One summer, I worked at an engineering firm and had to run a program frequently on a set of input; it's possible that the executable I was loading into the card reader was already compiled and not the original FORTRAN source, but I don't remember for sure.
For a COBOL class, your deck was the commands to compile and execute the program text that followed, and then that program operated on the data cards that followed the program cards.
Then, your output would likely be the compilation listing, followed by whatever output your program created.
Mind, this was school, and these were student programs. And while you could wrap up your deck and drop if off at the computer center to be run, it was likely better to take it to the lab to that had the RJE (Remote Job Entry) terminal which had a card reader and a line printer.
Jon’s submitted there would print out on the line printer, but the printer could be used by others as well, so there was typically a queue of printouts that you had to wait for. But in general, the RJE lab had the fastest turnaround.
I remember my friend playing Lunar Lander. He had the Fortran source code, and would add a new burn card, and run the deck through. He’d go over the output, add another card, and run it again. This was the process, but not necessarily an efficient use of paper.
Now, there were also folks that were not programmers, but rather students and professors using tools like SPSS (a statistical package).
A student assignment deck was typically 1-2 inches thick. Not much code, not much data. But these researchers, they had decks measured in feet. They’d carry them around using small carts and hand trucks. The cards were in cardboard trays. Most of that was data. Largest set I saw was probably 10 feet long of cards.
They took their sweet time being run through the feeder. Just grab a chunk, and put it in. As it fed, pile on some more. No rush, it’s an input device, it’ll wait for more cards as you moved the read cards out and fed more in. But it was an endeavor.
There was no 'compiled executable'. There was 64k of core memory and no disk for HSJS jobs. There was just you desk of cards and the resulting printout and everything else was ephemeral.
My first experience of coding was COBOL. I was expected to use a pencil and a coding sheet; my efforts were then reviewed by a human, before I was allowed to submit it to a compiler.
Believe it or not, they date back to the early 1800s and the https://en.wikipedia.org/wiki/Jacquard_machine for weaving cloth. They became used for computing in the late 1800s, notably for the 1890 census with https://www.census.gov/history/www/innovations/technology/th....
The inventor of that, https://en.wikipedia.org/wiki/Herman_Hollerith, founded one of four companies that became CTR, which was later named IBM.
When electronic stored computers became a thing, IBM naturally moved from mechanical computing with punch cards to using electronic computing with data and programs off of punch cards.
We like thinking of computing having started with electronic computers. It really didn't. Punch cards were the last relic of a history of mechanical computing that predated transistors, electronic computers, and even the vacuum tubes that electronic computers were first built from!
Historians that I have encountered all say early 1800s for punch cards. For example the Smithsonian: https://www.si.edu/spotlight/punch-cards. Are you confusing those with earlier developments in textiles?
I also doubt your claim about when the industrial revolution started. Historians do differ on when the industrial revolution started. But you normally see figures in second half of the 1700s. For example they might cite James Watts' improvements to the steam engine in 1778.
For early 1700s you might be thinking of the steam engine, which was already in use. But the early steam engines were extremely inefficient. Their only real use case was for pumping water out of coal mines where both coal and water were available. The coal itself was being mined for use in fireplaces to keep people warm in the winter, because the forests had been cut down so there was no wood available.
https://en.wikipedia.org/wiki/Jacques_de_Vaucanson
Funnily enough the Smithsonian doesn't mention his invention in their article on him:
https://www.smithsonianmag.com/smart-news/eighteenth-century...
Watch https://www.youtube.com/watch?v=-hCimLnIsDA (2 minutes) to hear the story from the developer's point of view. Then consider how many totalitarian states today are using IBM computers to track their population.
The developer might not realize it, but IBM lawyers absolutely know that they can be fairly accused of using JSLint for evil.
Nah, the CIA, NSA only uses IBM mainframes to administrative tasks like payroll.
For all the tracking and spying their own population stuff they use linux like the rest of us.
A lot of large organizations jumped on mainframes back in the 1960s and 1970s. That included US-friendly governments. Some of whom aren't very nice. Those systems and business relationships tend to survive. IBM is good about keeping it quiet. But occasionally someone notices and there is a scandal. The last major one was in 2019 when people found out that IBM was selling face recognition technology to United Arab Emirates. IBM discontinued that technology in 2020 because of the scandal.
Those census records would have been awesome. I was lamenting it's absence just yesterday.
1. Write program longhand, on fanfold paper (more on this below).
2. Type program on cards. Those IBM 029 keypunches were the loudest, stiffest, most satisfying keyboards ever. The Model M is silent and squishy, by comparison.
3. Take cards over to reader. Deck is read, often without problems.
4. Go over to the lineprinter, and wait, with everyone else, for your output, printed on fanfold paper. This stuff flew out at a few feet per second.
5. Collect your output, debug.
6. Implement your fixes by deleting or replacing affected cards, and typing new ones, making sure everything goes in its right place.
7. Repeat from step 3.
Often the wait for your output was long and excruciating.
Fanfold paper was FANTASTIC scrap paper. I had so much of it, and used it for everything.
Every card reader/lineprinter station had an operator to deal with the inevitable jams and other problems. They would often get approached for programming help. One particularly cruel joke: "Oh, that's a color code error. You typed your program on the wrong color cards."
I solved that problem by getting a 10 hour per week job at a remote batch submittal station. It was in a quiet corner of campus, so I mostly had a card reader and line printer to myself :)
Oh... My favorite punch card trick that doesn't work well on "glass teletypes":
debug = 0; /*/ ;1 = gubed
*/I think another commenter figured it out, and the last line would need to be on a separate card.
I wonder if you could write this on one card like
/**/ debug = 1; /*/ ;0 = gubed /**/on my campus in the late 90s there was an old lab with unix stations in it ( can't remember what they were) that nobody went to. I always ended up in that lab because it was quiet and the workstations worked just fine for me. They had these extremely high speed printers in there that were very large and under glass. I was playing around and did something.. i can't remember what maybe sent a binary to the printers or something... they took off and went crazy and caused lots of headaches.
I had the nickname "dammitchad" in some of the labs because "dammit chad, quit screwing stuff up" was a pretty common phrase. I was one of the "other problems" you mention haha.
Most people will tell you ISO 216 and DIN 476 are the same. this is not so
The DIN 476 standard has very slightly tighter tolerances than the ISO 216 and in the mid 90s I had the good fortune to meet one of those fancy new printers, under glass, yes, which no longer used continuous form paper but rather it used ISO 216 A4 pages. Or that's what you thought. It used DIN 476. Hundreds and hundreds per minute. The input and output trays were the height of an adult person.
And the moment someone bought A4 which was not DIN 476 compliant things went south. Very, very south. I believe the difference is half a millimetre (!). That printer was not mercifully designed.
would have been more productive with an OCR feature.
Not very much memory. I think I read and wrote to that giant pizza sized removable disk to do anything large.
Thinking back, I used punched cards for school projects. Wonder how they funded that, they were probably not free.
He has a basic certificate in metallurgy, and he had a job delivering punch cards from an IT company office to where they would be executed. He would wait, collect the printouts, and head back. I guess curiosity got to him and he got to know the guys there and started on his path of programming. It led to be able to move to America for a better life.
Long story short, my dad and punch cards as well as some super lucky karma are the reason I’m able to have a better life today :) thankful to this piece of tech.
(My story about fathers and punchcards involves hanging out in the lab with my dad when he was doing his CS homework. I had great fun punching dirty words into the scrap cards and crashing while playing lunar lander on the greenbar printer.)
Come to think about it, this is still a solid activity at smaller shops. I have recently gotten work from my colo provider by simply chatting with them. The ROI is not the same as early days in my career but a sale is a sale
When I was learning to program we had decks of cards. Each deck was wrapped in between 10 and 20 rubber bands because the very last thing you wanted was to spill the cards on the floor. One time I went into the little room where you submitted your job - a stack of rubber-banded punch cards - by placing it on the desk. Then you waited until it "ran" and they gave you back your stack.
Some guy came in and placed a deck, maybe 200 cards, on the desk, but WITHOUT any rubber bands. The five of us who were waiting for our jobs to run took one look at that stack without rubber bands. Each of us turned a deathly shade of pale and quietly left the room. None of us could stand even the thought of that stack of cards falling over.
I mean, it wasn't great, but it was better than nothing
My first programming class used a machine that duplicated the physical layout of the IBM keypunch, but had a 1-line vacuum fluorescent display, and stored the "cards" on an 8 inch floppy. It was edit-able! You handed your floppy to the person in the little room, and got back your printout later on.
1,000 cards/minute is an infernal racket. Imagine a picker knife slamming 17 cards/second by the edges. It would jam occasionally, and we had to meticulously reconstitute the torn card on the keypunch.
Off to the local high-school for a night-class on 'Computer Programming'. There we used punch cards for inputting our programs. However the card-reader was was one of the new-fangled optical ones. We only had to mark the punch-hole with a felt-tip pen by hand, instead of having the actual holes punched out by a card-punch machine.
That ASR 33 teletype above? Yes. I often made and read paper tapes with that.
And it was still amazingly powerful compared to nothing at all.
Yes. $400 bucks for 16 kilobytes. AND you had to solder all the components on to the board yourself.
One solution was to run a felt-tip pen in a stripe across the tops of the cards in a stack, so that when dropped it was relatively easy to do a first-pass sort.
In my youth I worked for a major UK Travel Agent with a global reach. As a junior operator I was tasked with feeding our card readers with decks of cards - usually a program followed by many hundreds of data cards carefully produced by Data Prep. So, one evening shift in Spring, we nipped over to our newly-opened "social" club, where we swiftly drank 3 pints or so of beer before dashing back to work. As soon as the mainframe room aircon hit me, I realised that the 10 boxes of punched cards of customers holiday bookings would be a challenge. I started the first box okay, then managed to drop the second and third boxes off the trolley. No problem, I just scooped up the cards off the floor and re-fed them - twice. Chaos ensued: the job abended, the shift manager went crazy and I was sentenced to spend the rest of shift decollating multipart carbon-interleaved paper. Never again!
He did not have to work that way given that we had more modern tools. It was just his process from using punch cards.
As a lowly undergraduate my Fortran deck had to be submitted to the operator as early as possible to have a decent chance of being run but I was never able to get the results until the day after.
After getting "Error in Job Control card 3" or something like that once too often I gave up Fortran and switched to Basic. I had to write more code but I could debug it much more easily and far more quickly with an edit-compile-run cycle measured in minutes instead of days.
Later in life, one of my first jobs was a computer operator. By that time punch cards were mostly gone, but every once in a while someone would bring a deck in and I'd run it through the card reader.
Also, the CDC Cyber I operated could be booted off a small punch card deck. Essentially a bootloader in 3-4 cards.
- Do not write a program if it does not need to be written
- Think about what you are doing before you do it
- Write with care and attention (whether code or prose)
Seems as applicable today as it was then.
How is an almost day-old article with 126 votes still on the front page? E.g. above a post that’s only 11 hours old with 597 votes and 343 comments? [1]
I’ve been seeing this a lot lately, and it’s somewhat frustrating to see posts I’m not interested in drowning out others I find more interesting. I thought it might be the second chance pool [2], but that’s not the case here.
I’ve also seen articles that I think are very interesting and can generate interesting discussion with a lot of votes in a short span (e.g. less than an hour), suddenly drop to the second or third page, completely killing momentum. Maybe those are getting flagged, but they don’t feel like articles that should be flagged, and don’t ultimately get labeled as “[flagged]”.
Just curious in case others knew what might be happening.
Due to the secret karma protocol that goes on behind the scene, you'll don't know. HN features unlock at different point ranges as you may already know.
The ideology of internet points, upvotes / downvotes are broken; abused. In-that to downvote you should have to leave a reason to why your down-voting.
That would mitigate a lot of problems. If you don't want to give kudos, don't upvote. If you truly are unhappy with my comment tell me why rather than lurking in the shadows pleasuring yourself because you clicked a down arrow.
The system is rigged anyhow.
If you think of what would happen as a group if someone say, posted a flame-bait comment, and then everyone who wanted to downvote it had to leave a comment _engaging_ with the flame bait: then you've given oxygen to that fire. It's most prudent to instead not engage and send a simple signal to the commenter "this comment was not well received". It avoids creating a dogpile of people scolding that commenter or spiraling into deeply nested argumentative threads devoid of curiosity.
The programmer would typically write out the program with pencil and paper. He/she would then pass that along to another programmer, possibly several, to have them review it and look for bugs.
The program would then be passed along to person who was skilled with a card punching machine and he/she would get the program entered.
Once the program was on cards, the program would be run. The print out of the result would then be inspected to ensure the program ran successfully. Often, the programmers would rewire the output board to cache the output and allow multiple prints. Once terminals became available, that cache could also be inspected with a monitor. Eventually on-line terminals became available and card punching went out of favor. Tape replaced it. Eventually tapes were replaced (for many but not all use cases) by floppies. Naturally, tapes still exist in some arenas for backup/archival.
In the late 70s our school's mainframe got a room full of terminals that let you enter & run "virtual punch cards". It sounds ludicrous but it was a godsend compared to dealing with physical cards.
The name of the terminal program was ROSCOE. Politically dodgy now, and back then too.
(And I almost got to take a 360/30 front console until some company bought it for scrap. So many flashing lights and dials, I figured I could drive them with a Z80)
Here it is, are you ready? They took all that time you waste on blogs, social networking, videos, games and web surfing, and used it to get their punched card shit done.
It was wonderful! No carrying around a card deck held together with multiple rubber bands. Of course Someone Official found out we were doing this, so for our last lab I had to punch cards out again.
Other tricks included submitting jobs to the 360 at the other campus, which took less money from your account, but was a little slower.
It's a fantastic talk in its own right, but the first bit about fitting a program onto a punch card by self-modifying the code involved (and just how much thought was about fitting-the-program, and how little relatively is involved in the-purpose-of-the-program) is quite eye opening.
Funny story. As a freshman in college, I took a Lisp class. Nothing but terminals in computer labs in 1983. The system was buggy the first week and the backspace didn't work. I remember thinking "this is as bad as punched cards".
There was also a room that said "graduate students only". It was full of ADM3 terminals, connected to the same CDC computer as the card readers / printers. Along with documentation. Lots of documentation. I never punched a card, but probably spent more time reading and learning how to use the time sharing system.
Hacker story. So, you want a student account and password? Make up a card deck with JCL that just copies from stdin to the printer. Put one 'blue card', which means "end of record". And no 'red card', which meant end of job. Get in line, run your job. The next student job (unless it started with a red card, which was recommended, but never done) would copy to the printer output of your job. First line was account name. Then a comma, and then the password.
You were in.....
That was the last year of cards. Undergraduates got terminals. And the CS dept got a pdp 11.
While I was there, the programmers started reviewing their code on the CRT and the keypunch operator was typing out the code instead.
By my second work term, one had retired along with the key punch operator and that was the end of that era.
I used to save GO TO and CONTINUE cards, including ones I found in the trash.
Then, I would adjust my control statements, which I had to type anyway, to agree with those cards.
They had a row of solenoid driven hammers that would belt the paper+ribbon against a spinning drum or chain that was embossed with metal characters, typically 132 rows of 96 characters. The drums/chain spun very quickly. Big printers could print several thousand lines per minute (say a full page every 2 or 3 seconds, and much faster for empty pages.)
They were Rather Loud - all those hammers belting a spinning metal drum several thousand times each second.
A couple of tricks. Printers were not bolted to the floor. So imagine if all the hammers struck at the same time ... bang ... pause ... bang ... pause ... and the printer would increasingly wobble forwards and backwards, walking across its platform! The letters on the drum were staggered, so a row of "--------" wouldn't cause this, but rows of ABCDEFGH... would.
They used fan-fold paper, and blank lines/pages could be ejected VERY quickly. There was a built-in a limit on pages/minute but if you produced the right (wrong) output, and someone left the printer lid open, the stream of paper would flow straight out of the printer and start to bunch up in the air!
See: https://en.wikipedia.org/wiki/Line_printer
And a early one operating: https://youtu.be/FiEGoVzmyvs
Terminals meant you could iterate 10X to 100X faster. Which was the whole ball game right there. Because iterating wasn't (mostly) about thinking; it was about bookkeeping, typing. Expecially on a keyboard that operated a cardboard-punch-device that rattled and shook and jammed.
It's very usual now (and for the last 20-30 years) to see programmers live a loop of more-or-less randomly change code and see if it runs, repeat... Their code will eventually run, and pass the tests, but will be terrible - not understandable, inefficient, and break when confronted with reality or better tests.
When it was quicker and easier to think about the code, than play with it, people generally produced higher quality code.
We have more powerful tools now, but instead of having it easy we are constantly asked to do more in a shorter time.
I'm sure some coursework and jobs would look a lot more similar than others. But we also take a lot for granted.
It's not total nonsense. However, people take it too far. The point is, does the candidate use their brain when using the tool, to use it to its full advantage?
There's a big difference between programmers who:
- Just mindlessly step through the debugger
- Do some groundwork so they know where to step
- Has devious tricks, like writing a "tripwire" to activate a special
debugging version, and has the program find the bug.
So I find people who have this bias against debuggers just silly. It's not the tool that's the deciding factor. It's the programmer!The same goes for writing new code and refactoring existing code. Does the programmer exercise their brain to utilize the tool to its fullest extent? The same even goes for prompt engineering and otherwise leveraging AI.
One shouldn't just stop at the surface level of analysis. Look for underlying principles. Try to get to first principles!
In high school we had the teletype and used rolls of punched tape to enter programs on a PDP-8.
At CMU they a IBM 360 batch processing we used for our fortran programming class. it used punched card readers. Our programs were always do Friday (Thursday Midnight). The batch process time from card reader input to compile and printout was close to an hour. My study group would write and enter our initial version, then hop in the car and go to Ally's bar for a piture of Iron City beer. We would come back, get our results (5 errors, 6 warnings) make the changes and re-enter, hop in the car for another pitcher. Came back and slowly got the number of errors and warnings lower. After 5 edits we came back and our errors were back to where we started. A case of diminishing returns I guess.
My answer to the title is "because we had more time". Computer programs were doing such basic stuff that had such incredible value that we could take our time to build good domain models, in our heads and on paper.
Most (?I think?) programmers acknowledge (in theory) that the real work is not in writing the code, it's understanding the problem, making sure the solution solves it acceptably, and creating domain models and architectures. Yet all we see are the tools, and when we see a stone age chisel we forget that it's the thought that matters.
My only other experience with computers before that was a couple of years earlier, when my high school math class visited Boeing and did some sort of computer interaction over a teletype. Probably better than punch cards, but I didn't have my girlfriend with me...
https://www.pinterest.com/pin/58054282668538670/
https://www.pinterest.com/pin/here-is-our-holiday-wreath-mad...
At school (1979) I used them in computer classes at school, where they were sent down the road to an insurance company that actually had a computer, and we got our compilation errors back the next week. My programs weren't long enough for serious card-deck disasters. But I completely agree with the TFA point that the very slow iteration makes you check things very carefully
We would punch up a program along with a few Job Control cards and we'd place them in trays in the computer lab. About once every ten or fifteen minutes, a computer operator would stop into the lab. They'd gather the rubber-banded decks of cards. Then, they'd submit them for compile/execution. They would also deliver output printed on greenbar paper from the prior run. The instructors would grade on what should be a "clean" greenbar listing ( good compile and no runtime errors. ) They could still catch logic problems and such by reading the code, though.
When the card decks were left alone in the trays, some of the jokers I went to school with would punch up COBOL and/or Assembler comment cards with crude jokes on them and they'd insert them in peoples' decks to see if the instructors caught eye on them when grading the greenbar listing. Something like:
* HEY, PROFESSOR SMITH.. YOU'RE CUTE!
When the system got busy ... like during finals ... you might only be able to get one compile/run in per day.Using the keypunch machines was difficult. The print mechanisms didn't always work on the ones we had, so you couldn't always see what you were typing.
One of the students did have an unusually large program punched on cards and they dropped the deck in the hallway. They didn't have sequence numbers punched on the right edge so sorters couldn't be used. A group of us each took some pages of the last printed greenbar listing and a pile of the cards and we'd put together what we could ... trading the cards out to others like we were each solving little puzzles. I'm pretty sure that we got the program back together.
Not only did many of us have 8-bit micros at home where we could dash off programs in BASIC quickly, all of us were required to take BASIC on the Prime minicomputer ... so everyone knew that there was a better way. At the end of that first year, we got to use 3270-ish monochrome terminals which were much better. We could submit our jobs directly then, but we still had to wait for the greenbar delivery to find out the fate of our compile/run for batch jobs.
Maybe they hadn't learned that the first thing to do when you've just punched a large deck is to take a fat marker and draw a line diagonally across the top of all the cards. Helps hugely if you ever get them scrambled and need to sort.
I'm pretty sure he did a lot of work with punch cards himself, although pretty soon we had a printer terminal with keyboard calling his work mainframe over an acoustic modem. We played games on that thing and wasted tons of paper. No idea what the phone bill looked like.
https://lss.fnal.gov/archive/nal/fermilab-nal-091.pdf
The input is now textual, but you still have to write “SENTINEL\nSENTINEL” at the end of the file so that it knows there are no more cards coming, for instance.
Now I look at them and amazed to see some are filled with my dad's FORTRAN programs. It's so fun.
That was just a way of blowing off steam. By that time, the IBM card readers had an auto-sort feature.
And yet...
Everone else used terminals ("glass teletypes").
A CAL TSS debugging tool https://mcjones.org/dustydecks/archives/2023/04/22/1196/
And I ended up here: https://www.masswerk.at/keypunch/ - virtual keypunch machine.
- People, circa 2095
By the time I was old enough to have my own phone bill to pay, punch cards were already forgotten history.
IRS tax refund checks (not just bills) used to be in the form of a punch card.
Don't get me wrong, I like the oral history approach to this question!
It wasn’t that bad.
The author potentially pays very little attention to their surroundings. It must make them a better programmer (/s)
On a serious note, I pretty strongly disagree that slower and longer feedback loops on potential logical errors leads to better critical thinking. It may lead to less rounds of errors, but that’s probably it.