New Version of prosaic

prosaic has evolved from unmaintainable piles of Perl and then Javascript to the pristine world of symbolic evaluation with a rewrite in a relatively young lisp-like language called Hy. Along with a cleaner and saner codebase, prosaic has a short explanatory readme, its first documentation to ever exist.

One can check out the new release on Github. If you’re more interested in poetry, here’s a series created using the previous version of prosaic based on thirty one cyberpunk novels.

Hy compiles to Python, making prosaic importable and programmatically callable from either Hy or Python. It also supports a simple command line interface:

hy __init__.hy load some_text0.txt some_mongo_db_name hy __init__.hy load some_text1.txt some_mongo_db_name hy __init__.hy load some_text2.txt some_mongo_db_name hy __init__.hy create templates/haiku.json some_mongo_db_name

The above example adds three text files (presumably containing prose or poetry in English) to a MongoDB database and then asks prosaic to generate a poem using the haiku template, which looks like this:

[{"syllables":5}, {"syllables":7}, {"syllables":5}]

Templates support the following keys:

syllables : number of desired syllables for the given line

: number of desired syllables for the given line keyword : line that matches string keyword

: line that matches string keyword fuzzy : line that occurs near a line with string keyword

: line that occurs near a line with string keyword rhyme: letter indicating line’s place within a rhyme scheme.

A naive sonnet might look like this:

[{"rhyme": "A", "keyword":"vamplate"}, {"rhyme": "B", "keyword":"stiletto"}, {"rhyme": "A"}, {"rhyme": "B", "fuzzy": "steed"}, {"rhyme": "C", "fuzzy": "steed"}, {"rhyme": "D"}, {"rhyme": "C"}, {"rhyme": "D", "keyword": "buckler"}, {"rhyme": "E", "fuzzy": "buckler"}, {"rhyme": "F"}, {"rhyme": "E"}, {"rhyme": "F"}, {"rhyme": "G", "syllables": 10, "keyword": "giant"}, {"rhyme": "G", "syllables": 10, "keyword": "dragon"}]

Keys can be mixed and matched ad nauseum for a given line.

The goal of this rewrite was to be able to run prosaic using threads to improve performance and to allow prosaic to be embedded within other, potentially web based, applications.

Ultimately, prosaic is still a hacked-up art project with a user base countable on one set of fingers. Don’t expect much in the way of support or usability, but do feel free to open issues on Github or send me an email if you have questions about it.

As always with open source software, patches are welcome.

my personal blog http://chiptheglasses.com has more poetry (non-cyberpunk cut-up and fully human poetry). i say inane things at @nate_smith.