A friend recently asked me what training it takes to work with the IBM AS/400. I gave a brief answer mentioning some college courses, some on-the-job training and a long time in the school of hard knocks. But upon reflection, I realize that most of my training in the fundamental concepts of the AS/400 came from my mother.
When I was a baby, mother taught me about input buffering: “Don’t try to stuff all your food in your mouth at once. Leave it on your plate until you’re ready to eat it, and then take it in one mouthful at a time.”
She also taught me about processing the entire input buffer before going on to the next step: “Eat everything on your plate. Then you can have dessert.”
(It will occur to some readers that mother also taught me about output buffering, but I’d like to keep these meditations G-rated.)
When I was about 14, mother introduced the basic concept of CL (Control Language) programming in a note on the refrigerator door: “We’re going to have dinner at 6:00. You make it when you get home from school. The menu is pinned up on the bulletin board, the meat is in the refrigerator, and I’ve put the rest of the food out on the counter. Set an extra place – Uncle Dave is coming tonight.”
Later, mother introduced the concept of a program call: “We’re going to have dinner. Please set the table.”
Mother demonstrated what it means to handle jobs in “interactive mode” or “batch mode.” She could deal with the interruptions of four children (those were the real-time, interactive foreground jobs) while doing the housework (as a background batch job).
Mother used the concept of hierarchical storage for her cooking tools. The cooking forks and spoons were hung on hooks right by the stove. The potato slicer and the egg beater, which weren’t used for every meal, were kept in a drawer. And the big roaster, which she only used once a year to cook the Thanksgiving turkey, was kept in the storage closet in the basement.
Once we had about fourteen people for Thanksgiving dinner, and our kitchen seemed too small for the job. That’s when mother introduced the concept of offline storage. She cleared off the ping-pong table in the rec room next to the kitchen and laid out all her ingredients on one side of the net. My sister and I fetched things from the “input” side of the ping-pong table as mother called for them, carried partially finished dishes to and from the “offline storage” on the other side of the net, and delivered finished food to the “output” dining table.
This system worked well, until my sister and I collided in the doorway between the two rooms and we nearly lost the creamed onions. Mother solved this problem of “batch job contention” by establishing a protocol: “First say ‘May I come through?’ and then wait until you get the answer ‘Yes; it’s clear.’”
It was also in the kitchen that mother taught me about the RPG Cycle: “Cook the fudge, while stirring it, and test it every couple of minutes to see if it’s done. You test it by dropping a bit of it in the cold water. When it forms a soft ball, it’s done.”
For years I badgered my mother with questions about whether Santa Claus is a real person or not. Her answer was always “Well, you asked for the presents and they came, didn’t they?” I finally understood the full meaning of her reply when I heard the definition of a virtual device: “A software or hardware entity which responds to commands in a manner indistinguishable from the real device.” Mother was telling me that Santa Claus is a virtual person (simulated by loving parents) who responds to requests from children in a manner indistinguishable from the real saint.
Mother also taught the IF … THEN … ELSE structure: “If it’s snowing, then put your boots on before you go to school; otherwise just wear your shoes.”
Mother understood about parity errors. When she counted socks after doing the laundry, she expected to find an even number and groaned when only one sock of a pair emerged from the washing machine. Later she applied the principles of redundancy engineering to this problem by buying our socks three identical pairs at a time. This greatly increased the odds of being able to come up with at least one matching pair.
Mother had all of us children write our Christmas thank you notes to Grandmother, one after another, on a single large sheet of paper which was then mailed in a single envelope with a single stamp. This was obviously an instance of blocking records in order to save money by reducing the number of physical I/O operations.
Mother used indicators to help her manage the housework. Whenever she turned on the stove, she put a potholder on top of her purse to remind herself to turn it off again before leaving the house. If the potholder was “on” the purse then she knew to turn off the stove.
Mother knew about devices which raise an interrupt signal to be serviced when they have completed any operation. She had a whistling teakettle.
Mother understood about LIFO ordering. In my lunch bag she put the dessert on the bottom, the sandwich in the middle, and the napkin on top so that things would come out in the right order at lunchtime.
There is an old story that goes something like this – “God (you know which one… the big one with the beard…) knew he couldn’t be everywhere at once. So to show his love for his people, he created mothers.” That is the difference between centralized and distributed processing. As any kid who’s ever misbehaved at a neighbor’s house finds out, all the mothers in the neighborhood talk to each other. That’s a local area network of distributed processors that can’t be beat.
Thank you Mum. You are the best computer teacher I could of had.