<?xml version="1.0" encoding="windows-1252"?>
<node id="101816" title="Management-speak generator" created="2001-08-02 22:38:06" updated="2005-08-04 02:19:49">
<type id="1042">
CUFP</type>
<author id="25626">
gryphon</author>
<data>
<field name="doctext">
&lt;P&gt;Greetings fellow monks,&lt;/P&gt;

&lt;P&gt;I'm unsure whether this has been done before, but I was bored. So here it is: a management-speak generator, just in case you ever need to generate a long and meaningless document that sounds pseudo-impressive. This whole concept was highly influenced by &lt;a href="http://www.dack.com/web/bullshit.html"&gt;Dack's Web BS Generator&lt;/a&gt;, of course.&lt;/P&gt;

&lt;CODE&gt;#!/usr/bin/perl -w
use strict;
srand;

my @pronouns = qw(I we they);
my @articles = qw(the your my);
my @sub_conjuncs = (
	'after', 'although', 'as', 'as if', 'as long as', 'as though', 'because',
	'before', 'even if', 'even though', 'if', 'if only', 'in order that',
	'now that', 'once', 'rather than', 'since', 'so that', 'though', 'unless',
	'until', 'when', 'whenever', 'where', 'whereas', 'wherever', 'while'
);
my @power_words = qw(
	accomplished dealt implemented projected achieved debated improved 
	promoted acquired decided included proofed adjusted defined increased 
	purchased administered delegated indicated qualified advised delivered 
	initiated questioned analyzed demonstrated inspected rated applied 
	designed instructed received appraised determined insured recognized 
	arranged developed interpreted recommended assessed devised interviewed 
	recorded assisted directed introduced recruited assured discovered 
	investigated reduced awarded dispensed joined rehabilitated bought 
	displayed kept related briefed distributed launched renovated brought 
	earned led repaired budgeted edited located reported calculated educated 
	maintained represented cataloged elected managed researched chaired 
	encouraged maximized reviewed changed enlisted measured revised 
	classified ensured mediated selected closed entertained modified served 
	coached established motivated simplified combined evaluated named 
	sketched communicated examined negotiated sold compared excelled observed 
	solved completed executed obtained spearheaded computed exhibited 
	operated specified conceived expanded ordered started concluded expedited 
	organized streamlined conducted explained paid strengthened confronted 
	facilitated participated studied constructed financed perceived suggested 
	continued forecast performed summarized contracted formulated persuaded 
	supervised controlled gained placed targeted convinced gathered planned 
	taught coordinated graded predicted tested corrected greeted prepared 
	trained  corresponded guided presented translated counseled handled 
	processed treated created helped produced updated critiqued identified 
	programmed wrote
);
my @verbs = qw(
	aggregate architect benchmark brand cultivate deliver deploy 
	disintermediate drive e-enable embrace empower enable engage engineer
	enhance envision evolve expedite exploit extend facilitate generate
	grow harness implement incentivize incubate innovate integrate iterate
	leverage maximize mesh monetize morph optimize orchestrate recontextualize
	reintermediate reinvent repurpose revolutionize scale seize strategize
	streamline syndicate synergize synthesize target transform transition
	unleash utilize visualize whiteboard
);
my @aux_verbs = (
	'will', 'shall', 'may', 'might', 'can', 'could', 'must', 
	'ought to', 'should', 'would', 'need to'
);
my @adjectives = qw(
	24/365 24/7 B2B B2C back-end best-of-breed bleeding-edge 
	bricks-and-clicks clicks-and-mortar collaborative compelling 
	cross-platform cross-media customized cutting-edge 
	distributed dot-com dynamic e-business efficient 
	end-to-end enterprise extensible frictionless front-end
	global granular holistic impactful innovative integrated interactive
	intuitive killer leading-edge magnetic mission-critical next-generation
	one-to-one open-source out-of-the-box plug-and-play proactive real-time
	revolutionary robust scalable seamless sexy sticky strategic synergistic
	transparent turn-key ubiquitous user-centric value-added vertical
	viral virtual visionary web-enabled wireless world-class
);
my @nouns = qw(
	action-items applications architectures bandwidth channels communities
	content convergence deliverables e-business e-commerce e-markets
	e-services e-tailers experiences eyeballs functionalities infomediaries
	infrastructures initiatives interfaces markets methodologies metrics
	mindshare models networks niches paradigms partnerships platforms
	portals relationships ROI synergies web-readiness schemas solutions
	supply-chains systems technologies users vortals
);
my @conj_adverbs = qw(however moreover nevertheless consequently);
my @conjuntors = qw(though although notwithstanding yet still);

my @sentences;
for (my $x=0; $x&lt;100; $x++) {
	push @sentences, &amp;sentence;
}
print join ' ', @sentences;

exit;

