#!/usr/bin/perl

use strict;
use IO::Socket;
use Getopt::Std;

my %opt;
getopts ('n:', \%opt);

# word list from <URL:http://www.dack.com/web/bullshit.html>

my @adv = qw(intelligently dynamically fully seamlessly ultimately);

my @v = qw(implement utilize integrate streamline optimize evolve
	transform embrace enable orchestrate leverage reinvent aggregate
	architect enhance incentivize morph empower envisioneer monetize
	harness facilitate seize disintermediate synergize strategize
	deploy brand grow target syndicate synthesize deliver mesh
	incubate engage maximize benchmark expedite reintermediate
	whiteboard visualize repurpose innovate scale unleash drive
	extend engineer revolutionize generate exploit transition e-enable
	iterate cultivate embed automate identify tap distribute create
	provision virtualize minimize float operationalize decrease
	control manage model define uplevel);

push @v, "scale up", "scale down";

my @a = qw(clicks-and-mortar value-added vertical proactive robust
	revolutionary scalable leading-edge innovative intuitive
	strategic e-business mission-critical sticky one-to-one 24/7
	end-to-end global B2B B2C granular frictionless virtual viral
	dynamic 24/365 best-of-breed killer magnetic bleeding-edge
	web-enabled interactive dot-com sexy back-end real-time
	efficient front-end distributed seamless extensible turn-key
	world-class open-source cross-platform cross-media synergistic
	bricks-and-clicks out-of-the-box enterprise integrated impactful
	wireless transparent next-generation cutting-edge user-centric
	visionary customized ubiquitous plug-and-play collaborative
	compelling holistic fully-hosted digital highly-customized
	normalized lucrative proprietary disparate high-reliability
	high-availability high-performance push-button third-party
	elastic green high-valued on-demand ajax-driven pay-as-you-grow
	on-tap FOSS LAMP network-scale resizable high-cpu high-memory IT
	self-service financial role-based unified subscription-based
	on-premise private storage desktop virtualization spot partner
	reserve workload enterprise-grade real-world on-site feature-rich
	hybrid third-generation highly-available, easily-managed
	Infrastructure-as-a-Service cloud-based template customer win-win
	hyperconverged);

push @a, "web 2.0", "extremely reliable";

my @n = qw(synergies web-readiness paradigms markets partnerships
	infrastructures platforms initiatives channels communities
	ROI solutions e-tailers e-services action-items portals
	niches technologies content vortals supply-chains convergence
	relationships architectures interfaces e-markets e-commerce
	systems bandwidth infomediaries models mindshare deliverables
	users schemas networks applications metrics e-business
	functionalities experiences methodologies assets revenue-channels
	suppliers marketspaces services mediums connections components
	materials collaboration podcasts offerings clusters instances
	APIs endpoints UIs environments strategies instances allocations
	ecosystems efficiencies dashboarding trending visualization
	visibility governance onboarding cadences modalities);

push @n, "cloud strategies", "service processing", "VM sprawl";

if (@ARGV == 0) {
    my $num = $opt{"n"} || 1;

    for (my $i= 0; $i < $num; $i++)
    {
	print $adv[rand @adv] . " " if (rand (1) <= .10);
	print $v[rand @v], " ", $a[rand @a], " ";
	print "cloud " if (! int (rand (10) % 3));
	print $n[rand @n], "\n";
    }

} else {
    # RFC 865: Quote of the Day Protocol.
    my $port = shift || 17;
    my $s = IO::Socket::INET->new(Proto => 'tcp', LocalPort => $port,
                                    Listen => SOMAXCONN, Reuse => 1);
    die "$0: can't set up socket.\n" unless $s;

    while (my $c = $s->accept) {
        print $c $v[rand @v], " ", $a[rand @a], " ", $n[rand @n], "\n";
        close $c;
    }
}
