In which Piglet lets Eyeore and Pooh take the rap for his carelessness..
A tale of Horrible Proportions.
Are you here again, kiddies? For another story, is it? The last one wasn't too frightening for you, eh? Well, then.
Once, in the dim, dark past - yes Jilly Dear, when wolves and hobgoblins ruled the nights, that's right - lived there a keen young man. Once, in his youth, he had come under suspicion for doubtful dealings with a cow, a handful of beans and an ogre. For a while, after that, he and his mother had some problems explaining their standard of living. But he had kept his nose clean since then, so we don't hold any of that against him, do we? No, indeed not.
As part of his efforts to legitimise his big house and new car, he took up gainful employ as a computer programmer. You notice I don't say useful, kiddies. Why don't I say useful, huh? That's right, he made financial gain for himself, but he made his employer lose a lot of money.
Now, as you all know, a computer programme is more like a knitted dress than a woven one. For if you drop a stitch while you are making it, or if catch your dress on a nail while running from the wolves around the back of the village dance on a Saturday night, the whole thing can come unravelled. There you stand, bare up to the waist, or even to the tits or the shoulders if you lack presence of mind or have slow reflexes. Yes dear, embarrassment can indeed keep you warm at such times, but it doesn't help your vulnerability. No dear, it's vulnerable, not vunnerable, and it means it's easier for the young buggers to put their hands wherever they want, no matter how loud you scream. Now, where was I?
Oh yes, young Cowless Beanstalk (that, for some reason, was his name - yes, truly), the computer programmer. Well, he was one of about eighty young bloods I had in my programming tribe. An unruly lot, given to hard drinking and leading their dear old Chief Programmer astray on a Saturday night. Well of course I resisted, dear, but not too hard, of course. Young Cowless fitted in, pretty much. Kept himself tidy, and his desk always neat. Yes, that is a bit odd for a programmer, but we didn't give it a thought at the time. If we had known then what we know now ... . But there, there. No sense crying over spilt milk and locking the stable door after the cow has bolted.
He did his work well enough, young Cowless. Turned in his scripts a bit late, as did they all. I was a match for them, of course. When they did their estimates I always added at least a hen, and sometimes even a small pig, before stapling them together and taking them to the hut of the Regional Chief. I had been caught before, and learnt my lesson. Why do you think they call me Nine-toes?
One way in which Cowless did stand out from the rest, that was his penmanship. No dear, I will not call it pen-person-ship. I don't care what your mother says. Oh, is that who your mother is? Well, I didn't exactly mean I don't care, I more meant, well, that I'd be happy to discuss it with her any time she wishes. Oh, because I didn't choose my words very well, that's why. Now let me get on.
Cowless wrote a beautiful, flowing copperplate, with full calligraphic flourishes. Not out of place doing Royal Proclamations for the Queen or even two-for-one, this-week-only specials for the local provender shop. Not like the rest of the young roughs. A chewed down ball-point, only roughly sharpened, that would satisfy them. Many of them couldn't even join up their letters properly, and worst of all, they would often dip too deep into the ink and get splotches all over their fair copy. And as for licking the tip as they wrote, well, I would just love to know what was in that ink, I really would.
And his programmes ran well, young Cowless'. We would put them on the treadmill for hours, give them a sip of water now and then, on they would trot, no signs of fatigue, till all the others had given up, gasping. Maybe we were testing for the wrong things, of course, but we couldn't have known that at the time.
One particular day, we had to do some programme maintenance. Not the usual sort of thing, like reshoeing, or clipping the coat ready for summer, or even foaling. No, this was a serious matter, full anaesthetic, sterile procedures, the whole box and dice. We had to really get into the guts of the programme. What breed was he dear? He was a COBOL. Yes, I know what you are going to say, all of you, how old hat can you get? Long in the tooth? Yes. An old trudger? Yes. But that's the thing, staying power. Nobody ever believed me before, but they do now, oh my word. A good programme will live longer than most people realise, and a good old COBOL is among the very best. Ask any of the team out there at the race course picking up all the droppings that have accumulated in the last two thousand years. Ask them about long-lived programmes, and they'll tell you about the manure they have to deal with now, as a result. Me, dear? Well I think if the shit had been cleaned up as we went along, there wouldn't be that problem today. And less than a year until the Grand Final, too.
We chose Cowless for the job. He was neat: he was no slower that the rest: and most of all, we had at the time run out of other things for him to do. So we issued him with the regulation coveralls, sterile instrument kit, new pack of swabs and the other palaver that a professional maintenance programmer needs. Then we helped him with the anaesthesia and went back to our own work-benches.
Well, Cowless did his usual neat job. We went over and had a glance at it, before he closed. Everything looked fine. The spleen had the addition, on the left side, as the customer had ordered it. There was no bleeding, all the swabs counted correctly, so, as Chief, I approved the work, and he sewed it up. Beautiful needle-work, too. But that was Cowless. By then he had been with us for a few years, and we knew we could depend on him for a really tidy finish. And the program, now a new version, as we call them after an operation like this one had, tested well on the treadmill, and was soon back in the shafts, took up the load, and got down to its daily task.
I don't know if I have mentioned it already, but the task of this particular program was dragging together the daily financial transactions of 270 major surgical and general hospitals, over the network, then processing all the ledgers and what we laughingly call updating the annual financial audit totals. What for? Well, sort of like throwing a penny into a bucket every time your brother gets one given to him. At the end of the year when he asks for more pocket-money, and Mum says 'How much did you get last year?' and he says 'sixpence' and you go 'you bloody little liar' and you empty out the bucket and it's got four pounds, eighteen shillings and elevenpence in it. So you know that's how much he got from Mum and Dad, what with little extra treats, and money for an ice-cream on a hot day, and like that. Well that's the way this programme worked too, except is was a huge stolid COBOL beast, nothing like the C++ Percheron that's much more the go, today. though I would like to see them head to head, on the long haul, I really would. Well, because there is a lot of ordure about a Percheron. You're too young to understand. It's a French joke. Yes, that sort of French joke. Oh do shut up.
Actually, that does have something to do with this story, for at the end of the year, as usual, we added up the pocket money for all the hospitals. And to check it, as usual, we emptied out the bucket. And what do you think we found? Yes dear, that's right, just a pile of horse-shit, not the nice neat count of pennies we expected.
What had happened? Well, we looked at all the programs that had access to the bucket. They all looked fine. Fit, well and active. None of them seemed to blame. We kept coming back to this one program, that actually put the pennies in the bucket. I looked at the output routine with great care, but nothing was obviously wrong. We walked right round the programme, looking at it from every angle. nothing obvious. I rubbed Vaseline on my arms, up to the shoulder, and groped around as far as I could reach into the very bowels of the output routine, but there was nothing out of place. Everything was beautifully aligned.
Finally we called in the vet to do a version file compare. What's that dear? That's where he takes an xray of the programme, and puts it on his light-box. Then, on top, he places the xray he took before the operation, when he was diagnosing the problem. If anything significant has changed, apart from what Cowless was supposed to fix, it will show up like a sore thumb.
So that's what we did. And my word the problem did show up very clearly. Don't all clamour at once - I'm going to tell you, but only when everyone is as quiet as church mice. Ok? Ok.
Now, you remember - and just nod if you do - mouths closed nice and tight - that I said this was a tale from the Hobgoblin era. Right. And back then there were many who were still using punched cards to feed their programmes, and even when they were breeding programmes. Yes, I made a pun. So what?
Now, we were on-line. We programmed on-screen and then fed pretend punch-cards to the compiler. Now there indeed is a sex symbol for the happy professional programmer. No, Johnny, don't touch yourself there. Not till you're fourteen. Oh, you're fifteen? Well, wait until you're alone, anyhow.
The compiler did like all good punch-card compilers. It read columns 1 to 72 for the program source codes, and 73 to 78 to check that the cards hadn't been dropped. In those days, in case the punch-cards were dropped, those last eight columns had four columns for the program name and four for the card number within the program. So if a box of cards, which might hold several programmes, were dropped, and shuffled up, the computer could tell if they were out of order, and ask for them to be sorted. An electric sorting machine could read the holes, and sort the cards right back into the order they were in before they were dropped. Naturally with pretend, on-line cards, they can't be dropped, so in that case the compiler just ignored those last eight columns.
And that's what had brought Cowless undone. He had seen a COBOL structure, down in the guts of the output routine, with one line out of strict alignment. With a bump on the side, if you like. So he had whipped out his scalpel and shaved it off. No wonder we didn't see anything out of place - he had trimmed it off. Well, that's just to explain it to you. What he actually did was type another space in, at the start of the line, to push the rest of the line one space to the ... oh bother that, I'll draw it for you.
Well, sort of like that, anyhow. See, Cowless knew we generally kept the left side of our lists nice and neat, but in this case, doing that would push that last '9' in the middle row out into column 73 and for the compiler it would disappear from view. So all the output from that line of the program would be divided by ten, and then again next time we handled that bucket, and so on.
Well, yes of course that gave us a problem. All the totals might be correct in the hospital accounts, but even in those days there were light-fingered villains all around and about, and we did need that bucket filled up properly.
So what do you think we did? Yes, Matthew? Yes, we fixed that line up again. Yes, but that really only shut the stable door ready for next year, of course, but what about last year? Yes Mandy? Do all the year's processing again? Mandy, I can see you have a great career ahead of you, but save yourself some heartache, don't go into maintenance programming, dear. But she is right. That is exactly what we had to do, as soon as the 'Cowless Correction' (as we laughingly called it) had been corrected.
Now, back in the hobgoblin days, all the backup was done on nine-track tapes. Big as dinner plates and five times as thick. We were very careful with our data. Every day we copied onto one of these things all the transactions for the day, from all 270 hospitals all around the country, labelled them, and saved them forever. We didn't know why, it just felt more comfortable to have them there. Cost? Who cares in a government department? Look, stop arguing, I already told you it was long. long ago. And we also had complete system dumps - sort of like manure heaps except you can feed it back in to the computer and, magically, it is like it was on that very same day the dump was taken.
So, we cut out our programming night shift, and at night we dedicated our development computer (that's like a huge exercise yard for programmes) to Cowless. We told the computer that the date was a year ago (thank goodness they are so dumb, they will believe almost anything if you put to them the right way), and fed it the dump tape, then gave Cowless the job of shovelling in each of the daily transaction tapes in turn, and adding up the pocket-money bucket by hand, and checking the output bucket for shit. At night. All night. Every night. It was a messy job, but someone had to do it. And for once we were all in full agreement. Cowless was the someone for that job. Oh, my word. And we kept an eye on him, you can say that again. No, Johnny, I didn't mean that literally. Literally? It means ... oh, never mind.
Cowless got about three quarters of the way through, onto 254 of the 365 daily tapes, when the computer complained. There was, it told us in its usual arrogant fashion, a tidy, microscopic blemish, 0.3145" (that's inches, Jilly) in from the tape margin, and just under half a mile in from the beginning. Actually, it said it was 2317' (feet) plus 4.137" in from the start, but as it turned out that knowledge didn't help us very much. I said computers are stupid, but I forgot to add that they are also exceedingly stubborn. 'Bad Tape, Bad Tape' the stupid thing kept screaming, and absolutely refused to do anything more until it was given one without that flaw. Well, it wasn't quite like that, but I hope it gives you something of the flavour.
Well, we called in the tape doctor, and he did all sorts of clever stuff, and got quite a lot of the stuff off the tape onto a good one for Cowless to use in his refilling of the penny bucket, but as luck would have it - bad luck, this time, that blemish made a complete nonsense of the hospital input coding for that one day. Well, said Cowless (though nobody believed him any more) 'that will be easy to fix - just get all the hospitals to type in again everything they did on that day'. Unfortunately he turned out to have got that one right.
We had to fax each of the 270 hospitals and ask the administrator please to send somebody down to the basement and find all the bundled, dusty, invoices and prescriptions and bills and dockets and debit and credit notes, and stores requisitions, and expense claims and all that (whew!) for just that one day, and pray god they had taken our advice and kept the days separate. Then bring them up to the clerical office, and have them dusted off, and get the staff to stop all their ordinary work and please, please have them type in again everything they did that day, on day 254 of the year. Oh, what a jolly time we made for them all. We didn't let on it was all due to Cowless. We wanted him kept alive to finish his thankless task. That turned out to be true, too. We never thanked him for refeeding the damned computer. Never would, either. Bloody Cowless.
Eventually he got to the end of the series, did Cowless. And the bucket had no shit in it, and we got the books balanced. No, Johnny, it is decidedly not a happy ending. Just not quite as sad as it might have been.
And while Cowless was doing his penance, what were the rest of us up to? In addition to sitting in each other's laps, with the day staff and night staff all working the day shift together? We just about kept up with our usual workload, plus we had a few more baby showers than usual. And we set up a permanent xray unit. From that day forth, every program that needed maintenance was checked out of its stall, you had to sign for it. All the old versions were kept. When you handed back your program you had to test it, as usual, but the additional step was the file compare. The results of that were checked carefully by the stable-boy (he kept on wanting to be called the 'source code librarian' but if you give these lackeys and inch they'll take a mile) and if there was any change that wasn't part of fixing the change request he had to blow the whistle. Oh, no Mary, it was a plastic one. Silver is for federal ministries. We were a state department.
Cowless? Oh, most of us wanted to have Cowless killed, but I persuaded the King not to. He would be better as a living example. So we had his tongue cut out. Nobody would ever listen to him again. We found a corner with no windows, and put bars all around it, and gave him a job separating fresh manure into categories. Nobody talked to him again, either.
One day we found he had escaped.
Copyright © 1999 Peter Leon Collins
v1, 10 January 1999