New Page Showcasing Text and Image Generating Programs Predating Contemporary Artificial Intelligence (AI)

A robot drawing a picture with pencil and markers. Image created with Stable Diffusion.

Since I’ve been writing about different kinds of software that generate text and images without using modern artificial intelligence (AI), I wanted to thread them together on their own page under the Research heading in the site menu above and available here.

Currently, the page collects together my posts about image generating software KPT Bryce and Evolvotron, and text-generating software Electric Poet, Kant Generator Pro, Mac Prose, and McPoet 5.1. I will update that page with additional links as I publish posts about other pre-AI generative software.

MacProse, the Macintosh Version of Prose for DOS Discussed in Charles Hartman’s Virtual Muse

MacProse for Macintosh, after launch, MacProse Output and Sentence Tree windows.

MacProse is a text generating application that focuses on sentences for Macintosh that Charles O. Hartman, Lucy Marsh Haskell ’19 Professor Emeritus of English at Connecticut College, programmed to conduct research for his book titled Virtual Muse: Experiments in Computer Poetry (Wesleyan UP, 1996). It is based on an earlier program for MS-DOS called simply PROSE. While MacProse is no longer available on Hartman’s Programs and Programming page on his personal website, thankfully there is a copy saved on the Internet Archive’s Wayback Machine here.

For such a compact application, MacProse does some interesting things with creating sentences–one at a time or as many as it can until the user presses the mouse button. Then, the user can save all of the output or copy individual sentences. When clicking a sentence, a diagram of how the sentence is put together is shown in the separate Sentence Tree window. Also, the user can design sentences using a built-in workflow.

In the accompanying “MacProse Doc,” Hartman writes, “MacProse is a Macintosh version of the old Prose program for DOS computers, described in The Virtual Muse. It generates syntactically correct English sentences, whose structure and vocabulary are both randomized” (par. 1).

He notes that “MacProse should run on any Macintosh with system software version 7.1 or later. It requires very little RAM and doesn’t much care about CPU speed.”

Considering some of the other text generating programs for Macintosh that I’ve written about before, MacProse is lightweight like Electric Poet 1.6, has an extensible architecture like Kant Generator Pro 1.3.1 and McPoet 5.1 (which is where I learned about MacProse!).

While the program certainly has a lot of potential as a generative text tool, Hartman writes in Virtual Muse, “I hope the book makes it clear that–for me and I hope for interested readers–the point isn’t the programs themselves (which are fairly simple and not particularly original) but the uses that can made of them” (ix).

Below, I’ll annotate screenshots of the application running on an installation of Macintosh System Software 7.5.5 on the PPC emulator SheepShaver hosted by Debian 12 Bookworm with the Xfce Haiku Alpha window theme active.

MacProse for Macintosh, MacProse Folder

The MacProse Folder contains the MacProse application, MacProse Doc (i.e., Read Me with info and help), PROSE.DIC (the word dictionary file used by the application), PROSE.GRA (the grammar file used by the application), and the Source folder (this source code has to be used with the EasyApp framework included with Jim Trudeau’s Programming Starter Kit for Macintosh, Hayden Books, 1995, which is copyrighted and not included).

MacProse for Macintosh, Get Info window for MacProse application

Like Electric Poet, MacProse is a very lean program. It is only 60,634 bytes and it uses very little RAM: 384 K. The MacProse folder, including the source code, is only 314,098 bytes.

MacProse for Macintosh, after launch, MacProse Output and Sentence Tree windows.

When MacProse is first launched, the user is presented with these two windows: MacProse Output (where generated text appears–each sentence being selectable and having its own structure) and Sentence Tree (where each sentence’s structure is diagrammed).

It is certainly has a spartan appearance, especially compared to McPoet 5.1. Hartman explains: “As Macintosh programs go, MacProse is brain-damaged and downright user-unfriendly. Since it has no input, and since its output is pretty rigidly organized as sentences, all kinds of interaction a Mac user expects are simply missing. The File menu contains only Save and Print and Quit (there’s nothing to Open). The Edit menu has the usual Cut, Copy, Clear, and Paste, but they work peculiarly–only on a whole sentence at a time. Selecting text in the output window is strange for the same reasons, as described below. And though the Output window looks like a text-editing window, you can’t type in it. All of these oddities follow from the basic peculiarity of MacProse’s function in life, which is that of Virtual Muse” (“MacProse Doc,” par. 4).

MacProse for Macintosh, Apple menu with an option for "About McProse."

The Apple menu has an option for “About MacProse.”

MacProse for Macintosh, About Mac Prose window with copyright information.

The About MacProse window gives copyright information for 1996 Charles O. Hartman, and explanation about its purpose: “MacProse, a random sentence generator, is described in detail in Virtual Muse: Experiments in Computer Poetry (Wesleyan University Press, 1996). Visit the Web site at:” Perhaps because of the version of Mac OS that I’m running (System 7.5.5), the about window text and font aren’t what were expected and cut off the URL for the book’s website.

MacProse for Macintosh, File menu.

MacProse’s File menu has basic options for closing windows, saving the generated text, printing, and quitting the application.

MacProse for Macintosh, Edit menu.

The Edit menu has basic functions available, but as Hartman notes in the “MacProse Doc,” cut and copy work on a sentence basis–not on selectable words or phrases.

MacProse for Macintosh, Generate menu.

The Generate menu is what makes the magic happen with options to generate one sentence or to generate sentences until the mouse is clicked. Hartman explains:

“Generate has two commands: One Sentence (keyboard equivalent command-G) generates a single sentence, which is displayed in the Output window. The generation “tree” that produced the sentence is displayed in the Tree window. The other command, Until mouse-click (keyboard equivalent command-U) keeps generating sentences until you click the mouse button–or until the output buffer’s 32k limit is reached (about 600 sentences).

“When you have generated more than one sentence, a click with the mouse in any of them places that sentence’s tree in the Tree window. If you double-click a word (or mark of punctuation) in the output, the tree “leaf” that generated the word is highlighted in the Tree window. If you drag to select more than a word, one whole sentence is selected. You can then use Cut and Paste to move the sentence to a new place in the output; its tree information will follow it. If you click an item in the tree window, the corresponding word, or the entire rule’s clause or phrase if you click a predicate, is highlighted in the output window.

“MacProse never places a newly generated sentence, or a Pasted one, in the middle of an existing one; it moves the insertion point to the next sentence-start point” (“MacProse Doc,” par. 6-8).

The way that MacProse keeps each sentence as a unit with its own explainable design that remains linked to it within the application makes it unique among text generating applications of this era and its explainability reveals how it does what it does while also providing a pedagogical tool when using this program in the classroom as I intend to do.

MacProse for Macintosh, sentences generated on the left and a sentence tree for the first sentence.

After generating a bunch of sentences using the generate until a mouse click option, I clicked on the first sentence, “The television of temperature: so specific a point,” which shows its diagram in the Sentence Tree window to the right.

MacProse for Macintosh, sentences generated on the left and a sentence tree for the second sentence.

Then, I clicked on the second sentence, “A war–the period–appears to rush,” and its diagram, which is different than the first sentence’s, appears in the Sentence Tree window to the right.

MacProse for Macintosh, saving the generated sentence output as a text file.

I clicked on File > Save to save the MacProse Output window’s sentences as a text file. I couldn’t click the mouse quickly enough to stop it generating all of the following output:

“The television of temperature: so specific a point. A war — the period — appears to rush. When have we hoped? The lieutenant is address. Whom cannot the breakfast with so right an Africa record? He who entirely recalled them supplied the slope of illusion. Effort might argue, but they curled. What had you valued? The comment of vigor (my star) once wanted us. Whom may the wave’s core report to? These tension vocabularies have suffered. Your arm may accompany someone. You will sound. While the performance is a structure’s thought, each of them is the sheriff, and you away occur. Vibraphones tested the beat of June. Didn’t that spot continue? Had so dim an architect happened? When I shortly whispered, chapels continued, and the muffin (the uncle) had hoodwinked him. The heritage of Bebop was no darkness, and you stumbled. To exercise is shouting. Where are they ruling? The contrast was your detective. When we are twisting, the epic has read, and he is the partner of dance. When she stops, whom have those horses between a motel and the packrat included? We were charging the streams. When had the officers grinned? Had they stripped certain seats? So sufficient a man checkmates alternatives. He who is my child is town. You had obtained some sound tire; he who stumbled will demonstrate camera. The pincushion except the choice of guilt between a jungle and certain piles: cloth. He who wouldn’t talk promised her. They are palms. The column — shall the throat of error find the democracy between those apartments and these companions? The session of sin between the shirt and the shape wishes to achieve so guilty a charge. To escape might fit. Sky can interrupt them. When are these sisters staring? He who exchanged you thoroughly hung it. How have so higher a vibraphone worried? The frame of money has attacked a hall spirit. You have searched. We had visualized her; and so average a film was hastening, and the maple of death resumed it. To vanish was the heritage of ease. Had the conspiracy of dirt stopped? Communities open a Babbage. A parade motive (an illustration) didn’t extend; if night is offering, the weather is a wonderful pocket. The citizen of respect (my gentleman) waited, and to whisper was court. The version is their door between the head and these victories. Couldn’t that bedroom between the police and the horizon between those characters and the county cry? If the path between certain vigilantes and the age was science, the suspicion of town wouldn’t approach someone, and the food between another Turing and the incident had slid. Language (promise) can’t speak. Had you repaired this lover’s belt? Had you foiled truths between the avenue and the Babbage? I may droop. My succession: the reporter of atmosphere. They are those civic kingdoms. To burst cooked so local a sleuth between the side and a sidewalk. He who was computation along a sea paid to scheme. These structure communities hold him; and your theory above song: so middle a sidewalk. You were these foots. Why has April landed? He who was supporting its year like its audience was the brush of mass between the willow and the secretary. Plaster — iodine — bets so vacant an index; dawn repeats you. Anodes: the margins of sea. Since to sink can’t vacillate, that fist is the center. Every question claims to connect, but the end (entrance) will unclasp her chain throughout the prospect. To read was darkness; and steel was this vote. School governs them. To emerge was stumbling. When to rush emerges, to drive costs this. How can’t sacrifice swell? He who was the stress’s doctrine was the dancer. You exchanged these crystal windows. Prices briefly did, and impulses were the valleys. Have moments dreamed sacrifices? Whom has museum about its sheriff fed? Had certain pennies replaced certain exceptional tubes? Whom will so oral an epic visualize?”

As a whole, it is nonsense, but there are some short sentences, phrases, and word combinations that are interesting, thought provoking, and poetic. As I’ve said about these types of text generating programs (and image generating ones like KPT Bryce and Evolvotron) before, there is a lot of utility in these applications for inspiring or giving some raw material that we humans can use or build upon. They aren’t necessarily the end point of creation. They become a tool in the toolbox, a component within a larger workflow.

