Skip to content

Instantly share code, notes, and snippets.

@jrwarwick
Last active August 5, 2022 19:58
Show Gist options
  • Save jrwarwick/54511f9c3e4cf1ae6b77cb0ceffc7055 to your computer and use it in GitHub Desktop.
Save jrwarwick/54511f9c3e4cf1ae6b77cb0ceffc7055 to your computer and use it in GitHub Desktop.
Trendy Job Title Generator
function pick($hat) {
$a = $hat -split ","
$a[(get-random -min 0 -max $a.count)]
}
$altitudeModifier = "chief,head,senior,lead,principal,lord,earl of,vice,total,regional,legendary,imaginary,administrator of,minister of,professor of,master,associate,assistant,supreme,ultimate,proto,star,best,high,uber,arch,bestest,director of,manager of,commissioner of"
$subjectModifier = "interpersonal,extrapersonal,blackbelt,intra-,meta-,omni-,hyper-,tele-,eco-,trans-,para-,re-,turbo-,cyber,brand,catalytic,integrated,dynamic,intersectional,initiative,AI,machine learning,agile,communal,pro,team,quantitative,imaginary,holistic,core,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,," #this is a trick to reduce frequency of the term appearing at all; lots of blanks will be selected
$subject = "data,knowledge,science,administration,infrastructure,sales,impression,ceremony,induction,persuasion,performance,propaganda,collection,cooperation,discovery,distribution,influence,referral,growth,profit,business,solutioning,disaster,reaction,experience,engineering,media,diversity,inclusion,crisis,extraction,visualization,engagement,project,resource,ingredient,community,confidence,conceptual,algorithm,robotic,efficiency,profession,team,value,journey,client,edge,content,systems,big data,alignment,impact,sustainability,logistics,expertise,security,agile,scrum,lab,machine learning,ai,solutions,quantum,management,personnel,intelligence,governance,compliance,direction,navigation,digital,cyber,social,expansion,analytics,convergence,synergy,tech,info,finance,revenue,customer,product"
$role = "engineer,hacker,scientist,crafter,storyteller,architect,builder,generator,regent,conductor,concierge,advocate,-oligist,-inator,-ician,performer,elevator,collector,umpire,referee,influencer,observer,ombudsperson,cataloger,minister,explorer,administrator,catalyst,tailor,broker,resolver,rockstar,provider,ambassador,prognosticator,diagnostician,operator,coordinator,harvester,visualizer,planner,artist,author,mechanic,illuminator,emancipator,commissioner,prophet,interventionist,keeper,closer,recruiter,industrialist,digestor,learner,champion,monk,integrator,assassin,herder,gormand,expert,disruptionist,professional,fascist,exorcist,quartermaster,refiner,miner,historian,manager,overlord,guardian,gatekeeper,protector,keymaster,magician,illusionist,specialist,ranger,draftsperson,carpenter,mason,wright,archivist,officer,evangelist,ninja,guru,preacher,pastor,priest,alchemist,counselor,captain,librarian,wrangler,hoarder,director,summoner,conjurer,jurist,beautician,aestheticiain,-jack,consolidator,liberator,cosmonaut,analyst,gardener,medium,oracle,seer,sayer,coaxer,grafter,surgeon,doctor,liar,masticator,presenter,somnambulist,chandler,butcher,baker,fletcher,sawyer,tinker,joiner,brewer,longshoreman,trucker,beater,escort,prostitute,agent,technician,sorcerer,wizard,technomancer,pilot,resourcer"
##TODO: also randomize the template/layout of the title?
# possible -ing-role sub role: "ninja,specialist,etc."
# some things go in subject and subject modifier, but probably want to avoid doubling on those in one gen pass
# graceful silent attempt to ingest and add to the lists subjectModifier.json subject.json role.json
##
<## Super Simple Edition ##>
for ($idea = 0; $idea -le 5; $idea += 1) {
(Get-Culture).TextInfo.ToTitleCase(
(
(pick $altitudeModifier),
(pick $subjectModifier),
(pick $subject),
(pick $role)
) -join " "
) -replace "^ ","" -replace " *"," " -replace " ?- ?","-" | write-output
}
<## Somewhat More Complex Edition ##>
for ($idea = 0; $idea -le 5; $idea += 1) {
$altiMod = (pick $altitudeModifier)
$subj = (pick $subject)
if ((get-random -min 1 -max 100) -lt 12) {
$subj += "-$(pick $subject)"
}
$rollo = (pick $role)
if ($altiMod -match " of") {
# when there is an "of" in the altitude, then the role should be appended with an -ing (or maybe an ism)
#and even sometimes its "ism" or "ure" or "ery"/mabye "s"
#but sometimes you replace the er and sometimes you append ing to er... todo...
if (("aeiou" -match $rollo[-1]) -or ("ist" -eq $rollo.substring($rollo.length - 3,3)) -OR ((get-random -min 0 -max 100) -lt 25)) {
$rollo = "${rollo}s"
} elseif ($rollo -match "er$") {
if ((get-random -min 1 -max 10) -lt 4) { $suffix = "ism" }
else {$suffix = "ing"}
$rollo -replace "er$",$suffix
} else {
$rollo = "${rollo}ing"
}
}
if ($rollo[0] -eq '-'){ #like -ologist of anything
if ("aeiouy" -match $rollo[-1]) {
$rollo = "${subj}${rollo}"
} else {
$rollo = "${subj}$($rollo.substring(1))"
}
$subj = ""
}
(Get-Culture).TextInfo.ToTitleCase(
(
$altiMod,
(pick $subjectModifier),
$subj,
$rollo
) -join " "
) -replace "^ ","" -replace " *"," " -replace " ?- ?","-" | write-output
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment