Craig Shaw Gardner: Dangerously Creative Writer of Fantasy, Horror and Science Fiction

The Early Days of Notifications

By 1986, a moose could appear on a Macintosh screen. He spoke aloud, moved his mouth in time with 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.

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.

Why a moose, though?

The antlers helped.

Pictures 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. Halls recalls that antlers were easy to recognize at a small size. He also happened to like moose, so the choice was settled.

Halls wrote the original program in assembly language. The lips had to follow the speech, which took some ingenuity. As he recalls it, the program located Macintalk, the Macintosh speech engine, in memory. It observed the sound being played and then changed the Moose's mouth shape to suit.

None of this altered the speech engine's memory. The Moose was simply watching it. Accessing memory across applications was possible in early Macintosh software, though modern operating systems generally restrict it.

That access also let the character comment 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. Behind the face was programmed behavior, not a language model.

The Years in Color

By around 1989, the Moose had acquired 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.

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.

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:

"He was widely admired by some of the cleverest developers I've ever known, and he became my constant companion on my Mac Plus."

That letter sits among other recollections that were sent to Halls. Even decades after using the software, people remembered the character well enough to write to its maker.

Making a Three-Dimensional Head Feel Alive

A three-dimensional head belonged to the later Windows Moose. Its eyes looked around, and its ears moved. Compared with the original pixels, eyebrows and mouth allowed far more expression.

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. Rather than ending at exactly the same spot, a movement could finish near a target. Both its speed and the pause before the next movement varied. Smooth acceleration and deceleration kept it from appearing mechanical.

With the platform, the lip-sync mechanism changed. On Windows, Microsoft's Speech API supplied timing information that told the character which mouth shapes to use. The old Macintalk memory-observation technique did not need to be recreated.

Something useful to say

Jokes stayed part of the Moose, though plugins gave it other things to talk about. To reminders and notifications were added news and weather.

A working Pushover connection appeared in a June 2016 update, with events for the Moose to announce supplied by IFTTT. Approaching rain was the subject of one example. Another saw a phone entering a home geofence trigger 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.

A Face for a Voice

The original Moose appeared in 1986, some forty years before the current enthusiasm for AI assistants. What Halls actually built would be missed by calling it an early version of today's conversational AI. A joke could appear to come from an antlered companion, thanks to speech synthesis and carefully written animation code.

For Mike Ellis, that companion belonged to his Mac Plus. It could announce rain or greet someone arriving home in the later Windows project.

Those 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.