MacProse for Macintosh, Design menu.

The other significant menu item is Design. Clicking on it and choosing “Design a sentence” brings up a window that guides you through your own design using the options available. Hartman explains how it work:

“The Design menu has only one item, Design Sentence (keyboard equivalent command-D). Instead of building the sentence’s grammatical template at random, this option lets you choose which rules to employ. The rules are contained in the grammar. Each line of the grammar defines a “predicate” with a series of components, each of which may be a “leaf” (an item that goes directly into the template) or another predicate, which must have a rule. The grammar contains several rules for each predicate; all predicates must be defined by at least one rule.

“Building a sentence, whether you do it or the computer does it at random, is a recursive process: first you choose a rule for the Sentence you want; then you choose a rule for each of the predicates that rule contains, and each of the predicates each of those rules contains, and so on, until you have completely defined the sentence’s structure.

“To help you do this, MacProse puts up a dialog box showing the predicate you’re defining, and a popup menu of all the available rules that define that predicate. The result of what you’ve done so far is displayed in the Tree window. When you’ve defined all the predicates by choosing a rule for each one, MacProse generates a sentence (by randomly consulting the Dictionary) that follows the structure you’ve built” (“MacProse Doc,” par. 9-11).

MacProse for Macintosh, Design window.

After choosing “Design Sentence,” the user is presented with this window.

MacProse for Macintosh, Design window options.

The Design Sentence window has these options. Selecting from this list leads to further options.

I think MacProse is a really fascinating application that drills down into doing one thing well–writing sentences–and providing users an explanation about how it strung words together for each sentence. Now, I plan to read Hartman’s book to learn more before I think about how to incorporate it and the other text generating programs that I’ve written about in my future writing classes. There’s a lot of value in these older programs not just in terms of digital history preservation, but also in terms of their continuing usefulness whether it be as a creative writing tool or as a pedagogical tool for exploring ideas about how language works, looking how these programs are the progenitors for today’s generative artificial intelligence technologies, or learning how to use this software on modern computing hardware. To paraphrase Hartman, it’s not about the software. Instead, it’s about what you can do with the software.

McPoet 5.1, an Advanced Text Generator and Randomizer for Macintosh That Was Reviewed in The New York Times

McPoet 5.1 for Macintosh, Launch screen

McPoet is an extensible and expandable Macintosh text generating program by Chris Westbury, Professor of Psychology at the University of Alberta. He began working on it in the 1980s, released it and continued developing it through the 1990s, and built a “direct descendant” called JanusNode in the 2000s, which he continues to develop. The version that I am looking at in this post is McPoet 5.1 from 1999. A version was reviewed quite positively in The New York Times by J. D. Biersdorfer on Oct. 8, 1998.

Like the text-generating software that I’ve recently written about–Kant Generator Pro and Electric Poet (to a lesser extent)–McPoet has an application that generates different kinds of text based on probability, rules, and word lists stored in external, easily edited files. Where McPoet diverges from the other two applications is that it can in a sense edit texts that it generated or the user writes. It can play with the text, map texts on to existing texts, and change them in various ways. To use the author’s language in the Info-Mac v16 no288 digest, it does “text generation and text morphing:”

Date: Fri, 16 Apr 1999 13:27:55 -0700
From: cwestbury@shaw.wave.ca
Subject: [*] McPoet-5.1.hqx: Tools for automatic text generation and morphin

McPoet is a set of tools for text generation and text morphing: that is,
tools for writing computer-generated and computer-assisted poetry and
prose. It uses its own simple language to allow the text-generation rules
to be completely user-configurable. It is easy to write your own rules for
McPoet even if you know nothing about programming your Mac. You can also
use the large set of built-in rules, or the automatic rule-generating
function which can turn ordinary text into an executable rule. The text
morphing features include an automatic version of Tristan Tzara's original
Dadaist formula for creating poetry from text, an eecummingsfication
feature for imitating the style of the great poet ee cummings, multiple
forms of Markov chaining (completely re-written and expanded in version
5.1) and much more. Rule files, the word-type files that they reference,
and Markov chain probability tables are stored externally, on disk. There
are no strong constraints on the number of word types, rules, or Markov
chain probability tables you can use. McPoet can be expanded and fully customized by
the end-user.

Version 5.1 fixes all known bugs in version 5.0, and adds much new
functionality, including totally-rewritten and expanded Markov chaining
capabilities (allowing you to chain together many probability tables at the
same time) and new user-configurable dialect mappings.

In tribute to its Dadaist roots, McPoet is uncopyrighted and free. Both the
application and its output may be freely redistributed in any way. It
requires at least 3.5 megabytes of free disk space, at least 3 megabytes of
available RAM, and a Power PC.

Below, I’ll annotate screenshots of the application running on an installation of Macintosh System Software 7.5.5 on the PPC emulator SheepShaver hosted by Debian 12 Bookworm with the Xfce Haiku Alpha window theme active.

McPoet 5.1 for Macintosh, program group

The program group folder for McPoet 5.1 includes the application “McPoet 5.1,” two folders–“McPoet Resources” and “New functions examples,” and two files–“READ ME” and “Saved lines.”

McPoet 5.1 for Macintosh, Get Info for McPoet 5.1 application.

The McPoet 5.1 application is 2.4 MB large and it has a suggested RAM memory size of 2,521 K, but its minimum size is set to 1,871 K and its preferred size to 6,021 K.

