Bits; Bytes; Bones;


On a rainy day in Oxford Road, London, in 1968,a young South African man, hurrying home from his job as a drayman for Watney's Breweries, sidled to a shopwindow to allow masses of hurrying pedestrians to shamble and clump past him. The cause of the pause was an advertisement, a board on the pavement. It read:

Free Aptitude Test

You May Be a Computer Programmer!

Apply Here

To the right of "Here" was an arrow, pointing to the right, and upward. He glanced to his right, and saw a plain, narrow, Soho-style staircase. The arrow reminded him of semaphore signals from his railway days. The young man was curious to see if the arrow on the other side pointed toward to the same staircase. He moved a few paces, stooped slightly, and observed. They had got it right. It was not simply a duplicate of the first side he had seen. Well, it was, but not the arrow. That was now on the left and pointed upward at the same staircase.

His obsessive concerns quietened, The young man read it several times, made up his mind, smoothed his raincoat down, and headed for the staircase. He stopped, turned to the signboard, muttered

"You had me on FREE"

and mounted the first step. There, he froze, turned and took a long look at the arrow.

"Are you a Home signal, or a Distant signal?" HomeDistant

The answer came within seconds. "Home", he muttered, enjoying the memory of the red bar with its vertical white stripe. This arrow slanted upwards. Clear ahead. "Right away, driver!" he muttered to himself, and resolutely climbed the staircase. He wondered whether to use a London, Australian, Afrikaans or his natural accent, and decided to be himself on this day. There was a wait, maybe 20 minutes, before an attractive secretary approached with a clipboard. Hell, he thought. Nobody wears mini-skirts as short as Brit girls. She returned, checked it, nodded, and beckoned:

"This way, please".

With him seated in a tiny cubicle, she quickly ran through what was wanted, pointed to a sign on the wall, and left him in the cubicle. The sign read "You have 20 minutes". At the door, she pointed at her wrist-watch, counted down seconds: little finger, next finger, middle finger, index finger, thumb. She mouthed "NOW", and closed the door.

He returned the assignments a couple of minutes shy of the allowed 20, noted the girl's surprise on checking her watch. Relieved to be done, he flopped onto the chair she waved him to, with a deep, long, steadying breath.

Within a further 15 minutes, a bright, smartly dressed man sat beside him. "Edison" thought the young man. "I will call you Edison". But he said nothing.

"Would you like to guess how you did?" Edison asked, poker-faced.

Sometimes you just know when to shut up.

The young man remained equally poker-faced. It was a win: he outlasted Edison, who, with a sly, humorous smirk, said "You got a hundred percent". Pausing as though for dramatic effect, he then said "And you finished rather early. Exciting!"

The young man got home much later than usual. It wasn't only because of the after-work aptitude test. He took even longer, because he made his way straight from the station to The Sun. his favourite pub on Barnes Common, and had two, slowly-sipped pints of his favouite bitter.

"This surely should be a big moment"

was his recurring thought. But it was not to be. Edison had, possibly fuelled by financial incentive (this was, after all, an American corporation), tried valiantly to sign him up for the free course. Qualifying came with a guarantee: "We will guarantee you employment on successful course completion" he said, proferring papers for signature.

There was a succesion of questions, resolving finally in ill-concealed puzzlement at his resistance to signing.

"What can possibly be the problem?" asked poor Edison. He asked this in much the same tone as would Jeremy Clarkson asking "After all, how hard can it BE?" His answer was slow to come, but came with the same tone and inflection that Richard Hammond would use to say "Well, I MAY have put sugar in your petrol", and the words goose-stepped out, a leaden chorus:

"I. Do. Not. Have. Papers".

Edison was perplexed. He turned both palms upward, threw them out sideways, and bursting, asked

"Papers? WHAT papers?".

It took a while to explain. Edison really wanted him on board, tried many angles but even ultra-positive he, in the end, admitted that there was no way they could rectify the young man's bleak status of Illegal Immigrant. Hence the pub. The young man needed to go over the "So close, so far" episode in order to compose himelf, or he would never eat/not sleep/be late for work/lose his job, and on and on, the cares of the undocumented alien. Tempted to get pint number three, the young man decided that "The Cares of the Undocumented Alien" was a good title for a free jazz number. He did not get the third pint. Outside, the rain had paused. Barnes Common beckoned.

