Tag: Twine

“String Theory”: A Work of e-lit

Twine 1

This is “String Theory.”┬áThat link will bring you to my story and you can play it there as many times as you’d like. I encourage you to try it a few times because it changes, especially as it goes on. Below you’ll find an explanation of what I did and how I did it and why, but don’t read that until after you’ve tried the story out a few times because I’ll reveal some secrets there that would be better experienced for the first time within the story itself. Just know that if things seem weird, they’re supposed to. It isn’t broken even if it seems like it might be. Oh, and please try to play it in Chrome because that’s the only browser that I know works for sure.

What this is

It’s a work of e-lit, the final project for my Digital Humanities class. I wrote everything here myself and figured out how to get Twine, the tool/platform I used to create the story, to do what I wanted it to do. It wasn’t easy! I had initially planned on just remediating a story I had written before (and posted here!), perhaps expanding it a bit in the process, but I quickly realized that my previous story, which was written with a kind of nothing-protagonist and in a very purposefully vague way would not work within the structure of the Twine story. Here I needed a definite protagonist with a real life and ambitions and stuff, he couldn’t be an everyman. He’s still a pretty boring guy, but at least he has some personality. I also made the dog a more integral part of the story, gave him a winking name, and even used him as a POV character in a few passages. That was fun.

The story starts off linearly as Jake grows old and discontented. When he takes his dog out for a walk in the woods behind his apartment he stumbles across a long piece of string which brings him to a line of trees, each of which has a peep-hole in a door which opens onto an alternate version of Jake’s life. The first tree is always the same, but the next three can come in any order. They change minor things, mainly his income level as he sees a very rich version of his house and a very poor one, and one in which his interests have shifted slightly. Like I said, you will visit all three of them, but the order will change depending on the random choices in the program. After those first four doors, the fifth through the fifteenth are any random selection of 9 possible passages. Because of how the numbers work out there, you will see at least one door more than once, and you’re likely to see a few doors multiple times while you miss out on other doors entirely. Your fifteenth door triggers a concrete next passage, one which sees Jake think about what he’s doing and determine to take it further.

After another ten doors, you’ll trigger another concrete passage which has Jake determine that he’ll go on for forever if he needs to. The next few passages are likely to lead to some repeated doors and I hope that some readers will just give up, convinced that the story will just loop on these nine passages for forever. But if they make it to their 30th door, they’ll see that Calvin, the dog, takes matters into his own hand. He rescues Jake from his demented mission and brings him back to the apartment. The end!

How this is

Twine 2

This is the full map of the Twine story. Each box is a different passage except for one, “doors visited” in the upper left corner which keeps track of the number of doors you’ve visited and outputs the phrase “Doors visited: ##” and increments each time it is called.

Twine Doors visited

This is the first use of what Twine calls variables and I use that number to trigger the three concrete events later in the story after the 15th, 25th, and 30th doors. You can see the highlighted box which starts the story and how it progresses through many passages to get you into the rhythm of clicking to move on to the next part of the story. This isn’t a traditional branching narrative, you’ll never have a choice except to go on or leave the story mid-way through, so I decided to have each passage end with the link to the next one. It also helped when I had to write modular bits of the story which needed to work in any order. I could start each passage with a version of “at the next door” and end with a version of “he moved on to the next door”. After the linearity ends, you can visit any of three doors, which will randomly be displayed in the passage which is at the end of the reverse-C at the top of the map. After that first door, yet another random selection of the two remaining doors would happen, which is why it forks again in each of the three initial forks. See, it is a branching story! The branches are just hidden.

Twine Door 5

As you can hopefully see on that map, each of the last of those 3 random doors leads you to door 5, or the hub of the remainder of the story. I kinda stumbled into a way of displaying a random passage inside another passage, so the contents of door 5 are not really there. They are just the container for an “if” statement which tells the program to output any of the 9 individual doors I wrote so long as the door count isn’t at 15 or 25 or 30. If it is at any of those numbers it will display a specific passage, titled “Introspection,” “Forever,” and “Calvin” respectively. It will also display the “doors visited” passage underneath the randomly or specifically chosen passage which will let the reader know where they are in the story.

