I’m Old, Part LXXXVII: Just How Old Am I?

This is a 1980 news article from my home town’s fish wrapper, The Independent Press (now shuttered). I was just shy of 13 when it was written. Here’s the transcript (typos are mine, probably):


Only The Computer Knows For Sure

by Miriam Congdon

If home computers are the wave of the future, George Hawley and his sons are already living in the year 2000. The family computer, an Apple II, plus a motley assortment of accessory parts, sits in the upstairs hall of their New Providence home, absolutely commanding the attention of all who pass. Usually Pat, 15, or Steve, 13, keep Apple company.

Hawley is an engineer at Bell Labs which gives him a predisposition to things mechanical. He bought the computer last October, he says, “because it seemed like a neat idea”. Besides, Pat wanted to learn about computers. Now, nine months later, Hawley proudly asserts that Pat knows as much about microcomputers (small [illegible]es) as the people at Bell Labs – more, maybe.

Both boys write programs for the computer, which may explain why of the 1,000 or so programs in the Hawley household, most are games or designs. One – no name, yet – has a space ship flying through a galaxy; the object is to fire and hit the tiny moving stars.

There are, of course, games that they have bought. “Lemonade” is one: it tells the players what the weather is and how much the ingredients cost per glass; the players decide, quickly, what price to charge and how much to spend on advertising. The winner is the one who makes the most profit.

There’s chess, with six different levels of play, and a bowling game with three alleys. If the boys choose, they can call up a pattern that’s a dead ringer for Hopalong Cassidy, or one that merrily grows in geometric designs (terrific in color, they say, when it’s hooked up to the TV).

But the computer is not all play. George Hawley uses it for a number of household purposes, such as keeping track of expenses, by category. Last April he spent an hour and a half programming in a form 1040 tax return plus schedules, which he can use forever or until the IRS changes the whole thing.

A formula using loan principle and varying rates of interest tells Hawley how much he can afford to spend on a car; presumably, it leaves the color selection up to him. And every once in a while, he and Apple sit down and whiz through a work related project.

Hawley has over $2,000 tied up in the computer: $1300 for the basic unit (the simplest system costs $900), and lots more widgets (Hawley’s word). These include a disc drive machine to play the floppy discs that store the programs and the discs themselves. Programs for home use cost between $5 and $30. And of course Hawley and sons experiment with modifications to Apple – and the Hawley spends a lot of time fixing them.

What Apple II does, as it sits quietly in the hall, is only the tip of the iceberg. There are more sophisticated machines that can control utilities and appliances. Some can “talk” to their peers via a telephone hookup; in fact Hawley has a widget to do that, once get gets it fixed.

Dennis Tolley, co-owner of Stonehenge, a Summit company that sells small computers, suggests further uses: keeping household inventories for insurance purposes, keeping Christmas card lists, balancing checkbooks, filling recipes. Education is big in computer land: it’s more fun for a kid to lean multiplication tables or states and capitals from a computer. Getting a little more exotic — and expensive — it’s possible to buy into a news service or get the stock market report, right there at home. Think what that would do for your disposition.

As George Hawley says, “It regenerates itself. There are constantly new things to do with computers.”

Apparently, a lot of us will be learning that in the not-too-distant future. Hawley’s educated guess, bolstered by projections in the computer-oriented magazines he reads, is that in five years, one out of every 10 or 20 homes will have one; in 20 years, one out of every three.

But that’s just a guess. Only Apple II knows for sure, and (s)he isn’t telling.


Notes:

  • The Apple in the picture is running Apple Invader by M. Hata.
  • The monitor is a piece of junk that my dad picked up at a computer fair one weekend. He thought it was torn out of an airline terminal.
  • The reference to the broken modem is that my dad also bought an acoustic coupler to hook up to a serial card. If it worked, it would have run at 110 baud. It never worked. We eventually bought a Hayes modem that ran at 300 baud.
  • We tried a number of mods to the machine. We tried an upper/lower case mod, but apparently the revision of the Apple made that impractical.
  • The chess game was Sargon II – a couple months ago, I tried to play this emulated version against an online chess engine, but it ended up hanging 4 moves in.
  • On the chair to the left of the computer is a TI Silent 700 terminal. Dad borrowed it from work and we managed to hook it up to the Apple to use as a printer. It uses rolls of thermal paper. We also used it to log into Bell Labs computers to play Adventure or Zork. We went through a lot of paper. My dad bought a case of it, which my mom (probably passive aggressively since the terminal took up the phone line) put on top of a radiator, ruining it. I wrote a paper on it my freshman year for English because I didn’t want to use a typewriter (my typing was awful), knew that my mom wasn’t keen on typing our papers anymore, and it was an excuse to use a computer. I printed it on the Silent 700 and my dad made copies so it wasn’t rolled up. The paper was returned to me with this comment “It looked better than I expected. C+.” No other comments except correcting grammar. We eventually replaced it with an Epson MX-80 which looked crappy, but a whole lot better.
  • Above my dad’s hand is the floppy drive – our second – the first went up in smoke in the first hour of use. Behind it is a wooden box my dad knocked together out of scrap wood to hold 5 1/4″ floppies.
  • I butterflies on the wall were ones that I had collected. I recognize a white admiral for sure and likely a red-spotted purple, but I’m less sure. The others I can guess from memory, but am not sure on.
  • The breakfront contained books of my mom’s. They were novels and art history books for the most part.
  • I was in the middle of a growth spurt and those jeans were getting into the flood water range.
  • The food to the left of the breakfront was my room. We called it “the blue room” even though at that point it was no longer blue. It was a sitting room with a (non-functioning) fireplace in one corner.
  • Clearly this was written at time when the world hadn’t yet agreed on disc or disk. Once that was settled we have moved on to the pronunciation of ‘gif’, which is still unsolved.
  • I feel like the writing is kind of smarmy. I get it – it’s a small town paper and Miriam got sent out on this beat to write up a “local man spent money on novelty” story, but still.
  • The article is factual to my memory – no mention of my oldest brother who was in college at this point.
  • Yes, my dad did his taxes on the Apple and it probably took him longer than if he did it by hand, but it’s the principal of the matter. He also wrote a program to do linear regression and one that let you enter points and would plot out a polygon and calculate its area. I remember him using this to verify his brother’s recently purchased lot of land was in fact the area that the realtor claimed it was (spoiler: it was)
  • My mom hated that machine. It had a very short-lived life in that location and moved around the house frequently. For a time it lived in the basement, about which my mom was no doubt thrilled, since she never went into the basement because she saw a mouse there once. My dad build a computer desk for it and it moved into a 3 season porch that my folks converted into a year-round living space. The problem was that it had electric baseboard heating that was off most of the time to save money. You had to plan way ahead to use it. In addition, the disk drive didn’t like the cold and needed some run time to get up to speed. I would go in, turn on the heat, turn on the computer, toggle a memory location ($COE9, IIRC) to turn on the motor. I left for 20 minutes and came back to a warmed up room and a warmed up disk drive.
  • My brother Pat and my Dad invented PowerPoint. Pat wrote a program in 1981 called ViewGraph Maker that let you put text and graphics onto the screen and print it out get run through a machine that turned black-and white pages into overhead transparencies. For my dad, this was a game changer. He did a lot of presentations at Bell Labs and if you wanted to present slides, you either had them made for you (cost, time), or you tried your best with pen and paper.
  • Stonehenge Computer was my home away from home. Dennis tolerated me. Mike Mahoney, his partner, on the other hand absolutely encouraged the local kids.
  • Hopalong Cassidy came with the Apple System disks.