sub sentence {
	my $sentence;
	my $type = int(rand(5 - 1 + 1)) + 1;

	if ($type == 1) {
		$sentence = join ' ', maybe(&amp;conj_adverb,1,4,', ') . &amp;article, 
			tobe(&amp;noun), &amp;power_word, &amp;sub_conjunc, 
			&amp;pronoun, &amp;power_word, &amp;article, 
			maybe(&amp;adjective,1,2,' ') . &amp;noun . maybe(&amp;phrase,1,2,'');
	} elsif ($type == 2) {
		$sentence = join ' ', maybe(&amp;conj_adverb,1,4,', ') . &amp;sub_conjunc, 
			&amp;pronoun, &amp;power_word, &amp;article, 
			maybe(&amp;adjective,1,2,' ') . &amp;noun . ',', &amp;article, 
			maybe(&amp;adjective,1,2,' ') . &amp;noun, &amp;power_word, &amp;article, 
			maybe(&amp;adjective,1,2,' ') . &amp;noun . maybe(&amp;phrase,1,3,'');
	} elsif ($type == 3) {
		$sentence = join ' ', maybe(&amp;conj_adverb,1,4,', ') . &amp;pronoun, 
			&amp;aux_verb, &amp;verb, &amp;article, maybe(&amp;adjective,1,2,' ') . &amp;noun,
			&amp;sub_conjunc, &amp;article, &amp;adjective, plural(&amp;noun), &amp;aux_verb, 
			&amp;verb, &amp;article, 
			maybe(&amp;adjective,1,2,' ') . &amp;noun . maybe(&amp;phrase,1,4,'');
	} elsif ($type == 4) {
		$sentence = join ' ', maybe(&amp;conj_adverb,1,4,', ') . &amp;sub_conjunc, 
		&amp;pronoun, &amp;verb, &amp;article, maybe(&amp;adjective,1,2,' ') . &amp;noun . ',', 
		&amp;pronoun, 'can', &amp;verb, &amp;article, 
		maybe(&amp;adjective,1,2,' ') . &amp;noun . maybe(&amp;phrase,1,4,'');
	} elsif ($type == 5) {
		$sentence = join ' ', maybe(&amp;conj_adverb,1,4,', ') . &amp;pronoun, 
			&amp;aux_verb, &amp;verb, &amp;article, maybe(&amp;adjective,1,2,' ') . &amp;noun, 
			&amp;sub_conjunc, &amp;pronoun, &amp;verb, &amp;article, 
			maybe(&amp;adjective,1,2,' ') . &amp;noun . maybe(&amp;phrase,1,4,'');
	}

	return ucfirst($sentence) . '.';
}

sub pronoun { return $pronouns[int(rand($#pronouns+1))]; }
sub conjuntor { return $conjuntors[int(rand($#conjuntors+1))]; }
sub sub_conjunc { return $sub_conjuncs[int(rand($#sub_conjuncs+1))]; }
sub conj_adverb { return $conj_adverbs[int(rand($#conj_adverbs+1))]; }
sub power_word { return $power_words[int(rand($#power_words+1))]; }
sub verb { return $verbs[int(rand($#verbs+1))]; }
sub aux_verb { return $aux_verbs[int(rand($#aux_verbs+1))]; }
sub adjective { return $adjectives[int(rand($#adjectives+1))]; }
sub noun { return $nouns[int(rand($#nouns+1))]; }
sub article { return $articles[int(rand($#articles+1))]; }

sub phrase {
	return join ' ', ',', &amp;conjuntor, &amp;article, tobe(&amp;noun), &amp;power_word;
}

sub tobe {
	return $_[0] . ' is' if ($_[0] =~ /ess$/);
	return $_[0] . ' are' if ($_[0] =~ /s$/);
	return $_[0] . ' is';
}
sub plural {
	my $word = $_[0];
	if ($word =~ /s$/) {
		$word =~ s/$/es/;
	} else {
		$word =~ s/$/s/;
	}
	return $word;
}

sub adverb {
	my $verb = &amp;verb;
	$verb =~ s/e*$/ing/;
	return $verb;
}

sub maybe {
	my $low = $_[1];
	my $high = $_[2];
	if (int(rand($high - $low + 1)) + $low == $low) {
		return $_[0] . $_[3];
	} else {
		return '';
	}
}
&lt;/CODE&gt;

&lt;P&gt;The English parsing is extremely incomplete, so often times (say one in five) you'll get slight grammatical errors. I tried to fix that up a bit with &lt;CODE&gt;&amp;plural&lt;/CODE&gt; and &lt;CODE&gt;&amp;tobe&lt;/CODE&gt;, but there's certainly much more to do.&lt;/P&gt;

&lt;P&gt;-[gryphon]&lt;BR&gt;
&lt;I&gt;code('Perl') || die;&lt;/I&gt;&lt;/P&gt;</field>
</data>
</node>