McPoet 5.1 for Macintosh, after launching the application, the user is prompted to accept or change the subject's name and sex.

After double clicking on the application icon, the user is greeted by the yellow launch screen shown at the top of the post. Then, a prompt appears with the composition window in the background. The prompt states, “The subject is: ‘wisdom’, a male. Do you want to change the name or sex?” with options No (default) and Yes. If the user clicks No, the program rapidly shows a processing window before presenting the composition window (below). If the user chooses Yes, then the application guides the user through choosing a subject name and a sex (male or female).

McPoet 5.1 for Macintosh, main composition window.

The McPoet 5.1 composition window has a white text generating/editing area in the lower 2/3 and controls and options in the upper 1/3. The menus are also essential for telling McPoet to “wax poetic” as well as editing and saving generated text.

McPoet 5.1 for Macintosh, Apple menu

Under the Apple menu, there is the option for “About McPoet.”

McPoet 5.1 for Macintosh, About McPoet window

The About McPoet screen bills it as “The only tool for all your text-morphing needs!” and provides hints about where to find help and how to halt text generation processing with Cmd-. (command key and period pressed simultaneously).

McPoet 5.1 for Macintosh, File menu

The File menu gives the user options for saving the text field or opening a file (for randomizing/interacting with your own text or previously generated text).

McPoet 5.1 for Macintosh, Edit menu

The Edit menu has standard text editing options including specialized features for Removing Duplicates and Scan Lines (move through the generated text line-by-line). Breaking with application menu norms on the Macintosh, the Print option is here instead of under File.

McPoet 5.1 for Macintosh, Font menu

The Font menu shows a list of installed fonts that can be used for editing the text in the composition window.

McPoet 5.1 for Macintosh, Style menu

The Style menu gives options for changing the text style and font size of text in the composition window.

McPoet 5.1 for Macintosh, Wax Poetic menu

The Wax Poetic menu and its sole option “Do it” or Cmd-W is what causes McPoet to generate or randomize text.

McPoet 5.1 for Macintosh, after clicking "Do it" from the Wax Poetic menu, the application prompts the user for the desired number of lines of text to generate.

After selecting “Do it” from the Wax Poetic menu, the user is prompted for a number of lines to generate.

McPoet 5.1 for Macintosh, after choosing 3 lines of text to generate, the output words are shown in the composition window.

As an example, I input the number 3 for the number of lines to generate, and the above text appeared word-by-word in the composition window while the mouse pointer turned into a rotating yin-and-yang symbol.

Entries gather in extroverted clinical psychologist crowds, smoking brimstone and burning oasis to keep ignorant. 
The Internet throws to a cosmological morning astronaut 
Only quite jazz people beside the memories know how to dangle answer with alliance. They make earnest feelings to spider, bloodshed, and the relations, but their complex funeral procession is explorable, a clinical earlobe in the chain, or a patriarchal hissing or carnal habit which far surpasses monsters of good behaviors, odious shamans or bases, inspiring adults, or green assumptions, daddies, or cameras, or even  red cunning harmonies. No one is purer than the shaman of granite, for such a person is a very absentminded writer. 
McPoet 5.1 for Macintosh, Subject/Method pull-down menu options.

To generate a more specific kind of writing based on the rules that came with McPoet, the user can pull down the menu under Subject/Method in the middle and choose Multiple Rule Files.

McPoet 5.1 for Macintosh, Multiple Rule Files option window

For this example, I chose Paragraph.rules, which includes a number of different writing genres, but multiple rule files can be chosen and the user can create new ones on their own after learning how they are composed using the built-in Help and studying the existing rules as examples (they are text files and relatively easy to read).

McPoet 5.1 for Macintosh, after selected Paragraph.rules under Subject/Method, clicking on the pull-down menu now shows types of writing to generate.

After selecting Paragraph.rules on the Multiple Rule Files window, the user can pull down the Subject/Method menu again to see the available types of writing to generate. For this example, I selected “haiku.” After choosing “Do it” from the Wax Poetic menu, it prompted me for the number of lines, and I entered “3.”

McPoet 5.1 for Macintosh, 3 generated haikus

These are the three “haikus” generated. Interesting, but not hitting the syllabic count correctly. Nevertheless, this generated text gives the user some “clay” that can be shaped and molded further by the tools in McPoet or by the user’s own mind and editing.

McPoet 5.1 for Macintosh, click the switch in the upper left to change between the generate text feature to the randomize or modify text feature

To use McPoet for transforming text or in the author’s terms “morphing,” the switch in the upper left corner needs to be flipped/clicked from the default of “Generate Text” to “Randomize Text.”

McPoet 5.1 for Macintosh, pull down the Subject/Method menu in the center of the window to see what options are available under Randomize Text