I’m Old, Part LXXXVI: Cereal Bug Fixes

A pile of Cap'n Crunch with Crunchberries cereal

When I was a kid, I really enjoyed Cap’n Crunch cereal. I don’t know what it was about it that I enjoyed (these days I avoid food with added sugar) but it was worth the palate shredding at the time. Once in a while we’d get the variety with Crunchberries. This was a rare enough event that I would carefully eat around the Crunchberries leaving them behind so that at the end I had a bowl of Crunchberries in milk that was slowly turning pink. I did the same thing with Lucky Charms or any other cereal that had special kernels in it so I could enjoy them all at once with no effort.

To that end, I just submitted this PR to my project Binding Tools for Swift. It fixes a typo in an issue opened more than a month ago after one of my peers spotted it in a previous PR. It’s a no brainer fix – rename the method and Visual Studio takes care of the rest.

Why did I wait more than a month to do fix this? Two reasons: 1. I was hoping that the “good first issue” would entice someone else to have a go at fixing it to get their feet wet on the code base and 2. for the past month, I’ve been working on mostly challenging issues. Sometimes it’s nice to get work done, but still take a break.

This is the same as setting aside the Crunchberries. It’s a way of setting aside a reward. Sometimes the reward is a small one like this. Other times, it’s a refactoring that you know will make so many things better. Current Steve likes to set up nice things for Future Steve so that when Future Steve becomes Current Steve, he’ll be more likely to be forgiving of Past Steve’s mistakes.

Do you find ways of doing that? If so what?

I’m Old, Part LXXXV: Bug Decay

In the past 15 years, I’ve become a huge fan of unit tests. Whenever I start a new project, one of my first questions is “how can I unit test this?” And admittedly, many of my unit tests tend to be heavyweight and less unit and more macro.

For example, in working on Binding Tools for Swift, in order to test my code, I need tests that can write swift code, compile that swift code, run my tooling on it which generates an API, write C# code that exercises that API and prints out some useful indication that it ran. The actual test reads the output and compares it to an expected output. It’s not pretty, but it works. Or at least I have 1545 indications that it works so far.

From time to time, it’s been necessary to do a wide-reaching refactoring of the code base. It is at these times that I’m very happy that I have unit tests that exercise a wide range of my code. Recently, it became apparent that my old code for reflecting on compiled swift code, which is a custom build of the swift compiler, was not going to work as is. Fortunately, swift has added the ability to produce a text-only version of the front-facing API of the code: the swiftinterface file. This file contains a subset of the swift grammar, so I wrote a parser for it using ANTLR which generates (ostensibly) the same XML representation of reflection information as the compiler-based version. After a couple months of implementation and some basic testing (I have ~100 tests on the XML reflection code), I unleashed it on my whole test suite. I got about 800 failures.

After a day and a few PRs, I had that down to about 422 failures. After the next day, it was down to 212 failures. After the next day and more PRs, it was around 100. See the pattern? Every day I was reducing the failures by 1/2, which is akin to exponential decay. This is common enough that whenever I work on a refactoring like this, I start of up a spreadsheet with the number of failures over days. This does two things: confirmation bias of my hypothesis and more importantly it lets me see the progress over time.

Try it some time and see how you do.

Now let’s think about the why. What I think happens is that in reasonably factored code you get bottlenecks: places where there is a lot of code traffic. Code issues that affect bottlenecks are going to cause a lot of failures. Getting rid of an issue in a bottleneck will remove a large number of failures as well as opening up access to new failure bottlenecks (usually more removal of old than opening up of new). Eventually, when the bottlenecks have been cleaned out, you’re left with issues in the fringes.

That’s my story and I’m sticking with it.