21 Aug 2022
Adam74 terminal.

Adam74 is a small ASCII terminal intended for hobbyist 8-bit computers. It has a simple, vintage-style interface: 7 pins for 7-bits of ASCII data and another "strobe" pin to tell the Adam74 to add the character to its buffer and display it. Special control characters allow cursor movement, etc. You can select either amber or green text — inverted text is supported as well.

I go into more detail here:

Apple Interview (1995)

13 May 2022
Glider sources.

…I found out though that bringing in a bound book of your source code to the interview is rather unusual. When I sat down in a small conference room across from two Apple engineers and put my Glider book between us, there were smiles and looks of surprise from the interviewers. That it turned out to be a conversation starter was a happy accident…


Jigsaw Puzzle

30 Apr 2022
5000 piece puzzle.

I was putting together a jigsaw puzzle the other day and it suddenly took me back to over twenty years ago when I was putting together another jigsaw puzzle — or I should say I was helping several people put together. That jigsaw puzzle was an enormous one, perhaps 5000 pieces that someone at work had deposited on a very large table in one of the common areas.


Mooncraft 2000

25 Apr 2022
Mooncraft 2000 screenshot.
Mooncraft 2000 screenshot.

Mooncraft 2000 is a web-based lunar "voxel" game. It uses a classic 90's game algorithm to render a voxel-like terrain. I wrote it in Javascript using the HTML5 Canvas.

The Moon terrain is accurate — I began with NASA data. The game-play is straight-forward: you move cargo from one lunar base to another gaining in rank as you do so. Beginning as a lowly Apprentice, you try to learn to fly, manage fuel and move enough cargo to get to Journeyman and then, if you persist, Master class.

I begin a series of posts on how the code works and the process I went through in creating the game here…

Tom Dowdy

3 Apr 2022
SimpleText document icon (Macintosh, System 8).
SimpleText document icon (System 8).

Tom Dowdy was a software engineer at Apple back in 1995 when I was still writing Macintosh games in Lawrence, Kansas. One of his programming responsibilities was to maintain Apple's SimpleText (aka TeachText) application (see document icon above) — a basic text editor that shipped with the Macintosh. He was also the tech-lead (technical leader) for the graphics component of Apple's newest graphics framework called Quickdraw GX.



17 Mar 2022

SystemSix is a small desk accessory sort of thing written in Python running on a Raspberry Pi and driving a small e-ink display. It fetches your calendar events and the local weather and displays them with the look of an early Macintosh running, of course, the System 6 operating system.

It changes the "desktop" from day to day, has several possible layouts, over 100 icons of classic apps it selects from. If your first Mac was from this era, it should bring back fond memories when you check on it in the morning and see what surprises it has for you.

Note: I know it looks interactive, but I assure you it is static, changing the desktop only once a day.
My love letter to my first Macintosh.
My love letter to my first Macintosh.

Sources and an instructive are available on GitHub if you want to build/run your own.

More in depth detail on how I put together SystemSix here.


12 Mar 2022

Some years ago I had written a sort of "Card Engine" framework to make card games like solitaire easy to write. I think I enjoyed is as an exercise in designing a framework, an API.

Rather than the playing card being the sort of fundamental class of the Card Engine, it was what I called the "Stack" or CardStack object, representing a stack, pile, or tableau of playing cards that really was primary.

To be sure, there was a Card class and the CardStack acted as a container for Cards. But the more significant methods that really implement the progression of a card game were on the CardStack objects: methods like CardStack.shuffle(), CardStack.dealTopCard(toStack:), etc.

I wanted to learn Javascript some years back so I wrote a couple of variations of solitaire for the web. The result ended up being Kardland.

Kardland logo.

I won't go any further into the weeds describing the classes. Suffice it to say that Kardland was the result of my taking this "Card Engine", more or less, and rewriting it in JavaScript as a way of trying to learn JavaScript.

I put the sources to Kardland on my GitHub page.

Don't laugh at the name, it was the best domain name I could think of that was available at the time.

Or, you know, if you just want to play a game of solitaire online, you could go to Kardland.

The sign-up/sign-in is broken since I just moved to a new server. You can still play the solitaire games though. I'll try to get the backend wired up again soon.


1 Nov 2021

My name is John Calhoun. I discovered computer programming around 1980 when I was in high school. Sometime in college, second half of the 1980's, I got an Apple Macintosh computer and fell in love with both the hardware and software. It was then that I began to really program.

In learning how to program my Mac Plus, I wrote some shareware games. One of these, Glider, I rewrote commercially for a small company, Casady & Greene, Inc. (based in Salinas, California). After it was published, I turned to programming full-time.

Mid-1990's I was hired by Apple Computer (now Apple, Inc.) and moved from Kansas to California where I married, raised a family and worked for the next 26 years.

I just left Apple and have returned to the midwest. Perhaps I will go back to writing shareware?