The Craft Behind Coding
A Macintosh in 1986 could show a moose on its screen. He spoke out loud and told jokes, his mouth moving to match the words.
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. This one gained a personality from very few pixels.
Talking computers today often raise questions about 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.
So why a moose?
It came down to the antlers.
Images of the original Talking Moose show a two-dimensional Macintosh character. There was little room for detail, so 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 follow the speech took some ingenuity. In his recollection, the program found Macintalk, the Macintosh speech engine, in memory. Watching data about the sound being played, it then adjusted the Moose's mouth shape to match.
This didn't change the speech engine's memory. The Moose was observing that memory. Early Macintosh software could access memory across applications in ways that modern operating systems generally restrict.
That same access let the character remark on window and document names in familiar applications. 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.
The Years in Color
The Moose had taken on color by about 1989. Halls kept a picture of that version on his wall, printed with an early Macintosh color printer. His color Moose account includes scans with the printing dots 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.
Early users provided 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. Decades on from using the software, people remembered the character well enough to write to its maker.
Making a 3D Head Seem Alive
The later Windows Moose had a three-dimensional head. Its ears moved; its eyes looked around. 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 used procedural animation, with algorithms generating its motions.
The animation, as Halls explains it, uses controlled randomness. 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. The result avoided looking mechanical, thanks to smooth acceleration and deceleration.
The lip-sync mechanism changed with the platform. On Windows, Microsoft's Speech API supplied timing information that told the character which mouth shapes to use. Recreating the old Macintalk memory-observation technique was unnecessary.
Something Useful to Say
Jokes stayed part of the Moose, though plugins gave it other things to talk about. Reminders and notifications were joined by news and weather.
A working Pushover connection appeared in a June 2016 update, with events for the Moose to announce supplied by IFTTT. One example gave warning of approaching rain. A phone entering a home geofence triggered a spoken "Welcome home" on the user's PC in another example.
You didn't have 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. 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 on his Mac Plus. The later Windows project could make it the voice announcing rain or greeting someone arriving home.
The early screenshots are still worth a look. It's plainly a face made of pixels, yet a former user remembered a companion. Quite a result, for a moose that told jokes.