The Randomize Text has an extensive list of options: Write loosely, Write tightly, Chain loosely, Chain tightly, Chain letters, Text mapping, Blur, Blur Vowels, Flip Pairs, Flip Vowels, Reverse Text, Reverse by Word, Delete Every Other, eecummingsfy, Dadaize (No replacement, Dadaize (With replacement), Neo-dadaize, Random sentences, Randomize, and other options: Make Markov file, Make a Rule, Replace words, and Steal words. I selected Text mapping.

McPoet 5.1 for Macintosh, generated  three new haikus

To test the Text Mapping feature under Randomize Text, I generated three new “haikus.”

 Flame thrower sees possibly 
                 predetermines cello solemnly 
 round human universe 
 
omniscient parenthood is not a clinical smoke 
 an electric profanity is not an abnormal ecstasy 
 so is The Great Mother The Terrible Father? 
 
Girl: ageless dandelion 
                     primarily, wonderfully, thankfully 
 Aha! A living death 
McPoet 5.1 for Macintosh, after switching to Randomize Text, selecting text mapping, and choosing to do it under Wax Poetic, the user is presented with options for the kind of text to map on the original text. In this case, I selected Post-modernism

I switched to Randomize Text and selected Text Mapping. Then, I clicked on the Wax Poetic menu and chose “Do it.” This presented me with options for the type of mapping to use. I selected “Post-modernism.”

McPoet 5.1 for Macintosh, Three haikus transformed with Post-modernism text mapped onto the original haiku text.

While parts of the original haikus are present in the randomized text, there are new, longer passages–even one mentioning Baudrillard–mapped into place within the original three haikus.

 Flame thrower sees possibly 
                 predetermines cello solemnly 
 round human universe 
 
omniscient parenthood is construed as not a clinical smoke 
 an electric profanity is construed as not an abnormal ecstasy 
 so is construed as The Great Mother The Terrible Father? 
 
Girl: ageless dandelion 
                     primarily, wonderfully, thankfully 
 Aha! Reality is more uneven and/or its (mis)representations more untrustworthy than those multiply-mediated situations 'I' (re)experience as directly-embodied subjectivity have suggested. Baudrillard has already implied as much. A living death 
McPoet 5.1 for Macintosh,

From the main composition window, the user can click on “Control Panel” in the upper right corner to access this screen of global options that cover automatic font selections, text-to-speech, the “smuttiness” of the text, typing sounds, and more. Making good use of available screen space, the author included a “CONTROL PANEL INFO” help box on the right side that explains all of the available options. To return to the composition window, click the left pointing arrow in the lower right corner.

To access the Help for the entire application, click the “?” in the upper right corner, which will load this help screen in the composition area of the main window. McPoet is well documented here about what it can do and how it does it. There are help files for “Quick start” as well as more thorough and detailed explanations of its features and options. And, if you are totally lost, you can click the bottom-most option, “Will you please just write a poem?” which prompts you for the number of lines desired before generating a poem meeting your selection.

Also, the “What can you tell me about other McPoet-related resources?” contains a lot of interesting resources: books, websites (they might be defunct now, but likely findable using the Internet Archive’s Wayback Machine), and “A Random Assortment of McPoet-Related Quotes.”

Westbury writes the following in the books section (I’ve added links to the book on the Internet Archive):

“The first book ever written by a computer is ‘The Policeman’s Beard Is Half-Constructed’, which contains McPoet-like computer-generated prose by Racter, a text-generator programmed by Wilt Chamberlain and Thomas Etter. The book was published in 1984 by Warner Books, Inc.: ISBN 0-446-38051-2.”

“The only serious treatment of computerized text generation of which I am aware is Charles Hartman’s ‘Virtual Muse: Experiments In Computer Poetry’, in which Hartman (a professional poet) describes his on-going experiments with a wide variety of computerized text-manipulation tools he has written (some of which are available on the WWW: see below). The book is well worth reading. It contains examples of published computer-assisted poetry, as well as lots of ideas for new ways of using a computer to generate and morph text (which will all eventually be incorporated into McPoet!). Hartman’s book was published in 1996 by Wesleyan University Press, ISBN 0-8195-2239-2.”

And Westbury writes this about these online resource highly (I added a link to an archived copy on the Wayback Machine):

“XXX http://www.hok.no/marius/c-g.writing/ XXX
This used to be the most comprehensive site for listings of text-generation software, and dozens of sites link to it. However, it is not there. The correct address is: http://www.notam.uio.no/~mariusw/c-g.writing/. This is the first place to go for information on generating writing on many different computer platforms, as well as for the most comprehensive listing of Web-based computer-generated writing. The listing of Macintosh-based programs is especially comprehensive, although McPoet is not currently mentioned despite my repeated hints in that direction. I found a lot of programs and links here that I had not previously seen.”

http://www.burningpress.org/toolbox/
This is the best currently-maintained compilation of computer-generated writing tools, including every program I know of for the Macintosh. Go up to http://www.burningpress.org/ for a wealth of information about and examples of cyber-poetry of all kinds.”

As explained in the help documentation, McPoet’s rules and word lists are all externalized so that they are easily edited and expanded by the end user. This is the same approach used by Kant Generator Pro and Electric Poet (to a lesser extent). All of these files in the McPoet Resources folder–MarkovTables, Mappings, Rules, and WordLists are all text files that can be edited by the end user. The end user can also add to these files to expand McPoet’s feature set and capabilities.

McPoet is a remarkable program that I can imagine being something of a curiosity to some, a source of joy to others, and a powerful tool in the right hands. Like the generative AI technologies of today, McPoet can be used as another composition tool–generating interesting strings of words, conjuring ideas for further writing, giving the mind some distraction while cogitating on a larger problem, etc. While the text generated and/or transformed by McPoet can be its own end product, it seems like it might be more useful as a place for the writer to grab some clay to begin working into something else–an art object, a poem, a killer phrase for prose or a speech, etc. I have a lot of respect for Westbury to code this cool application that can do so much with text through an easy to use user interface while also giving the end user so much control over its features through the editable support files that make McPoet work. I can’t wait to bring this program into my writing classroom!

Kant Generator Pro 1.3.1, a Modular Text Generator Originally Made to Create Psuedo-Kantian Philosophical Writing

Kant Generator Pro 1.3.1 folder and icon group on Macintosh System 7.5.5

Continuing my exploration of non-artificial intelligence (non-AI) programs that can generate images (see KPT Bryce and Evolvotron) and text (see Electric Poet 1.6), I discovered this really innovative piece of text generating software by Mark Pilgrim called Kant Generator Pro 1.3.1 for Macintosh 68k computers.

The Kant Generator Pro folder, which includes the Kant Generator Pro application, Program Notes file, and folders for its text generating modules and scripting, is only 560K. The Kant Generator Pro application is 176K and it has a suggested RAM size of 1,024K. The copy that I downloaded from Macintosh Garden here had the minimum RAM size set at 512K and the Preferred size set to 11,024K.

According to the program’s built-in Help (shown in a screenshot down the page):

Kant Generator Pro was originally designed to generate text that vaguely resembles Immanuel Kant's Critique of Pure Reason, a brilliant and revolutionary piece of philosophical writing which, for some time now, has been serving as the fourth leg of my wobbly refrigerator. It has since been expanded to allow you to generate anything you like. Several modules are include with this program which can create anything from thank you notes to excuses for being late to work. You can also design your own modules with the full-featured module editor. 

And on a saved copy of Pilgrim’s personal website from 21 Dec. 1996, he writes the following about Kant Generator Pro:

Purpose: to generate pseudo-Kantian philosophy based on Kant's vocabulary and sentence structure in the "Critique of Pure Reason". Anyone who has been subjected to Kant (voluntarily or otherwise) will appreciate the humor in the gibberish this program outputs. Also includes a module editor so you can create your own generation modules.

Kant Generator is quickly becoming my most popular program (although it is still in third place behind Startup Screen Picker and Shutdown FX), especially among philosophy students, graduates, and professors. When I showed it (off) to my professor for my Kant course, he immediately started describing something he had written years ago to achieve a similar result, though by a completely different method. Other professors from across the country have praised it, saying they will use it in their introductory philosophy courses to 'stimulate interest in philosophy'. I guess every little bit helps.

I am slowly but steadily adding more modules to Kant Generator Pro. Version 1.1 added a Husserl module, as well as "thank you" note module (which occurred to me while procrastinating writing my Christmas thank you notes). Version 1.2 added an "excuses" module, written by Mike W. Miller. Version 1.3 added a Swedish Kant module, which is just the original Kant module with all the references and instantiations converted into Swedish Chef talk. (Yes, I used the code from Chef, and yes, I automated the process to cycle through all the instantiations and convert them, and no, you can't have the code. Just what we need is people running around converting all their KGP modules to Swedish Chef, or WAREZ, or Fudd...) Version 1.3 also added scripting support; anyone who wants to set up a WWW page and call Kant Generator Pro with a CGI interface through AppleScript has my permission as long as you send me your CGI interfacing code.

It's very exciting to have other people writing modules for Kant Generator Pro, if nothing else because it means I don't have to do anything for the program to keep improving. Suggestions for future philosopher modules (or anything else) are always appreciated, although I am reluctant to write modules of philosophers I haven't studied myself. Satire is the sincerest form of flattery, but also the most difficult... 

The source code for Kant Generator Pro is also available bundled with the application in the Info-Mac repository here.

Below, I’ll annotate screenshots of the application running on an installation of Macintosh System Software 7.5.5 on the PPC emulator SheepShaver hosted by Debian 12 Bookworm with the Xfce Haiku Alpha window theme active.

Kant Generator Pro for Macintosh, Composing Window after launch

After opening Kant Generator Pro, the user is presented with a text entry window much like in any text or word processing software. One can enter text, but to have the program generate text, one needs to use the menus: first, to select the text generation module from the Options menu, and then, to select from the type of text to generate from the Insert menu.

Kant Generator Pro for Macintosh, Apple menu

Clicking on the Apple menu gives you options for About Kant Generator Pro, Other products, and Help.

Kant Generator Pro for Macintosh, About window

Opening the About window from the Apple menu features a scrolling credits and copyright notice.

Kant Generator Pro for Macintosh, Apple menu > Help

Selecting Help from the Apple menu provides lots of useful information about how to use Kant Generator Pro to generate text, how to edit the modules that it uses for text generation, and technical information about the design of the program.

Kant Generator Pro for Macintosh, Apple menu > Help > Editor > Getting Started

Choosing Editor > Getting Started on the Help window shows the information displayed above. Like Electric Poet, which I wrote about yesterday here, Kant Generator Pro relies on randomness, but unlike Electric Poet, Kant Generator Pro relies on more structure in building relationships between words and strings of text by editing a given Module (like Electric Poet’s Library). But where Kant Generator Pro gets really interesting is in how the responses can be engineered while editing the Module to reference and nest references within references.

Kant Generator Pro for Macintosh, File menu

The File menu gives you access to basic file operations.

Kant Generator Pro for Macintosh, Edit menu

The Edit menu has basic edit operations.

Kant Generator Pro for Macintosh, Options menu

The Options menu controls Kant Generator Pro’s primary feature–the Module used for text generation, but it also gives the user options for how fast it generates text, whether music is played or not while generating text, and to speak the generated text a voice with Apple’s Text-to-Speech technology.

Kant Generator Pro for Macintosh, Options > Modules

In the Options menu > Modules, the user chooses the text generator module to use. The Program Notes file (dated 26 Jun. 1995) included with the application describes the included modules:

Kant Generator Pro has the built-in capability to generate enormous amounts of Kantian gibberish, but if you'd like to play with generating your own text, it also lets you create, edit, and use external modules.  There are several modules included in this release:

Kant: this is exactly the same as the built-in Kant module, except that you can edit it.  The most general reference is &section.

Swedish Kant: this is the same as the Kant module, except that all references names and text have been converted to mock Swedish Chef (as featured in my program Dialectic, which should be available wherever you got this package).  The most general reference is &secshun.

Husserl: a module which emulates Edmund Husserl, a 20th-century phenomenologist.  The most general reference is &section.

Thank You: a module which generates thank-you notes for all occasions.  The most general reference is &thank-you-note.

Excuses, excuses: a module which generates for excuses explaining exactly why you can't come to work.  The most general reference is &Yet-Another-Excuse.  Written by Mike W. Miller.

Math: a module which generates algebraic equations using +, -, *, /, parentheses, and three variables X, Y, and Z.  The most general reference is &term.  Written by David Scheidt (the same friend who discovered that he had 19 copies of the GPL).

Palindrome: a modules which generates palindromes (strings which spell the same backwards and forwards).  The most general (and only) reference is &palindrome.  Written by David Scheidt.

Pascal: a module which generates syntactically correct statements in the Pascal programming language.  The most general reference is &pstate.  Written by David Scheidt.

Parentheses: a module which generates strings of balanced parentheses.  The most general reference is &balanced-parens.  Written by David Scheidt.

Syntax test: this is a sample module which gives examples of the different forms of syntax which Kant Generator Pro can deal with.  All the references are relevant, but you won't get much out of them unless you look at them in the module editor first.

If you'd like to create your own modules, poking around with these should be enough to get you started.  There are several pages of help in the Kant Generator Pro application which talk about building modules, and I also support balloon help for all the menus.  If you're still confused, drop me a line (my e-mail address is in the application's help section) and I'll try to help.
Kant Generator Pro for Macintosh, Options > Music

The Options menu > Music has options for Always, Only while generating, and Never.

Kant Generator Pro for Macintosh, Options > Speech menu

The Options menu > Speech selection pulls available voices from Apple’s Text-to-Speech (if installed on the Macintosh) to give users an opportunity to have the generated text read aloud.

Kant Generator Pro for Macintosh, Search menu

The Search menu gives users an easy way to find and replace text in the text generation window (but not the Editor window shown further below).

The Insert menu changes based on which Module the user selects after opening Kant Generator Pro. This menu is what directs Kant Generator Pro to generate text based on the text corpus and engineered relationships in the Module. Kant Generator Pro uses randomness to piece together options within the corpus and those established relationships to string words together into phrases, sentences, paragraphs, and sections. The above options in the Insert menu are for the Kant Module.

Kant Generator Pro for Macintosh, Insert menu

The Insert menu options shown above are for the Thank You Module.

Kant Generator Pro for Macintosh, Editor menu

The Editor menu gives options to create a new module or open a module in the Editor window.

Kant Generator Pro for Macintosh, Editor window

The Editor window for a Module is where the end user can construct new References (top pane) and Instantiations (lower pane). You can see in the lower pane how References string together other References and Instantiations within References to give the generated text structure.

Kant Generator Pro for Macintosh, Windows menu

The Window menu allows the user to switch between multiple open files in different windows.

Kant Generator Pro for Macintosh, Kant module | Insert > sentence

Using the Kant Module, I used the application to generate the sentence above.

Kant Generator Pro for Macintosh, Excuses module | Insert > sentence

Using the Excuses, excuses Module, I used the program to generate the above outlandish excuse.

Kant Generator Pro for Macintosh, Thank You module | Insert > paragraph

Finally, using the Thank You Module, I generated the rather strange gift thank you.

Like Electric Poet and large language model (LLM) artificial intelligence today, there is some trial-and-error involved. Electric Poet and Kant Generator Pro rely on a corpus of text, a system of relationships, and randomness to select what word or phrase goes next given a set of rules. In a sense, LLMs aren’t that much different except in scale. Based on a given LLM’s training, the relationships between words (or tokens) are far more complex. The hidden layers of an LLM construct relationships that are not simply 1-to-1. Analogous to neurons in our brains, the connections and weights for each connection between tokens are vast and labyrinthine.

Nevertheless, I can imagine Electric Poet and Kant Generator Pro being used today–over 25 years after being first developed in the latter’s case–as a tool to help students think about how text generation can work in a very simplified manner. This can be paired with sentence diagramming of some of their own writing, which can be duplicated within Kant Generator Pro as a “Me” Module that can reproduce one’s own writing. Then, students can advance to more complicated topics with how LLMs are trained on big data to create models that are magnitudes more sophisticated than their Library for Electric Poet or Module for Kant Generator Pro. Throughout the process, an important reminded needs to be reinforced–there is no intelligence in these Macintosh programs or LLMs as they currently exist. The old and the new generate text based on rules applied to models–the former being simple and the latter being much more complex, but in both cases not having awareness or self-direction. Though, it seems like we are going in the direction of self-awareness and self-direction far more quickly than seems safe to me.

Electric Poet 1.6, a Macintosh Poetry Generator Program

Electric Poet 1.6 for Macintosh, Icon Group

Like I’ve written before about image generation software such as KPT Bryce and Evolvotron, which employ fractals instead of artificial intelligence (AI) to generate landscapes and abstract images respectively, there are also text generating programs that use a variety of coding tricks to string words together in a far less complex manner than those used by large language model (LLM) AI systems today. Nevertheless, these precursors to generative AI deserve our attention to explore how they work and what they might have been and still used for.

One such text generating program is Electric Poet 1.6 by Niklas Frykholm. It is a program that is only 48K in size, uses 600K of RAM, and is built to run on 68K-based Macintosh computers. For testing and creating the screenshots below, I used SheepShaver running System Software 7.5.5.

In his abstract for the Info-Mac Archive (available in a viewable format here or as a part of the entire Info-Mac archive here), Frykholm writes, “Electric Poet can use an ordinary text file as a mould for creating its own litterary [sic] works. This works best with abstract poetry where it’s sometimes hard to tell real from bogus.”

On 28 Sept. 1996 on his personal website, he writes, “Electric Poet is a fusion between my interest in computers and my interest in poetry. It is an attempt to write a program, capable of creating its own literary works. The Electric Poet takes the works of a biologic poet (as a TEXT-file) and rearranges them in a random but controlled manner. Heres a poem written by the program:

often
and closer to the chasm
until you still have been squeezed by the mysterious event
it showed clearly for the trouble
and the progress
about my desktop”

And according to Frykholm’s “Technical Notes” on the program’s About window, “The method the computer uses for generating text is simple and requires little or no intelligence. When the computer converts a text to a library it creates for each word in the text a list of the words that (at different places in the text) follow that word.”

“When the text is to be created, the computer starts with a certain word. It then chooses a word at random from the list of words that could follow the world. After that it chooses a word at random from the list of words following that word, and so on . . .”

Essentially, Electric Poet is a clever piece of software that uses word relationships within a given text to create text based on random selections within that set of relationships.

Electric Poet 1.6 for Macintosh, Program's "The Poetry" window

After double clicking on Electric Poet 1.6 in the icon group shown at the top of the page, the program presents “The Poetry” window with a blinking cursor. To have the program generate poetry, the user needs to open a Library from the File menu and then choose “Generate Text” from the Poet menu.

Electric Poet 1.6 for Macintosh, About Window > Credits

Opening the “About Electric Poet” from the Apple menu gives the user a super helpful set of tabs that gives you information for registering the shareware program, help using the software, an explanation of the menu items, and technical notes about how the program works to generate text.

Electric Poet 1.6 for Macintosh, About Window > Help

The About Electric Poet’s Help tab breaks down what the user needs to do so that the program generates text. The first step is to “install” or open a Library. While Electric Poet comes with a sample Library based on the script for the film Star Wars, most users would probably want to create their own Library, which is easy enough to do. Once the Library is created and loaded, Electric Poet can then generate text from the Poet menu.

Electric Poet 1.6 for Macintosh, About Window > The Menus

The About Electric Poet’s The Menu tab gives further explanation about what each menu option does in the program.

Electric Poet 1.6 for Macintosh, About Window > Technical Notes

The About Electric Poet’s Technical Notes provides details about how it uses lists of words and the words that follow immediately after those words as a corpus of random selections linked to adjacent words. This is the magic that makes this program generate text. It uses lists of adjacent words and random selection to thread together sentences and phrases.

Electric Poet 1.6 for Macintosh, File menu options

To get started with Electric Poet, the File menu gives you access to opening a Library or creating a Library from “TEXT to Library.” It’s important to note that you need to have your text file in Teach Text format before attempting to create your own Library. I discovered that when opening a raw text file the program would create a list of words (as it would normally when creating a Library), but then the program would lock up and while I could still move the mouse, I could no longer use the menu, switch programs, or activate the Finder. I would have to kill the SheepShaver process on Debian and relaunch. I observed this same behavior when running Electric Poet on the 68k emulator Basilisk II.

To avoid this problem, open your raw text file in BBEdit or another full-featured text editor (if it is larger than 32K–the Teach Text limit), copy an excerpt to the Clipboard, and then go into Teach Text, paste the text, and save it as a file. Then, use “TEXT to Library” in Electric Poet to create a Library from that Teach Text-saved file.

Electric Poet 1.6 for Macintosh, Poet menu options

Once you’ve opened your Library file, you can now use the Poet menu to “Generate Text.”

Electric Poet 1.6 for Macintosh, Poet menu > Generate Text window

The “Generate Text” menu option presents you with these controls before generating some text in “The Poetry” window. It allows you to choose how many words to generate and the option to begin with a random word or a specific word. If you choose a specific word, bear in mind that it is case sensitive. For example, I tried beginning with “Cyberspace,” but the word was not found in the Library. I tried with “cyberspace” and it generated text as shown below.

Electric Poet 1.6 for Macintosh, Output in The Poetry window

Above, is a sample of text generated from “The Shopping Expedition,” the third chapter of William Gibson’s Neuromancer (1984). This example is just one run. Subsequent runs will yield very different results. In this regard, it is like using Stable Diffusion or LLaMA in that many iterations are often required to generate an output that is desired by the end user.

Soon, I’ll post about Kant Generator Pro, another Macintosh text generator program that creates pseudo-sense/technobabble text (writing like the philosopher Kant) as well as form generated writing, such as thank you notes. The form generated writing that Kant Generator Pro can do is aligned with one of the kinds of writing large language models are supposed to be able to help us with–emails, follow-ups, etc.