Secret Writer’s Society and the worst bug ever
Panasonic Interactive Media’s game Secret Writer’s Society was supposed to teach kids how to write well. Instead, it became infamous. The game had a text-to-speech feature that would read back what you wrote, and under the right circumstances in the Macintosh version of the game, it would read a list of obscenities instead.
“Computers are revolutionizing education, sometimes in surprising ways. Now there’s software that can teach kids how to cuss like a drunken stevedore,” raved Robert Cwiklik for the Wall Street Journal.1
According to PIM marketing manager Kari Gibbs, the company had begun replacing copies of Secret Writer’s Society by June 17, 1998,1 four months after it originally shipped on February 10.2 Panasonic blamed the issue on “an undetected bug” that would accidentally read words from the program’s language filter if the computer was slow or having memory issues.1,3 But there was another story. Andrew Maisel, who was the first to discover the supposed glitch and reported it on his educational software review website SuperKids, says he reproduced it on “healthy Power Macs with lots of memory.”3 Could something else be at play here?
In a shocking, hilarious twist, anti-corporate activist group RTMark claimed in October 1998 that it was a work of internal sabotage. According to their statement, an anonymous programmer contracted by Panasonic said they were trying to call attention to the dangers of parents handing their responsibilities to a computer game. “Letting a third-rate piece of software take over for you is wrong because it violates that contract,” they said. “What I did isn’t a crime. The crime is letting profits get in the way of education.” RTMark said they awarded the programmer $1000 for their action.
Panasonic insisted that the rogue program was just the result of a bug, nothing as salacious as industrial sabotage. Elizabeth Olson, Panasonic’s communications manager, told The Independent in November 1998 that, “To our knowledge there is no truth to this claim. [RTMark] seem to be claiming responsibility for something they didn’t have anything to do with.” (“It could be that they really do think it’s a bug,” RTMark’s Ray Thomas responded.) Either way, the damage was done, and when Panasonic Interactive Media was shut down months later in March 1999, Consumer Electronics blamed Secret Writer’s Society for harming the group’s reputation.4
Secret Writer’s Society was quickly forgotten after that – probably to Panasonic’s relief – and has been missing ever since… until I managed to get a copy this week. And yes, it’s the version with the swears.
The game is series of seven writing lessons. They’re framed as tests for your induction into the Secret Writer’s Society, a mysterious, underground club of writers. To entice children to think of this like a secret mission rather than writing instruction, the full copy of the game came with a society membership card and spy-style writing supplies like “decoder pens.”2
All the bonus accessories can’t disguise that Secret Writer’s Society is a rote exercise in formal writing structure. It teaches punctuation, capitalization, ordering sentences in a paragraph, and other functional parts of writing, explained with crummy School House Rock-style music videos, but there’s no imagination here. Programs like MECC’s Storybook Weaver or Edmark’s Imagination Express have colorful pictures from fantastical settings that inspire kids to dream up stories to tell; in comparison, this game doesn’t get to the creative writing prompts until the final lesson, after 20 minutes of punctuation drills, and even then, the focus is on proofreading. It teaches you how to write but not why to write. The membership card would’ve been cool, but it might not have been inspiring.
There are two places in the game where you can do freewriting: the final lesson and a diary feature. These are where the trouble happens.
Clicking the Read button in the freewriting sections will make the program read back what you’ve written. On the Macintosh version of the game, if you interrupt by click the Read button again… this happens.
It’s a lot subtler than expected. There’s not a whole stream of obscenities. It just reads a few snippets from the swear filter list. It’s a pretty long list, somewhere around 100 words with variations. Any words written in all caps are spelled out instead. (Yes, as you hear in the video, one of the words is “PENUS,” just in case a kid spelled it wrong.)
The CD-ROM label says this copy of Secret Writer’s Society is Version 2.0, and a few files on it were modified after the game’s original February release date. Maisel’s report on SuperKids said the corrected replacement copy is Version 3.0. So that means the game was revised and was re-released at least once before anyone noticed the problem, which is incredible. The Strong Museum of Play in Rochester, NY has a beta version of the game dated November 3, 1997; earlier this week, I visited the museum and played it with the help of digital games curator Andrew Borman, and we found that the game didn’t have a swear filter at all. So the filter – and the related problem – were both very late additions in development.
(The game had a fourth version released by 99V Phonics Reading & Writing in 1999; the company, now known as Learning Upgrade, says on their old website that they owned the trademark to Secret Writer’s Society, so they must have acquired it after Panasonic Interactive Media closed.)
So what’s happening here? When you click the Read button in the Mac version of the game, it pauses for a few seconds to load the text. If you click it again, the game will start loading the text again. It will keep reading in the meantime, but as soon it hits any punctuation, it will begin reading from a random point in the swear filter list instead until the text finishes loading. If you wrote a very short paragraph, you might hear a single letter; if you wrote more, you’ll hear many more forbidden words. If it’s related to the game’s loading speed, this would explain why Maisel reported that this only happened with a long passage and why Panasonic says the issue only occurred on slower computers with memory issues.
As it turns out, this wasn’t sabotage, and it was in fact a very, very bad bug. Since this article was published, readers have pointed out that the problem appears to be a memory management issue, and in the comments below, tomysshadow couldn’t find evidence of tampering in the Macromedia Director Lingo code. Based on how close together the text passage and the swear filter are kept in the program’s memory, the way the Macintosh version re-loads the text (pausing the program while continuing to read) seems to cause it to read from the wrong places in memory. Panasonic’s Olson said producer Makoto Morise implemented the swear filter, and although the company thought they had tested it, “evidently we didn’t test it well enough.”
RTMark co-founder Igor Vamos confirmed to me via email that the sabotage story was made up. “The bug had such a deliberate appearance; it would have been a crying shame to not pile on with additional layers of provocative story,” Vamos said.5 RTMark has a history of stretching the truth about their actions, and their story about Secret Writer’s Society was a big fib too.
It’s believable that the swear filter really was implemented this badly, because the game is kinda shoddy. It has trouble saving diary entries and keeping track of what user icon you selected, there are occasional error messages from Macromedia Director, and the Mac version accidentally included a random desktop file on the disc. If an act of sabotage could have made it into the final product, it’s only because the game was so slipshod that nobody would have noticed.
That actually ends up making RTMark’s point for them. RTMark made up the story about the rebellious programmer to raise concerns that parents were willing to trust a piece of software to teach their children. How can you be sure you know how the program works? What if it wasn’t tested well – like it wasn’t here? It’s a problem that continues to be relevant today, as programs and algorithms that we don’t understand are continuing to influence more of our lives, like YouTube’s recommendation engine gradually pointing viewers to right-wing extremist videos.
In the case of software as roughly assembled or with as little creative imagination as Secret Writer’s Society, can you blame them for being skeptical?
(This article was revised on July 19, 2019 to incorporate new information about this bug from readers, as well as Igor Vamos’s comment. Thanks to Vamos for responding – and to everyone who analyzed the program to reveal there was no evidence of tampering.)
In the interest of preservation, I have uploaded Secret Writer’s Society Version 2.0 to the Internet Archive.
1. Cwiklik, Robert. (1998, June 17). ‘Honest, mom, I don’t even know what those @$%& words mean‘. The Wall Street Journal, p. B1. Retrieved from https://search.proquest.com/docview/1699336205
2. Panasonic Interactive Media. (1998, Feb. 10). Psst…Can You Keep a Secret? Panasonic Interactive Ships “Secret Writer’s Society” [Press release]. Retrieved from https://search.proquest.com/docview/447002290
3. Panasonic yanks kids’ program with curses. (1998, June 26). Communications Daily, 18(123). Retrieved from Factiva
4. Panasonic folds media group. (1999, March 1). Consumer Electronics. Retrieved from LexisNexis
5. Vamos, Igor (2018, July 12). Personal communication.
Thank you so much for posting this game
So, I’ve actually written a Lingo decompiler with a couple people and thought it’d be a fun exercise to see what’s going wrong. It’s very primitive though, so at points I can’t tell what the code is actually supposed to say.
Here’s how the checkBadWords handler is decompiled, where field(“badwords”) will return a string with each bad word separated by carriage return, and tString is the diary message typed in, and this handler returns the string that is directly fed into the TTS voice:
tBadWords = field(“badwords”)
tNewString = “”
tNumOfWords = the number of words in tString
index = 1
repeat while index 0 then
delete char 1 of tWord
tLen = the number of char in tWord
if tLen > 0 then
repeat while not isChar(tWord.char[the number of char in tWord])
delete (the number of char in tWord) of tWord
index = 1
repeat while index = 65 and charToNum(tChar) = 97 and charToNum(tChar) = 48 and charToNum(tChar) <= 57 then
So what I think this is intended to do is remove any punctuation from the beginning or end of the word and then check if the word is on the list of bad words, and if it is don't add it to the output string. I don't see any immediate issue with this code, since remember, none of the bad words have punctuation in the middle.
Maybe, if I had the patched version, it could be compared side by side. Just thought it'd be fun to take a look at the inner workings of the bug. If a programmer did sabotage this on purpose, the code to cause it doesn't stick out.
It seems my code from before got mangled. Here it is on PasteBin:
Whoa, thanks for the detective work! It’s interesting to see how that’s handled. This seems to back up the idea that the bug (intentional or not) would be in memory management and not the scripting.
There are a few libraries that still carry Version 3.0 or 4.0. It might be possible to get a copy from them to compare what changed…
An excellent post, thank you!
Sounds like a horribly written piece of software, beyond the amusement of exploiting this bug. Why did you give it the “recommended” tag, Phil?
(I’m reading through all your recommended entries, and this one really sticks out.)
I’ve been meaning to split up the “recommended” tag into favorites games and recommended posts. I think this is a really interesting story worth reading, but it’s definitely not a personal favorite game. I realize lumping those together is probably confusing, so thanks for the reminder that I need to address that.