Howl

Why Allen Ginsberg is my Personal Muse

The problem: don't sound so geeky

It seemed a simple idea. Sometimes my natural writing style comes off (I fear) too stiff and formal – too Spock-like – for business writing especially in today's world of hyperbole and vaporware. J'accuse!

If I'm writing to someone, what style do they want to hear my words in? If it takes you longer than 93 ms to realize that they want to hear it in their own style then you need to take a refresher course in psychology :-P

It is straightforward to obtain small samples of someones business writing. Their LinkedIn profile for example.

Now, analyzing someones writing and adapting your own style to it for communication would require a nontrivial amount of time and effort. Could there be an easier way?

A proposed solution with Gen AI

Should yer regular large language model (LLM) be able to do this? You just provide what you want to say in your own words and the sample text from your audience and tell it do it. Put these words into that style.

Here's some R code that does that, with ChatGPT.

Sys.setenv(RETICULATE_AUTOCONFIGURE_PYTHON = "FALSE")

Sys.setenv(RETICULATE_PYTHON = "/usr/bin/python3")




s2 <- '
import openai; 
from openai import OpenAI ;
client = OpenAI(api_key= ".." );
completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content":
      "You will receive two sets of statements.  The first will be labelled SOURCE and the second will be labelled TARGET.  Please re-write the content of SOURCE in the style of TARGET.  Please use modern language, avoid jargon and hyperbole."
      },
    {"role": "user", "content":
      "'


s3 <- '"
      }
  ]
)'





# clean up source & target to remove quotes and newline
llm_rewriter <- function( source, target ) {

 source <- gsub("\n", " ", source)
 target <- gsub("\n", " ", target)
 source <- gsub("'", "", source)
 target <- gsub("'", "", target)

  paste( s2, 
         "<SOURCE>",
         source,
         "</SOURCE>",
         "<TARGET>",
         target,
         "</TARGET>",
         s3
  )
}


rewrite <- function(source, target)  {
  py_run_string( llm_rewriter(source, target) )
  py$completion$choices[[1]]$message$content

}




The interested reader will be able to extract the python out of the R as an excersize if so motivated.

What do I do if I don't have a decent sample of someone else's writing? If I can't find their LinkedIn Page or they haven't bothered to publish a profile for it.

I need to substitute a different sample of writing. It should be from someone steeped in language as art, therefore a poet. But which poet? Someone whose words are compelling, who can reach modern ears and get them to sit on the edge of their seats. So rather than do that, and mostly just to see if I could piss people off, I chose Alan Ginsberg instead.

I therefore changed the code to allow – if no other text was available – use the first section of Allen Ginsberg's Howl instead.

Shiny (R) code below.


howl <-  " I saw the best minds of my generation destroyed by madness, starving hysterical naked,
 dragging themselves through the negro streets at dawn looking for an angry fix,
 angelheaded hipsters burning for the ancient heavenly connection to the starry dynamo in the machinery of night,
 who poverty and tatters and hollow-eyed and high sat up smoking in the supernatural darkness of cold-water flats floating across the tops of cities contemplating jazz,
 who bared their brains to Heaven under the El and saw Mohammedan angels staggering on tenement roofs illuminated,
 who passed through universities with radiant cool eyes hallucinating Arkansas and Blake-light tragedy among the scholars of war,
 who were expelled from the academies for crazy &amp; publishing obscene odes on the windows of the skull,
 who cowered in unshaven rooms in underwear, burning their money in wastebaskets and listening to the Terror through the wall,
 who got busted in their pubic beards returning through Laredo with a belt of marijuana for New York,
 who ate fire in paint hotels or drank turpentine in Paradise Alley, death, or purgatoried their torsos night after night
 with dreams, with drugs, with waking nightmares, alcohol and cock and endless balls,
 incomparable blind streets of shuddering cloud and lightning in the mind leaping toward poles of Canada &amp; Paterson, illuminating all the motionless world of Time between,
 Peyote solidities of halls, backyard green tree cemetery dawns, wine drunkenness over the rooftops, storefront boroughs of teahead joyride neon blinking traffic light, sun and moon and tree vibrations in the roaring winter dusks of Brooklyn, ashcan rantings and kind king light of mind,
 who chained themselves to subways for the endless ride from Battery to holy Bronx on benzedrine until the noise of wheels and children brought them down shuddering mouth-wracked and battered bleak of brain all drained of brilliance in the drear light of Zoo,
 who sank all night in submarine light of Bickford's floated out and sat through the stale beer afternoon in desolate Fugazzi's, listening to the crack of doom on the hydrogen jukebox,
 who talked continuously seventy hours from park to pad to bar to Bellevue to museum to the Brooklyn Bridge,
 a lost battalion of platonic conversationalists jumping down the stoops off fire escapes off windowsills off Empire State out of the moon,
 yacketayakking screaming vomiting whispering facts and memories and anecdotes and eyeball kicks and shocks of hospitals and jails and wars,
 whole intellects disgorged in total recall for seven days and nights with brilliant eyes, meat for the Synagogue cast on the pavement,
 who vanished into nowhere Zen New Jersey leaving a trail of ambiguous picture postcards of Atlantic City Hall,
 suffering Eastern sweats and Tangerian bone-grindings and migraines of China under junk-withdrawal in Newark's bleak furnished room,   
 who wandered around and around at midnight in the railroad yard wondering where to go, and went, leaving no broken hearts,"



 xx <- eventReactive(input$howl, {

    rewrite(input$input_value_source, howl)

  })



  result <- eventReactive(input$calculate_button, {
    if(input$input_value_source != "" && input$input_value_target != ""){
      rewrite(input$input_value_source, input$input_value_target)
    } else {
      "Dude, ask a question?"
    }
  })

  output$result_output <- renderText({
    result()
  })

  output$howl_output <- renderText({
    xx()
  })




Analysis

Now here is the catch. Trying this out various times, It seems that almost always, The result by feeding ChatGPT 3.5 'Howl' by Allen Ginsberg is better than the result I get by carefully putting my audiences' own words into the query.

This could be because for various reasons:

  • My understanding of the underlying technology is incomplete and I am not getting the results I think I am for the reasons I think I am
  • Allen Ginsberg does actually represent the heart and soul of business communication in the modern era
  • Chat GPT's own style overwhelms any attempt to get it to write with a different style, and Chat GPT style is suited to business communication in the modern era

And that is how Allen Ginsberg became my personal muse.

So when you get that cover letter from me asking for the role, be aware that it came from me and Allen. And ChatGPT.