The story ends linearly, just as it began. Calvin interjects after readers have proven that they’ll keep going and snaps Jake out of his weird loop, quite literally in terms of the program itself. The penultimate page has Jake grasp the door handle to open into his apartment. This links to the “The End” passage which displays one last door count, again incremented to 32 to account for the door he almost entered back at the woods and his apartment door here and the words “The end”.

There are two things that I haven’t yet talked about yet here as far as the programming goes. The first is that two words or objects get text effects in the story. The first is the string which leads the two to the line of trees, which is always red and has a strike through it to indicate the twine itself and to call attention to the danger it poses. By the end of the story though, it has turned back into a regular piece of string and I did not give it that effect on purpose to indicate that the danger had left thanks to Calvin’s interjection into the story. The other is the piece of ice which makes the peep-hole that Jake peers through before he enters each door. I made that a kind of icy blue color and I wanted it to actually shiver but it wasn’t working, so I condensed the text there to at least give the impression of a kind of huddled up word trying to keep warm.

The second is “Door 13” which I conceived of as a kind of Holodeck experience. There is an entirely empty room which transforms into one of two pretty extreme situations (a jungle attack and a space explosion) randomly. It’s hard to demonstrate where these two experiences are separated in the program itself, but I’ve circled the comma which separates one version of the passage from the other. I used the same “either” function as I did in “Door 5” to randomly display a passage but this time I knew I wanted it to start and end in the same way so I knew I should keep the two passages that will get swapped out within the actual passage itself rather than writing them within their own boxes and just calling them out on their own. It was pretty fun to think of this idea and implement it. I hope that people notice what is happening there and see the two different versions of the room for themselves!

Why this is

I’ve already explained most of my decision making process up there, but here I’ll cover some loose ends. Firstly, my motivating force here was first to do a DH assignment, a fun assignment, but an assignment nonetheless. Because I was doing schoolwork, technically speaking, I knew I had to push myself a little more than I might have if I were just messing around. Figuring out the text effects, for example, was surprisingly difficult and was the first big hurdle I had to face. Then I knew that I wanted to demonstrate at least two kinds of randomized storytelling, so I had the more structured bit early on where the order of the three passages might change but you were forced to see each of the passages. Later, I experimented with having the passages be more random, which would inevitably lead to repeated passages appearing in the story. This would happen even if I had more passages than I had doors to open by the end of the story (30, remember, is the trigger for the end of the story, so there are around 23 passages which appear totally randomly from a pool of 9 written passages) which I don’t. And that’s where the other end of the school assignment bit comes in. If I had my druthers and more creativity in my bones I would write 50 (or more!) passages to have the experience be even more varied for each reader. That would certainly reward people’s efforts to read the story a few times, and it would make repeats less likely (though not unlikely or impossible given how random selection works). Heck, if I wasn’t going slightly crazy trying to finish this whole thing before tomorrow’s deadline I would write 5 more passages just to get some more stuff in there. But it’s also nice to have to finish. The story lends itself to the desire to keep improving, but that’s also kind of the point. Sometimes it’s ok to be done.

Perhaps a better way of changing things up would be to use the “either” command how I used it in the Holodeck tree. I could mix up some wording in each passage to say the same thing in slightly different ways. That way each repeated passage would have a chance to be a bit different every time you see it. This fix is both easy and daunting, because while the programming and writing aspects of it wouldn’t be too difficult to implement, the sheer amount of text already there is more than it seems and writing slightly different versions of it would only lead to a kind of crazy multiplication of effort. Certainly a version two of this project would have that kind of mutability in it, and now that I know how to do it I could implement it from the get go rather than go back and edit it in later.

