Story Structure and Tinderbox: How to REALLY make it work for you

My immediate curiosity regards the ALPHA function, which appears to have been renamed. The intent is to avoid repetitive use of vivid, ten-dollar words; if one fellow in a story has “a generous mustache,” you want to be cautious about other generous mustaches and have a second look at other uses of “generous”.

I see the point, but much (obviously) depends on just how the list is compiled and used. Clearly, there’s no point in flagging “and” and “the”. If you’re writing about Quaker Mysticism, you don’t want to flag every occurrence of “Quaker”; in fact, I don’t think you really want to flag proper nouns at all.

Devil in details.

Indeed. I’m launching into a study of NLP in iOS and Python, as well as ML. Let’s keep the conversation going. I’ve long been interested in using algorithms to make writing more…beautiful. Clearer. More surprising and delightful. Check out the Hemingway app sometime.

If you think about it, that’s just making a list of all the words in the story and then assigning them weights. Even if it takes a little kajiggling to get it to come out right, it’s worth it. Raises your self awareness as a writer, if you’re doing it the right way. In this day and age, how about this for a truism: good writers are good programmers.

I choked up with nostalgia when I saw Mansfield Software Group. KEdit was a Big Deal in 1985. I used it in 1985 to write the first CD ROM database index for the Sweet’s Architectural Catalog at McGraw-Hill. My first big C language project. First time I used bitmaps. I was friends with those people for years. If I remember correctly you could fire off the compiler from the editor, too. And it was an Editor, not a word processor. That’s a really important distinction.

audibled draft 4 and am in the the part where the guy who wrote structur and Alpha for mcphee has just died. wonderful. weird feeling so nostalgic about software. good stuff about structure but more apocraphyl than useful to someone who wants to do the same

so I understand what he was doing. He liked making little files on his disk, little note files, and assigning each one a code. Then kedit and the Alpha macro would swoop through the disk and order the notes in a single file according to a code (say on the first line in the text). probably it did all the files in a directory, or after a certain date, like that. the explode macro Structur would do the opposite, read a file that had a lot of codes and paragraphs and cut those up into separate files, so they could be reassembled by Alpha. He liked making composable parts, pressing a button, and see them assemble. If his codes were done according to theme, character, etc, he could get different structures for his piece based on the filters he ran. very very very similar to capabilities Tinderbox has internally without its having to squirt things out to the operating system directories.

remember the exploders I wrote a few years ago for Tinderbox? a bunch of text in different string attributes in one note, then drag a note into a container and onAdd would run, create new notes and plug that text into the Text field for each note. and some other action plugged the new text back into the container note.

I am late to this and just catching up, but what a fascinating presentation, with all the suggestive implications from it! Thanks for going to the trouble of figuring this out and explaining it.

1 Like

Glad you enjoyed it. I wish John McPhee were around so I could show it to him :slight_smile:

Cool technique, thanks for sharing. I particularly liked having a simple HTML template with the if statements in there. I have typically created new templates per prototype, but it can be tough to keep track of sometimes.

1 Like

McPhee is still “around,” in the sense of walking the earth. Don’t think he is a big computer guy though.

Just reading Draft 4, his book about writing, and how he has stuck with KEdit through most of his career. @eastgate turned me on to the book. His whole experience with computers is in the book. It’s of it’s time.

And I am delighted he is still around, in the sense of, like Kain, walking the earth.

The temptation with Tinderbox is always to make it too complicated and component-tized because well, you can. I advise: resist. Make it as simple as possible. You’re there to write.

Incidentally, this is a helpful app if you’re interested in working with Dramatica theory.

And this is the company the sells the app, driven by one of the creators/researchers of the theory.

Believe me, it’s not a replacement for Tinderbox, but it gets you versed in the ideas for the kind of story structure they work with.

And here’s something else to think about :slight_smile:

I added a conditional to the text printout: now I only indent the ^text^ when printing the structure; otherwise I leave it unindented.

Here’s the new code block at the end of the HTML item:

^if($Prototype!="Dramatica Definition")^


	^if($PrintDramaticaStructure==true)^

        ^if($Prototype!="Tension Quad Elements")^
            <Blockquote><Blockquote>  ^text^ </Blockquote></Blockquote> 
        ^else^
            <Blockquote><Blockquote> <Blockquote> ^text^ </Blockquote></Blockquote></Blockquote> 
        ^endif^

	^else^

		^text^

	^endif^


