In 1986, a Macintosh could have 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. This one gained a personality from very few pixels.
Talking computers today often raise questions about artificial intelligence. 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. Antlers, Halls recalls, were easy to make out at a small size. He liked moose as well, and that settled the choice.
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 watched information about the sound being played, then adjusted the Moose's mouth shape accordingly.
This didn't change the speech engine's memory. The Moose was observing that memory. Early Macintosh software could reach across applications into memory, in ways modern operating systems generally restrict.
That same access let the character remark on window and document names in familiar applications. A Moose that appeared to know something about your work was reacting to information on your own computer. No language model stood behind the face; its behavior was programmed.
By around 1989, the Moose had acquired color. A picture of that version, printed with an early Macintosh color printer, hung on Halls's wall. The scans in his color Moose account still reveal the printing dots.
It is a small piece of computing history you can inspect, the character as it looked then, preserved on paper as well as in software.
Early users provided another kind of record. A letter published in 2016 has Mike Ellis recalling the Moose at a Boston Mac Developers Group conference in the late 1980s:
"He was widely admired by some of the cleverest developers I've ever known and became my constant companion on my Mac Plus."
Among the recollections sent to Halls sits that letter. Even decades after using the software, people remembered the character well enough to write to its maker.
The later Windows Moose had a three-dimensional head. Its ears moved, and its eyes glanced about. Eyebrows and mouth gave it more expressive scope than the original pixels could manage.
The same animation clips, played repeatedly, would have made those movements predictable. Algorithms generating its motions gave the Windows character procedural animation instead.
Controlled randomness is what Halls's explanation of the animation describes. Each movement could end near a target, not at precisely the same spot every 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 with the platform. 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. News and weather came alongside reminders and notifications.
A working Pushover connection appeared in a June 2016 update, with events for the Moose to announce supplied by IFTTT. One example warned of approaching rain. 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 hear them.
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. That's quite a result for a joke-telling moose.