In 1986, you could put a moose on a Macintosh 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. Few pixels were enough to give this character a personality.
Questions about artificial intelligence tend to follow today's talking computers. The Moose's beginnings belong to another kind of story: a single programmer working out how to make a computer-generated voice seem to come from a character.
The antlers helped.
The original Talking Moose appears in pictures as a two-dimensional Macintosh character. Since there was little room for detail, much of the work fell to its outline. Halls recalls that antlers were easy to recognize at a small size. Liking moose himself settled the matter.
The first version was written by Halls in assembly language. Making the lips follow the speech took real ingenuity. The program located Macintalk in memory, as Halls recalls, that being the Macintosh speech engine. It observed information about the sound being played, then adjusted the Moose's mouth shape to suit.
This left the speech engine's memory untouched. The Moose was watching it. Early Macintosh software could reach across applications into memory, in ways modern operating systems generally restrict.
With that access, the character could comment on window and document names in applications users knew well. Information on your own computer was what a seemingly knowledgeable Moose was responding to. Its behavior was programmed, without a language model behind the face.
Around 1989, the Moose gained color. Halls kept a picture of that version on his wall, printed with an early Macintosh color printer. His account of the color Moose includes scans where the printing dots are still visible.
Here is a small piece of computing history to inspect: the character as it looked then, kept on paper as well as in software.
Early users provided another kind of record. In a letter published in 2016, Mike Ellis remembered 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. Decades on from using the software, people remembered the character well enough to write to its maker.
A three-dimensional head belonged to the later Windows Moose. Its eyes looked around, and its ears moved. More expression came from its eyebrows and mouth than the original pixels could manage.
Those movements would have become predictable if the same animation clips played over and over. The Windows character used procedural animation instead, its motions generated by algorithms.
Halls's explanation of the animation describes controlled randomness. A movement could end near a target rather than at exactly the same spot each time. The pause before the next movement varied, and its speed varied too. Smooth acceleration and deceleration kept the result from looking mechanical.
The lip-sync mechanism changed from one platform to the next. On Windows, timing information from Microsoft's Speech API told the character which mouth shapes to use. There was no need to recreate the old Macintalk memory-observation technique.
Jokes remained part of the Moose, but plugins gave it other things to talk about. To reminders and notifications were added news and weather.
A June 2016 update described a working Pushover connection, IFTTT supplying the events for the Moose to announce. In one example, the Moose warned of approaching rain. Another saw a phone entering a home geofence trigger a spoken "Welcome home" on the user's PC.
You didn't have to keep checking a screen for those messages. Hearing them was enough.
Forty years separate the original Moose's 1986 appearance from the current enthusiasm for AI assistants. Describing it as an early version of today's conversational AI would miss what Halls actually built. Enough to make a joke seem to come from an antlered companion were speech synthesis and carefully written animation code.
For Mike Ellis, that companion belonged to his Mac Plus. For the later Windows project, it could be the voice announcing rain or greeting someone arriving home.
Those early screenshots are still worth a look. Plainly a face made of pixels, it was nonetheless remembered by a former user as a companion. For a joke-telling moose, that is quite a result.