Another thing I wanted to do but didn’t have the knowhow nor the time to figure it out was changing the look of the story more. This is pretty much the standard look of Twine’s most popular version, and only the text effects really change anything. See “Even Cowgirls Bleed” for a heavily edited CSS which totally changes what is still “just” a Twine story. I have visions of a background picture which appears once you get to the trees and some fancier things. But also, text on a page has been pretty good for writers throughout history. It’s not terrible to let a reader imagine their version of a location or what a character looks like without me imposing my own vision. Besides, I’m not sure a picture exists that would fit the story as written, and I don’t know where to go to find an infinite line of trees to take it myself. And I certainly don’t have the artistic talent to draw or paint one myself! Perhaps this is where the DH collaborative spirit could come in. Well, next time.

The last thing I want to do is share a bit of backstory which might explain what I was going for, if that matters to you. I wrote the first, vague version of this story a few years back when several of my friends and I were wandering around the post-college world, free of any real ambitions beyond a vague (aha!) sense of letting our lives drift away and a paralyzing sense that there were so many things that we could be doing so anything we did decide to do would mean giving up the possibility of something better. I noticed both within myself and my friends this strange paradoxical view and wanted to write myself a way out of it. I’m not sure I achieved that end either in that early version, which ends very differently than this one does, or this one, but I think this is a better version of the story. I opened myself up a bit more, having recently taken a big, concrete step towards a definite future when I entered grad school this semester, and examined some other identity questions a bit through this writing process. It was fruitful to examine myself as I wrote for Jake, who is not me but a conglomeration of a bunch of people and ideas.

And we’ll end with the dog, who readers familiar with Italian magical realists might recognize as the inspiration for this kind of story. Italo Calvino wrote a bunch of stories called Cosmicomics which took scientific ideas and weaved fantastic fairy tales and hilarious sci-fi stories out of serious scientific principles. I wanted to participate in the same kind of science-kickstarted storytelling, so I settled on the multiple universe idea that, at least at some point, was a part of string theory to my rudimentary understanding. It opened the possibility of an infinite number of worlds and here, finally, I was able to feint at that idea with the Twine platform allowing both the possibility of randomized storytelling and the ability to use that storytelling to touch on some science-y ideas like the fact that there would be a bunch of universes where nothing noticeable is different from Jake’s own universe, which would also be true for any of the noticeably different universes as well. So the repeated passages would have some grounding in scientific theory, it’s not just me being frustrating!

Ok, I think 2.5K words about this project is enough, don’t you? Finally, if you would like to see in more detail how this project was put together, you can download the full HTML file here and open it with your own (free!) copy of Twine. It’s a pretty fun program to mess around in and I’m glad I was pushed into doing it by my professors. I hope it did something for you, too!

A Computer and a Data Set of One’s Own: My DH Future

matrixWhen I wrote the first paper for my Digital Humanities class, I cheekily didn’t include the last bit of what my professors asked for because I didn’t really know what to write. They were looking for how I thought I might use DH ideas or methods in my own work now that I had learned what those were in a general sense. But I still didn’t really know what the field was or how it all came together, despite my four pages saying that I did. Now, at the end of the semester, I feel like I have a tighter grasp on the kind of work that digital humanists do and I can finally answer that question, so here’s the answer.


As for my own entry into the Digital Humanities, I’m not sure exactly what it will look like. Part of this comes from the fact that I have not yet settled on a specialty or field of my own, and so I cannot say with certainty what kinds of projects I would be interested in doing nor can I theorize what they might look like specifically because I do not know what the data set would be. But the great thing about Digital Humanities is that it is a flexible field. One needs only a computer and a data set of one’s own to do the majority of DH work. One of my projects in this class involved combining two data tools to find and illuminate thematic connections in Shakespeare’s tragedies that might not be readily apparent. Both programs ran in java and were relatively simple to understand, even if intuiting what purpose they served was not quite as obvious as their explicit functionality. That project taught me that tools do no a DH project make, at least not on their own. It took my own synthesis to bring out the best in either tool and to truly mine the data set for what it was worth. But it was also not beyond my means nor a reasonable expectation of time dedicated to figuring out what I was doing. The tinker’s mentality must be strong in a Digital Humanist, and I feel like I have that, so it will not be a barrier to entry for me.

