When I was a child, we were not allowed to be bored. Boredom, my mother insisted, was a sign of laziness and lack of imagination, and nobody fortunate enough to have all their faculties intact should complain of it.
Some of this came, I think, from lessons my grandfather had instilled in her. Some of it may have been because we had just come back from several years in northern Kenya, where kids in extreme poverty who had no toys would just make their own out of sticks and bits of wire, and play happily with them for hours. Who were we, with boxes full of toys, shelves full of books, and minds full of stories, to complain of boredom? (And that was when the Web and YouTube were still decades away. There’s surely no excuse now!)
Anyway, it was a great lesson, and one that’s always stuck with me. I don’t remember ever being bored in my life, though the nearest I’ve come has not been when I’ve nothing to do, but when I’ve had to do some tedious repetitive task for hours on end…
Of toothbrushes and terminals
In my teens, I had a holiday job for a couple of weeks at the local factory where they made Wisdom toothbrushes. The company was changing the prices of the whole stock, and my job was to sit in front of the mainframe terminal and adjust the wholesale price of the blue toothbrush in a particular range from 23.4p to 23.9p, then do the same for the red toothbrush, the pink toothbrush, the yellow, the white… and so on for every colour they made — there were many — after which I would move on to the next range.
The problem was that this involved navigating very slowly through a deep hierarchical menu which was totally unsuited for this purpose. Today, if these were rows in a spreadsheet, it would be done in about 20 minutes. But we didn’t have spreadsheets back then, my lad. Instead, I had to dig about six layers into the keyboard-driven menu system for the particular stock item, make the change, and then exit from each layer to get back to the top before moving onto the next one.
There was no way to bypass these steps, to speed up the process. No way out of the menu. The display, which I think was probably something like the VT220 pictured above, updated very slowly over its slow connection to an overloaded mainframe. This explained why they had to employ me for many days to perform this simple task. It also taught me a lot about user interface design.
It turned out that the terminal wasn’t completely dumb. On one of our tea-breaks — and yes, we really did have a tea-lady who would come through the office with a trolley of clinking cups at the allotted time — I discovered, in the back of a desk drawer, a manual for the terminal.
I found out that it could be programmed through a simple menu to send a set of keystrokes when it was switched on and connected to the mainframe, in order to identify itself, login, or whatever. This facility wasn’t used in our system, but — and this was the moment of enlightenment for me — you could also cause the sequence to be sent at any time by pressing Ctrl-Break! So I could use it as a kind of macro-recording system (not that I would have known of that concept back then).
Once I started on a new range of, say, the Mickey Mouse toothbrushes, I would work out the sequence of keystrokes needed to update one price: enter, right cursor, down, down, down, right, up, 23.9, enter, escape, enter, escape, escape, or whatever, followed by the down arrow to get to the next toothbrush. I’d program that into the terminal’s setup menu and then just hit Ctrl-Break a dozen times and sit back and watch the menu update as fast as the mainframe could manage (which wasn’t very fast).
Later that day, my boss — a great guy — came by and saw me reclining in my chair, reading something. “Having a quiet afternoon, are we, Quentin?”, he asked.
“No, I’m busy”, I explained, and gestured to the screen, where the all-too-familiar menus seemed to be operating themselves at great speed while I sat back and sipped my tea.
I’ll never forget the expression on his face.
However, I guess all such Sorcerer’s Apprentice tales must have a cautionary aspect to them. In my case, the work was finished much sooner, so I was out of a job.
Perhaps there’s a lesson there. In that case, though, I can’t say I was too sorry!
Gosh I miss the VT220. When it became the standard emulation to use in PC terminal windows for connecting to servers I discovered that it didn’t take much to be able to lob things to the status line from a shell script, and I used it to do unobtrusive system alerts that didn’t interfere with the session. That was so last century though.
Even now when I’ve tried slick editors and IDEs such as sublime and PHPStorm I still find myself in vi creating quick macro hacks to quickly get things done.
Ah yes – though the multiple simultaneous cursor feature in VScode has really replaced macros for me in most instances…