"Grass, space, trees"

he muttered, and set off across the common, at a furious pace.


The young man in this story was, you must have guessed, me. I never did compose "The Cares of the Undocumented Alien". It was not a problem, in fact, it was an amusement, an effectionate reminder of how his brother used to tease a friend:

Hey, Pechey, how FAR have you GOT with the TITLE of your THESIS?

Always, it was asked with that sonnet-like meter and inflection, as in:

I will not be afraid of death or bane
Till Birnam Forest come to Dunsinane

which Iambic pentameter, for my brother, came more from Jazz singers or Dick Tracy comics than from Shakespeare. I may not have composed that particular number, but I went on to compose others.

Coding

It took sixteen long years before learning how to code. Back in South Africa, the years passed. I had just been offered the firing squad, with a reminder that I would be tried for espionage, not in a civil court, but a court martial. The minimum sentence, said the skull-face death's head lieutenant uttering it, was firing squad. You only walked away from that if they all missed. The way South African marksmen shoot, I was not going to take any chances. After Skullface left the building, I scurried to the office and resigned, not knowing whether they would come after me, nor able to figure out what to do about it if they did.

It was precisely that aptitude test in London that brought me into the army, hoping for a transfer from a "troepie" entertainment band into Strike Command's IT department. It was my application for a transfer that prodded Lt Skullfaces's secure-o-rat "sniffing out" and weg was ek.

APP

Forgive the pun, but can we assume for the purpose of my narrative that APP stands not for the things you find on your phone, but for African Pascal Pioneer? I wasn't by a long shot an actual South African "Coding Pioneer". Hundreds, possibly thousands of people got there before me, especially via a software school run by a duo named Van Zyl & Pritchard. They got on with each other about as well as Lord Kitchener and Paul Kruger, but somehow ran a very successful programming school.

In the South African context, I was no latecomer to coding, but many others, especially from VZ&P, were long versed in the edit/compile/run cycle, before the Turbo Pascal IDE came along and cast that process into warp speed mode. Legend Steve Mabbutt was probably stuffing characters into the AL register in assembler, C or both, before I ever learnt a line of Pascal. Musicians have a saying:

"He hasn't yet learned what [insert Guru Name] has forgotten already"

In this case, Guru Name would be Steve Mabbutt. You get the picture. I was not a coding pioneer,

I may, however, be a South African Pascal Pioneer. My claim to this is that (familiar with import documents from my shipping days) I imported (one of?) the first Turbo Pascal copies into SA. It was written by Anders Hejlsberg, ran under Digital Research's OS known as CP/M. CP/M itself was created by a true pioneer coder named Gary Kildall who ended up wealthy, but should have ended up thousands of times wealthier. Maybe it's because we are both South African and not easily impressed by sad, humourless geeks, that I have as little time for Bill Gates as does Elon Musk. Doubtless, Musk will have read the full story of Kildall vs Gates. It's a sad story.

What I imported was Borland Corp's version 1.0 of what would turn out to change the programming world. I had actually cashed my army pension, a lot of money in those days, and spent it on a programming course at Control Data Corporation (the same company with whom I took the London aptitude test), in Eloff St, Jhb. It was a happy time for me, but I dropped out of the course after a few frustrating months. For a start, I had taken the cheaper option, a language named BASIC, not being able to afford the more expensive COBOL. It turned out they were teaching in QBasic, possibly the world's first and finest onward career progression to "spaghetti code". I woke night after night, sweating and hissing "GOSUB 30000" until I could stand it no longer. The other frustration was the way the school was run. They had a single copy of each study aid in their library, for tens of learners, and we would wait for weeks for a copy. Technical books were hectically expensive, and often unobtainable, even in specialist shops. Waiting for weeks for a 600 page book when you have a test the following day is hell on earth, and further, setting yourself up for failure. I wasn't falling for that old one.

Kaypro II

Learning to program was daunting. It helps that I can't resist a mystery. I tracked the secrets like Sherlock Holmes tracking Moriarty. My wife Lyneve had done up a little back garden shed for me as a man cave. Lyneve is ceaselessly industrious, so on the many nights when she was busy and definitely not wanting me sitting around talking too much, it was good to retire to the den, pull out the Turbo Pascal manual (the best manual I had ever seen), and try statement after example statement. It wasn't long until I got a feel for the process. That was half the battle, though it was not a huge battle, because of what Turbo Pascal got right.

