A Short History of Debugging
A Macintosh in 1986 could show a moose on its screen. He spoke aloud, moved his mouth to match the words and told jokes.
The Talking Moose was created by Canadian physician and programmer Steven B. Halls, at a time when a recognizable face had to be built out of black-and-white pixels. It didn't take many pixels to give this one a personality.
Today, talking computers usually bring up questions of artificial intelligence. The Moose's beginnings tell a different kind of story, that of one programmer working out how to make a computer-generated voice seem to issue from a character.
Why a moose, though?
It came down to the antlers.
Pictures of the original Talking Moose show a two-dimensional Macintosh character. With little room for detail, its outline had to do much of the work. As Halls recalls, antlers were easy to recognize at a small size. Liking moose himself settled the matter.
The original code was written by Halls in assembly language. Making the lips follow the speech took real ingenuity. In his recollection, the program found Macintalk, the Macintosh speech engine, in memory. It observed the sound being played and then changed the Moose's mouth shape to suit.
The speech engine's memory was not changed by this. The Moose was simply watching it. Early Macintosh software could reach across applications into memory, in ways modern operating systems generally restrict.
The character could also comment on window and document names in familiar applications, thanks to that access. Information on your own computer was what a seemingly knowledgeable Moose was responding to. Behind the face was programmed behavior, not a language model.
Into Color
Around 1989, the Moose gained color. A picture of that version, printed with an early Macintosh color printer, hung on Halls's wall. His account of the color Moose includes scans where the printing dots are still visible.
It's a small piece of computing history you can inspect: the character as it looked then, preserved on paper as well as in software.
Old users supplied another kind of record. Mike Ellis, in a letter published in 2016, recalled seeing the Moose at a Boston Mac Developers Group conference in the late 1980s:
"Some of the cleverest developers I've ever known admired him widely, and he became my constant companion on my Mac Plus."
Other recollections sent to Halls sit alongside that letter. Even decades after using the software, people remembered the character well enough to write to its maker.
Making a 3D Head Seem Alive
The later Windows Moose came with a three-dimensional head. Its eyes looked around, and its ears moved. More expression came from its eyebrows and mouth than the original pixels could manage.
Repeating the same animation clips would have made those movements predictable. Instead, the Windows character turned to procedural animation, with algorithms generating its motions.
The animation, as Halls explains it, uses controlled randomness. Rather than ending at exactly the same spot, a movement could finish near a target. Its speed varied as well, and so did the pause before the next movement. The result avoided looking mechanical, thanks to smooth acceleration and deceleration.
With the platform, the lip-sync mechanism changed. On Windows, the character took timing information from Microsoft's Speech API to choose its mouth shapes. Recreating the old Macintalk memory-observation technique was unnecessary.
Something useful to say
The Moose kept its jokes, but plugins added other things for it to talk about. To reminders and notifications were added news and weather.
A June 2016 update set out a working Pushover connection, in which IFTTT supplied events for the Moose to announce. Approaching rain was the subject of one example. In another, a phone entering a home geofence triggered a spoken "Welcome home" on the user's PC.
There was no need to keep checking a screen for those messages. You could simply hear them.
A Voice That Had a Face
Between the original Moose's 1986 appearance and the current enthusiasm for AI assistants lie forty years. What Halls actually built would be missed by calling it an early version of today's conversational AI. Speech synthesis and carefully written animation code sufficed to make a joke appear to come from an antlered companion.
For Mike Ellis, that companion belonged on his Mac Plus. The later Windows project could make it the voice announcing rain or greeting someone arriving home.
The early screenshots still repay a look. A face made of pixels, plainly, yet a former user remembered a companion. That is quite a result for a joke-telling moose.