^children(/Templates/HTML page/HTML item)^

^endif^

BEWARE. I killed a couple of hours because after I changed the code, the program only printed unindented text, no matter what I did. I thought the problem was in my if-else-endif structure but it turns out that was a red herring. the problem was

	^if($PrintDramaticaStructure==true)^

vs

	^if ($PrintDramaticaStructure==true)^

On the second version of the line, there is a space between ‘if’ and ‘(’ and that caused the ‘if’ test not to be executed, the parser just killed everything until the ^text^ line after the ^else^. NO SPACES BETWEEN IF AND PAREN here, so now I know that.

I find when debugging Tinderbox it helps to get rid of the visual noise sometimes, so I simplified the block like this:

^if($Prototype!="Dramatica Definition")^


	^if($PrintDramaticaStructure==true)^

        ^if($Prototype!="Tension Quad Elements")^
            Amy
        ^else^
            Rory 
        ^endif^

	^else^

		The Doctor

	^endif^


^children(/Templates/HTML page/HTML item)^

^endif^

and that made it easy for me to see the bug. I looked at it went … is that a space…that can’t be the problem…(Tenth Doctor voice) naaaaaaaaaah–but maybe. Allons-y!

Anyone have any thoughts about how to indent first line only?

I’m already evolving this document. I’ll put up an update in a week or two as soon as it’s worthwhile. There’s some new prototypes inherited and whatnot.

I have a lot of prototypes at my document at the end of a long outline

But I end up scrolling aaaaallll the way down to BaseProto a lot to throw the PrintStructure switch on and off.

To make this better, I put an Instruments item up top and put an Alias to Base Prototype in it.

46 PM

Now I can throw the switch from whatever point is closer in the outline.

Here’s a thought for UI: a vertical doc along the left side of the app window where you can drag aliases to notes you want to have handy. A kind of in-app dashboard. @eastgate Mostly for outline mode. Just a place where you can drop a button that toggles a single attribute on a note. Or perhaps just selects a note. Yeah, columns sort of takes care of that, but I just want to see PrintDramaticaStructure as a single item, not a column item for every single note in the outline, when I only care about it on the prototype itself.

Text indent turned out to be easy: it goes in the CSS I added to the HTML Page.

17 PM

turns out you can add tags to your text as well, as long as you understand that the tags added by the template are still functional. So if I add a header tag here:

22 PM

it works

and this is the produced HTML

if I just add a bold tag, the indenting is preserved.

25 PM

26 PM

Nice to know the system is this flexible.

Just don’t cut and paste from RTF text!

I’ve said it before: HTML Templates are the tragically underused superpower of Tinderbox. You think it’s the maps, and the maps are great, and the outline is great, but it’s the interaction with the output that makes this system so brilliant.

2 Likes

If nowhere else, the ‘rules’ about codes in Tinderbox (case-senstivity, whitespace, etc.), are documented here. If re-starting a deep dive into Tinderbox it’s probably worth taking a skim through the Objects & Concepts part of aTbref to see what’s changed from you remembrance from previous work.

Tinderbox’s general vibe (outside documented limitations such as above) is to be quite permissive - i.e. it will attempt to figure out the user’s intent - and fail silently[sic] if it can’t figure an outcome.

A superpower that is devilishly strange to the casual user. Like any kind of coding (although HTML is not really “coding”), find an interesting project to challenge yourself and practice, practice, practice. And keep W3schools.com open all the time in a browser.

A tip: for complex documents with numerous HTML templates, it is useful to use a code note for your CSS to make it modular and easier to maintain – say, a note named “myCSS”. In the <head/> of the template then insert

^value($Text("myCSS"))^
2 Likes

Thanks -aTbref is just invaluable. Believe me, I’ve been using it. This is just a tidbit I missed.

If we get together a list of ten or twenty most common syntax errors I’ll write a debugger. The frustration happens when there’s no feedback on a syntax error, and you lose hours. Doesn’t need to happen. I make syntax errors all the time in at least three other languages every day, and I don’t have to be smart: the compiler finds them.

1 Like