Another project, Harlem Echoes, showcased an even more valuable mentality to have if you want to be a DH scholar: teamwork. There the entire class worked together to first create a properly formatted and error-proof version of Claude McKay’s Harlem Shadows, a poetry collection from the Harlem Renaissance. After we had that framework, which was not easy, we came up with ideas for essays which would illuminate different aspects of the poetry and the poet’s life as well as develop some simple tools like a word cloud pulled from the thematic tags we each assigned to the poems we corrected. This was a complicated and drawn out process, but because we were working together towards a common goal it felt like less work and it really fostered a sense of community between us. We had some outside help for especially difficult WordPress things, so we even got to have some appreciation for the way that DH scholars often rely upon the expertise of others when it comes to more technical parts of the work. English students, especially grad students, often feel like lone wolves, out only for themselves and in search of singular achievements, but it was the collaboration that really formed the core of that experience and it is certainly a mindset that I would like to maintain throughout my work.

The final project we did were individual works of e-lit. I made mine using the Twine tool, and through a great deal of trial and error, I finally made something that I could be proud of. During the semester we had Harvard scholar and really awesome guy Vincent Brown visit our class to talk with us about his DH project, an interactive timeline and map of the slave revolt in Jamaica between 1760 and 1761. It is an amazing project and Brown spoke about how he wanted to use DH tools to tell the story of this revolt, a story mostly hidden in diaries and letters. He talked of the decisions he made in order to tell that story, and how they differed from his more traditional telling of the story in his upcoming book. This storytelling mentality really lit a spark in my brain and, when I do create DH projects in the future, it is that perspective that I will likely take. It meshes nicely with the Twine project that I worked on because doing something like that focuses the creator’s attention on the decision making process and the effect each decision will have on the reader’s experience in a way that traditional story writing had not done for me in the past. I quickly realized, for example, that I could not just throw my old work into this new medium and expect to get the same results. I instead had to re-write the entire thing and change what I was doing from the ground up in order to craft the experience I wanted the reader to have. The user experience is paramount in the way one presents DH work, and the creator must take a long look at everything they do in order to make sure that what they are saying is what they want to say. Johanna Drucker reminds us always that every choice means something, that people are not just dots on a map and that the world does not abide by our lines and separations. The conscious decision making process is one central to DH, especially when it comes to visualizing any data connections that I might find.

The last element of Digital Humanities work is the part that is both the most promising and the most likely to keep me from fully embracing it. The unfortunate truth is that nobody quite knows what to make of DH projects yet. Heck, even Vincent Brown asked us what DH is and if his project really fit into its parameters. Because DH is more rightly seen as a set of guiding principles rather than a set-in-stone philosophy or methodology, it is more open to experimentation and new ideas. That is the positive side, the thing that gets Digital Humanists excited to forge new paths and discover new ways of seeing. But the negative side is that the resulting projects then enter a nebulous world where they are often seen as holding less value than their more traditional scholarship counterparts hold when it comes to, say, evaluating whether or not a professor deserves tenure or even at the hiring stage before that. At Lehigh we are still working out how a DH project might count towards a dissertation or as part of a Master’s thesis, and what our school ends up deciding will be different from what every other school decides, so it may be that none of my work, if I were to include a DH section in either work, would mean much of anything to anybody else. That makes it very difficult to dedicate a lot of time and effort in a project that might ultimately be of little value. I suppose that the personal growth from doing such a project would be a benefit, but in the current academic world anything that does not improve your chances at achieving the next step might as well knock you back a few.

The reasons to engage in the Digital Humanities are numerous and varied. It asks you to think in ways that you are not trained to think, and that is always a good thing. It encourages you to work with people outside your small departmental bubble, which can only expand your field of vision beyond what it would normally be. And it encourages you to be thoughtful about your decisions, about the way that your present your findings, and about the effect your words or pictures or whatever have on your audience, these are never bad things to consider. But the perilous reception might cause me to keep away, at least at first, until I build some kind of reputation for myself. I will never rule out DH projects because they can be more exciting than traditional scholarship, but I will be sure to weigh the pros and cons in each particular situation so that I know what I might be giving up and what I might be adding to my work.