1This is "speak" which was originally written by Dave Buxbaum and later
2modified by Ken Marx and Nick Johnson.  See CHANGELOG for Nick's changes.
3Permission has been obtained from Dave and Ken to distribute the code under
4the BSD license.
5
6Some notes from Ken Marx:
7
8    Speak is just a barely glorified [sic!] mad-libs. It's just
9    that the effect is so nice. The fact that its crude design so
10    well mimics the real world speak, beautifully reflects just how
11    insipid the real stuff is. Anything more elegant would give more credit
12    than is due...
13
14    Some friends of mine have also played with variants on this -
15    speak-lexicon generators for different fields (e.g., biology) etc.
16    A goldmine for cynical linguists.
17
18Here are the contents of the original tarball's "speak.info.mail" file:
19
20-----------------------------<snip>--------------------------------------------
21
22Please excuse the form-letter:
23
24This is all originally from dave buxbaum's "speak" program,
25with a few features that i've added since.
26
27(Also see: http://tesla.csuhayward.edu/cgi-bin/speak.cgi)
28
29It constructs random phrases of the form:
30
31	<power-leadin> <action> and <statement-of-work> <noun>
32
33And an occasional exclamatory statement of the form:
34
35	<statement-of-work> <noun>!!
36
37The synopsis for speak is:
38
39	speak [-n] [-split] [-search <regex>] [N]
40
41where 'N' is the number of phrases to construct (default is 1).
42
43The '-split' option tells speak to break its output into separate lines instead
44of the default which is to output one line that may wrap over the end of a
45terminal's display line. (This is useful for things such as sigdaemon,
46described below.)
47
48The '-search <regex>' tells speak to look for speak phrases containing
49a given regular expression. It's crude: speak simply continues to generate
50internal phrases until a match is found, at which point the matching
51phrase is printed. Speak gives up after about 10,000 tries.
52
53The '-n' option conveniently numbers the output lines (in the manner
54of 'cat -n' more or less).
55
56For example:
57
58    speak -n -split -search "cow|duck" 10
59
60will hopefully print 10 numbered speak phrases containing the words cow
61and/or duck.  Each phrase will contain newlines on or before the 80th
62column of output.
63
64Speak has it's own internal lists, but it will use external lists if you put
65a "setenv SPEAKPATH ~kmarx/lib" (or whatever) in your environemnt.
66that way you can add new shit to your speak lists without recompiling.
67Note that this is not a fully enabled search path - only one directory
68can be specified.
69
70You can find most recent source for speak in:
71
72    ~kmarx/src/speak/{speak,regex}.c	# Makefile there has entries for these
73
74And pharse lists in:
75
76    ~kmarx/lib/speak.{nouns,actions,leadins,wrk}
77
78Binaries are:
79
80    ~kmarx/bin/{solaris,sunos}/speak	# pick your platform
81
82Also, ~kmarx/.elm/sigdaemon is a stupid shell script I wrote
83that I run in background. Every N seconds it grabs the first line
84from my .signature file and adds one line of 'speak' output.
85You need to use elm as your email program for this to work.
86I haven't investigated tag line stuff for other mailers, so you're
87on your own there. Elm is easy to use:
88
89Just type elm and see what happens (typing 'o' for options and '>' for
90save config, will give you an elmrc file to edit for enabling the
91.signature stuff. You're welcome to look at mine in ~kmarx/.elm/elmrc.)
92
93Hope somebody's holding your corporate ladder for you,
94
95k.
96-------------------------------------------------------------------------------
97