dariusk / NaNoGenMo-2014

National Novel Generation Month, 2014 edition.
257 stars 17 forks source link

misunderstood- and misapplied- narratology #6

Open MichaelPaulukonis opened 9 years ago

MichaelPaulukonis commented 9 years ago

body of declaration of intent

I haven't done as much text-twiddling this year as I had hoped. November may up-end that statistic.

end of body of declaration of intent

MichaelPaulukonis commented 9 years ago

Things I'm fiddling with will be in https://github.com/MichaelPaulukonis/NaNoGenMo2014

MichaelPaulukonis commented 9 years ago

Bloody hell, why does prep for this year involve staring at scans of photocopies of pages of Fortran V printouts?

cpressey commented 9 years ago

Hm! I don't know, but it just gave me an idea: use ImageMagick (or something) to make a cut-up novel out of a bunch of scanned images of pages of books and papers and magazines and such things.

hugovk commented 9 years ago

I made a simple Python wrapper around the Chronicling America API, full of scanned newspaper images. From each search result you get an id (eg '/lccn/sn86063756/1911-03-23/ed-1/seq-3/') which you can easily get the image (eg http://chroniclingamerica.loc.gov//lccn/sn86063756/1911-03-23/ed-1/seq-3.jp2).

https://github.com/hugovk/chroniclingamerica.py

cpressey commented 9 years ago

@hugovk Oh gosh. Availability of source materials! That is really tipping me in the direction of trying this.

hugovk commented 9 years ago

@cpressey The Library of Congress is also on Flickr, along with over a million images from the British Library, 2.6m Internet Archive Book Images and scores more also in Flickr Commons.

(I'll cross post this in #1.)

MichaelPaulukonis commented 9 years ago

cut in at any intersection point! Those are awesome ideas!

Crap. I knew I'd get distracted.....

I took on the challenge of dealing with narrative because it seemed so daunting last year, and because so many things were interesting on the sentence-by-sentence level, but lost it after a paragraph.

Don't know as I'll get to one coherent narrative novel -- and I'm thinking tiny narraive stories, anyway -- but I'm enjoying the journey, once again.

hugovk commented 9 years ago

@MichaelPaulukonis If you can't get one 50k novel, you can always settle with a compendium of (say, 50 x 1k, or 500 x 0.1k) shorter stories :)

MichaelPaulukonis commented 9 years ago

@hugovk That is the idea. I go into more detail here. In addition to leading me to learn about Vladimir Propp and revisiting Levi-Struass, I'm playing with grabbing characters, locations, and staring at manuals for software written in Fortan V back in the 1970s. Crazy fun!

Primary fuzzy text I'm staring at is Modeling Propp and Levi-Strauss in a Meta-Symbolic Simulation System. There's too much real theory to understand/boil-down for November, but it's leading me in interesting directions. Or getting me think about directions before discarding them.

@cpressey would have to have some sort of algo to "count" that it's ~= 50K words. Define an image as an average (assuming a certain threshold black:white pixels) word-count?

cpressey commented 9 years ago

@MichaelPaulukonis I can't speak for my co-participants, but when it comes to text + image, I'm content with human judgment instead of an algorithm: "does it feel 50,000-words-ish?" Or maybe just assume there are at least 100 words per page on average, and generate 500 pages... Anyway, I'm pleased to report that my initial experiment with cut-ups, though simplistic, has not been too disappointing.

I don't know Propp from a hole in the ground and my one experiment with narrative so far this year is mostly a joke I'm sorry to say, so I'll cease polluting your intent-to-participate issue with my nonsense :)

MichaelPaulukonis commented 9 years ago

This is a discussion forum! All Most are welcome!

It's a funny joke (for certain, limited definitions of the term "funny"). I'm not one to throw stones; I've found digging through the old documents from the 70s filled with Fortan V code to be "fun". I'm digging too much into theory, though, I think. Need to balance it out. Especially since I've spent two weeks and have no text to show for it.

I've spent too much time on this, I suppose.

cpressey commented 9 years ago

Alright -- well, I'll try to keep my nonsense topical anyway.

I confess, I did a bit of "precoding" before November started too -- just little experiments to warm up, of course -- and since then have done only, um, more little experiments. I could set for myself the goal of doing one little experiment (on average) per day for the month, and then just pick one at the end and run it for 50,000 words. I don't know, maybe that's just not cricket, but it is appealing. At any rate, even though it's experiments rather than theory, I may be in the same "academic" boat as yourself -- finding no real purchase on the practical side of things yet.

And now I'm starting to be overwhelmed by seeing the amount of quality stuff that has already been produced this year, and it's still only the 3rd...

That narrative Makefile might not be entirely a geeky joke. The thought processes were obscure, but I'm sure at some point it involved a memory of this joke from The Simpsons:

Lisa Simpson: How can a hamster write mysteries? Clerk: Well, he gets the ending first, then he writes backward.

Followed by the realization that there's already a (much-maligned) tool that does that.

hugovk commented 9 years ago

I could set for myself the goal of doing one little experiment (on average) per day for the month, and then just pick one at the end and run it for 50,000 words. I don't know, maybe that's just not cricket, but it is appealing.

I think that's a good idea. You never know what might produce something really interesting. You might find discover something along the way and decide to develop that a little longer.

MichaelPaulukonis commented 9 years ago

Sample output with very tiny wordbank. Basically a proof-of-concept as I work out some functions and templates. Long way to go....


Holly Shiftwell lives in New Haven. Holly Shiftwell lives with Jaffar and PeeWee Herman.

Jaffar unexpectedly dies, leaving Holly Shiftwell devastated.

Spirit of 1776 gains information.

Spirit of 1776 attempts to deceive victim.

Holly Shiftwell unwittingly helps Spirit of 1776.

Holly Shiftwell leaves to walk the dog.

Holly Shiftwell is chased.

Spirit of 1776 is given a tongue-lashing by Holly Shiftwell.

Everything works out for Holly Shiftwell.

MichaelPaulukonis commented 9 years ago

Filling in some more templates and the associated code to populate them. I'm feeling that templating is a poor method. But it's what I'm working with for now....


Allison lives in a valley. Allison lives with Jolly Green Giant, Ella, Spirit of 1776, Noah, and Hailey.

Savannah warns Allison to not talk to Makayla.

As soon as Savannah is gone, Allison runs off to find Makayla and has an interesting conversation.

Makayla attempts to deceive victim.

Allison unwittingly helps Makayla.

Allison and Makayla do battle.

Makayla is defeated.

Allison sets out for a valley.

Makayla is hung, drawn, and quartered by Allison.

Allison settles down and has parking tickets forgiven.

MichaelPaulukonis commented 9 years ago

Getting adjectives and a larger wordbank for people, places and things (and verbs) is planned. For now, I'm trying to get a working structure going.

enkiv2 commented 9 years ago

This one is amusing. Do you have a template?

On Thu Nov 06 2014 at 1:49:07 PM Michael Paulukonis < notifications@github.com> wrote:

Getting adjectives and a larger wordbank for people, places and things (and verbs) is planned. For now, I'm trying to get a working structure going.

— Reply to this email directly or view it on GitHub https://github.com/dariusk/NaNoGenMo-2014/issues/6#issuecomment-62029880 .

MichaelPaulukonis commented 9 years ago

The following files were used

proppian.fairy.tale.gen.1.0.htm propp.js

templates.js

from https://github.com/MichaelPaulukonis/NaNoGenMo2014/tree/master/propp.gen

there are some css and other files required. as well as node modules that are installed manually (see scripts included at the bottom of the .htm file).

The template are primarily in the templates.js file, but some things (like interdiction and violation) are within propp.js.

My separation of concerns could be better. I'm feeling this out as I go along. Not sure what is needed, nor how to best do it. I do know I have not implemented things the way I will want them, but they are giving me output for now.

cpressey commented 9 years ago

I really like these generated synopses BUT every time I read one I can't help wondering who victim is.

Perhaps I am overthinking things?

MichaelPaulukonis commented 9 years ago

Nope; "victim" hasn't been built out yet. A lot of the templates need background functions to set up characters and things that interact elsewhere.

There's one function/template that is about the hero overcoming their loss from the beginning of the story. This could be about a parent/relative/friend returning home, or acceptance of their death. But they'd need some programming to allow a proper response, instead of just dumb words.

So I'm building this slowly, getting pieces to work, revising other pieces as required. Also trying to understand the ideas behind the Propp schema.

I did build a package.json file last night, and put some more separation between the GUI and the generator.

There's also 3 kids and a wife in the background that need some detailing. That's not in the code, that's in my house!

MichaelPaulukonis commented 9 years ago

Still haven't resolved the victim thing. Bigger fish have remained unfried while I work on some smaller fish.


Katherine lives in grass hut. Katherine lives with Kaylee, Sydney, Jaylin, Benjamin, William, Anthony, and Daniel. David, Nicholas, and PeeWee Herman are friends of Katherine.

Kaylee unexpectedly dies, leaving Katherine devastated.

Savannah warns Katherine to not talk to Jessica. Savannah introduces LinearMia to Katherine.

As soon as Savannah is gone, Katherine runs off to find Jessica and has an interesting conversation. Alexandra, the Spirit of 1776, Morgan, Joseph, Megan, the Easter Bunny, Phoenix, Dylan, Nathan, Allison, and Lily are in league with Jessica.

Jessica pays a visit to grass hut.

While skulking about grass hut, Jessica overhears some gossip about Katherine.

Jessica attempts to deceive victim.

Katherine unwittingly helps Jessica.

Jessica forcibly seizes LinearMia.

The need is identified (Lack)

Katherine discovers the lack.

Katherine chooses positive action.

Katherine leaves to walk the dog.

Katherine is challenged to prove heroic qualities.

Katherine responds to test.

Savannah gives Katherine Neural-Dynamic-Internal Deflector.

Katherine and Jessica do battle.

Katherine manipulates Neural-Dynamic-Internal Deflector to defeat Jessica.

Katherine sets out for grass hut.

Katherine is chased.

Jessica is hung, drawn, and quartered by Katherine.

Becomes a god, Katherine retires to a life of farming.

MichaelPaulukonis commented 9 years ago

Things are moving slowly. It's a template engine. Which is somewhat dull. It's enforcing some rules that suggest how narrative "wonder tales" could play out. More NLP stuff could make it lively. perhaps.

Anyway. It's fun.


Anna works in a office near first floor in Goliath National Bank. Anna works with Sydney, Mia, Hailey, and Brienne of Tarth. S/he knows Joan of Arc, Allison, and Savannah from work.

Suddenly, it becomes as night. Rachel has shut off the power!

Anna leaves to cook the books.

Anna and Rachel do battle.

Through deft use of potted plant, Rachel is defeated.

Anna sets out for first floor.

Rachel is sent to the mailroom by Anna.

Anna settles down and is made CEO.

MichaelPaulukonis commented 9 years ago

"Hello there, Allison" said Jessica. "Hello there, yourself, Jessica" replied Allison. "Well, you certainly are affectionate," remarked Jessica. "Yes, I am," conceded Allison. "It's been said that I'm also testy!" Allison warns Jessica to avoid East Lansing. Allison introduces Alternate River to Jessica

Despite the warning, Jessica goes to East Lansing. Jasmine, a rather bad and dishonorable person, appears.

Jasmine kills Alexandra.

Allison gives Jessica Infinite Parameter.

Jessica and Jasmine do battle.

Through deft use of Infinite Parameter, Jasmine is defeated.

Jessica settles down and dates for a few years, but decides to remain single. Jessica still mourns the stinging loss of Alexandra.

cpressey commented 9 years ago

I like how this is getting steadily weirder while retaining something resembling a plot. Can't wait to see the undoubtedly Dragon Ball Z-like sequence that "do battle" will unfold into.

enkiv2 commented 9 years ago

Do all these stories have exactly two characters? You could probably string them together while keeping one character name, producing an epic wherein a single character defeats many worthy foes.

On Wed Nov 12 2014 at 5:26:20 AM Chris Pressey notifications@github.com wrote:

I like how this is getting steadily weirder while retaining something resembling a plot. Can't wait to see the undoubtedly Dragon Ball Z-like sequence that "do battle" will unfold into.

— Reply to this email directly or view it on GitHub https://github.com/dariusk/NaNoGenMo-2014/issues/6#issuecomment-62697911 .

MichaelPaulukonis commented 9 years ago

I've been (trying/learning) to following the Vladimir Propp classification of fairy tales/Russian wonder stories. These have 2 primary characters (hero/villain). Then there's the hero-advisor (Allison in this case) and an assistant ("Alternate River" here; doesn't appear again, though). The original schema has family, and I've added acquantainces of the hero, not listed here, although Alexandra is killed and remembered. The villain has minions (and family) (not in the original model).

The battle will quite possibly involve family, acquaintances and minions.

I'm working on too many pieces of this at once, in small dribs and drabs. But the superstructure is coming together!

The "need for dialogue" came at me last night and I whipped it out. It's pretty awful, but serves as a placeholder for future expansion, and as an early test for the description adjectives I had just loaded on each character. I almost had every member of the family talk to each other; that would have been interminable!

@enkiv2 That's an interesting idea. Not where I was planning on going with this, but I could see tweaking it to go in that direction......

MichaelPaulukonis commented 9 years ago

Starting the battle code pushed me in other directions. Whatever. It's in-progress!


Kayla the Cautious lives in a small house near Oblivion in Talexico. Kayla lives with Practical Megan, Julia the Respectful, Sensitive Anna, Idle Joan of Arc, Candid Natalie, Makayla the Logical, and Unwilling Jessica. Kaylee the Enterprising, Ridiculous Sydney, Haley the Earnest, Unguarded Lauren, Jennifer the Local, Morgan the Deep, Kaitlyn the Illogical, Jasmine the Peevish, Allison the Surly, Hailey the Content, Katherine the Immodest, and Smart Victoria are known to Kayla.

Joan of Arc unexpectedly dies, leaving Kayla devastated. "Bye!" said Kayla to nobody in particular.

MichaelPaulukonis commented 9 years ago

Doing some sideways study of Nick Monfort's Curveship.

MichaelPaulukonis commented 9 years ago

Something that isn't that big of a deal, but the default gender for the html-runner (it's not headless (yet!)) is female. This is partly because I get the feeling that most generative-narrative examples I've seen involve male protagonists, with females as bystanders, victims, people to be interacted with. Making the hero/villain female by default (can be set to male, or randomized) was my reaction to this. I should note that it is a feeling, a sense: I haven't done any rigorous analysis to back this up.

MichaelPaulukonis commented 9 years ago

Battle has been "difficult" because it requires a recoding of items/magical-items away from dumb-strings into things-that-have-properties (is there a name for such a thing? It seems to be useful!).

I will do this, however, as it will be fun!

Then I need to fill in some more template-functions.

Then: better conversation WHICH CURRENTLY SUCKS, but is moderately amusing in small doses.

MichaelPaulukonis commented 9 years ago

Things would have gone more swimmingly had I actually pushed the changes I made over lunch at work into the repo so I could work on them at night when I was not at work. So it goes.

Working on templates. I keep expanding ones that are already populated, however. SO IT GOES.

Intros and some other templates expanded

hugovk commented 9 years ago

Things would have gone more swimmingly had I actually pushed the changes I made over lunch at work into the repo so I could work on them at night when I was not at work. So it goes.

Alternatively stick it all in your Dropbox and work on it there.

MichaelPaulukonis commented 9 years ago

That used to be my method of defense, but Dropbox is blocked by my new corporate firewall. On Nov 14, 2014 3:18 AM, "Hugo" notifications@github.com wrote:

Things would have gone more swimmingly had I actually pushed the changes I made over lunch at work into the repo so I could work on them at night when I was not at work. So it goes.

Alternatively stick it all in your Dropbox and work on it there.

— Reply to this email directly or view it on GitHub https://github.com/dariusk/NaNoGenMo-2014/issues/6#issuecomment-63023111 .

cpressey commented 9 years ago

I've taken to having copies of my repositories on a USB drive, pushing to/pulling from them on my laptop, and pushing to Github when I get to work/back home. Not really any better because while it solves the "I don't have internet on train" problem, it doesn't do much about "I forgot to sync".

MichaelPaulukonis commented 9 years ago

I've reached the point where work is not showing fantastic new results because so much of it is cleaning up code and extending it in new and unfinished directions. But it is still fun.

MichaelPaulukonis commented 9 years ago

New idea: a novel in whalesong (inspired by @cpressey thunking about wordless operas [rebuttal: there are wordless novels, but you don't define novel as "wordless" for most goals] and @jbum's birdsongbook and this comment )

Mmmmmmmmmmmmrrrrrrrrrrroooooouuuuuuuuououoooooooooooooooooooouuuiiiiiiiiiiiiiioooooooooooooooooooiiieeeeeeeeeuuuuuuuuuuuuuuuuuuuuuuuuuhhhhhhhhhhhhhoooooooeeeeeeeeeennnnnnnnnnnnnnnnnnnnnuuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiooooooooooooooooooooooouuuuuuuuuuuuuuuuuuuuuuooooooiiiiiiiiiiiiuuuoooouuuououoooooooooooooooooooooooooooooooooooooooiiieeeeeeeeeuuuuuuuuuuuuuuuuuuuuuuuuuhhhhhhhhhhhhhoooooooeeeeeeeeeennnnnnnnnnnnnnnnnnooooouuuuuuuuuuuuuunnnnnnnnnnuiiiooooooouuuueeeeinnnnnnnnnnnnnnnnnnnnuuuuuuuuuuuuuuoooiiieeeuuuuuuuuuuuouuuuuuuuououoooooooooooooooooooouuuiiiiiiiiiiiiiioooooooooooooooooooiiieeeeeeeeeuuuuuuuuuuuuuuuuuuuuuuuuuhhhhhhhhhhhhhoooooooeeeeeeeeeennnnnnnnnnnnnnnnnnnnnuuuuuuuuuiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiooooooooooooooooooooooouuuuuuuuuuuuuuuuuuuuuuooooooiiiiiiiiiiiiuuuoooouuuououooooooooooooooouuoooooooooooooooonnnnnnnnngggggggggg

MichaelPaulukonis commented 9 years ago

@enkiv2 Some framework changes have allowed for the implementation of "BossMode" -- if the villain is killed, the story loops back to create a new villain.

Bare bones tale with multiple villains

Still need to implement "battle." And lots of other things, like "travel" which is required for a chase.

cpressey commented 9 years ago

BossMode ought to make it easier for it to reach the 50,000-word mark, in a pinch... I was kind of concerned about that.

A nice ol' trope that could be employed, in case you need to recycle names: "You again? But we saw you (fall off that cliff|get buried under that rubble|at ground zero of that tactical nuclear strike|etc)! No one could survive that!"

MichaelPaulukonis commented 9 years ago

I think the 50k will need hit by having a collection of stories, but we shall see. Also in the works is embedded stories, wherein one of the characters tells a tale, and then the action resumes. This could go on ad infinitum, but I don't want to do that. Once the infrastructure is in better shape there will be more expansion of the templates. I want to handle journeys, battles and hero deaths first - those contain a host of issues, from possessions to locations. I also want to create families of patents, etc.

Too much boring stuff! Compared to tons of experiments, anyway. On Nov 16, 2014 8:40 AM, "Chris Pressey" notifications@github.com wrote:

BossMode ought to make it easier for it to reach the 50,000-word mark, in a pinch... I was kind of concerned about that.

A nice ol' trope that could be employed, in case you need to recycle names: "You again? But we saw you (fall off that cliff|get buried under that rubble|at ground zero of that tactical nuclear strike|etc)! No one could survive that! http://tvtropes.org/pmwiki/pmwiki.php/Main/NoOneCouldSurviveThat"

— Reply to this email directly or view it on GitHub https://github.com/dariusk/NaNoGenMo-2014/issues/6#issuecomment-63219245 .

MichaelPaulukonis commented 9 years ago

More templating, and the possibility of the hero dying. But, so far, only by water.

Text but no water death

MichaelPaulukonis commented 9 years ago

Here's a death-by-water. Bonus: it appears as an EMBEDDED TALE.

This was harder than I thought it would be. That's what comes of starting out with somebody else's code and patching it up only as required, yet not fully understanding it. tsk tsk tsk.

The embedded tales are hard-coded to appear in one spot, and are always of the water-death. This was more proof-of-concept than anything else. It also involved passing in a specific sub-function (death-by-water as a villainy type). So, there's that, too. All of this was steps towards randomization, and node.js headless running.

The name of the narrator should be passed into the embedded-universe, instead of being randomly selected. There are plenty of other fish to fry, stilll....

enkiv2 commented 9 years ago

Are tales capable of being embedded at an arbitrary depth?

On Tue Nov 18 2014 at 11:24:25 PM Michael Paulukonis < notifications@github.com> wrote:

Here's a death-by-water https://gist.github.com/MichaelPaulukonis/ee60221375867fcbe30e. Bonus: it appears as an EMBEDDED TALE.

This was harder than I thought it would be. That's what comes of starting out with somebody else's code and patching it up only as required, yet not fully understanding it. tsk tsk tsk.

— Reply to this email directly or view it on GitHub https://github.com/dariusk/NaNoGenMo-2014/issues/6#issuecomment-63590461 .

MichaelPaulukonis commented 9 years ago

Are tales capable of being embedded at an arbitrary depth?

@enkiv2 Yes. There were dangling globals from the legacy procedural code (and still are, I think, but mostly for "enum" helpers, not data) that I had to finally fix up to get it to work.

I know that I could generate a novel by a huge series of nests, but I don't want to do that becuse: GIMMICK.

Much of NaNoGenMo is "gimmicks", and this "narratology" project is mostly a "template" gimmick. But I want to stick to one gimmick, and see how far I can take it.

I have discovered that this particular gimmick is not well suited to getting 50,000 words out of a bunch of templates; repeating the stories is going to be obviously repetitive, unless I can really do a number on increasing the template complexity. SO IT GOES.

The side-benefit of getting nested tales working is that I have to enable setting arbitrary values -- passing in a pre-defined narrator, hero, and a specific type of "villany". This allows me to have the tale-teller appear as the teller of the tale (instead of the tale possible being told by somebody else, as at the gist example), as the main-story hero meeting an untimely-demise inside of the nested-tale.

For example:

Kaitlyn met Timid Kendall.

"Ahoy! Timid Kendall" muttered Sassy Kaitlyn.

"Hello there, Sassy Kaitlyn" returned Timid Kendall.

"Well, you certainly are dependent," exclaimed Sassy Kaitlyn.

"Yes, I am," conceded Timid Kendall. "But it's been said that I'm also
timid!"

Kendall warned Kaitlyn to avoid id_19.

Kendall introduced Automatic Quinn to Kaitlyn

"Ugh. Its Sassy Kaitlyn" mused Quinn the Horrendous.

"Well, look who this is: Quinn the Horrendous" muttered Sassy Kaitlyn.

"Well, you certainly are sassy," remarked Quinn the Horrendous.

"Yes, I am," conceded Sassy Kaitlyn. "But it's been said that I'm also
sincere!"

Automatic Quinn said "I will tell you a story":

    When nobody was paying attention, there comes into the region of New
    Haven a very guilty individual known as Petty Alexandra.

    Alexandra throws Kaitlyn into the well.

    She had never learned to swim.

    These things happen. It is unfortunate. There is much wailing in New
    Haven.

    In all the world there is nothing stranger than the truth, and it all
    happened exactly as I have told you, for I was there, as sure as my
    name is Automatic Quinn.

"And now," concluded Automatic Quinn, "my tale is done."

A very petty person known as Petty Alexandra came into the region of
New Haven when nobody was paying attention.

Thanks to the ravages Petty Alexandra's predations had left on the
land, there was the threat of cannibalism among the relatives of
Kaitlyn's family. Maria, Hailey, Brienne of Tarth, Stupid Victoria,
Katherine, Rachel, Megan the Immodest, Haley, Lauren the Numb, and
Julia eyed each other hungrily.

All of this took place long before you were born, so it's not
surprising that you don't remember it. But it happened, and people
speak of it still.
enkiv2 commented 9 years ago

Template complexity is exactly why I haven't made a lot of progress on my similar project (the monomyth one) -- the length of a template would probably be several times larger than any single output!

On Wed Nov 19 2014 at 12:07:32 PM Michael Paulukonis < notifications@github.com> wrote:

Are tales capable of being embedded at an arbitrary depth?

@enkiv2 https://github.com/enkiv2 Yes. There were dangling globals from the legacy procedural code (and still are, I think, but mostly for "enum" helpers, not data) that I had to finally fix up to get it to work.

I know that I could generate a novel by a huge series of nests, but I don't want to do that becuse: GIMMICK.

Much of NaNoGenMo is "gimmicks", and this "narratology" project is mostly a "template" gimmick. But I want to stick to one gimmick, and see how far I can take it.

I have discovered that this particular gimmick is not well suited to getting 50,000 words out of a bunch of templates; repeating the stories is going to be obviously repetitive, unless I can really do a number on increasing the template complexity. SO IT GOES.

The side-benefit of getting nested tales working is that I have to enable setting arbitrary values -- passing in a pre-defined narrator, hero, and a specific type of "villany". This allows me to have the tale-teller appear as the teller of the tale (instead of the tale possible being told by somebody else, as at the gist example), as the main-story hero meeting an untimely-demise inside of the nested-tale.

For example:

Kaitlyn met Timid Kendall.

"Ahoy! Timid Kendall" muttered Sassy Kaitlyn.

"Hello there, Sassy Kaitlyn" returned Timid Kendall.

"Well, you certainly are dependent," exclaimed Sassy Kaitlyn.

"Yes, I am," conceded Timid Kendall. "But it's been said that I'm also timid!"

Kendall warned Kaitlyn to avoid id_19.

Kendall introduced Automatic Quinn to Kaitlyn

"Ugh. Its Sassy Kaitlyn" mused Quinn the Horrendous.

"Well, look who this is: Quinn the Horrendous" muttered Sassy Kaitlyn.

"Well, you certainly are sassy," remarked Quinn the Horrendous.

"Yes, I am," conceded Sassy Kaitlyn. "But it's been said that I'm also sincere!"

Automatic Quinn said "I will tell you a story":

When nobody was paying attention, there comes into the region of New
Haven a very guilty individual known as Petty Alexandra.

Alexandra throws Kaitlyn into the well.

She had never learned to swim.

These things happen. It is unfortunate. There is much wailing in New
Haven.

In all the world there is nothing stranger than the truth, and it all
happened exactly as I have told you, for I was there, as sure as my
name is Automatic Quinn.

"And now," concluded Automatic Quinn, "my tale is done."

A very petty person known as Petty Alexandra came into the region of New Haven when nobody was paying attention.

Thanks to the ravages Petty Alexandra's predations had left on the land, there was the threat of cannibalism among the relatives of Kaitlyn's family. Maria, Hailey, Brienne of Tarth, Stupid Victoria, Katherine, Rachel, Megan the Immodest, Haley, Lauren the Numb, and Julia eyed each other hungrily.

All of this took place long before you were born, so it's not surprising that you don't remember it. But it happened, and people speak of it still.

— Reply to this email directly or view it on GitHub https://github.com/dariusk/NaNoGenMo-2014/issues/6#issuecomment-63675249 .

MichaelPaulukonis commented 9 years ago

Well, if you implement BOSSMODE and EMBEDDED_TALES you can fill up a lotta space PDQ.

I'd like to see you get back to the project.

I'm particularly interested in seeing what Blindsight has to do with it all. (Have you read the follow-up book, Echopraxia? I did not enjoy it as much. Then again, who reads Peter Watts for "enjoyment"?)

enkiv2 commented 9 years ago

Blindsight was a data source for a different experiment, wherein I used machine translation to produce semantic drift. Unfortunately, it didn't really produce enough semantic drift to be interesting.

On Wed Nov 19 2014 at 1:15:20 PM Michael Paulukonis < notifications@github.com> wrote:

Well, if you implement BOSSMODE and EMBEDDED_TALES you can fill up a lotta space PDQ.

I'd like to see you get back to the project.

I'm particularly interested in seeing what Blindsight has to do with it all. (Have you read the follow-up book, Echopraxia ? I did not enjoy it as much. Then again, who reads Peter Watts for "enjoyment"?)

— Reply to this email directly or view it on GitHub https://github.com/dariusk/NaNoGenMo-2014/issues/6#issuecomment-63686270 .

cpressey commented 9 years ago

I know that I could generate a novel by a huge series of nests, but I don't want to do that becuse: GIMMICK.

Hark, is that the sound of a nail being hit on the head?

Perhaps this would be a good place to respond to the point you made about rigour over in that other issue like I've been meaning to...

Yes, the rigour of NaNoGenMo is in the constrained time frame and general lack of resources, but I submit that the rigour is also in the lack of rigour, or, to rephrase that to make it sound less Zen-like, the apparent lack of rigour.

I mean, you could come upon NaNoGenMo and ask yourself, oh an activity, is this activity for beginners, experts, what? Where is the bar set?

If you define "novel" to mean "words", then the goal is to write code which generates 50,000 words. This would only be a challenge for an absolute beginner, someone who has never programmed before. The bar seems to be set astonishingly low.

On the other hand you can define "novel" literally, for instance going by Wikipedia's massive entry for "Novel". This is clearly beyond the capabilites of a computer, at least in 2014, and I daresay will be for a while yet. The bar seems to be set absurdly high.

So the first challenge is deciding where, in between those extremes, you personally want to set your bar. Make it too easy, and it will be unsatisfying; make it too ambitious, and you won't finish.

So the temptation is to make something that is easy enough to complete, but still satisfying in some way. One way to do that is to shoot for, as you say, a gimmick.

I should be clear that I am not against this, exactly; I don't know quite how one'd even define "gimmick" in 2014 but I'm trying to think of it as a sort of inverted trope (tropes work because they're established, while gimmicks work because they're unestablished, i.e., novel) and if I go by tvtropes' philosophy that tropes themselves are neither good nor bad, why should gimmicks be inherently good or bad either?

But I do think it is important that, if you go for a gimmick, you recognize that's what it is and accept it as (inevitably, I think) closer to a cheap laugh than something of lasting value.

I think what I personally like in NaNoGenMo (both to see and to hunt for myself) is that something that, while certainly not a "novel" in the Wikipedia sense, genuinely numbs your brain for a few minutes while it tries to process what is going on. A gimmick-which-is-not-quite-a-gimmick, maybe; the rather base appeal may be there but it is maybe not quite so obvious, or maybe not even quite so appealing when you actually bother to examine it.

(Not that my extensive research has led me to many successes along these lines, given that I am seriously considering submitting a novel called cough Doby Mick.)

MichaelPaulukonis commented 9 years ago

So the temptation is to make something that is easy enough to complete, but still satisfying in some way. One way to do that is to shoot for, as you say, a gimmick.

I agree. However, my gimmick is Proppian narrateme-templates. Both last year and this year there have been a number of nested (recursive) generators. I'd like to do something different(ly).

I hope I can get there. I may have to give up, and use a second, third, fourth, ...nth gimmicks.

Ultimately, this will be too repetitive. I thought I'd get to a stable framework faster, and then be able to experiment with language acquisition, be it through Twitter or whatnot. Don't think that is in the cards for Nov.

Dec, Jan, Feb, though..... who knows!

There's stuff from NaNoGenMo2013 that I didn't get around to playing with until August or September of this year (didn't help that I detoured into Processing in the spring, and had [with a bit of help from my wife] another baby in May).

So, there's goals, there's plans, there's November, there's gimmicks, and there's the future.

Also, I discovered that my 9-year-old niece like Fairy Tales. So I have to see what I can get out of the machine by the time she visits on Sunday....

enkiv2 commented 9 years ago

Gimmicks can definitely be satisfying, even at novel length, when they are well-executed (take, for example, House of Leaves -- an embedding gimmick in the form of footnotes). And, less interesting gimmicks can be profitable (people actually bought copies of Emoji Dick, if I recall, but I'd much rather own a copy of Doby Mick or one of the other variations people did this year!) On the other hand, it seems like NaNoGenMo's draw is that it has a large variety of different gimmicks collected together (like The Twilight Zone or Monty Python's Flying Circus) -- hence the utility of something like experiment-a-day: most single gimmicks won't remain fully interesting at novel length.

It feels like maybe several different generation methods could be threaded together to make a semi-coherent whole, if they somehow were able to be configured to start from the same sources -- sort of like one of those experimental novels where the same vignette is told in the style of 100 famous authors. I can't think of any way to do this other than generating a story with one method (say, proppian narrateme-templates) and then using dialect filters (see the story of how Allison defeats Josh, as told by the swedish chef from the Muppet show! See the same story told by a 70s stereotype!).

On Thu Nov 20 2014 at 8:33:35 AM Michael Paulukonis < notifications@github.com> wrote:

So the temptation is to make something that is easy enough to complete, but still satisfying in some way. One way to do that is to shoot for, as you say, a gimmick.

I agree. However, my gimmick is Proppian narrateme-templates. Both last year and this year there have been a number of nested (recursive) generators. I'd like to do something different(ly).

I hope I can get there. I may have to give up, and use a second, third, fourth, ...nth gimmicks.

Ultimately, this will be too repetitive. I thought I'd get to a stable framework faster, and then be able to experiment with language acquisition, be it through Twitter or whatnot. Don't think that is in the cards for Nov.

Dec, Jan, Feb, though..... who knows!

There's stuff from NaNoGenMo2013 that I didn't get around to playing with until August or September of this year (didn't help that I detoured into Processing in the spring, and had [with a bit of help from my wife] another baby in May).

So, there's goals, there's plans, there's November, there's gimmicks, and there's the future.

Also, I discovered that my 9-year-old niece like Fairy Tales. So I have to see what I can get out of the machine by the time she visits on Sunday....

— Reply to this email directly or view it on GitHub https://github.com/dariusk/NaNoGenMo-2014/issues/6#issuecomment-63808008 .

MichaelPaulukonis commented 9 years ago

Gimmicks can definitely be satisfying, even at novel length

I have never argued otherwise. What I am saying, though, is that I have one gimmick, and I don't wish to extend it further. For example, Dictionary of the Khazars had one gimmick -- told as a fake dictionary. If it added the gimmick of "unreliable narrator" and "teen paranormal romance" you'd be gilding a lily (if not making a sow's ear out of a silk purse).

I wish to explore the problem-space of templates, and Vladimir Propp's wonder-story functions. It's not a good match, since his functions are descriptive, not proscriptive; that is, they are analytical tools, not developmental tools.

But it's fun anyway, and useful up to a certain point.


The original plan was to change the source wordbanks to change the scenarios; while that still remains a concept in the code, the templates have gotten so complex I haven't kept up with it.

An early proof-of-concept was a business-related wordbank:

Anna works in a office near first floor in Goliath National Bank. Anna works with Sydney, Mia, Hailey, and Brienne of Tarth. S/he knows Joan of Arc, Allison, and Savannah from work.

Suddenly, it becomes as night. Rachel has shut off the power!

Anna leaves to cook the books.

Anna and Rachel do battle.

Through deft use of potted plant, Rachel is defeated.

Anna sets out for first floor.

Rachel is sent to the mailroom by Anna.

Anna settles down and is made CEO.