Why I Do It

The origins of my passion for computer programming and games

I have always loved games, as far back as I can remember. Even as a small child, I enjoyed all kinds of games, and I remember making up games and contests of my own. However, most analog games have at least a couple of drawbacks surrounding one concept: competition.

First, one had to find other people to play the game. I spent a lot of time alone in my childhood, so the opportunities to compete against others was limited. Even when players were available, the choices were limited by the number of people. Some games do not work with too few players, and if you have too many, somebody can get left out.

Second, when there are enough people to play a game, there are a lot of issues with inequity. Sometimes the skill difference at a game (or in general) is just too great for enjoyment, and the degree to which one enjoys any particular game is usually imbalanced. My sister was often around for games for two players, but she was three and a half years younger, so there were few interesting games where we were matched well.

At the time, I had not developed enough life skills to solve these problems through negotiation and sheer enjoyment of playing the game. I took games far too seriously, and probably was something of a poor sport. Nowadays, we have (well, had) Game Nights, which we have been doing for a couple of decades, and I am now far more concerned that everybody is having a good time than whether or not I win (or even play), in marked contrast to my youth.

One solution is provided by one-player games, and I have had a love for Solitaire since I first learned Klondike around the age of five (as fully documented when I wrote “I come by my love of Solitaire honestly“). Likewise, I have loved Pinball for about as long, as my uncle owned Campus Pinball in Ann Arbor (and that experience factors heavily in my life story), but Pinball was not readily available to me on a regular basis in my early childhood due to both location and funding.

Instead, I made up games and similar activities that I could play on my own. I created solitaire games (like the one player version of Go Fish! mentioned in the linked Solitaire post), held competitive events with my toys, like marble races or a challenge to see which Matchbox/Hot Wheels/cheap knockoff car would go the farthest (for which I invented different match systems, including the double-elimination bracket system), or made up strict sets of rules (i.e., algorithms) for automatic players in multiplayer games, like Monopoly, and then played against them. I had no reference to know that this was a rudimentary form of programming, but it is obvious looking back.

More to the point, I used to fantasize about having a “robot” (because in those days, there were no personal computers, simple calculators cost hundreds of dollars, and the only real computer I had ever seen was an enormous mainframe at MSU with multiple huge tape drives 😉) who would serve as my opponent(s) in these games, effectively making them one-player games.

About that time, Pong was released, and as fun as that was, it was still a two-player game (although on many occasions I played both sides, where the inequality of the experience between my dominant hand and the other was striking), so it was actually Breakout, released 4 years later, that became the first video game I really loved. (It was decades later before I learned that Steve Wozniak programmed that game just before founding Apple with Steve Jobs, who was also on that project.) Of course, from that point on, the video games came faster and faster. (Plus, Pinball Pete’s opened nearby, and I made slightly more than nothing with a paper route, giving me better access.)

I was also introduced to Dungeons and Dragons, which is ostensibly a social role playing game, but for the first several years of my fascination, I never actually played it as designed, but rather read through the books of rules and played scenarios (alone) as Dungeon Master, as well as controlling the players, and/or a group of monsters, given algorithmic motivations, which (unbeknownst to me) was building toward computer adventure/role-playing games.

All of this led up to My First Programming Experience. I was hooked; for years I had dreamed to be able to do exactly what I have been able to do since then. Also, the technology rapidly exceeded what I could ever imagine (as detailed in Still Coding After All These Years). Occasionally, I have to take a deep breath and reflect on this fact.

This job is truly, and literally, a dream come true.

Still Coding After All These Years

Today is my 40th anniversary of programming a computer.

December 22, 1978: This day marked the first time I walked into a computer store, the first time I played a game on a home computer (or even touched one), and the very first time I wrote a computer program.

Exidy Sourcerer

Of course, that very first program was pretty BASIC. 😉  I learned the concept of programming, line numbers, how to RUN and LIST a program, and (at least) my first two commands, PRINT and GOTO, on that same day.

The very next day, I learned (more) about variables, FOR loops, and number theory (mathematics, not programming), as I helped an MSU student debug his program, and then further experiment with it.  We noticed that abundant numbers are often bounded on each side by primes, but this is not universal.

I urge you to read more about My First Programming Experience.

Computers were awesome!

A few years later, as I was on an airline flight, I took out my pen and paper and started writing a wishlist for the “perfect computer” for me, dreaming about what could be possible in the future.  I envisioned lots of colors, crazy amounts of memory (like 64K!), and larger custom character sets, which idea gave way to (really out there) thoughts of individually addressable pixels at very high resolution (say, 640×400).  At a conference, I saw a display with a “true color” screen image of an apple (fruit) at 1024×1024 and that blew my mind.