Black screens with either green or orange characters, 25 rows down, 80 characters wide across. Usually, the 25th row was programmed as a status bar. The compiler would chug away, slowly reporting how many lines it looked at. At the end of the file, it would make a second pass, and perhaps a third, before reporting. People went for lunch while compilers were doing their thing. Most times, the report frustratingly reported a Syntax Error: a missing semi-colon, or a badly spelled reserved word. Once those were cleaned up, we would go for the bugs: the most common was a 'divide by zero' error.

What Turbo Pascal got right was to put the editor, compiler and output all into one screen, but more especially, the compiler was blindingly fast! Where smallish programs had previously allowed a coffee or lunch break, TP was compiling at more than 50 thousand lines per minute, and this was a PC with only 64Kb of RAM. Your phone has hectares more RAM! Each version of Turbo Pascal became even faster.

So, what was always known as the Edit, Compile, Run cycle merged into one process, and development suddenly was dramatically faster. We all began to drink less coffee!

The other half that Borland Corp got right was the language itself. Looking back, Pascal is a small, simple language, designed as it was for teaching. Borland Turbo Pascal, though, was not to be written off as purely a teaching language nor a toy, and eventually went through a series of iterations until it became Delphi, a language often written off as not used much, but in fact was used to write Skype. I know Skype was seen off by Zoom and others, but at one stage, there were few people I knew, computer-literate or not, who did not know what Skype was.

In time, I met an Australian guy named Terry. He was a salesman, but had been interested enough to get a copy of Turbo Pascal. By then, we both had the IBM PC version 3.0. He was combing through it, and it was great to share tips and traps. Eventually, he was confident enough to suggest writing, as a joint effort, a book-keeping program. I knew nothing about accounts, and did not encourage Terry. Knowing what sticklers accountants and bookkeepers can be, I thought it unwise to attempt that without knowing books, but Terry cheerfully retorted

"Do you think I can't learn books?"

I thought the idea would go away, but a couple of weeks later, he invited me to a braai at his place in Half Way House. Waiting for the fire to come right, he beckoned me into his own man cave, and showed me his progress. It was impressive. He had created a good looking, interface, and used Turbo Pascal's sample B-Tree code for his data storage. The B-tree file routines sorted data at insertion time, so we were freed from the kludge-like 'housekeeping' routines that were the order of the day for D-BaseII and similar (so-called) databases of the day. There was a record count limit, but it was way more than we expected an SA bookkeeping package to need.

"There is a ton to do still" he said "but, can you help with me the screen writing? The whole screen scrolls up a line or two on 'Abort/Retry' errors, and you probably have a trick or two for that?"

Milestone

I didn't. But I was hooked, and by the following weekend was able to give himself some code. I had tried it, and it worked. It was adapted from a C program I had found in Dr Dobbs magazine, transcribed in careful longhand in the Johannesburg Library, and onto my Kaypro at home. Terry took the disk, slotted the code into his own, and phoned me that night.

"Works like a charm!" he said.

Before returning to the Big Oz, Terry left me the source code, saying "Knock yourself out. Sell it. Sell the hell out of it!". I am no salesman, but Terry had left my number with his clients, and I made a fair living supporting them. It all ground to a halt with the revenue service changed from General Sales Tax to Value Added Tax. The reporting was different, and absolutely essential for his clients. I began development on the switch from GST to VAT, but was already up to my neck in gigs with the African Jazz Pioneers. I fell behind, could not complete the VAT module in time, and eventually struck a deal with those clients who were still interested, migrating them to a popular new program called Pastel Accounting, and walked away from 'Professional Assistant'.

Many other free lance jobs followed. The favourite though was for a Randburg guy, who specialised in label printers. We will call him Alan. He had also got my name from Terry. One day, he brought me a little booklet, and a card reader. The manual was in Japanese, but it had the source code for the card printing routine, in QBasic. The code comments were in Katakana, but the QBasic was as QBasic as you could get. It was gathering dusk as he made his way to his car.

