By 1986, a moose could appear on a Macintosh screen. He spoke aloud, moved his mouth to match the words and told jokes.
Canadian physician and programmer Steven B. Halls created the Talking Moose, back when a recognizable face had to be assembled from 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 belong to a different sort of story: one 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. 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 first version was written by Halls in assembly language. Getting the lips to track the speech required some cleverness. As Halls recalls, the program located Macintalk, the Macintosh speech engine, in memory. It watched information about the sound being played, then adjusted the Moose's mouth shape accordingly.
None of this altered the speech engine's memory. The Moose was simply watching it. Early Macintosh software could access memory across applications in ways that modern operating systems generally restrict.
With that access, the character could comment on window and document names in applications users knew well. A Moose that seemed to know something about your work was responding to information on your own computer. Its behavior was programmed, with no language model behind the face.
Around 1989, the Moose gained color. On his wall, Halls kept a picture of that version, printed with an early Macintosh color printer. The scans in his color Moose account still reveal the printing dots.
Here is a small piece of computing history to inspect: the character as it looked then, kept on paper as well as in software.
Old users supplied 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."
That letter sits among other recollections sent to Halls. Decades on from using the software, people remembered the character well enough to write to its maker.
The Windows Moose that followed had a three-dimensional head. Its ears moved; its eyes looked around. Eyebrows and mouth gave it more expressive scope than the original pixels could manage.
Those movements would have become predictable if the same animation clips played over and over. Instead, the Windows character turned to procedural animation, with algorithms generating its motions.
Halls's explanation of the animation describes controlled randomness. A movement could stop near a target rather than at exactly the same spot each time. Both its speed and the pause before the next movement varied. The result avoided looking mechanical, thanks to smooth acceleration and deceleration.
With the platform, the lip-sync mechanism changed. Timing information from Microsoft's Speech API told the Windows character which mouth shapes to use. Nobody needed to recreate that old Macintalk technique of observing memory.
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. A phone entering a home geofence triggered a spoken "Welcome home" on the user's PC in another example.
There was no need to keep checking a screen for those messages. Hearing them was enough.
Forty years stand between the original Moose's 1986 appearance and today's enthusiasm for AI assistants. To call it an early version of today's conversational AI would miss what Halls actually built. Speech synthesis and carefully written animation code sufficed to make a joke appear to come from an antlered companion.
That companion, for Mike Ellis, belonged on his Mac Plus. The later Windows project could make it the voice announcing rain or greeting someone arriving home.
Looking at the early screenshots is still worthwhile. Plainly a face made of pixels, it was nonetheless remembered by a former user as a companion. That's quite a result for a joke-telling moose.