In the intervening years, I have had loads of milestones and accomplishments:

  • January 13, 1982: founded Sophisticated Software Systems
  • Summer 1982: had first professional programming job
  • Late summer 1982: purchased very first computer, a Commodore VIC-20
  • 1984: won the ComCon ’84 International Programming Competition
  • 1984: started first full-time programming job with Michigan State University
  • 1988: landed game programming job with Quest Software
  • 1989: published first retail game product, Legacy of the Ancients
  • April 22, 1990: self-published shareware game, Pacmania 1.10
  • February 1, 1993: started as Senior Software Engineer at Spectrum Holobyte
  • 1994: went full-time as an independent game developer
  • 1995: incorporated business as SophSoft, Incorporated
  • 1996: launched Digital Gamecraft for developing independent games
  • 2002: Goodsol Development released Pretty Good MahJongg
  • 2004: served as Chairman for the Association of Software Professionals
  • 2007: created first Mac game, Pretty Good Solitaire Mac Edition
  • March 27, 2013: A Little Solitaire became the #1 card game for iPad
  • 2013: published first Digital Gamecraft title for iOS, Demolish! Pairs
  • 2016: established and ran Advanced Concepts Group at DAQRI
  • 2018: published an Android version of Demolish! Pairs

These are just a few of the major highlights, but none of these events made as much of a difference in my life as that day I walked into New Dimensions in Computing.  Of course, there are a few personal milestones that really affected things as well, but most of these also happened within this time frame (more than 76% of my lifetime).

Today, I am back doing what I love: programming.  Even when things are tough, I truly enjoy the development process and can get ‘in the zone’.  When people would ask me what my favorite game was, I would often reply something like, “C++”. 🙂

Amazingly, I now have a stable of portable devices, each of which far exceeds my ultimate imagination for my perfect computer, and many of them blow away the visual capabilities of that screen that mesmerized me back in the early 1980s (and I never even considered the possibility of 3D rendering capabilities).  My phone fits in my pocket yet is more powerful than my first PC, and my watch is more powerful than that first computer.

Computers are awesome!


Lightning Strikes

Inexpensive computer versus Mother Nature

Being discouraged from access to my computers for a while by an intense electrical storm, I thought back to this interesting experience I had back in the distant past, in the earlier part of my career.

For a couple of years, ending in 1987, I was the Service and Support Coordinator for a local computer store, Midwestern Technical Products, now long deceased.  In addition to programming, which was (initially) not enough work to fill a full-time position, I also served as the Service Manager, overseeing 4 technicians, as well as administering the (nominal) internal network and handling various other technical duties.

One day, a customer came into the store with a non-working Texas Instruments TI-99/4A, which had been the victim of a lightning strike.  Apparently, his house had been struck directly, destroying most of the electronics, and while the insurance company had replaced his television and stereo, he still wanted to recover this inexpensive computer.  Keep in mind that the TI-99/4A was already obsolete by this time, and when it was last available for purchase the retail price was down to only $99.

While “checking in” the computer (filling out the work order, etc.), I explained to the customer that, at a service charge of $65/hour, with (usually) a 30 minute minimum, it was highly unlikely that we would be able to fix the computer for less than it was worth.  Nevertheless, the customer insisted that we take a look.

Later that day, when the technician assigned to the initial assessment got to that work order, I was summoned back to the service room so that he could take pains to explain to me exactly what I had already told the customer.  Of course, being the manager, I also got a question along the lines of “What exactly do you expect me to do with this?”

So, just combining troubleshooting with a little brainstorming, I asked how much had been done so far, and was able to ascertain that that the problem has been verified, i.e., the computer has been plugged in and did absolutely nothing.  The technician was guessing, based on the lightning story, that the power supply was fried.  I then asked whether we were able to confirm that electricity was even getting to the power supply.  He had been so anxious to tell me how unlikely an economical solution would be that he had not even gotten that far, so while I watched, he learned that no voltage was getting through the power cord.  Of course, it was possible that the whole computer was toast, but until we could actually apply power to it, there was no way to know.

At this point, the technician (who appeared to just want my permission to dismiss this job and move on) said, “Now what?”  I looked at the power cord and noticed that, unlike many cords that had (and still do) a “wall wart” at the plug end, this cord had a wart in the middle of the cable.  Since we knew power was not getting all of the way through the cable, I thought that we could, literally, divide and conquer.  Looking closer at the bulge in the cord, I saw that there was a seam, and if we could split it, we could determine which half was at fault, or maybe get lucky and find something repairable in the middle.  I took the risk of destroying the (already failing) power cord and pried the wart apart.

What I discovered was surprising, but also surprisingly logical.  To move the wart electronics away from the wall, rather than design and manufacture a new cord, some brilliant engineer decided to simply plug the wart into a short extension cord (designed to match the size) and just glue the two together into one cord.  (Actually, I cannot say with absolute confidence whether it was glued, deliberately melted, or fused by lightning.)  In any event, pulling apart the cord gave us a shorter TI-99/4A power cord, and a short extension cord, with no exposed electronics at all.

I must admit here to skipping a couple of steps in our excitement.  Instead of testing each half of the power cord, I simply had the technician plug in the power cord, without the little extension, and, lo and behold, the computer sprung to life.  The cheap little extension, provided (apparently) just to make the cord easier to fit into a wall plug, ended up serving as an unconventional fuse, protecting the computer by self-destructing when lightning hit.

Availing myself of my (questionable) authority, I went ahead and reduced the minimum charge, in this instance, to only 15 minutes, and for $16.25, we had a happy customer with a working TI-99/4A, and also a story I remember 27 years later.

“I can’t stop, I can’t stop myself…”