"Have that ready by 8am tomorrow morning. On second thoughts, pick me up in Randburg at eight and drive me to the airport. This program is for some Cape Town guys who don't believe you can write it".

The task was simple, on the face of it. The card could fit about 440 rows of grocery items on it. It kept stock counts. As each item was sold it, though, it became a chore for the users to sift through the rows, many of which were at zero items. They wanted the program to sort the row items such that there were no empty or sold out rows to scroll through. They would run that program every day before printing labels.

I got stuck in. Working through the QBasic and reverse engineering the code, I realised that it would run way faster in Turbo Pascal. I checked. There was space on the card for more programs. QBasic was run from MSDOS, so a Turbo Pascal executable should run, too. I wrote a short test program, and it ran perfectly. The rest of the night was spent writing a workalike of the QBasic program, but in TP. Once that worked the same as the QB, I wrote a sort routine, By dawn, it was working fine. I tested until I absolutely had to leave for Randburg.

Alan took the disk as he hurried toward the gates at then Jan Smuts Airport. Sternly, he turned and said

"This better frikkin work. Pick me up this evening at 5pm".

Back at home, after this hectic night of coding and coffee, I slept soundly for many hours. At five I was ready and waiting for him at Arrivals. He was inscrutable, even sombre. Had I screwed up? He said nothing until we took a seat in his office amidst the stacked cartons of thermal printers.

"I want the bad news first" I said.

Alan arched backward and roared with laughter, guffaw after guffaw, slapped my fee on the desk. I reached forward.

"Wait!"

Sigh. I knew there would be a catch.

He opened his briefcase drew out a large envelope, placed a wad of notes on the desk, and counted out a thousand Rand.

"I told you those guys did not believe you could write that program".

"Well?"

He slid the grand over to me.

"I bet them two thousand rand you could. Five of them clubbed in. This thousand is your half. My half covers your fee and then some. Pleasure to do business with you, sir".

I made it back to the Chartwell plot just as night fell, about twenty fours t from the time I had started writing the card program. Some days are unforgettable.

Perhaps a month later, Alan phoned.

"Come and see me"

I was there about an hour later.

"Those Cape Town guys are happy with the program, but they say it would be better if it ran faster. What do you think?"

I thought about it.

"They are probably right. The sort routine I used could be improved".

He looked at me carefully.

"Can it be speeded up to run in half the time?"

I mused. "Maybe"

I was to repeat the whole 'lift to the airport' thing the next day, but this time the program would have a new sort routine. Back home, I replaced the first sort routine with a binary sort. The difference was dramatic. Running time was not only less than half than before, it seemed to take no time at all. I wrote a program to jumble up the rows, then tested, tested, tested, until the small hours.

It was a replay. Back at his office from the airport, he slapped another thousand on the desk.

"This time, they bet me, that you could not halve the running time. Such easy money. Your money" he chortled, sliding it over to me.

All Change

Programming paid quite nicely for my trombone habit for a year or so, then the work dried up. The phone no longer rang. The market had changed. The little guys were out of the picture, and it was they who had hired me.

My free-lancing years made it easy for me to learn VBA (Visual Basic for Applications), the programming language behind Excel, and the StarBasic behind OpenOffice Calc, and in time that ability would save me from another change, caused by the Internet, Napster, and 'free downloads', the death of making money from recording. VBA pulled me through my remaining work years. It was as close to Pascal as to make little difference. I automated all my jobs with it. At one job, the boss asked

"How is that you seem to do nothing but tell jokes? I hear gales of laughter from any office that you pop into. Yet, you are quicker at your work than anyone I know. How do you do that?"

This boss was pretty computer literate. He whistled at the explanation. When I left his employ, we parted on good terms.

What can I say? Things have changed completely over the last decade. I will not code for money again. As they say in the movies "ain't gonna happen".

Artificial Intelligence: ChatGPT

I have a video, a continuous (meaning unedited, no smoke and mirrors) video screen capture of me on my phone asking AI program ChatGPT (online) to create a program in Pascal, to generate six random numbers. It compiled successfully, and ran perfectly, without me altering a single character in the program. One thing is for sure: it will never again be that important for coders to be typists. That grunt work will be done for us.

We once coded utterly precisely,
For reasons of syntax, quite nicely.
The battles were won,
But now it's all gone
Because we now just use ChatGPT