When I was little, I was obsessed with writing stories about home and family life, although, ironically, I was never blessed with either. I usually wrote about traveling around in search of family to reunite or helping someone else achieve that goal. Sometimes I’d rescue them from disasters, trace them to other planets, or combine alternate universes to find them. But in reality, I got boarded in schools for developmentally delayed children, was in the Special Olympics (always coming in last), and ended up single with no real connections. I got employed several dozen times by lying on job applications but, usually, it just took an employer an hour or so to discover my two-digit I.Q. and bounce me. (The law can only apply if an accommodating opening for an idiot exits—but who has such an opening?)
I did make an acquaintance with a bench tech who bought a computer in the ’80s. When I was alone in the daytime, while Allen was at work, I began reading his computing magazines and using his computer and disk drive, because nobody was there to call me stupid. When I wanted to start entering programs on my own without store-bought software, it took me several weeks just to bring my reading comprehension up enough to understand the magazine instructions on how to run the first program I’d typed in: a very complicated-looking program that simply deleted unwanted disk-drive files. I also studied its code. When I at last figured it out to the program’s final “press any key,” I let my forefinger hover over the keyboard for the longest time, then gingerly pressed a key and heard the disk drive spin. From that moment on, I knew I was head over heels in love. When I was young, all I could do was write fiction, but in high-level computer language, I can actually make things happen in reality! (Years later, when I published software in a worldwide distribution magazine, I literally got thrown out into the street, with only the few hundred bucks I got from selling the rights.)
Recently, I wanted to return to programming, but, over the years, my old computer and I were aging a little less than gracefully. Its drive-head suddenly fell off one day, but by then keys were failing and I couldn’t fix those either. I managed to daisy-chain a second drive on, which wasn’t really meant for that computer, but I’m lucky to have the working spare at all. Then I needed to upgrade some programs to meet the needs of my current situation as well as get me back on my game. I wanted to write at least one fantastic program that would reprogram the F keys to compensate for broken keys, remember functions the spare drive can understand (it can’t understand all the commands the original one can), taken on certain ASCII values, return to default values, and change the screen colors just for fun. What I had in mind was probably never done before, but I had gathered various code together from several different places and made a workable model. Only one thing troubled me: I had no idea in the world what to write to program keyboard entry. Some thirty years ago, programmers used a 256-element array and dozens of lines of programming to direct key presses where they’re desired. I wanted something a whole lot simpler—but try as I might, I came up completely blank. I didn’t even know where to begin to think about it.
Meanwhile, I could hardly wait for Halloween. Back in January, when my “grandkittens” nearly all matured extremely early and pandemonium had ensued, I had very reluctantly decided to ship two of them, Spacer and Slate, to another town, to farmers I’d recently befriended. The “wild twins” as I called them (though obviously they’re not actual twins since one’s a girl and the other a boy) didn’t act like housecats but acted feral and hid most of the time, and were rather oriental looking. Spacer wanted to explore, Slate was mature but too young to neuter, but mostly I was concerned that I wouldn’t be able to spread myself thin enough to give equal care and attention to all five cats. (The town I live in treats cats horribly so I didn’t want to impound them.) I still miss them a lot; I’ll always consider them family. I know that, chances are, I’ll never see them again, but now, on Halloween night, I was invited to a big cook-out on their farm. To me, just being on the same property a little while meant a connection with the wild twins, even though it isn’t real. I went out and bought a giant peep, a huge orange marshmallow shaped like a pumpkin head, with cake decoration candies for facial features. I call it Wilson because I couldn’t think of any other name for it. Then I went out and searched for a stick large enough to hold Wilson, and finally found one; it was at least an inch in diameter and about two and a half feet long. I’d bring the stick and Wilson with me to the farm and roast it over their bonfire. Then … I checked my email and discovered that the whole event was called off completely due to an emergency! I felt like somebody had taken my Wilson-roasting pole and rammed it down my throat—I really felt crushed! (In retrospect, it was as if I’d been abandoned with Wilson like in Castaway.) So I built my own bonfire, and it was the best fire I think I’ve ever built. After roasting and eating Wilson, I fell in bed.
“It was cool when you were in that jar, Wilson,” I thought. “But now what good are you?” I dozed off.
“You must allow none of your functional array elements to be zeroes.”
“W-what?” I woke up and rubbed my face. “Wilson?!”
“Put your desired values into each ASCII-numbered element,” Wilson continued.
“But … what about the first value? It is zero.”
“So—make that one 40.”
“But the Q% matrix is only dimensioned to 39 by 2.” (i.e. the matrix has elements numbered 0–39 by 0–2.)
“So make the variable Q equal to -Q times (Q<40) and place it at the top of the program,” replied Wilson. “Then you won’t have to worry about the increment line either: the equation is doing two jobs at once.”
I got out my notes and started writing down everything Wilson said. I double-indexed the data: one array number to one Q value. “What about the key presses for program flow?” I asked.
“Make those values negative,” Wilson explained. “Make Z the value of A%(ASC) and test it for 0. If it’s greater than 0 assign it to Q and send the flow to the top. Then place a double-negative ONGOTO statement as the second line below the GETA$. Then the zeroes will fall through that, so place a third line to direct those back to GETA$.”
“A—a double-negative ONGOTO?!” I gasped. I don’t think that was ever done before, even though it’s so simple. And it’s only three lines of programming. Now I was able to complete my program very quickly; it was over a kilobyte smaller, and it ran a whole lot faster, too. Then I went out and bought another Wilson … just to keep. The empty jar became my new pencil jar. This is an absolutely true story.