• Rewind
  • Restart
  • Bookmark
  • This story was created with Twine and is powered by TiddlyWiki
#line#\sn#line#\sn#line#\sn#line#
// Returns an array of traces, each different from the one preceding it unless retrace() maxes out attempts.\n\nwindow.traceArray = function(symbol, num){\n\tvar output = [];\n\toutput.push( trace(symbol) );\n\n\tfor (var i = 1; i < num; i++) {\n\t\toutput.push( retrace(symbol, output[i-1]) );\n\t};\n\n\treturn output;\n}
//requires jquery\n\n// input: an array of objects\n//\t\t a property that each of those object have\n// output: an array of the properties of all the objects\nwindow.skimObjectArray = function(objectArray, property){\n\tconsole.log("skimObjectArray(", "objectArray", objectArray, "property", property, ")")\n\tvar values = [];\n\n\tfor (var i = 0; i < objectArray.length; i++) {\n\t\tvar thingToAdd = objectArray[i][property];\n\t\tif(typeof thingToAdd === "object"){\n\t\t\t// i hope to god this works\n\t\t\tthingToAdd = objectArray[i][property].join("\sn")\n\t\t}\n\t\tvalues.push( thingToAdd );\n\t};\n\n\tvalues = values.join("\sn");\n\tvalues = values.split("\sn")\n\n\treturn values;\n}\n\nStory.prototype.appendCorpora = function(){\n\tvar corporaToAppend = tale.lookup("tags", "corpus");\n\tif(!corporaToAppend.length) return;\n\n\tfor(var i in corporaToAppend){\n\t\tvar currentPassage = corporaToAppend[i].title;\n\n\t\t// the rules are the concatenation of each symbol in this passage\n\t\tvar rules = [];\n\t\tvar lines = tale.passages[currentPassage].text.split("\sn")\n\t\tfor(var j in lines){\n\t\t\tvar line = lines[j];\n\t\t\tvar location = line.split("#");\n\t\t\tconsole.log("location: ", location);\n\t\t\tvar corpusLocation = location[0];\n\n\t\t\t// fetch me that sweet sweet boy\n\t\t\tvar corpus = $.ajax({\n\t\t\t\tdataType: "json",\n\t\t\t\turl: corpusLocation,\n\t\t\t\tasync: false\n\t\t\t});\n\t\t\tcorpus = corpus.responseJSON;\n\n\t\t\t// drill down to the array we want\n\t\t\tfor (var i = 1; i < location.length; i++) {\n\t\t\t\tconsole.log("corpus: ", corpus);\n\t\t\t\t// if there's a ! at the beginning of a location, skim the objArray for that property\n\t\t\t\tif(location[i][0] === "!"){\n\t\t\t\t\tcorpus = skimObjectArray(corpus, location[i].substring(1));\n\t\t\t\t\tcontinue;\n\t\t\t\t}\n\n\t\t\t\tcorpus = corpus[ location[i] ]\n\t\t\t};\n\n\t\t\tconsole.log("corpus: ", corpus);\n\t\t\t// add this into the symbol-in-progress\n\t\t\trules = rules.concat(corpus);\n\t\t\tconsole.log("rules: ", rules)\n\t\t}\n\n\t\t// the name of this symbol is the name of the passage\n\t\tvar finalJSON = "{ \s"" + currentPassage + "\s": " + JSON.stringify(rules) + " }";\n\n\t\t// save our dark deeds to the passage\n\t\ttale.passages[currentPassage].text = finalJSON;\n\n\t\t//tag this as JSON so it gets appended in the next step\n\t\ttale.passages[currentPassage].tags.push("JSON")\n\t}\n\n\tconsole.log("corpora loaded")\n}\n\nStory.prototype.appendJSON = function() {\n\tvar JSONtoAppend = tale.lookup("tags", "JSON");\n\tif(!JSONtoAppend.length) return;\n\n\tfor(i in JSONtoAppend){\n\t\tvar newJSON = JSON.parse(JSONtoAppend[i].text);\n\t\t$.extend(this.data, newJSON);\n\t}\n\tconsole.log("JSON appended");\n}\n\nfunction Story(){\n\tvar grammars = tale.lookup("tags", "grammar", "title");\n\tthis.data = {};\n\n\tvar links = /(\s[\s[\sb)(.+?)(\sb\s]\s])/g;\n\tvar sublinks = /([^\s[\s]]+)*(.+)/\n\n\tfunction convertSyntax(match, p1, p2, p3){\n\t\t// If a passage is invoked that's tagged as a grammar, change Twine links into Tracery symbols.\n\t\t// e.g.: [[animal]] => #animal#\n\t\t// e.g.: [[animal][capitalize]] => #animal.capitalize#\n\n\t\t// p1 is left brackets, p3 is right brackets\n\t\tvar targetLink = p2.split("][")[0];\n\t\tvar modifiers = p2.split("][").slice(1, p2.length).join(".");\n\t\tmodifiers = modifiers?("." + modifiers):"";\n\t\t\n\t\tvar trace = "#" + targetLink + modifiers + "#";\n\t\t\n\t\tvar linkIsGrammar = false;\n\t\tvar tags = tale.get(targetLink).tags\n\t\tfor(var i = 0; i < tags.length; i++){\n\t\t\tif(tags[i] == "grammar" || tags[i] == "corpus"){\n\t\t\t\tlinkIsGrammar = true;\n\t\t\t\tbreak;\n\t\t\t}\n\t\t}\n\n\t\treturn linkIsGrammar?trace:match;\n\t}\n\n\tfor(var i in grammars){\n\t\tif(grammars[i] == undefined) continue;\n\n\t\t// Passage names become grammar names, Passage text becomes grammar text. \n\t\tvar newSymbol = grammars[i].title\n\t\tvar newText = grammars[i].text\n\n\t\tvar link = /(\s[\s[\sb)(.+?)(\sb\s]\s])/g;\n\t\tnewText = newText.replace(link, convertSyntax);\n\t\t// Get everything that's being linked to.\n\n\t\tthis.data[newSymbol] = newText.split('\sn');\n\t}\n\n\tthis.appendCorpora();\n\tthis.appendJSON();\n\tconsole.log("Story: ", this);\n}\nStory.prototype.constructor = Story;\n\n// Append this to the tale object because I don't know where else to put it.\nTale.prototype.story = new Story();\n\nStory.prototype.toHTML = function() {\n\tvar output = [];\n\tvar tab = "&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;";\n\tvar beg = '\sn' + tab + "\s"<span class=\s"grammarContents\s">{{{"\n\tvar end = "}}}</span>\s""\n\n\tfor(var i in this.data){\n\t\tvar gram = "<span class=\s"grammarTitle\s">\s"" + i + "\s"</span>: [";\n\t\tgram += beg + this.data[i].join(end + ',' + beg) + end;\n\t\tgram += "]";\n\t\toutput.push(gram);\n\t}\n\treturn "{\sn" + output.join(",\sn") + "\sn}";\n}\n\nTale.prototype.JSONtoTwee = function() {\n\tvar JSONtoConvert = tale.lookup("tags", "JSON");\n\tvar combinedJSON = ""\n\n\tfor (var i in JSONtoConvert){\n\t\tcombinedJSON += JSONtoConvert[i].text;\n\t}\n\n\t// Note the {{{}}} delimiters in textPost. This is intended for display in Twine, so\n\t// if you're just running these raw they aren't necessary.\n\tvar regex = {titlesPre: /\st"(.+)": \s[/g, titlesPost: "<br>:: $1 [grammar]",\n\t\t\t\t textPre: /\st*"(.+)",*(?:\sn\st)?(?:\s],)*\sn/g, textPost: "{{{$1}}}<br>"}\n\n\tvar tweeOutput = combinedJSON.replace(regex.titlesPre, regex.titlesPost);\n\ttweeOutput = tweeOutput.replace(regex.textPre, regex.textPost);\n\ttweeOutput = tweeOutput.replace(/({\sn)|(]\sn})/g, "")\n\n\treturn tweeOutput;\n}
The poem you've selected (#<<display "poem number">>) is currently on loan and is unavailable. For more information, see the [[Poetry Lending Program]]. In the meantime, there are still <<print $remainingPoemsStr>> poems available for your perusal.\n\n<<display "Selection Footer">>
<<if !tale.grammar>>\n\t<<if tracery>>\n\t\t<<set tale.grammar = tracery.createGrammar(tale.story.data)>>\n\t\t<<print console.log("grammar: ", tale.grammar)>>\n\t<<else>>\n\t\t<<print console.log("grammar instantiation failed")>>\n\t<<endif>>\n<<endif>>
<<silently>><<display "randomize digits">>\n<<endsilently>><<display "Display Poem">>\n\n<<display "Selection Footer">>
1\n1504995475632\n3702480395916\n4287496877547\n4864914576998\n5004716068310\n6823219151960\n7762318747881\n10292265987020\n11102291056550\n12756276492889\n13499210814370\n14204808540492\n14857641577859\n15524388184060\n16815819073525\n17063705138672\n18910059562464\n20842553512417\n21568472642075\n22815275207666\n25825847136169\n26227886575644\n27060685109020\n32012169027512\n32547335086524\n32794542124986\n36236183882928\n40210437858944\n42492525283717\n42926230264172\n47708249769942\n48841155328603\n49898600067646\n52608944908415\n52770663003446\n54542692704019\n54660009266710\n55802197968755\n56170017501640\n56230382382629\n57448452655662\n58372626747156\n61078882847950\n63406018959525\n64547105876116\n65394961234131\n66132666980249\n66766730300608\n67261214375982\n68937008039648\n69546788218650\n70528493606087\n73855144004649\n74072835782968\n74228821314258\n76449731575590\n77116337259376\n78738169168145\n81467068513758\n82973893378393\n84570102077133\n89751578492536\n90153609305575\n93473541653868\n95922401935609\n96717854336754\n97675341463859\n97705976452388\n98341539408019\n99630692455708\n99821415079635\n100000000000000\n100000000000001\n100162200933527\n101872811185689\n104274076737885\n104795867402738\n105283314629176\n106321309388532\n106628654181814\n109958047393304\n110910364651232\n114352898083575\n114918786083006\n117288219536959\n117676042417582\n118135862909565\n118807363783705\n120001675255748\n120518344256156\n122521300460122\n124675388060999\n125818409547084\n126867697149944\n133386135906182\n134385525146739\n135228228190113\n135429266456676\n137126545147893\n138668340269054\n139065483841578\n140196990311361
// This is a slightly modified version of Leon Arnott's cyclinglink macro.\n\nversion.extensions.tracelinkMacro = {\n\tmajor: 0,\n\tminor: 1,\n\trevision: 0\n};\nmacros.tracelink = {\n\thandler: function(a, b, c) {\n\t\tvar rl = "traceLink";\n\n\t\tfunction toggleText(w) {\n\t\t\tw.classList.remove("traceLinkInit");\n\t\t\tw.classList.toggle(rl + "Enabled");\n\t\t\tw.classList.toggle(rl + "Disabled");\n\t\t\tw.style.display = ((w.style.display == "none") ? "inline" : "none")\n\t\t}\n\t\tswitch (c[c.length - 1]) {\n\t\t\tcase "end":\n\t\t\t\tvar end = true;\n\t\t\t\tc.pop();\n\t\t\t\tbreak;\n\t\t\tcase "out":\n\t\t\t\tvar out = true;\n\t\t\t\tc.pop();\n\t\t\t\tbreak\n\t\t}\n\t\tvar v = "";\n\t\tif (c.length && c[0][0] == "$") {\n\t\t\tv = c[0].slice(1);\n\t\t\tc.shift()\n\t\t}\n\t\tvar h = state.history[0].variables;\n\t\tif (out && h[v] === "") {\n\t\t\treturn\n\t\t}\n\t\tvar l = Wikifier.createInternalLink(a, null);\n\t\tl.className = "internalLink cyclingLink";\n\t\tl.setAttribute("data-cycle", 0);\n\n\t\t// Prebake a bunch of traces and use those as our links to cycle through.\n\t\tc = traceArray(c[0], 64);\n\n\t\tfor (var i = 0; i < c.length; i++) {\n\t\t\tvar on = (i == Math.max(c.indexOf(h[v]), 0));\n\t\t\tvar d = insertElement(null, "span", null, "traceLinkInit traceLink" + ((on) ? "En" : "Dis") + "abled");\n\t\t\tif (on) {\n\t\t\t\th[v] = c[i];\n\t\t\t\tl.setAttribute("data-cycle", i)\n\t\t\t} else {\n\t\t\t\td.style.display = "none"\n\t\t\t}\n\t\t\tinsertText(d, c[i]);\n\t\t\tif (on && end && i == c.length - 1) {\n\t\t\t\tl.parentNode.replaceChild(d, l)\n\t\t\t} else {\n\t\t\t\tl.appendChild(d)\n\t\t\t}\n\t\t}\n\t\tl.onclick = function() {\n\t\t\tvar t = this.childNodes;\n\t\t\tvar u = this.getAttribute("data-cycle") - 0;\n\t\t\tvar m = t.length;\n\t\t\ttoggleText(t[u]);\n\t\t\tu = (u + 1);\n\t\t\tif (!(out && u == m)) {\n\t\t\t\tu %= m;\n\t\t\t\tif (v) {\n\t\t\t\t\th[v] = c[u]\n\t\t\t\t}\n\t\t\t} else {\n\t\t\t\th[v] = ""\n\t\t\t}\n\t\t\tif ((end || out) && u == m - (end ? 1 : 0)) {\n\t\t\t\tif (end) {\n\t\t\t\t\tvar n = this.removeChild(t[u]);\n\t\t\t\t\tn.className = rl + "End";\n\t\t\t\t\tn.style.display = "inline";\n\t\t\t\t\tthis.parentNode.replaceChild(n, this)\n\t\t\t\t} else {\n\t\t\t\t\tthis.parentNode.removeChild(this);\n\t\t\t\t\treturn\n\t\t\t\t}\n\t\t\t\treturn\n\t\t\t}\n\t\t\ttoggleText(t[u]);\n\t\t\tthis.setAttribute("data-cycle", u)\n\t\t}\n\t}\n};
<<if $controls>><<display "Display Poem With Controls">><<else>><<display "Display Poem">><<endif>>\n\n[[Toggle Controls|Select Poem][$controls = !$controls]]\n\n<<display "Selection Footer">>
!Catalog Status\nThere <<if $onloan.length eq 1>>is<<else>>are<<endif>> currently <<$onloan.length>> <<if $onloan.length eq 1>>poem<<else>>poems<<endif>> on loan. Until they are returned, they are inaccessible to the general public.\n\n<<$remainingPoemsStr>> poems remain in the collection, any of which may be borrowed.\n!Poetry Lending Program\nPoems are lent out indefinitely. They may be returned to the collection at any time, at which point they will become available again to the general public. However, catalog maintenance fees are non-refundable.\n\nSee the Poetry Lending Program section below for pricing and purchasing options.
<<if passage() neq "Start">><<print "[" + "[Back to Title|Start]]">>\n<<print "[" + "[About]]">>\n<<print "[" + "[Poetry Lending Program]]">><<endif>><<silently>><<set $randPoem to Math.floor(Math.random() * $poemMax) + 1>>\nrandPoem: <<$randPoem>>\n\n<<set $randPoemStr to $randPoem.toString().replace(/(\sd)(?=(\sd{3})+$)/g, '$1,')>>\nrandPoemStr: <<$randPoemStr>><<endsilently>>
// Expands a symbol and returns the output.\nwindow.trace = function(symbol){\n\tif(symbol === undefined){\n\t\tsymbol = "origin";\n\t}\n\tif(tale.grammar === undefined){\n\t\tconsole.log("Couldn't find the grammar object.");\n\t\treturn "ERROR: Grammar object not found.";\n\t}\n\n\tvar output = tale.grammar.flatten("#" + symbol + "#")\t\n//\tconsole.log(symbol + " expands to:\sn" + output);\n\treturn output;\n}
<<if passage() neq "Start">>Anthology XXXX<<endif>>
<<print tale.story.toHTML()>>
Santa Cruz, CA\nAugust 24, 2017\n!About the Author\nMatthew R.F. Balousek ([[@mrfb|http://twitter.com/mrfb]]) makes games, interactive fiction, bread, bots, and bad jokes.\n!About the Collection\n//Anthology XXXX// is a collection of <<$poemMaxStr>> poems. The title refers to the X^^4^^ possible poems that the program can produce, where X is the number of lines currently in the program (<<$lines.length>>).\n!About the Poems\nEach of the lines stored in the collection are the words of other people, as transcribed by the author. Each poem is a combination of four of those lines, in reference to the cento form of poetry.\n\nPoems are assigned a number between 1 and <<$poemMaxStr>> based on which lines are in which positions in the poem. The number assigned to each poem is effectively a conversion from radix-<<$lines.length>> to radix-10.\n\nRandomly selected poems from this collection (with the exception of those that are on loan) are published online through the twitter account [[@centoverheard|http://twitter.com/centoverheard]].\n\n@@color:white;Additionally, there is one secret poem. Select Poem -<<$lines.length>>.@@
window.tracery = {\n utilities : {}\n};\n\n(function () {/**\n * @author Kate Compton\n */\n\nfunction inQuotes(s) {\n return '"' + s + '"';\n};\n\nfunction parseAction(action) {\n return action;\n};\n\n// tag format\n// a thing to expand, plus actions\n\nfunction parseTag(tag) {\n var errors = [];\n var prefxns = [];\n var postfxns = [];\n\n var lvl = 0;\n var start = 0;\n\n var inPre = true;\n\n var symbol,\n mods;\n\n function nonAction(end) {\n if (start !== end) {\n var section = tag.substring(start, end);\n if (!inPre) {\n errors.push("multiple possible expansion symbols in tag!" + tag);\n } else {\n inPre = false;\n var split = section.split(".");\n symbol = split[0];\n mods = split.slice(1, split.length);\n }\n\n }\n start = end;\n };\n\n for (var i = 0; i < tag.length; i++) {\n var c = tag.charAt(i);\n\n switch(c) {\n case '[':\n if (lvl === 0) {\n nonAction(i);\n }\n\n lvl++;\n break;\n case ']':\n lvl--;\n if (lvl === 0) {\n var section = tag.substring(start + 1, i);\n if (inPre)\n prefxns.push(parseAction(section));\n else\n postfxns.push(parseAction(section));\n start = i + 1;\n }\n break;\n\n default:\n if (lvl === 0) {\n\n }\n break;\n\n }\n }\n nonAction(i);\n\n if (lvl > 0) {\n var error = "Too many '[' in rule " + inQuotes(tag);\n errors.push(error);\n\n }\n\n if (lvl < 0) {\n var error = "Too many ']' in rule " + inQuotes(tag);\n errors.push(error);\n\n }\n\n return {\n preActions : prefxns,\n postActions : postfxns,\n symbol : symbol,\n mods : mods,\n raw : tag,\n errors : errors,\n };\n};\n\n// Split a rule into sections\nfunction parseRule(rule) {\n var sections = [];\n var errors = [];\n if (!( typeof rule == 'string' || rule instanceof String)) {\n errors.push("Cannot parse non-string rule " + rule);\n sections.errors = errors;\n return sections;\n }\n\n if (rule.length === 0) {\n return [];\n }\n\n var lvl = 0;\n var start = 0;\n var inTag = false;\n\n function createSection(end) {\n var section = rule.substring(start, end);\n if (section.length > 0) {\n if (inTag)\n sections.push(parseTag(section));\n else\n sections.push(section);\n }\n inTag = !inTag;\n start = end + 1;\n\n }\n\n for (var i = 0; i < rule.length; i++) {\n var c = rule.charAt(i);\n\n switch(c) {\n case '[':\n lvl++;\n break;\n case ']':\n lvl--;\n break;\n case '#':\n if (lvl === 0) {\n createSection(i);\n }\n break;\n default:\n break;\n\n }\n\n }\n\n if (lvl > 0) {\n var error = "Too many '[' in rule " + inQuotes(rule);\n errors.push(error);\n\n }\n\n if (lvl < 0) {\n var error = "Too many ']' in rule " + inQuotes(rule);\n errors.push(error);\n\n }\n\n if (inTag) {\n var error = "Odd number of '#' in rule " + inQuotes(rule);\n errors.push(error);\n }\n\n createSection(rule.length);\n sections.errors = errors;\n return sections;\n};\n\nfunction testParse(rule, shouldFail) {\n console.log("-------");\n console.log("Test parse rule: " + inQuotes(rule) + " " + shouldFail);\n var parsed = parseRule(rule);\n if (parsed.errors && parsed.errors.length > 0) {\n for (var i = 0; i < parsed.errors.length; i++) {\n console.log(parsed.errors[i]);\n }\n }\n \n\n}\n\nfunction testParseTag(tag, shouldFail) {\n console.log("-------");\n console.log("Test parse tag: " + inQuotes(tag) + " " + shouldFail);\n var parsed = parseTag(tag);\n if (parsed.errors && parsed.errors.length > 0) {\n for (var i = 0; i < parsed.errors.length; i++) {\n console.log(parsed.errors[i]);\n }\n }\n}\n\ntracery.testParse = testParse;\ntracery.testParseTag = testParseTag;\ntracery.parseRule = parseRule;\ntracery.parseTag = parseTag;\n\n\nfunction spacer(size) {\n var s = "";\n for (var i = 0; i < size * 3; i++) {\n s += " ";\n }\n return s;\n}\n\n/* Simple JavaScript Inheritance\n * By John Resig http://ejohn.org/\n * MIT Licensed.\n */\n\nfunction extend(destination, source) {\n for (var k in source) {\n if (source.hasOwnProperty(k)) {\n destination[k] = source[k];\n }\n }\n return destination;\n}\n\n// Inspired by base2 and Prototype\n(function() {\n var initializing = false,\n fnTest = /xyz/.test(function() { xyz;\n }) ? /\sb_super\sb/ : /.*/;\n\n // The base Class implementation (does nothing)\n this.Class = function() {\n };\n\n // Create a new Class that inherits from this class\n Class.extend = function(prop) {\n var _super = this.prototype;\n\n // Instantiate a base class (but only create the instance,\n // don't run the init constructor)\n initializing = true;\n var prototype = new this();\n initializing = false;\n\n // Copy the properties over onto the new prototype\n for (var name in prop) {\n // Check if we're overwriting an existing function\n prototype[name] = typeof prop[name] == "function" && typeof _super[name] == "function" && fnTest.test(prop[name]) ? (function(name, fn) {\n return function() {\n var tmp = this._super;\n\n // Add a new ._super() method that is the same method\n // but on the super-class\n this._super = _super[name];\n\n // The method only need to be bound temporarily, so we\n // remove it when we're done executing\n var ret = fn.apply(this, arguments);\n this._super = tmp;\n\n return ret;\n };\n })(name, prop[name]) : prop[name];\n }\n\n // The dummy class constructor\n function Class() {\n // All construction is actually done in the init method\n if (!initializing && this.init)\n this.init.apply(this, arguments);\n }\n\n // Populate our constructed prototype object\n Class.prototype = prototype;\n\n // Enforce the constructor to be what we expect\n Class.prototype.constructor = Class;\n\n // And make this class extendable\n Class.extend = arguments.callee;\n\n return Class;\n };\n})();\n\n/**\n * @author Kate\n */\n\nvar Rule = function(raw) {\n this.raw = raw;\n this.sections = parseRule(raw);\n\n};\n\nRule.prototype.getParsed = function() {\n if (!this.sections)\n this.sections = parseRule(raw);\n\n return this.sections;\n};\n\nRule.prototype.toString = function() {\n return this.raw;\n};\n\nRule.prototype.toJSONString = function() {\n return this.raw;\n};\n\n/**\n * @author Kate\n */\n\nvar RuleWeighting = Object.freeze({\n RED : 0,\n GREEN : 1,\n BLUE : 2\n});\n\nvar RuleSet = function(rules) {\n // is the rules obj an array? A RuleSet, or a string?\n if (rules.constructor === Array) {\n // make a copy\n rules = rules.slice(0, rules.length);\n } else if (rules.prototype === RuleSet) {\n // clone\n } else if ( typeof rules == 'string' || rules instanceof String) {\n var args = Array.prototype.slice.call(arguments);\n rules = args;\n } else {\n console.log(rules);\n throw ("creating ruleset with unknown object type!");\n }\n\n // create rules and their use counts\n\n this.rules = rules;\n this.parseAll();\n\n this.uses = [];\n this.startUses = [];\n this.totalUses = 0;\n for (var i = 0; i < this.rules.length; i++) {\n this.uses[i] = 0;\n this.startUses[i] = this.uses[i];\n this.totalUses += this.uses[i];\n }\n\n};\n\n//========================================================\n// Iterating over rules\n\nRuleSet.prototype.parseAll = function(fxn) {\n for (var i = 0; i < this.rules.length; i++) {\n if (this.rules[i].prototype !== Rule)\n this.rules[i] = new Rule(this.rules[i]);\n }\n\n};\n\n//========================================================\n// Iterating over rules\n\nRuleSet.prototype.mapRules = function(fxn) {\n return this.rules.map(function(rule, index) {\n return fxn(rule, index);\n });\n};\n\nRuleSet.prototype.applyToRules = function(fxn) {\n for (var i = 0; i < this.rules.length; i++) {\n fxn(this.rules[i], i);\n }\n};\n//========================================================\nRuleSet.prototype.get = function() {\n var index = this.getIndex();\n\n return this.rules[index];\n};\n\nRuleSet.prototype.getRandomIndex = function() {\n return Math.floor(this.uses.length * Math.random());\n};\n\nRuleSet.prototype.getIndex = function() {\n // Weighted distribution\n // Imagine a bar of length 1, how to divide the length\n // s.t. a random dist will result in the dist we want?\n\n var index = this.getRandomIndex();\n // What if the uses determine the chance of rerolling?\n\n var median = this.totalUses / this.uses.length;\n\n var count = 0;\n while (this.uses[index] > median && count < 20) {\n index = this.getRandomIndex();\n count++;\n }\n\n // reroll more likely if index is too much higher\n\n return index;\n};\n\nRuleSet.prototype.decayUses = function(pct) {\n this.totalUses = 0;\n for (var i = 0; i < this.uses; i++) {\n\n this.uses[index] *= 1 - pct;\n this.totalUses += this.uses[index];\n }\n};\n\nRuleSet.prototype.testRandom = function() {\n console.log("Test random");\n var counts = [];\n for (var i = 0; i < this.uses.length; i++) {\n counts[i] = 0;\n }\n\n var testCount = 10 * this.uses.length;\n for (var i = 0; i < testCount; i++) {\n\n var index = this.getIndex();\n this.uses[index] += 1;\n\n counts[index]++;\n this.decayUses(.1);\n }\n\n for (var i = 0; i < this.uses.length; i++) {\n console.log(i + ":\st" + counts[i] + " \st" + this.uses[i]);\n }\n};\n\nRuleSet.prototype.getSaveRules = function() {\n var jsonRules = this.rules.map(function(rule) {\n return rule.toJSONString();\n });\n\n return jsonRules;\n};\n\n/**\n * @author Kate Compton\n */\n\nvar Action = function(node, raw) {\n\n this.node = node;\n this.grammar = node.grammar;\n this.raw = raw;\n\n};\n\nAction.prototype.activate = function() {\n\n var node = this.node;\n node.actions.push(this);\n\n // replace any hashtags\n this.amended = this.grammar.flatten(this.raw);\n\n var parsed = parseTag(this.amended);\n var subActionRaw = parsed.preActions;\n if (subActionRaw && subActionRaw.length > 0) {\n this.subactions = subActionRaw.map(function(action) {\n return new Action(node, action);\n });\n\n }\n\n if (parsed.symbol) {\n var split = parsed.symbol.split(":");\n\n if (split.length === 2) {\n this.push = {\n symbol : split[0],\n\n // split into multiple rules\n rules : split[1].split(","),\n };\n // push\n node.grammar.pushRules(this.push.symbol, this.push.rules);\n\n } else\n throw ("Unknown action: " + parsed.symbol);\n }\n\n if (this.subactions) {\n for (var i = 0; i < this.subactions.length; i++) {\n this.subactions[i].activate();\n }\n }\n\n};\n\nAction.prototype.deactivate = function() {\n if (this.subactions) {\n for (var i = 0; i < this.subactions.length; i++) {\n this.subactions[i].deactivate();\n }\n }\n\n if (this.push) {\n this.node.grammar.popRules(this.push.symbol, this.push.rules);\n }\n};\n\n/**\n * @author Kate Compton\n */\n\nvar isConsonant = function(c) {\n c = c.toLowerCase();\n switch(c) {\n case 'a':\n return false;\n case 'e':\n return false;\n case 'i':\n return false;\n case 'o':\n return false;\n case 'u':\n return false;\n\n }\n return true;\n};\n\nfunction endsWithConY(s) {\n if (s.charAt(s.length - 1) === 'y') {\n return isConsonant(s.charAt(s.length - 2));\n }\n return false;\n};\n\nvar universalModifiers = {\n capitalizeAll : function(s) {\n return s.replace(/(?:^|\ss)\sS/g, function(a) {\n return a.toUpperCase();\n });\n\n },\n\n capitalize : function(s) {\n return s.charAt(0).toUpperCase() + s.slice(1);\n\n },\n\n inQuotes : function(s) {\n return '"' + s + '"';\n },\n\n comma : function(s) {\n var last = s.charAt(s.length - 1);\n if (last === ",")\n return s;\n if (last === ".")\n return s;\n if (last === "?")\n return s;\n if (last === "!")\n return s;\n return s + ",";\n },\n\n beeSpeak : function(s) {\n // s = s.replace("s", "zzz");\n\n s = s.replace(/s/, 'zzz');\n return s;\n },\n\n a : function(s) {\n if (!isConsonant(s.charAt()))\n return "an " + s;\n return "a " + s;\n\n },\n\n s : function(s) {\n\n var last = s.charAt(s.length - 1);\n\n switch(last) {\n case 'y':\n\n // rays, convoys\n if (!isConsonant(s.charAt(s.length - 2))) {\n return s + "s";\n }\n // harpies, cries\n else {\n return s.slice(0, s.length - 1) + "ies";\n }\n break;\n\n // oxen, boxen, foxen\n case 'x':\n return s.slice(0, s.length - 1) + "en";\n case 'z':\n return s.slice(0, s.length - 1) + "es";\n case 'h':\n return s.slice(0, s.length - 1) + "es";\n\n default:\n return s + "s";\n };\n\n },\n\n ed : function(s) {\n\n var index = s.indexOf(" ");\n var s = s;\n var rest = "";\n if (index > 0) {\n rest = s.substring(index, s.length);\n s = s.substring(0, index);\n\n }\n\n var last = s.charAt(s.length - 1);\n\n switch(last) {\n case 'y':\n\n // rays, convoys\n if (isConsonant(s.charAt(s.length - 2))) {\n return s.slice(0, s.length - 1) + "ied" + rest;\n\n }\n // harpies, cries\n else {\n return s + "ed" + rest;\n }\n break;\n case 'e':\n return s + "d" + rest;\n\n break;\n\n default:\n return s + "ed" + rest;\n };\n }\n};\n/**\n * @author Kate Compton\n */\n\n// A tracery expansion node\nvar nodeCount = 0;\n\nvar ExpansionNode = Class.extend({\n init : function() {\n this.depth = 0;\n this.id = nodeCount;\n nodeCount++;\n this.childText = "[[UNEXPANDED]]";\n },\n\n setParent : function(parent) {\n if (parent) {\n this.depth = parent.depth + 1;\n this.parent = parent;\n this.grammar = parent.grammar;\n }\n },\n\n expand : function() {\n // do nothing\n return "???";\n },\n\n expandChildren : function() {\n\n if (this.children) {\n this.childText = "";\n for (var i = 0; i < this.children.length; i++) {\n this.children[i].expand();\n this.childText += this.children[i].finalText;\n }\n this.finalText = this.childText;\n }\n\n },\n\n createChildrenFromSections : function(sections) {\n var root = this;\n this.children = sections.map(function(section) {\n\n if ( typeof section == 'string' || section instanceof String) {\n // Plaintext\n return new TextNode(root, section);\n } else {\n return new TagNode(root, section);\n }\n });\n }\n});\n\nvar RootNode = ExpansionNode.extend({\n init : function(grammar, rawRule) {\n this._super();\n this.grammar = grammar;\n this.parsedRule = parseRule(rawRule);\n },\n\n expand : function() {\n var root = this;\n this.createChildrenFromSections(this.parsedRule);\n\n // expand the children\n this.expandChildren();\n },\n});\n\nvar TagNode = ExpansionNode.extend({\n init : function(parent, parsedTag) {\n this._super();\n\n if (!(parsedTag !== null && typeof parsedTag === 'object')) {\n if ( typeof parsedTag == 'string' || parsedTag instanceof String) {\n console.warn("Can't make tagNode from unparsed string!");\n parsedTag = parseTag(parsedTag);\n\n } else {\n console.log("Unknown tagNode input: ", parsedTag);\n throw ("Can't make tagNode from strange tag!");\n\n }\n }\n\n this.setParent(parent);\n $.extend(this, parsedTag);\n },\n\n expand : function() {\n if (tracery.outputExpansionTrace)\n console.log(r.sections);\n\n this.rule = this.grammar.getRule(this.symbol);\n\n this.actions = [];\n\n // Parse the rule if it hasn't been already\n this.createChildrenFromSections(this.rule.getParsed());\n\n // Do any pre-expansion actions!\n for (var i = 0; i < this.preActions.length; i++) {\n var action = new Action(this, this.preActions[i]);\n action.activate();\n }\n\n // Map each child section to a node\n if (!this.rule.sections)\n console.log(this.rule);\n\n this.expandChildren();\n\n for (var i = 0; i < this.actions.length; i++) {\n\n this.actions[i].deactivate();\n }\n\n this.finalText = this.childText;\n for (var i = 0; i < this.mods.length; i++) {\n this.finalText = this.grammar.applyMod(this.mods[i], this.finalText);\n }\n\n },\n\n toLabel : function() {\n return this.symbol;\n },\n toString : function() {\n return "TagNode '" + this.symbol + "' mods:" + this.mods + ", preactions:" + this.preActions + ", postactions" + this.postActions;\n }\n});\n\nvar TextNode = ExpansionNode.extend({\n isLeaf : true,\n init : function(parent, text) {\n this._super();\n\n this.setParent(parent);\n\n this.text = text;\n\n this.finalText = text;\n },\n expand : function() {\n // do nothing\n },\n\n toLabel : function() {\n return this.text;\n }\n});\n\n/**\n * @author Kate Compton\n */\n\nfunction Symbol(grammar, key) {\n this.grammar = grammar;\n this.key = key;\n this.currentRules = undefined;\n this.ruleSets = [];\n\n};\n\nSymbol.prototype.loadFrom = function(rules) {\n\n rules = this.wrapRules(rules);\n this.baseRules = rules;\n\n this.ruleSets.push(rules);\n this.currentRules = this.ruleSets[this.ruleSets.length - 1];\n\n};\n\n//========================================================\n// Iterating over rules\n\nSymbol.prototype.mapRules = function(fxn) {\n\n return this.currentRules.mapRules(fxn);\n};\n\nSymbol.prototype.applyToRules = function(fxn) {\n this.currentRules.applyToRules(fxn);\n};\n\n//==================================================\n// Rule pushpops\nSymbol.prototype.wrapRules = function(rules) {\n if (rules.prototype !== RuleSet) {\n if (Array.isArray(rules)) {\n return new RuleSet(rules);\n } else if ( typeof rules == 'string' || rules instanceof String) {\n return new RuleSet(rules);\n } else {\n throw ("Unknown rules type: " + rules);\n }\n }\n // already a ruleset\n return rules;\n};\n\nSymbol.prototype.pushRules = function(rules) {\n rules = this.wrapRules(rules);\n this.ruleSets.push(rules);\n this.currentRules = this.ruleSets[this.ruleSets.length - 1];\n};\n\nSymbol.prototype.popRules = function() {\n var exRules = this.ruleSets.pop();\n\n if (this.ruleSets.length === 0) {\n //console.warn("No more rules for " + this + "!");\n }\n this.currentRules = this.ruleSets[this.ruleSets.length - 1];\n};\n\n// Clear everything and set the rules\nSymbol.prototype.setRules = function(rules) {\n\n rules = this.wrapRules(rules);\n this.ruleSets = [rules];\n this.currentRules = rules;\n\n};\n\nSymbol.prototype.addRule = function(rule) {\n this.currentRules.addRule(seed);\n};\n\n//========================================================\n// selection\n\nSymbol.prototype.select = function() {\n this.isSelected = true;\n\n};\n\nSymbol.prototype.deselect = function() {\n this.isSelected = false;\n};\n\n//==================================================\n// Getters\n\nSymbol.prototype.getRule = function(seed) {\n return this.currentRules.get(seed);\n};\n\n//==================================================\n\nSymbol.prototype.toString = function() {\n return this.key + ": " + this.currentRules + "(overlaying " + (this.ruleSets.length - 1) + ")";\n};\nSymbol.prototype.toJSON = function() {\n\n var rules = this.baseRules.rules.map(function(rule) {\n return '"' + rule.raw + '"';\n });\n return '"' + this.key + '"' + ": [" + rules.join(", ") + "]";\n};\n\nSymbol.prototype.toHTML = function(useSpans) {\n var keySpan = '"' + this.key + '"';\n if (useSpans)\n keySpan = "<span class='symbol symbol_" + this.key + "'>" + keySpan + "</span>";\n\n var rules = this.baseRules.rules.map(function(rule) {\n var s = '"' + rule.raw + '"';\n if (useSpans)\n s = "<span class='rule'>" + s + "</span>";\n return s;\n });\n return keySpan + ": [" + rules.join(", ") + "]";\n};\n\n/**\n * @author Kate Compton\n */\n\nfunction Grammar() {\n this.clear();\n};\n\nGrammar.prototype.clear = function() {\n // Symbol library\n this.symbols = {};\n \n this.errors = [];\n \n // Modifier library\n this.modifiers = {};\n\n // add the universal mods\n for (var mod in universalModifiers) {\n if (universalModifiers.hasOwnProperty(mod))\n this.modifiers[mod] = universalModifiers[mod];\n }\n};\n//========================================================\n// Loading\n\nGrammar.prototype.loadFrom = function(obj) {\n var symbolSrc;\n\n this.clear();\n\n if (obj.symbols !== undefined) {\n symbolSrc = obj.symbols;\n } else {\n symbolSrc = obj;\n }\n\n // get all json keys\n var keys = Object.keys(symbolSrc);\n\n this.symbolNames = [];\n for (var i = 0; i < keys.length; i++) {\n var key = keys[i];\n this.symbolNames.push(key);\n\n this.symbols[key] = new Symbol(this, key);\n this.symbols[key].loadFrom(symbolSrc[key]);\n }\n\n};\n\nGrammar.prototype.toHTML = function(useSpans) {\n // get all json keys\n var keys = Object.keys(this.symbols);\n\n this.symbolNames = [];\n\n var lines = [];\n\n var count = 0;\n for (var i = 0; i < keys.length; i++) {\n\n var key = keys[i];\n var symbol = this.symbols[key];\n\n if (symbol && symbol.baseRules) {\n\n lines.push(" " + this.symbols[key].toHTML(useSpans));\n\n }\n };\n\n var s;\n s = lines.join(",</p><p>");\n s = "{<p>" + s + "</p>}";\n return s;\n};\n\nGrammar.prototype.toJSON = function() {\n // get all json keys\n var keys = Object.keys(this.symbols);\n\n this.symbolNames = [];\n\n var lines = [];\n\n var count = 0;\n for (var i = 0; i < keys.length; i++) {\n\n var key = keys[i];\n var symbol = this.symbols[key];\n\n if (symbol && symbol.baseRules) {\n\n lines.push(" " + this.symbols[key].toJSON());\n\n }\n };\n\n var s;\n s = lines.join(",\sn");\n s = "{\sn" + s + "\sn}";\n return s;\n};\n\n//========================================================\n// selection\n\nGrammar.prototype.select = function() {\n this.isSelected = true;\n};\n\nGrammar.prototype.deselect = function() {\n this.isSelected = false;\n};\n\n//========================================================\n// Iterating over symbols\n\nGrammar.prototype.mapSymbols = function(fxn) {\n var symbols = this.symbols;\n return this.symbolNames.map(function(name) {\n return fxn(symbols[name], name);\n });\n};\n\nGrammar.prototype.applyToSymbols = function(fxn) {\n for (var i = 0; i < this.symbolNames.length; i++) {\n var key = this.symbolNames[i];\n fxn(this.symbols[key], key);\n }\n};\n\n//========================================================\nGrammar.prototype.addOrGetSymbol = function(key) {\n if (this.symbols[key] === undefined)\n this.symbols[key] = new Symbol(key);\n\n return this.symbols[key];\n};\n\nGrammar.prototype.pushRules = function(key, rules) {\n var symbol = this.addOrGetSymbol(key);\n symbol.pushRules(rules);\n};\n\nGrammar.prototype.popRules = function(key, rules) {\n var symbol = this.addOrGetSymbol(key);\n var popped = symbol.popRules();\n\n if (symbol.ruleSets.length === 0) {\n // remove symbol\n this.symbols[key] = undefined;\n }\n};\n\nGrammar.prototype.applyMod = function(modName, text) {\n if (!this.modifiers[modName]) {\n console.log(this.modifiers);\n throw ("Unknown mod: " + modName);\n }\n return this.modifiers[modName](text);\n};\n\n//============================================================\nGrammar.prototype.getRule = function(key, seed) {\n var symbol = this.symbols[key];\n if (symbol === undefined) {\n var r = new Rule("{{" + key + "}}");\n\n r.error = "Missing symbol " + key;\n return r;\n }\n\n var rule = symbol.getRule();\n if (rule === undefined) {\n var r = new Rule("[" + key + "]");\n console.log(r.sections);\n r.error = "Symbol " + key + " has no rule";\n return r;\n }\n\n return rule;\n};\n\n//============================================================\n// Expansions\nGrammar.prototype.expand = function(raw) {\n\n // Start a new tree\n var root = new RootNode(this, raw);\n\n root.expand();\n\n return root;\n};\n\nGrammar.prototype.flatten = function(raw) {\n\n // Start a new tree\n var root = new RootNode(this, raw);\n\n root.expand();\n\n return root.childText;\n};\n\n//===============\n\nGrammar.prototype.analyze = function() {\n this.symbolNames = [];\n for (var name in this.symbols) {\n if (this.symbols.hasOwnProperty(name)) {\n this.symbolNames.push(name);\n }\n }\n\n // parse every rule\n\n for (var i = 0; i < this.symbolNames.length; i++) {\n var key = this.symbolNames[i];\n var symbol = this.symbols[key];\n // parse all\n for (var j = 0; j < symbol.baseRules.length; j++) {\n var rule = symbol.baseRules[j];\n rule.parsed = tracery.parse(rule.raw);\n // console.log(rule);\n\n }\n }\n\n};\n\nGrammar.prototype.selectSymbol = function(key) {\n console.log(this);\n var symbol = this.get(key);\n};\n/**\n * @author Kate Compton\n\n */\n\ntracery.createGrammar = function(obj) {\n var grammar = new Grammar();\n grammar.loadFrom(obj);\n return grammar;\n};\n\ntracery.test = function() {\n\n console.log("==========================================");\n console.log("test tracery");\n\n // good\n tracery.testParse("", false);\n tracery.testParse("fooo", false);\n tracery.testParse("####", false);\n tracery.testParse("#[]#[]##", false);\n tracery.testParse("#someSymbol# and #someOtherSymbol#", false);\n tracery.testParse("#someOtherSymbol.cap.pluralize#", false);\n tracery.testParse("#[#do some things#]symbol.mod[someotherthings[and a function]]#", false);\n tracery.testParse("#[fxn][fxn][fxn[subfxn]]symbol[[fxn]]#", false);\n tracery.testParse("#[fxn][#fxn#][fxn[#subfxn#]]symbol[[fxn]]#", false);\n tracery.testParse("#hero# ate some #color# #animal.s#", false);\n tracery.testParseTag("[action]symbol.mod1.mod2[postAction]", false);\n\n // bad\n tracery.testParse("#someSymbol# and #someOtherSymbol", true);\n tracery.testParse("#[fxn][fxn][fxn[subfxn]]symbol[fxn]]#", true);\n\n // bad\n tracery.testParseTag("stuff[action]symbol.mod1.mod2[postAction]", true);\n tracery.testParseTag("[action]symbol.mod1.mod2[postAction]stuff", true);\n\n tracery.testParse("#hero# ate some #color# #animal.s#", true);\n tracery.testParse("#[#setPronouns#][#setOccupation#][hero:#name#]story#", true);\n\n};\n \n})();
jquery:on\nhash:off\nbookmark:off\nmodernizr:off\nundo:off\nobfuscate:off\nexitprompt:off\nblankcss:off\n
<<silently>>\nUses the parameter if one was passed. Then, checks for the $symbol variable. If neither is present, uses "origin". Clears $symbol at the end.\n\n<<if parameter(0)>>\n\t<<set $symbol to parameter(0)>>\n<<else>><<if $symbol>>\n\tNo need to do anything.\n<<else>>\n\t<<set $symbol to "origin">>\n<<endif>><<endif>>\n\n<<endsilently>><<print console.log("trace " + $symbol)>><<print tale.grammar.flatten("#" + $symbol + "#")>><<forget $symbol>>
String.prototype.contains = function(substring){\n\tif (substring.constructor === Array){\n\t\tfor (var i = 0; i < substring.length; i++){\n\t\t\tif(this.contains(substring[i])){\n\t\t\t\treturn substring[i]; // Non-empty string evaluates to true\n\t\t\t}\n\t\t}\n\t\treturn false;\n\t} else {\n\t\treturn this.indexOf(substring) > 0;\n\t}\n}
#sidebar #credits, #sidebar #restart {display: none}\n\nbody {\n\tbackground-color: white;\n}\n\n#sidebar #storyMenu a, #sidebar #title a{\n\tcolor: #4d6ad8;\n}\n\n#sidebar #storyMenu a:hover, #sidebar #title a:hover {\n\tcolor: #8ea6ff;\n\ttext-decoration: underline;\n}\n\n#sidebar #title, #sidebar #title:hover {\n\tcolor: black;\n}\n\n#sidebar #storyMenu {\n\tline-height: 110%;\n}\n\n.passage {\n\tfont-size: 16px;\n\tfont-family: monospace;\n\tcolor: black;\n}\n\n.grammarTitle {\n\tcolor: purple;\n\tfont-style: bold;\n}\n\n.grammarContents {\n\tcolor: green;\n}\n\n.grammarContentsIndent {\n\tcolor: green;\n\tpadding-left:5em;\n}
// Returns a new version of a given expansion.\nwindow.retrace = function(symbol, old, maxAttempts){\n\tif(maxAttempts === undefined){\n\t\tmaxAttempts = 32;\n\t}\n\tif(!(maxAttempts > 1)){\n\t\tmaxAttempts = 1;\n\t}\n\t\n\tvar output = "", attempts = 0;\n\tdo{\n\t\toutput = trace(symbol);\n\t\tattempts++;\n\t}while(output == old && attempts < maxAttempts)\n\n//\tconsole.log("retrace:"\n//\t\t\t\t+ "\sn\stold: " + old\n//\t\t\t\t+ "\sn\stnew: " + output\n//\t\t\t\t+ "\sn\stattempts: " + attempts)\n\treturn output;\n}
window.grammar = function(rule){\n\treturn tale.get(rule).text.split('\sn');\n}
@keyframes cyc-shudder-in {\n 0%, 100% { transform: translateX(0em); }\n 5%, 25%, 45% { transform: translateX(-1em); }\n 15%, 35%, 55% { transform: translateX(1em); }\n 65% { transform: translateX(-0.6em); }\n 75% { transform: translateX(0.6em); }\n 85% { transform: translateX(-0.2em); }\n 95% { transform: translateX(0.2em); }\n}\n@-webkit-keyframes cyc-shudder-in {\n 0%, 100% { -webkit-transform: translateX(0em); }\n 5%, 25%, 45% { -webkit-transform: translateX(-1em); }\n 15%, 35%, 55% { -webkit-transform: translateX(1em); }\n 65% { -webkit-transform: translateX(-0.6em); }\n 75% { -webkit-transform: translateX(0.6em); }\n 85% { -webkit-transform: translateX(-0.2em); }\n 95% { -webkit-transform: translateX(0.2em); }\n}\n.traceLinkEnabled {\n color: rgb(255, 0, 255);\n display: inline-block !important;\n animation: cyc-shudder-in 0.4s; -webkit-animation: cyc-shudder-in 0.4s;\n}\n.traceLinkInit, .traceLinkInit::before {\n color: rgb(255, 0, 255);\n animation-iteration-count: 0 !important;\n -webkit-animation-iteration-count: 0 !important;\n}
this software object\ntraced\nthrough\nbizarre\narguing that the content\nis dying of cancer\nwhat to do\nusing old light to manufacture new light\nin that situation\nat Yale\nboth are\npossible\nconstraints are exploring\nthis interactive\nreading\nsea otter uses a\nfar more complex\nArchaeology of Knowledge\nbetween abstract infrastructure\nwith steel\ndistinctions\nall these like the disciplines of\nas easily an accepted\nguns\nthe way in which the very\ncapable of producing stars\nthings happen\nbodies doing\nknown who rose\nthings like Object-\nthe bottom\nStar Wars for the first time\nmost scholars\nthe medium is a really\nanything other than an index\na more fleshed\nthink loop\nCrawford at all\nsomething that didn’t exist\nobviously he’s expanding\nit didn’t exist\nSutherland’s thinking through\nvery futuristic to us\nof text can do\nusing that conversation\nquote from Susan\nmanipulation aspect\npixel 537 to 538\nconstraints and stuff\nthe whole spectrum of forces\nstochastic implications\nthe telepathy thing\nour society is currently like chaotic neutral\nfiction and stuff\nI engaged with this\ntechnically\nto create a computer\ncalculating all of our thoughts\nabsolute garbage\nhas been shifted\nwith a computer\nin the machine learning\nWalt Disney’s head\nlooked at this\nnonsense when\nimbued with ideological meaning\nback when I was a student\nall the racist tweets\nholds no value\nwhere technology was developed\nthe question of\nthe enunciation of the medium\nin terms of\nan experience that you had\nonline dating\nerases some of the junk\nof material flows\nthat are fifty, sixty million years old\nlooking back at the simpsons\njust being garbage\nstems from me being\nboth a transmitter and a receiver\nan embodied character\ndoes point to\ncommercializing\nbig evolutions\nanalyze the impact\nin a creative way\nin that way\nthrough analyzing it\nEnglish was injected\nin ways that you are not\na product of our culture\nis the aloneness of seeing\ntoward the cannabis thing\ncloud computation makes me feel free\nto go back\nand interview him\nit’s actually kind of interesting\ntrying to read people’s descriptions\nwho were involved in early stuff\nfor information transmission\nyou're mine now\nbuild collaborative stories\nenabling constraints\nimportance of the modeling\nshare some documents\nright into World War II\nthe concept was\na support group\nsocial scrapbooking\na little hard to see\nposing by a big pile of snow\nincredible waterfall\nit was very, it was really\ncomposition of text\nwe've done twice\nliterary backgrounds\ndo this one again\npretend to go\nit gets harder and harder\nas the week goes on\na whole narrative\npeople showing\nessentially the idea\na hundred years ago\nalmost entirely that time\nthe concept of spending\ngin obsession\nthings settle out\nyou guys all know this\nlook at netprov\nthis central space\na particular shape\nyou goof around\ncry at the end\nwe can say\njust keep playing\nincrease their understanding\nget to\nwhat world\nmore and more\namazing port\nmajored in Russian\nloved the surrealists\nBrechtian Dada performance\nin Seattle\nno great novel\nright to sign\nwe're building a novel\nsuch beautiful stuff\nfeeling of authenticity\ncomputer stuff in Seattle\na sculptor built this\nbeautiful machine\nperfectly empty\ncoils of paper\nediting on the walls\nceremonial first word\nlearned theoretically\nsleepless days\nour feelings\nframe things up\nsee a way out of\ntortured artist\nanother attitude\nthe ashes of\ntook this huge\nany more valid\nsitting on a database\nshare stuff with other\nthe bulletin board\nabout ten years\nfictional websites\nthe site gets darker\nwe don't know quite\nunfolded over\nlast client\nreading the signals\nover the internet\nselling wine\nChicago office\nheavily flirting\na novel in email\nlast-minute\nreally live\na series of\nlook in on\ntransferred to Italy\nsmall group of\nunclear why\nsomehow has access\nkind of like poems\na kind of rhythm\nwith the many\nan available media\na fake character\nthe structure has\ncollaborating with a LARP\nbeloved featured\njust the\nso amazing\nso cool\nwhen is it finished\nthe things that\nthink in terms\na quick thinking\nwhat can we\nthe example that\nFinnish theater guy\nprojected behind them\nsee the screen\nas the errors crept\nintroduced by the machine\nwe just jump\nhave these kind of\nthose lightbulbs\nwasn't part\nall of these fields\nbrave, thinking\nworking towards new\nbasic parameters\nsuccessful career\nmainstream projects\nthe great Portuguese\nmajor careers\na way out\ncontinuing as\nremix culture\nyour mission is\none unique voice\nas a bunch of\nhow does work\npractical impediments\nhow much money\npotential users\nthat you get\nthe credit for what\nis it archived\nsuppressed collaboration\nsolo, silent\ngoing to the author\nmost elaborate\napparatus of scholarship\nconspire to agree\nideal use\nalmost the most\nI see it, widely\nincomprehensible something or\nonus is kind\ncome away from a\nknow better\nSoul Exchange. This is\nsum total of\npast life\neBay for past\nscrubby, nondescript\nsweet and sad\ndied at age ten\ngiant Dutch bank\ntwo sentences\nnearly four-hundred\nthat's an infant\na huge vocabulary\nfrom theater\ninteresting factor\nwhoever owns the\ntalk to\nyou probably know\ncannot physically\nnever go\nthink about archive\nthey're show\nnot super\nthe production\none of the\nthesis project\nparameter enhancement\nimprove your online\nnot as funny\nmove really\nromantically impaired\nghostwrite that\ntwelve-hour shifts\nthe bell rings\nthe worst\ninternal fights\nresentments\nso you can\nagain, from\nobviously things like\nlikely locations\nhumans versus\nmoney things\nhigh level\nmany writing processes\nwill do that\nwho wrote Photoshop?\nwho created the form\nbit haphazard\nout in Oregon\ncontinue to play\nthe archiving\nnot as\nsense that\nkinda ceases\nsorta equally\nthe culture\nso much\ninteresting to\ndifferent user\nRowling doesn't object\na kind of care\nliterature hat\nworld to world\nidea of giving\ngive them a\nsimply was to look\nencourage people\nread my work\nthen screw\nrewards and feedback\nsimply this\nmain Twitter\nincome history\nrich results\nit's a thought experiment\nbasic principles\ncreated early improv\nthe funny happens\nkind of romantic\nthe audience is\nthe other end\nthe official version\nLEGO versions\nhumanoid shape\nfan version\nworst Harry Potter\nthe Hollywood tradition\nmore than any\nsingle works\nor worlds\nvery eloquently\nshortening of everything\nlonger and longer\nthe credit is odd\nfactor cuts through\nwho lifted\nnot done\nto watch the\nsingle scratch\naugmented sound\nevery single day\ndon't expect\nsuper simple\nall watching\nemerges over the\na parlor game\nMark had\na million followers\nloved playing\nin England\nhorrible pickle\nstruggling poet\nreveals his\nwrite poetry with us\nwhere we had taken\nfamous for\nanother project\none fine Thursday night\ncame out into\nshape of projects\nlooks just really\na month with that\nplenty of popular\nstill very low\nwealth of machine\nkind of creature\nsharing is the obligation\ngeometric thing\nrich, rich\nfictionalize it\nanti-bike\na big bonfire\na big Twitter\nfake ultraconservative\nstarted an account\nthree people\na lot of people involved\ninside of MLA\nshield of anonymity\naffected discussions\nthis idea of\nfree content\ntycoonthropist\nfrom the company\nWork for the\nhelp you use\nfive-gender dating\nfor those moments\npost moments of\nsample, um, videos\nfragments of documentation\nuse your life\noften sort of wistful\nsweet project\nspent making ghost\nhad been pretty\ncrops were bad\nvery rainy\nread the rules\ngroping our way\nresilient rule sets\nin that sentence\nsummarizing someone\nthese days\na great little\nmultiple characters\nI thought that\nyour feed\nsome close friends\nyour own story\nevery month\nall the teams\nfairly limited\nunlimited extra\nwrite a duet\nsheer number of points\nworks like airline\nduplicate that\nlose your streak\nmake it available\nunabashed autocrats\nbook form\nour taste\nuntil we have\nembarrassed to wear\npeople here\nauthoring tools\nsuggested set\nmeta tools\ngood in certain\nfor the sandbox\nfrom the word\nsolving registration\nthe processing\nhigh volume of\ncobble together\ninterested grad student\nI've never\naware of\nslice of unreality\nexisting unreality\nup to maybe\nwith the feature\na known science fiction\neminently open\njust the one\nalready writing\ndoing this stuff\ncultural cuckoo\noccupy the corner\noccurs to you\nintegrated into\naren't meant to tell\na quick thought\nreplay it over\nmessages over time\nrecording of a\npowerful piece\njust toss\nthrough social media\ntry it for free\nI think his\nand in the Digital\nvisit us today\nbeen in conversation\nhim by reputation\n.fr\naffiliate faculty\nat Brown\nthree-volume work\nand pharmacology\nsoftware studies\nconcerns its scope\nthe history of media\ndiverse knowledges\nmention of the term\na critique and rearticulation\na study of instruments\naddressed by Socrates\na bit of dialogue\na network of universities\na kind of studies\ncirculating institutionally\nthis second lecture\nmaking a connection\nthe main statement\nconceptualize or spiritualize\nlife in general\nendosomatic\na new form of life\nartificial organs\nthe process of externalization\nthe basis of economics\nsubstitutes for biology\nproduce an organ\na rhythm for\nthose rules are defined\nthe process of exchange\nin the sense of French\nthis process of fetishization\nyou can transform\nfor example rituals\nthe serpent\nproducing what we call culture\nthe famous Library\nincludes also politics\ngive rules for\nwhat I call\nthose of arrangements\nwhat are platforms\nby the market.\nselected by innovation.\nlike Leonardo\none by Socrates\nsee what is seen\nit’s us who begins\nand many others\nthe first storyboard\nof older examples\nago, this one.\nthat can be\nthe origin of\nso important to\ndreaming in Australian\ndreaming as a practice\nbehavior is engraves\nare such tools\nexplain later\nwhat is retained\nhimself didn't\nof analysis\nideation to idealization\ncondition of geometry\nall philosophers\nwithout arithmetic\ntypical logocentric\nof Beijing\nyou have a different\nwith linear\nhe was wrong\nand nevertheless\nwe must\nno diversity\nincluding now China\nthe American brain\nthe transformations\nsuch a condition\nall techniques\nevery other\nscience, for example\ntranscendental, but\nfor me it is nothing\nis bullshit meaning here\nbeen living\nnot exactly twenty\nweb that produced\nreticular economy\napply quantum mechanics\ntoday must be entirely rethought\nand then by Adorno\nunderstanding language\nand also chronophotography\nand from which\ncinema as a technology\nof 1886\nHTML, et cetera\nof psychic functions\nto think when\ncompletely different question\nsuch that the\nthat Plato, here\nfound the academy\nbetween primary\nin all its forms\nan aggregation of\nof my discourse\nseem to be listening\neach instance aggregates\nform a sentence\nmany is formed.\nretentional criteria\nan accumulation of secondary\nbe hearing\neach of you\ndealing in different criteria\nin a singular way\nan agreement between\nmy speech tries\neight hundred years before\ngenerates what\nshared meanings\nnot an English word\ntransmitted through time\nsuch as writing\nthe results of\npsychic and collective\nconditioned by technical\nindefinite possibilities\npoison that can become a remedy\nthe true is fabricated\ncontrol temporalization\nreorganization of the synaptic\nreading brain\nHavelock of course\na history of knowledge\nwith the abacus\nquestions of organs\nensembles of instruments\nit is in the sky\nbeing a computer\nvisions of the invisible\na very, very big\nartistic knowledge\ninsofar as\nthis being possible\nJune 2008\ncriticized precisely\ndigits as fingers\nthe play of primary\nthe hands of the Sophists\nand particularly\nthe following\ncreating what\nexperience of music\none-thousand times\nabsolutely extraordinary\npossible to understand\nit is the same with\nthink that\nvery small camera\nwe will translate\nis interesting\ndirectly the flux\nmy students can\nusing algorithms\nin such a case\nintensifying interpretation\nnot spatial objects\nlaunching a practice\nthe Heideggerian group\ncore to media\nMcLuhan terms\nthinking intersects\norality\na study of writing\nand yet what I\ntaking your vocabulary\nneglect of technology\nreworked certain\nmany issues\nproduce a vocabulary\nprecisely the reason\nwhat produces knowledge\nwhat is a corner\nsufficient to use words\nnew words\ncollective secondary\nfor a semester\nnow, for me\nto rearticulate\nHegel, Aristotle, Plato,\ncriticizing the community\ninteresting book\ncoming from the ’68\nthrough television, through\nlanguage is always a scene\neverything always becomes\nan industry of language\ncriticize this industry\na very bad way\ndestroying exceptions\nfor several reasons\ncalled logic\ncategorization by computation\nwe saw that Bill\nfirst, they are honest\ncall therapeutics\nwe are confronted\nunderstanding software\nseveral dimensions\nmy own sphere\na new academic\nconcerning these questions\nvery precisely\nviolence increasing\nwith U.S. Army\ndefine my\nredefine and negotiate\nFrance is very proud\npeople never say\nrules for explaining\nan inquiry on\nof such molecules\nuse myself\nmust limit and\nthe technological reason\nrites they were enacting\nabout temporality\ndrag of generations\nthese external organs\nintersection of these organs\nhyperactive person\nmy idiosyncratic\nme obliged\nweek for preparing\non coasts\nproduction of endorphins\na very fast way\ninto a text\nYouTube of images\na farce image\nin discussion with\nI began with\nI call technical\nhe describes\nsynchronicity and\nGeneral History of\nthere are theories\na lot of theories\nare based on\nnot a complete\nnot in speech\nknown that\nalways included\ntechnical milieu\nare in conflict\nso-called totemic\nnot possible to produce\nstruck me this\nthe coexistence of\nutopian and dystopian\ncelebrating technology\nto deautomatize\nartists of thought\nsame coexistence\nliterally universal\na knowledge of itself\nin that position\nthings you are\nthis is attention\ndiverse attentions\nalways inhabiting\nabsolutely stupid\nto say that\npretend to be a philosopher\nrigorous on this\nmany, many misreadings\nMarx becomes Marxist\nmake compromises\ndigital is not digital\na new type of writing\narmies, states\nwe cannot find writing\nimportant in reality\nMesopotamian archives\ncall the digital\nthe sense where\ngive value to it\nonly in the social\nthe other dimensions\nunderstand what\nredefine a protocol\na situated reality\nwhat is local\nin theory of Schrödinger\nquestion of locality\nextremely dangerous\ndestroy all forms\nsystems bifurcation\nthe problem is today\nconsider that\nten years ago\npurely toxic\nregression of the digital\nchange the platforms\nthe digital low\nbifurcation through technique\ncreating desires\ncapable to prescript\ndeeply interested in\nI would say\ndiversity of possibilities\nthe art of control\na very, very good\nevery week\neverything is finished\na friend of Deleuze\nhe make very\neven if we\nfactories or military\nwas interesting\nclassical apprehension\nare the cameras\nif we read\nto produce new techniques\nartists should have\ntransforming everything\ntransform your computer\nan intuitive approach\npractice of accidents\nspeculative proposition\nartist, artificial\nthis is very important\nworking for maintaining\nreinvent amateurship\nalmost forty\nit will be forty\na museum\ncame from\npopular education\na very small\neverybody can become\nwhen you produce\neverywhere in France\nnew thought\nin 1957\nwe are experts\npeople a day\nthere was nobody\nwe also have\nask her questions\nimpossible for us\nwe post the\naround three weeks\nbefore the deadlines\nget that application\nwill you have\nalready have a\nsummer's kind of\nold paper application\njust hands up\nassignment process\ncrazy spreadsheet\nkinda varies\nout to instructors\npeople they want\nby the grad\nwhat courses are\nfinancial commitments\na big puzzle\ndrops out\na certain position\ntwo weeks later\nenrollments don't\nbe patient\nletter attached\none week\nanother opportunity\nwho they're gonna\nfigure that out\nweeks that go by\nbeen assigned to.\nenrolled in.\nmake, that's not\nposition, do take\nall, and we\nget into.\nthat everyone has\nbut oh well.\ndiscuss everything. So\nworking. As long\nactually starts.\nsituation, and I\nyour own deal\nUniversity slideshow\nit's a job\nbeing too casual\nkeep that professional\nbig time suck\nup at midnight.\nbefore starting\nare of them.\nwhat's reasonable and\nwhat they're leave\nin our office\ndirecting at the instructor\nabout working over\ncommunicate early\ndon't let those\nbeefing up our\nturnaround, and that's\nget it on\navoid any confusion\nrecommend you read\ndefinitely went over\npresent themselves right\nemotionally distressed\nonly help you\nstudent needs extra\nlearn the various\nnervous, I know\nfind somewhere else\nat the calendars\nover two hours\nassume it's only\nhour is actually\nup for payroll\ninto the system\nstart telling your students\nsuperstars and can\nlost our admin\ndeal with them\nthings into place.\nfind five offices\ngrade together\nreminder that I know\nhappened to me\nthe museum gets paid\neat the cost\nas they’re passing through\nperformances internationally\nfilm jury\nher articles\nThinking Through the Skin\nfact and fantasy in the archive\nhave a colloquium\nkind of academic-y-ish\nintergenerational impact\nwartime trauma\nreconstructed versions\nundermines the coherence\nher mother in the desert\nwhat she does not remember\nwhy she forgot to remember\nlabors to forget\nrevisions, and repressions\nas told by daughters\nthe oblique, intimate effects\nthe conspicuous absence\na few photo albums\nerect penis necktie clip\nsame-gender-loving individuals\nthe atypical structure of the camps\ninternal pressure within\nconforming to heterosexual norms\ndisplay their masculinity\nsupport for my research\nany new queer stories\ncollect stories\nhit a dead end\nreturn specifically\nmany written documents\nlove letters\nno personal writings\nrising prosperity\nwithin and beyond\nbachelor society\na dandy world\nhimself and his male companions\ntheir regions\ntaken outdoors\nin Golden Gate Park\ntraces of parties\nvirtually no women\nput as many in as possible\nthis sign of affluence\nan intimate and playful scenario\ndeconstructed spooning image\nneither realized nor fulfilled\ndied alone\nqueer future unfulfilled\nanticipation of a future\ncohort of dandy gentlemen\nlabel the men\nthe war progressed\nyounger men were volunteering\nmore evidence of gayness\nand is incarcerated\ninteresting and sort of tragic\nhe and his father\nthe government made a family\na baseball star\nhandwritten newspapers\nthey turned to baseball\nall the racists are beaten down by baseball\nother sports as well\nthe family prison\nbaseball did not save his life\nthe function of this image\nsurface presentation\nexclusively looking\nin the mess hall\nhis lover and their friend\nintimate moment outside\nseemed comfortable\nthese relationships were important\noffenses against chastity\nsanctioned photographers\nvirtually never see them\na Brownie camera\ncameras were illegal\nthe architecture of the guard tower\nthis is not\nlovers in camp\nthey're so far apart\nthey always dressed up\nright before he goes\nmale physical culture\nbecome muscular\nenjoyed getting the letters\nstacks of magazines\nhis patriotism would trump\nany suspicions of his gayness\ncopy the birds\nburned into the tarpaper\nhis animals of choice\nshadow archive\neventually fade and rot\nhidden in a shoebox\nmen baking bread\none structuring element\nthe recipe for this performance\ntime going by really slowly\ncapturing a certain meaning\nthe same grandpa\nrelying in the same footage\nlearning this dance\nnon-narrative filmmaking\nleotard situation\nthey're all doing her dance\none has a fish\ninexplicable Japanese schoolgirl\nthe turn from scholarship\nvery little information\nafter the artwork\nthe artwork led me to the topic\nseparate attention spans\nloads of gay guys\nembracing heterosexuality\nincarcerated by family\nfamily drama or the heroism of the military\nmore normative frameworks\na breakdown of family\nthat particular set of expectations\nhis name was James\nthe deliberate mistelling\nthe story gets twisted\na single death\nthe point of view of the dog\na self-conscious retelling\nmy queer desire\nthe bullet left the gun\nshe ran\ncannery workers\ngive us money\ncompete for prizes\nput in a proposal\nget the money\nthousand-foot view\nSeptember or February\nDecember or May\nintensely delayed\nremain impossible\nworking on their proposals\ngrants on your behalf\nfiscally-sponsored entities\nbound to do particular things\nshare what you learn\nbefore moving on\nimagining what they'll fund\nheritage writ large\nto future scholars\ntwo cultures at work\nmore than one methodology\nthe big challenge\nthe main National Endowment\nbuild a review panel\nmanage from below\njust show up\nsomeone with a project\nfits within the vernacular\nthe logic of the project\nincreasing the scope\nnot compatible\ndo not promise product\nprevious funding\nless navel-gazing\nuncomfortable questions\ncited by that author\na temptation that I face myself\npreserve the things that got you excited\nintroductions and conclusions\nsets of advice\ngaps you notice\nnexuses of conversation\nonly visible to scholars\nvarying angles\nrhizomatic thinking\ndefinitely worth pursuing\ntwo hops out\nmagnify your lens\npleasure will go away\nfix this big problem\nusing BASIC\nan apt way to go down\ncomputer learning on big data sets\ncertain things at this moment\nfluctuations in thinking or engineering\nvery, very specific\nin an industry jargon sense\na structure like Facebook\norganically building an AI\na program that’s designed to learn\nthere’s no central intelligence\nthe engineers turn around\nspatial operating systems\nexport processing zones\nshe articulates the way\na city is built intentionally\nvideos on YouTube\ninputs and users and program\nbarrier of fear\nFacebook would die\nnaturally there would be differences\nthe reason I use the body\nthe phenomenology of intelligence\nthese linear structures of relationship\nthose boundaries can be blurred\nmaps, machines, and so on\ninformed quantitative study\nhighly anecdotal\nhuge love renaissance\ntired of enlightenment\nthe driving force of bhakti yoga\nyou think about when\nnew imagining of relationships\nthe idea of a word processor\nearly hypertext art\na thing that people were thinking about\nthe printing press rendered obsolete\nnew facilities for writing\nthree modes of enlightenment\nessentialize time and form\nno linear way\nthe first years of utopia\nclassic problem of ego\npart of the culture\neat a pancake of my face\nresolving the political\ntake them to French lessons\ndo that for other subjects\nall-encompassing environment\nimagine how you use\nextend expertise\nalive in the field today\nthese people are still active\nalive and possible to talk to\nstill in alignment\non page 403\nthe professional uses\nimproved performance\nbusiness and doctor\nwouldn’t that be great?\nagain right now\nthat brand of thinking\nimpacts use value\nunrelated to this explicitly\nfalling in love\na letter on that screen\na nice, good pause\nascribe more emotions\nLuciferian ambivalence\nspecific brief moments\nboundaries being penetrated\nprocess of accumulation\nthose offspring survive\nprocess of symbiotic cohabitation\ntake all the sherpas\nI don't mean to derail\ncompetitors cannot play\nmaximize the score\nthe kill screen occurs\ncore of sadness\nit's extreme\nthis man literally\nin culture at large\nattach a part of their individuality\nnever as much as the nostalgia\nwhy does it do this thing\nit's a math error\ncollector nostalgia\nthe nibbler guy\ndriving games\nput a neg on it\npeople have been doing this kind of stuff\ntextual scholarship\ntotally ignore the content\ncirculation history\nnew media in the nineties\nthe emulator experience\nnew media as performance\nthe materiality of software\nthe different moves that can be taken\nI don't remember exactly where it is\nsort of throwing\nfor different people\nnegotiate with the platform\ninstability of the platform\nsome reading I was doing\nthere's a computer scientist\na list of a hundred people\nmaterial inscription\nall these different sites that were used\na software becomes a platform\nplatform itself can be problematic\nas media scholars and creators\nI don't want to create something disposable\nselect the hardware\nwe were in a situation\na cartridge which has a ROM\nas long as your hardware works\nallows media creators\nif we could describe the architecture\nwhat you mean by disposable\nmedia that will not last\nwhen materiality is in such fashion\nthe immaterial performativity\ntrying to communicate myself\nmusic on the mind\narchitecting a performance\na sequential set of stacks\nmy thing is out there\nwe are over time\nwhat an object actually is\na function to that description\npositions you\na cup from the perspective\nhumans tend to\nwe abstract descriptions\na lot of speculation wrapped\nextraordinary power\nthis paper from a computer\ninformed speculation\nhis justification\nsystematically biases\npeople historically knew\na theory of engineering\nthey had to have done this\na history of ideas\nthe series of firsts\npartially duplicates\nmultiple different functions of speculation\nyour goal and your process\nthis version of speculation\nthe boundaries of the\na quantifiable process\nexpanding how humans\ndangerous if those two get\npossibly very useful\ncan lose leverage\nsort of like metaphor\na definitive answer of media\nquantifiable in the same way\nthis book about dinosaurs\nsupposed how it would look like\na more complete skeleton\nuntil it's proven for certain\nthe claw on the nose\nthe goal is not\nempirical account of\nthe space to think\nfun to look at\nhistory is\ncontemporary scholars from this area want\na broader process\nthe digital and what computation\na hurricane as\na river as a sorting computer\npreceding interpretation\nlove giant structures\nboundaries interesting\nin the Extended Field\nsuddenly artists\nplay your music\nin your living room\nnice and easy to use\ndisagree with the direction\ntalk to both sides\nthe ones who left\nthe ones who stayed\nwhy they stayed\nalternative histories\nwas the VCR\nthe short time I was there\na software provider\nforks in the road\ndefining the field\nI just invented\nnegotiations and things\nthe cultural environment for a bit\npromises of television\nhe gave a speech\na critique of television\nnothing is worse\na vast wasteland\nmore violence and cartoons\nI only ask you to try it\nit's a waste of time\npassively consuming\nthe bleeding electronic medium\ntransformed by the media\nmedia have on us\nreading and certain kinds of light\ncool that he circulated\nThe Global Village\none of these things\nno room for anything else\ninteraction on our part\ninteract with it\na book would be an example\nelectric technology\ncome to mean involved\nparticipation is high\nkind of exclusive\nMcLuhan felt\na factory can be a medium\nthe thing is going down the assembly line\nthe medium of the factory age\nthe magic of McLuhan\nthe fun of figuring out\nstopping and starting\nall add up to\nan audience with the pope\nand more familiar\nthe age of the book\nhow one reads\na private experience\nyou do this alone\nno longer alone\na questioning in the 1960s\nthis older age\nnew electronic media\nhere in the\ninteraction with other people\nelectronic interdependence\nwas watched by a\non The Ed Sullivan Show\na cool participatory new\nthe home game\nis the new\nmost people don't\nknow what IBM does\napproach did have\na thing kind of\nother things that Alan Kay did\nwhat he meant\nthe computer is a medium\nthe very use of it\nit changes\nalso can be thought of in those terms\npoints of view from\nlike to live\nof work in this\nout the possibility\nthing for people\nover fifty years\nhas succeeded\nagain today it's\nwindow into another\nbeginning of virtual\nnumerous touch points\ndistinction is arbitrary\nactually physically exist\nthe system is acting\nimaginary as a noun\nthat imaginary\nas an inspiration\nvery shortly\nthe impracticality\nits historical forms\nwhat computing\nwith a system\nlecture notes from last semester\nthe idea of what these\nthe future impact\nis a metaphor\ncompletely surrounded by water\neducational possibilities\nthat goal of\ncomputers circa 1960\ndream of virtual reality\nsystem for making and editing\na career at Harvard\ngain familiarity with concepts\na major computing conference\nthe importance of displays\npresenting a world to you\npossible to interact\nsomething that computers can do\nthe vision thing\nalready completed\nit's amazing that\nheavy-duty hardware\na research project\nall the drawings\ndrawing with his own hand\nquite new at the time\nsilly to say\na week ago\nmodel of interaction through graphics\nalso at MIT\nof course be stuff that's very\nkind of correspondence\nan enormous achievement\naround with space\nplayed a game\nwas interactive\nin a space in some\nthink about that\nthis ability to present\nidea of the presentation\nto us a world\nshows you stuff\nthat gravity works\nbe in a world\ngear to do that\ndevelop this\nimage adjusts\nprimarily for transportation\na different age\nthe lipstick and everything\nthrough the head\ncoining the term\nan additional reality\ntheir take in 1993\ncreate a huge amount\nmuch what happened to\nresearch and so on\nit seemed not to\nit's another\nclose to thirty\nagainst the traditional\nencountered very briefly\ninvented the machine\nremember computers\ntwelve to fifteen\nhad been invented\nmaybe 2005\na lot of turmoil\nmake it possible\nwhat technologies\nwaiting for a bus\ndown notes for\ninvolve just watching\nconsumer of this vast\nto if you want to get\nnotebook and he documents\ncompany if you will\nclasses of games considered\nartistic games\nTV Game Unit #7\nfit into your living\nplayer and so\nsystem has to fit\nat the front\nshunted certain\na paddle showing\nserve knob\na military contractor\nunderstood at all\nthey made televisions\nthree-hundred thousand\nhad a lot of luck\nfree and clear of\na Sears brand on top\nsaw videogames become\nthis comparison with television\nplugging the home\ntoday is the arcade\nthings like laundromats\ntook these photographs of\nwhat those places were\na culture that corresponds\ndocument this arcade\nwith different norms\nthings are evident\nmen in business suits\nwho wore suits at that\none that survives\nalternative to sitting\njust need two\ndon't watch TV\ninteractive texts\nsomething like a game\nconsidered as a text\nthese kinds of literacies\nregurgitate what's in a book\nwhat historians do\ncauses for that\na post-Fordist medium\ngetting those takeaways\ntry to get to a definition\na traditional text with words\nACM publication\na standard scientific paper\ndoing this work on ELIZA\nunmask the way programs work\nthe way this parser works\nit doesn't understand\nyou're never gonna be amazed\nmay involve a different\npretty important computer\nbig banking system\na professor at MIT\na critique of computer science\nprogram like that\nand in turn with\ntranscript of the session\nin common use\nreflecting back to you\ndone absolutely nothing\na text generated by a program\nthe actual source code\nscholars began writing\nauthorship is involved\nprocedural writing emerged\nnot the text\nthis is the text\n“Literate Programming”\nthe second and third\npartly involves a tension\nstories with authors\nten to fifteen\nunder this label\nsome elements of narrative\ngame studies was getting started\nthat I talked about\nman, the player\nas you play it, when\ndelivered on a screen.\na few minutes ago\nthrough this debate\na counter idea\nunlike other cultural objects\ntheir own form\nthe programmer/author\nthe content is developed\nis concerned with\nshould not be seen as\nget to the point\nhaving to do with the interface\nrelatively simple competitive\nat most a kind of veneer\nsome reason that you're in space\nthe important topic\nas autonomous player\nendless periods of time\nwith by yourself\nan automaton that would\nQuevedo’s work\nthe amusement\nin some ways to\npowers of language\ngreat musical\ntrains her to speak\nlike a human being\ntheir belief in\nmisplaced humanity\nto accept that\nsay about the human\nsure many of you\ncomputers think like\npredates Weizenbaum\nat least in the realm\npretty much anything\ndevelop some arguments\ndeciphering Ultra\nthe power of these\ndefine what a thought is\nrelatively unambiguous\nimaginable computers\nthe notion of passing\nhide his homosexuality\nthe program and selected human\nit's been proved\nan award to the human\nbe on the committee\nreally are having a\nwork on ELIZA\nformative for computer science\nthe represented body\nacting in the world\npretend to be other things\nthis is Turing\nkind of into cyborgs\ndelivered through this\nagendas and contexts\na different frame\nthe word comes from\nto act for you\nin practical terms\nwas beginning to make\nthose things that you would expect\nan agent in\nexpressing your decisions\nobviously not you\nthe kind of character\na character might be\nsoftware defines and controls\nunder our control\nwear and all that\nborn with an understanding\na conventional online\nmid-to-late 1970s\nearly internet technology\nthe ace programmer\nthe storytelling aspects\nbased on caving\nasked to do\ncommunicate electronically\nthe places were connected\nan argument about whether magic belongs\nlayer on that\nthrough a modem\nget into this world\nwas very similar\ntrying to kill them\nmaybe two case studies\na short conclusion\ndeveloping these technologies\npeople soon did\nin 1979\non a TRS80\ndoesn't mean it's anywhere\nhappy about Radio Shack\nadd graphics to it\nmore popular in the 1980s\nall about text\na simulation that's simulating\npsychological mechanism\ncompanies that are going to\nthe very, very beginning\nat the starting gate\nconcern with piracy\nother than Atari\nfirst software company\ntransfer some really\nguess why the company\nsell Infocom\nsounds like literature\nthey called feelies\nsome object\nbegin seeing\nplay against the rules\na hundred verbs\nlasers per cubic foot\nmerliguff is a real word\nwant to watch what does\nepilepsy warning\na murder of procedural crows\nvintage ball monsters\nfrom the table to the computer\nas game designers\nmanual and digital\nthe second golden\nthe advent of\ntoo much about miniatures\nmodels that represent\nsaying too much\nwill be talking\nwant to advertise\nother kinds\nengage with partly in\nhistory through these\nvery closely connected\nrelatively free\nwe have home\nstoring a game\nyou stopped playing\nother things on computers\nan umpire there\na trail that leads\nget interested in\nsurfacing in Britain\nthe blue line is\nfound the company\nbecome the relatively fixed\nthis particular mechanic\nget players involved\ndesign them better\n“Situation 13”\nplayer-created situations\nit was a mod\nsame deal here\nlet's leave that\nlevels and maps\nAutomatic Teaching Operations\nno rules\nten-thousand cartridges\nand so, um\nstrict business practices\nintellectual property rights\ndeveloped in universities\nreally fought for\nwant to lose\nkeeping a smart\nsucceeded a lot\nstressed the importance\ngood aesthetically\nfeedback from those\njump on ledges\nto play Super\nfun and livable\nattract controversy in\nwouldn’t want the\npester their\napprove, but not endorse\nown ads at first\npartnerships with\nacross the lines of\nlike a Disney character\ntechno-orientalism\nfueled by a lot of xenophobia\na scapegoat for\nthe reading concludes\nMario as a colonizer\nunder his control\npushed the aspect\nSuper Mario lunchbox\nbig brand presence\ncontrolled and uncontrolled\nstrict control of\nan experience of traveling\nyou do decisions\nrisks of death\nmaking a lot of choices\nany conditions gets better\nsome learning objectives\nstudents often play\nan iconic experience\na computer game console\neducation contradictory\nby her own saying\nwhich I agree\nfirst in educational spaces\ncertain skills or knowledge\neasily distinguished\nreduce our understanding\na marketing category\nthe delivery system\nany meaningful interpretation\npush you to learn\ngames you play\na role in history\nthe difficulty of success\nintent to educate\nplayer is a passive\nin the content\nbenefit knowledge\nthe process of game\nrefers to an individual\nprogramming must be involved\nnot available to the public\ngraduate students with years\nincreased sharply\nwe all learn\nschool categories\nlike and enjoy\ngrind and learn dungeons\nlearn this material\nnot even relevant\nplace you in a world\ntake perspective of what\nbasically a simulation\nactually kind of powerful\nfair share of PlayStation\nunderwater fish game\nmeasurements or math\nvery good at typing\nenjoy typing otherwise\nmade it fun\nlike Civ 5\nread all the little notes\nmore history from these games\nare kind of helpful\nrepeat the same formula\nactual history\nthe World War I one\nkind of work for kids\nfifteen-minute calculus problems\nmid-to-late 1980s\nhold eighty-to-ninety\nshare in the market\n16-bit machine\nmore powerful than\nlack of good software\nthe top of the game\nrelease their Genesis\nsoftware library\npopular among the videogame\nwhat Nintendon’t\nmore powerful system\na good jumpstart\nhome console format\none million units\nbig enough competitor\nfear of backlash\nbetter licensing deals\nan expensive one\nyears go by\nSonic the Hedgehog\na survey where\nmore likely to be\nNintendo and Sega\nmarketed towards them\nkeep growing, keep growing\ntwenty percent of the market\nback in America\nremember doctors\na competition between\nremember who to support\nsome software companies\na tyrant\nstruck a deal\naround the Nintendo\nwork on a deal\nkept that prototype\nway-later business\nother mascots\nwouldn’t have existed\nsimilar to that\ncouldn’t imagine it\na mixture of\nthat cartoon feel\naction and thrill\nthrow out\nthree major companies\nany other brands\nthat’s the problem\ntalks about it\nno one else out there\nthe big problem\nthe climate\nwanting to make games\nplenty of companies\ncompared to like today\nas much control\nnot going to talk\na better console\nable to like\nable to push\nshould probably produce\nmore colors available\nthe money flow\namazing sci-fi technology\nmonopolies own the entire culture\ninvent something amazing\nnot just new\nto be fair\nso stubborn on sticking\nconsole and controller\na screen on\ninteresting how it’s swapped\nthe idea of backwards\nmiss the Gamecube\nI owned one\nI’m getting it\nupsetting to know that\nvery first PS3\nyellow light of death\ncompelling to people\nhated relative\npassively absorb\nwhat educational games are\ndemand a mastery\nactively be doing\nwhat they focused on\ninvolved with things\nnaturally learn\nplayed Jeopardy\nspewing out the answer\nkind of meaningless\nchocolate-covered broccoli\nexpanded in the 1990s\nmore of a regular thing\na whole lot to be gained\nmath with a space background\nimmersive narratives and quizzes\nabsorbing the information\ncramming it down your throat\nthe form of obstacles\ncritically thinking through\nsolve problems\nnot historically accurate\nsacrifices entertainment\nall that effective\nmore like games\nwilling to engage\nwhat games did you\nworked and didn’t work\ndid from school\ntype in a multiplication\ngets a speed boost\nhelpful if you’re the one\nbuild on your skill\nwracking their brain\nvaluable parts\nhelped me now\ndevelop my typing\nlooking at the screen\ntype faster to drive\nseeing a car\nsmack the keyboard\nyou get engaged\nanyone else\nproduction and testing\nspecific roles\nteams of five people\nit includes designers\npart of the team programming\ndesigners were the programmers\ndevelopment more referred\nthe game was constructed\nzone control\nstacking rules\nranged fire\nplayer is going to develop\ncondensed one\nthe process for the war\nsomewhat similar advances\nmore computer-based\nfacilitators or understanding\nprimarily for the US government\na final distinction\nan individual to a team\ngives technology\nthey increased\nmore that could be done\nthe name designers\nvocabulary bit\nthe names aren’t really\ncompetition that kicked\nthe chapter begins\ndefinitely had money behind\nover the NES\nthat did not end\nbeing poor\nnot fun to\nin addition to\nactually was\nfully capable of improving\ntechnically impressive\ncause some issues\na question that I had\nfocus on the tech rather\nlooked great\nthere is this disconnect\nhad time to mess\nwhole new level\nthose shitty games\nI can push\nexperiment to try\nfrom there\nsee how\nexpect so much\naren’t sure if it’s going\nsure they’re going to get\nthey make the console\nbehind schedule\nmarket what we got\nhave at the start\neven with that\nlack of character\nsomething to combat\nmore interesting at the time\nan edge over\nstill important obviously\naway from that\nprevalent anymore\ndropping off\nthink that we’ve\nmake a return\nservices provided\ndeals with\nextra stuff there\npeople didn’t like\naren’t as big\nplatform is YouTube\nthrough popular YouTubers\nable to market\nmultiple smaller mascots\ndating back to 2001\na mascot as large as\nMario and Sonic and whatnot\nentered into gaming\ncompetition lead to\nto be creative\nsimilar in technology\nsimilar in a sense\nrelatively the same\ncustomize your cat\npurple and bright pink\nhijacking the vehicles\ndelayed release\nparents wouldn’t be interested\nall these games\nwould they buy\nlead to Sega\npractices slightly\nPower as incentive\nstill similar\nin terms of licensing\nmultimedia became a buzz\nall-in-one\ngo through encyclopedias\nmultimedia again\never pick up\ndo more things\nmovies and play\na bargaining chip\nautomatically have access\ndidn’t really care\naren’t gamers\nnever play games\nthe gamer’s value\nit didn’t really matter\nthey get to watch\nfamily time\nsit there and listen to music\nadversely affect the other\nall these other things\ndo a lot of other stuff\nthe only thing like that\njob selling\nthings at once\nsucks at all\nusing a spork\nlump a bunch\nsell it to parents\non your phone\npeople that played\nNintendo as a colonizer\ncompanies kind of failed\na playing card company\ninvaded the US\nrigorous\nlock-and-key\nregulate\npanic in the ‘90s\nkind of racist and stupid\nsettle the new world a second time\ngood ad campaign\nalso people\nhe stuck around\nfiring on all cylinders\nwithin America\ntrying to be clever\nvery alien to Americans\nreally reaching\npretentious English teacher\nprominent voices\npeople in general\nhome during the war\nmore contention with Japan\nmany people that were there\none generation past that\nlost its influence\nto choose from\nnot as powerful\na multimedia\nwhole wide\ntunnel-visioned\nnon-game\nmarket was dead\nthe American\nthe Mario impact\nfor me personally\nthat social context\nmore serious\nplaying solo\nactual gaming\nas big of a boom\nmarketed to mainly\ntime has moved on\naccustomed thing\nthe most variety\nthe least amount\nrestrictions I should say\na hundred games\noutright discontinued\ncensorship reasons\ntotally not OK\nmeanwhile, America\ncollarbone to his waist\nmobile could be a sign\nI could say a monopoly\nself-promoting\nmistake with Sony\ngo with Philips\ndent in their power\nthe thing to go\nthought long-term\nso we’re done\nthe whole lecture obviously\nstarting Wednesday\nhours in advance\nwe’ll see them\nthe sole judge\nbegin your engines\ndefines game design\nspecifically about the franchise\nit will not be noticed\nthat's the radio\nbeing somewhere else\nso overwhelming\ntheir design framework\njust a rulebook\nthe paradigm of\nstarting from physical design\nitself is secondary\nthere's some purpose\nelectronics technology\na new kind\ndo the programming\nweakness of the computer\nthought about through\nmostly been in\nalready not quite a century\nentertainment as an area\nsaid the other\nbusiness is pretty\nup being part\nvery large purchases\nthey were just making\nknow that they did\nculture that they had\nthings that we talked about\nin the competition\nfit the previous\nour games are\nour consumer editor\ngather to play\nyou've never been\nto watch, who's\ntalking about the possibility\nsimilar to a background\ncomponents, physical components\nwith his background\nthese are early\nhe worked\nwhat it looks\nwhat's the experience\nyour living room replicate\nkind of thinking\njob on this\ncould play with a\ninvolved in the cabinet\ninvolved in drawing\nworked on this\nbegin to be assembled\nincreasing size\ntake on titles\nlearning experiences\nwork together to create\non his own\nthen took on\nout of all this\nred are his early\nstride as a game designer\nand the particular skill\nkind of iconic\ntime in the late\nwho makes games\ndon't speak Japanese\ncompete on ideas\nthis is before\ndeveloping technology as fast\nproduce good\nplayer and the game\ncould work as well\napplicable to these\ngames were just practice\nexperience was being created\nout of the old\ndesign the outside\ninterface action\nkinds of approaches\na lousy student\nexperience that's taking\njust on software\nable to do something\na few ways\nconcepts to work with\nimagines that these\nis actually fun\nfun to drive\nactually shifting gears\ndeciding that fun\na certain kind\na lot of it\nintuitively pick\none very\njumping a part\nus feel our way\ncould experience\nyou experiencing\nthe physical sensation\nkind of phenomenological\nmuch more\ngoing through that\nkind of the keys\nthinking of my engagement\nhelp me experience\nand then through\nnew design philosophy\nit starts—of course\nat a distance\nwere responsible\ntake on the original\noriginally in 1983\nto the home\nit was released\ncontinuing over time\na lot of the freight\nall of these\nmake their own\nit's true\nthrough emulators\nways of doing it\nseeing very quickly\nthe speed\nbasic components of one\njump through a wall\nthe existence of the space\nmodified it\nthere's a difference\nthe space is more\nthe one screen\nkind of interesting\nbit of a shell\nthat was considered\nthe early member\na fundamental thing\njust about jumping\ndo to give\nyou have exploration\ndesign really hard\nidea that you're moving\npick up on the idea\nyou're moving it\nwe do all of that\nthat becomes\nstorytelling to cross\nwithered technology\ncontinue to develop\nbegin to introduce\nreally, really multifaceted\nfor three decades\ncore software components\nthe engine itself\nseparated architecturally\nseparate these things\nthe engine that was underneath\nstrip away all those\nreplace them with your own\nseparated more\ngame and change\ncreative in a different way\nnever touching\nlook different\ntheir own\nI say invention\nanother way of thinking\neffect on the culture\nthat in detail\nsoftware to make\ninvited that\nplaying the original\nof a cool\n1970 to 1984ish\nlet's say the NES\naccuse me\nthat whole line\ntechnological determinism meets DOOM\na shift that happens\ngetting better\nmore sophisticated\nkind of supports\na big driver for\nthe first week\nlike to mention Susan\ngrowing up as a grad student\nthinking about these\nthis representative\nsee invention as\ndeliver a technology\na technology is delivered\nhave an impact\ntechnology that they delivered\nit had in mind\nyou expect the result\nuse certain\ndo with a\nthose affordances interact\nunintended consequences\nargument about irony\non this concept\ndo the things\nhistorical result\nmovies and so on\nout of their control\nplayers than it was\nstarting to fragment\ndomination of their technology\nthat world is\nas far as\nabout things like\nthere are a few\nmore capable, but\nsort of like a computer\nsort of like a console\ndo either one\nhad in the early\none advantage that\nsave your state\noffered the option\nable to save\ncould a personal\ndesign point\ncompany that focused\ndidn't really have\nvarious ways of trying\ncontrol the content\nthoroughly controlled from\nmodel would work\nwidely distributed graphics\nrelatively easy to buy\nmakes more complex\nthe internet—the web\npick up some momentum\nconnect online\ntechnologies associated\nthis kind of change\ninnovation of innovations\ngrew up programming\nserved the Apple ][\nalready had reputations\na company in Louisiana\nthey were different\nideas about distributing\nfocus, um… on the\nmaking games for\nsituation where the fundamental\nwe optimize this\nkind of, how they can\nleave that there\ncomes out of\nfirst clue that\nmarginalia that told\nbrutal production\npath for different technologies\nbecoming their own\nstuck with these\nwhile chained\nscrambling to put\nget horizontal scrolling\nthat picture—in that photograph\nweren't concerned about playing\nyou know what's coming\ntheir path out the door\nget out of here\ntechnology becomes their secret weapon\nwe know everything\nunhappy about this\ngames out the door\nwe're looking back\nbig changes are coming\nhave in your house\na few issues later\nfour through six\nsoftware that produces multiple\ncontracts and obligations\npartly in series\npartly in not\nthey might go\neventually crystallize\nthe heart of the car\nthe heart of the game\nkind of feels\npeople at that time\nlet John Carmack talk\nstuff up and shooting\nwhich were mirror\nreliable as it needed\nquality of my previous implementation\nbought the book\npeople started telling\nput this on\ngetting this alert\nhomebrew version\nthis little workshop\nbought can track\ncommunicating multiplayer\nbecause players figured\na certain asset\nenormous change in the\nthings about business\nthe open game\nnot a linear progression\ncultural economy\naround violence\ngames are immortal\njust walking around\nthe method for agency\nstrictly talking\ncontext for players\nfour possible spaces\nall things that are possible\ndamage you do\nperceived abstract\ncode is fetishized\nlook at games that use code\na throwaway\nin a black box\nthe steel that builds a skyscraper\naren’t necessarily\nin italics and all that\nalways and only\num, user content\nits own offshoot\ninvisible or free\nmoney for nothing\none of those in heavy\nthat community really\nwhy they were comfortable\nbetter than half\nhistory of the two\nin 1995\ntransnational corporation\ndivested itself of attachment\nthe use of the advertisements\nkind of prudent\ncaused the success\nfocused more\ncompletely shifted\nup with Windows 95\nmuch closer to reality\nwith many game genres\nCivilization and Star Trek\nstraightforward logic of violence\nthings are classic\namazing for the time\nremembered for being good\nreally well-documented\nseparating sentimentality\nin middle school\nthrowing microtransactions\ntry to summarize it\nthe console wars\nbasically supposed to\npowerful, better\nvery successful\nmascot, they were able\nhowever, Sega\nwent over their head\nproducing too many\nbloody fatalities\nincredibly bloody kills\nincredibly violent\nblood in there\nthe entire blood\nhid the blood\navoid controversy\nuse marketing as a way\nmore extreme marketing\ncatering to a certain demographic\nguys—the male gender\na perfect train of thought\na mixed bag\nvomiting out all\nthese different ideas\nshoved in with all the other\nsome areas and not others\ntalk about violence\nfunny that everyone\ncorrupting the youth\nour parents saw\nplease don’t\nnormalized in games\nManhunt or something\ninteresting when I was reading\nthe world and kill people\nhow’s it going?\ndespite the controversial\njustify to the playerbase\nhis take on violence\nan exercise in morals\nthe resonating effect\nit’s presented—the violence\nsee a number go up\nbecause it’s Hatred\nthey work in the same sense\nonly enjoy the game if\na strategy aspect\na specific goal\nthey hated people\none little thing\nunderstand the whole big part\nhow ridiculous that can be\nvery unsatisfactory\nin the end\ngone as of late\nwhy people loved\nin a cold sweat\ngore and violence as their crutch\na good way to portray violence\nthe most recent\nback in the day\nthe blood censor\ninstead of zombies, you fight robots\nas out there as possible\nolder people react\npour one out for Australia\nfor better or worse\nin common with violence\nmodifications of babies\nit merged\naiming towards the older\nup with their\nSega used Sonic\nmore violent\ntry to twist it\nrestricted the hours\nfar from realistic\nkind of complain\nsocking someone in the face\ndepends on the parents\ntechnological revolution\nget into the market for themselves\nas you all know\nactually develop their thirty-two\ninteracting with each other\nall the way in Washington DC\nand then, so here\nthe first-person shooter\ncame out in 1992\nseeing through the eyes\nthey made DOOM\nkill, kill, kill\nthe weapon that you’re holding\nthe player as a weapon\nthe children’s market\nfor a more mature\nsorry—the baby boomers\nsupport from third\nmore advanced technologies\ncost a shiny penny\ncheaper machines\nbetter machines\nwith various\nbottom-of-the-barrel\nquote-unquote information superhighway\nthe problem\nthe average person online\nslaughtering people\nvarious bugs and issues\nthe internet having issues\nDOOM’s competitive gameplay\nfairly niche\nthis relooking upon\nsee what was going on\nplay or see that\nraw competitiveness\nit gets tense\nno holding back\ncondemn the guy to hell\nnumber one player\nteamwork is very little\nthe most enjoyable\nturn-based card game\nslower-paced games\nvery turn-based\na new level of competitiveness\nthe camera perspectives\nyou yourself are\nthat would depend\nif you’re just watching\nfootsy, zoning\nknow the scene\nmakes sense to me\nby themselves\nwhere the action is\nperfect system, but first\ntalk about as\na little confusing\nhe said it’s hard\nbased upon their age\npractices of playing\neach person has their own\nlong, and broken\nrule-based methods\nformally-defined rules\ngames are loops\nprocess the data\nactualize the state\nessential formal elements\nconsequence of combination\nspaces of possibility\ndesigners construct\nit was short\nyou start off with code\ninstructions for the computer\nhumans could read\ncertain conditions\nthe author also\ncame out in 1961\nwhat is considered code?\nnumber of dimensions\na mistake\nonly for a computer\njust as code\nit became property\nit was modified\nit became work\nhow id Software did\nlooking for the bugs\nespecially with users\npay for mods\nbasically free\nenjoy it, and want more\na question of free labor\nconsequences of digital\neverything's fitting together\nyou'll be alone\ndoing that later\nas a platform\nseparation of the core software\nthe name for this\nsure enough\na very, very, much\nall this communication\ntalking to each other\nplay it over the internet\nforming up\nmuch more robust\nwe've already discussed\naccelerates the flexibility\nat the end\nnotably the Dreamcast\nthe gap between\nit is updated\nQuake as a platform\na platform for doing\nIan Bogost\nchange something like a map\nother activities\na mechanism for getting revenue\nkind of a media theorist\nan example of how\nthe core thing that they produce\nmaking things using a technology\nkind of break this down\nmaking something else\ntrade these additions\nan ideological gesture\narguing about id\nid’s ideology\njust isn't all that valuable\nbuild our company\nearly advances in game technology\nyou're infringing\nthis idea that\ndo other things\nhas a lot of implications\nmake new things\nprobably not going to make money\nvery difficult to do\nthe labor\nnot that thrilled\nafter a few months\npart of what's driving\nthe one hope\nreally understand the technology\nusing the technology\nI’m sure you recognize\nthat was actually\nnever heard the term\ngo at it\ngetting better, faster\nuse with your browsers\nthe original group\nwe have to talk about\nyou can see this file\nyou can be curious\na year before that\nthe concept of replay\nreading the text\nlet's look at this\nthis performative aspect\nshowing people\nsettled for Jack\nyou are also an object\nnot having violence\nmilitarized Dungeons\na Civil War re-enactment\nmodern military campaign\nmade it commercialized\ngames as we know\nlittle groups of hackers\nhacker intros\nhacker cheats\nhacked game\ncracked game\nkind of be what today would be\nthis is what we can do\nthey already showed\na drastic change\nthings started to happen\nmake a judgment\nare they really\nactually help\nif you can achieve\nknow their limits\nthat same aesthetic\nyou play that chapter\nalmost a decade now\nlimited maps\nfamiliar with The Matrix\ntechno-entity\nit definitely has some truth\nafter this book\nthe path technology\nhow important these two things are\nthe Sega Dreamwaker\nthe business side\nhave a powerful hold\nfor their machines\nall the dotted lines\nit goes into details\nrendering everything visually\nfrom nothing\nthe image\nare being studied\ntheir cultural effects\neverything in-between\na conceptual form to reflect on culture\ndirect them down a path\nhow it has effects\nfully playable\nbeautiful, beautiful\nbeautiful gameplay\nthe top of the top\ntend to not have political statements\nvery questioning at the end\na sudden or brief irregularity\nreally look for them\nreally fond of these\nbecause it’s aesthetic to them\nplay with the game\njust moving them\nmore advanced today\nstronger computers\nstronger processors\nproducers use sounds\ndon’t show human error\nthings I wanted to talk about\nrealistic and more complex\nshooting at little aliens\nshowing bloods\nso was the criticism\nthe first form\nas players we are basically\nwe’re moving\nwe’re pulling the trigger\nre-amped it back\nthat violence atmosphere\nviolence is like amazing\ntechnology was advancing\nlittle boy heroes\nrunning around and taking over the world\ngrown adults like ourselves\nnow I can play videogames\nhell yeah we are\namped up the violent world\nthe problem with violence\nvery man-dominated\ntweaked just a tad bit\nnow you’re in space\nit’s space war\nup our software\nadventure story-based stuff\nhey women\nsixteen percent of girls\nlet’s put them in games\nstill for men\nwhy is she getting kidnapped\nPeach is problematic\nstereotypic problematic people\nevery woman has to be stereotyped\nran the industry for girls\nbreak the stereotypes\nstill using stereotypes\nwhen you push me\nI lost my color pink\nbooty shorts on in the rainforest\nan escape for boys\nboys grew up in urban areas\ncreated a world\nbroke out reality\ntry to intentionally make\nit didn’t really take one side\ntook a lot of criticism\nget into two different\nexpress universal and timeless values\ngive shape and form\nart today\nsuch a big thing\ntraditionally think of as art\nplay as performance\nif you don’t remember\nholding a bunch of people captive\na plastic mask of his face\na pseudo-documentary\nan interesting approach\na lot of small concepts\njust doing their jobs\n80+ hours a week\nin really terrible conditions\nconflict over unionization\nnobody wants them to unionize\ntake a game, rip it apart\na similar type of concept\nproduced by amateurs\na progressive mindset\nthe innovation of the film industry\na bunch of existing musics\nacademic game programs\nincreased media attention\nmarkers for a time in the past\nrunning like a QWOP person on the moon\nfighting games were released\nthis rising popularity\ninternational competitions\nthe government’s ban\nreally competitive and elite\na real sport\njust decide to mess around\nright after the whole\nColumbine had just happened\nthe development scene\nbaseball because of the running\nsome other stuff\na DIY mod\ndisable parts of the game\nthe definition of art\ncompressed JPEGs\nmake a Bulbasaur faint\nswear all the time\nnegative, grotesque culture\neven if you’re eight\nMinecraft continues\nask the question\nlittle kids playing Call of Duty\nwhen you’re older\nchildren absorb this information\nhype it up a lot\nnot as lucrative\nan inherent part of the program\ndiscovered and replicated\nthe same glitch in their game\nhard to get to\na prized thing to get\nacademic stuff also happens\ncooperative play\nwhatever situation you’re in\nhow should I say this?\na devious beginning\ntogether through multiplayer\ngendered playspaces\nthe gist of it\ninfluencing gender culture\nthat’s the best way I can describe it\nreduce the segregation\nappeal to both genders\na really convincing way\nbooks and movies\nhe is a media scholar\ngames should not be a form of art\nthe immediate experience\nthe context of everyday lives\nit must be accepted by the majority\nif film is already an art form\nyou go to a museum and you play videogames\nwhat would you do about the line\ndangerous in general\nwhere the money is\na quick summary\na game I’ve never heard about\ndisagreed with what was\nshould behave and look like\nit was kind of hard\npsychological remedies\nshifts in game culture\ngames in general\nto market to them\nis who they get\na stubborn materialist\nit's still warm\na dialogue together\nfundamental institutional problems\ncontext and framing\nthe myth of this\nthe accurate lie\nelectrical impulses\nwriting to channel\nan invisible history\ntime and purpose\nbe unwitnessed\na spiritual imprint\nmaterial ancestry\ncontext of use\nresidue that can be accessed\nthe discourse of archival\nsearch for objective\na spectrum of practices\nmake some changes\nthat sort of thing\nkind of a performance\nbring it to life\nsay is really\nspooky monetary dealings\nfirst thing out\nwhat angle is the book\ndid it draw you back?\nthe things you think are most obvious\nfollowing up on those\nthe reason I'm drawn\ndiachronic look at collision\nthe last section is\nfundamentally conservative approach\nwhat we have logics for\nmy first book was written\npresumably not me\na substantial amount of writing\nmy reduced pace\nif all goes well\nI will finish a draft\nwrangle all their data\na more unified way\na full, like, multiplayer\noctopus racing game\na ten-thousand-year-old Dwarf Fortress\nsimulated history\na dissector by trade\nabducted by goblins\nintimidated her way up into goblin nobility\nquietly murdering goblins\npotential future projects\npast and current work\na tentacle here\nit goes beep beep beep beep\nI hope that you are\nwhere I'm coming from\nit's indirectly my work\nthat might be a lot\nfirst things first\nthink about, study\ncommunities of practice\nas well as activism\nI attempt to do too much\nbreadth over depth\nproductive tensions\nwith different language\nthese different stakeholders\nthe world of activism\ngame design, or documentary\nwell-known and notable\ndealing with serious matters\nreal people and real struggles\npossible repercussions\nhave that obligation\nthe ethical dimension\nan applied theater\nbring communities together\npossible solutions\npower imbalances\nessential as re-humanizing\nhumans becoming\nalways rehearsing\nsomething that we can write\nyou can't flow unless you are playful\nthe villagers responded angrily\nhung up their theatrical hat\nBoal tilted his head\nthe son of a baker\nseeing life with whimsy\nhumor and whimsy is a spiritual act\nsomething failed\nsmile lovingly\nyou sit here and you just enjoy\nhe didn't critique\nhe had infinite love\nabundant spiritual permission to fail\nthe rush of breaking\nthe be nice rule\ndoing the right thing\nsometimes that's exploited\nfive-hundred of your best friends\nthe real transformation\na great story\nhead of the chamber\nthat confrontational point\nsurprising answer for me\nsearching for something\nnot everybody has to like it\nit's somewhat idealistic\nlive like that\nreally simplistic language\nsoft and safe provocation\nabout telling facts\nconfuse or annoy\nhaving no bias\nsome idealistic journalism\nalmost always connotes film\nthat's a fine result\nfact-based games\nentrench someone more deeply\nyou can't change someone's mind with facts\nthe rhetorical power\nrespond dynamically\nthe good things of each of those\neight or nine\ntraces of someone's life\nfacts don't work\nfind the time\nwritten extensively about\nthat tension is always there\nthe creative treatment of actuality\nwith an applause meter\nAI models of different ideologs\nfilter out ones that are inconvenient\nfive-hundred videos\nverbal connectors\nthe database aesthetics\nwith agency and choice\nliterally operationalizes bias\nthe faux objectivity\nwrites some false cheques\ncloser to the truth\na critique of that style\ntotal Aristotelian arc\nshe's a labor activist\nshe did a documentary\nonly a live performance\nthe real-world material\nby way of a recording\nsign or index\nthe indexical quality\nreally contiguous\nthe truth claim\na defense of some of that\nI'm not going to be holistic\nthose that felt frustrated\nthose that felt bounded\nall these things\ninteractive documentary\nthe database documentary\na game-maker wishes this\nthere's no police\nstrengthen the indexical relationship\nethical ramifications\ninherent sort of power\nthe social actors\nthe subjects of the film\nlarge volumes of chopped-up stuff\nan exertion interface\nGoogle Street View in the ‘70s\nLev gave this body of work a name\none of navigation\ntransformative power of the computer\nthe computer as large file drawer\ndoesn't go far enough\nwhat the computer enables\ndeeply computational\nideologically-biased reasoning\nnot interactive via navigation\nexplore puzzleness\nyou have all this film\nthe quote-unquote user\nshe's doing oral history\npresent them and frame them\nI like Her Story\nusing the video\nI start feeling bugged\nnavigate it freely\nthe puzzle is queries\nthe intersecting communities\nshe does it fairly well\nshe does it fairly quickly\nindexical sound\nrecreates the scenes\nwhatever historical fiction is\na grounding in the real world\nperform a transcript\nall the words are the real words\nno room to branch out\nthat's a little bit of me\nsimple yet quote-unquote effective\nthis quality of empathy in games\nit went to congress\nfour congressmen invited me to talk\na platform for direct action\nfree from the threat of violence\nto care and take action\nshe is not alone\nthe entire department\nall this fantastic work\nslip in a sly reference but never explain it\npull up the instructions\ncould be outside\nlovely, lovely, take it away\nit’s not 2013\nI was up to date\ntwo-player art game\nfrom an article\nthat scholarly thing\nthe role of The Goat\nin front of each statement\nThe Goat pulls a memory\ncarry no obligation\na wire around your neck\nmemories of a bone\ngenerate a memory\nI lead you outside\nwhen I’m tied up\nI puncture your neck\nthe open fields and the grass\nwatching the butterflies\nI cut your right leg deeply enough\nI remember being curious\nlooking at the bugs\nthink of my siblings\nmore carefree times\nI start burning\nwhen I got caught\nmade me bleed\nreminded me of that summer\nthe damage is too heavy\nI puncture your lung\nriding away in a truck\nyou start bleeding\naround your hind legs\nit reminds me of a nightmare\na lot of existential dread\nwhat it means to get old\nthe family that took care of me\nI light a match\na more calm moment\npollinate the flowers\na spring with a lot of rain\nafter the rain\nno healing or euthanasia\na specific order\nbecoming contradicting\nit generates more freedom\nthe flower coming up afterwards\nmaking sense of a flower\nwhat would a goat think\nfigure out how to portray\nmammals are processing thoughts\nany logical way\ndoing it with word association\nimagery that might be comforting\npressing on the wound\nthe wound in his memories\nconnect it to what’s going on\nwhat I’m feeling in the moment\nan animal undergoing tremendous trauma\ntalk about how we enhance\nthat makes sense for us\nthis idea of flow and flourishing\nequipment for living\nutopian thinking around play\nconfer some kind of benefit\nsome social elements\ninteresting room to expand\ntransform that individual\nhope that they change\nthey conceive of it\ntake the available resources\nwhat if we change this\na set of useful rhetorics\nconfer benefits\nwho gets to be frivolous\nuse frivolity to advance or consolidate\nfrivolity can be revolutionary\ncome across the situationists\ncommerce and efficiency\nall kinds of play\ndeep truths\nthe destinies of societies\nan analytic process\nwe make our tools\nour tools make us\ndoesn’t take place in a vacuum\nentering another world\nvideogames on your phone\npeople are recognizing\nmany design firms\nthat affords an exploration\nhow we situate it\nthe very fact of the telephone\ntelephones everywhere\njust being provocative\nwithout any sound\nwe were booing\nthe concept of play\nwhen we imagine the future\nthe future is pretty tacky\neverything is going to revolve around butter\ndeep pre-human thing\nhuman play-hours\nthe powerful has sought\ncomplicate your relationship\nreflexive practices\ntelling yourself a story\nvery much less\ntweet-like versions\nless game, more play\nleave a lot open\nBogostian vision of procedural rhetoric\namong the attendant audience\nthe procedures and the social context\nbuilding the discipline\ncouldn’t say the word\nfocusing on the other player\nhow far you want to take it\nthe total detachment\nif you did have a screen\nit depends on the player\npeople that you know are evil\ntaking a second to see\nmanipulate all this information\ntry to save them\nwhen you’re risking yourself\nwhen things get really bad\ntake their resources\nall societal rules\nmost of the government is involved\nan informal system\nparticular ethical messages\nkind of decisions\ndecide on their own\npicking one choice over the other\nfor a long time\ndidactic design is bad design\nwiggle room for possibility\nnothing ambiguous about murder\ndidactic without being transparent\nplayers that play\ntrack these metrics\nsomebody’s gonna see\nspectatorship on your play\naffect your decision-making\npersuasive or powerful\ninteresting gray space\ncommon good and privacy\nbeing an assassin\nwith extreme discretion\nkill the bad guys\nthat kind of media\ntaking control of the character\nthat Paolo Pedercini quote\nfighting a war\noptimizing the process\ntechnocratic, wishful thinking\nget the best technology\ndrive towards catharsis\nthe narrative of doing it\nmirror the power\nidentify and challenge\nenforce cultural hegemony\nsocializing cooperation\na digression I had\nwe should be aware\nthat rhetoric of empathy\nthe terrible weapon\nrelinquishes his power\na problem of catharsis\nmusical institutions\nhave these pianos\ntop cultural experiences\ncreativity connects\ndefined as being an artist\nadd filters and everything\nparticipating in art\nwho is an artist\nparticularly with millennials\nthe evolution of the audience\nthe role of the expert\nfriends for recommendations\ntweeting when they're at an event\na cult of celebrity\nclose to experts\non their screen\npopstars and journalists\none-to-one conversation\nnot good or bad\nchanges a lot\nartist professional development\nget in front of art critics\nyour own audience\nlarge-scale funding\nPatreon is an example\nreally elaborate installations\na million YouTube followers\ngoing to movie theaters\nfairly extended videos\nwhat is a new product\nchanging the revenue model\nher apartment rent\ngrew her number\ncreating that engagement\nunique experiences\npeople will pay\nlook at the Napster\ntrying to have free\nvery commodified art\nartists very broadly\nthe most successful people\npaying for content\nsubscription mechanism\nmonthly amounts from people\nnon-digital artists\nother people will pay\nsome particular product\nget awareness going\nextremely educational\nthe entire forty-five days\na chance to observe\nwhat are people saying\npeople would be motivated\nmanaging subscriptions\nrather than ads\ndifferent from Kickstarter\nthat’s a very interesting point\ncertain topics\nget people to take risks\nthe Yelp of cultural consumption\ntaking you out of your comfort zone\nlet’s just say\npeople are willing to sample\nsuffering through politically\npeople in the micro communities\nthey have enough data\nmicrosegments\nother people like you\nthe viewer and the soloist\nten minutes of brainstorming\nthese portfolio careers\nskills to share\ndecent income\nwhat would be the funding\nwe could totally buy ads\nclassical music industry\nwhat is the benefit\nwhat is the opportunity\nsupport media literacy\na lot of the nonprofits\nnew experiences\nonly getting from home\ndigital media savviness\na way of shaking things up\nwho owns that responsibility\nincrease their bottom\nin tremendous decline\nfunding of the arts\nartists are doing work\nthese million people\na way bigger number\nin this shift\nmove towards crowdfunding\ndisruption isn’t equal\nalternative funding sources\nbest practices these days\nextraordinarily influential\nempathy-based user inquiry\nas a product design firm\nexercises that I often do\nabout media literacy\nadvocacy around students\nit’s good for the kid\ninterviews with the parents\ntoo much time being passive\nvery non-intuitive\nsell the courses to the parents\nall free online\nfulfilling careers\nstarting with design thinking\nthe lean startup\nthe practices have been extended\nyou could watch some videos\nvery much overlapping\nbeing in the learning mode\nbuy something they’ve never bought\ngoing back to second grade\ntest the hypothesis\nget your results back\nladder-like approach\nout of whole cloth\nif you really want to start a business\ntons of content online\ninvent new business models\nbundles of products\nwhich assets are indispensable\nthe language of\ndonors are a type of customer\nhas become pretty popular\nvery community-based\none of the key partners\nthe customer segment\nmy value proposition\nengaging tourists\ntoo much detail\nentrepreneurship and innovation\nbooks are not new\nthe same kind of real estate\nthe key partners\ndisrupting the gallery space\npaintings in a gallery\nchange what the product was\ninteresting things on tablecloths\ncustomer relationships change\npeople like myself\nthese kinds of techniques\nif you take more classes in them\ncreative endeavors\nadvancing your projects\ntake turns killing
<<set $poemNumber to Math.pow($lines.length, 0) * $digit0 + Math.pow($lines.length, 1) * $digit1 + Math.pow($lines.length, 2) * $digit2 + Math.pow($lines.length, 3) * $digit3 + 1>><<print $poemNumber.toString().replace(/(\sd)(?=(\sd{3})+$)/g, '$1,')>>
<<set $digit0 to random(1, $lines.length)>>\n<<set $digit1 to random(1, $lines.length)>>\n<<set $digit2 to random(1, $lines.length)>>\n<<set $digit3 to random(1, $lines.length)>>
<<silently>>\nIf the poem number exists...\n<<if $poemgoto>>\n\t...first check if they input -X, which loads Poem #0.\n\t<<set $list to $poemgoto eq (0 - $lines.length)>>\n\n\t...it could be valid. Strip out the commas and convert it to an integer. If it's between 1 and XXXX, it's valid.\n\t<<set $poemgoto to parseInt($poemgoto.replace(/\sD/g, ''))>>\n\t<<set $valid to $poemgoto >= 1 and $poemgoto <= $poemMax>>\n\t<<set $unavailable to $onloan.indexOf("" + $poemgoto) >= 0>>\n<<else>>\n\tIt's not valid if it doesn't exist.\n\t<<set $valid to false>>\n<<endif>>\n\n<<if $valid>>\n\tIf the input is valid, let's parse it.\n\tInput numbers will be off-by-one.\n\t<<set $poemgoto -= 1>>\n\n\tDo the math to get the digits that correspond with the poem # the user input.\n\t<<set $digit3 to $poemgoto / Math.pow($lines.length, 3)>>\n\t<<set $digit3 to Math.floor($digit3)>>\n\t<<set $poem = $poemgoto - $digit3 * Math.pow($lines.length, 3)>>\n\n\t<<set $digit2 to $poem / Math.pow($lines.length, 2)>>\n\t<<set $digit2 to Math.floor($digit2)>>\n\t<<set $poem -= $digit2 * Math.pow($lines.length, 2)>>\n\n\t<<set $digit1 to $poem / Math.pow($lines.length, 1)>>\n\t<<set $digit1 to Math.floor($digit1)>>\n\t<<set $poem -= $digit1 * Math.pow($lines.length, 1)>>\n\n\t<<set $digit0 to $poem>>\n<<endif>>\n\n<<endsilently>><<if $list>><<display "Poem 0">><<else>><<if !$valid>>//Invalid poem number entered. Displaying random poem instead.//<<silently>><<display "randomize digits">><<endsilently>><<endif>><<if $unavailable>><<display "Poem Unavailable">><<else>><<display "Select Poem">><<endif>><<endif>>
//The following poem is comprised of all <<$lines.length>> lines in the order they were transcribed in. It is also available in printed form. See the [[Poetry Lending Program]] for more details.//\n!Poem #0\n<<display line>>
!Anthology XXXX\n!!a collection of <<$poemMaxStr>> poems\n\nMatthew R.F. Balousek\n[[About]]\n[[Poetry Lending Program]]\n\n<<display "Selection Footer">>
<<traceryInit>>\n\n<<set $lines to tale.passages["line"].text.split("\sn")>>\nlines.length: <<$lines.length>>\n\n<<set $onloan to tale.passages["on loan"].text.split("\sn")>>\n\n<<set $poemMax to Math.pow($lines.length, 4)>>\npoemMax: <<$poemMax>>\n\n<<set $poemMaxStr to $poemMax.toString().replace(/(\sd)(?=(\sd{3})+$)/g, '$1,')>>\npoemMaxStr: <<$poemMaxStr>>\n\n<<set $remainingPoems to $poemMax - $onloan.length>>\nremainingPoems: <<$remainingPoems>>\n\n<<set $remainingPoemsStr to $remainingPoems.toString().replace(/(\sd)(?=(\sd{3})+$)/g, '$1,')>>\nremainingPoemsStr: <<$remainingPoemsStr>>\n\n<<set $release to true>>\nrelease: <<$release>>\n\n<<set $selectionPrompt to "Enter a number between 1 and " + $poemMaxStr + ". Non-numeric characters will be ignored.">>
[[View <<if passage() eq "View Random Poem">>Another <<endif>>Random Poem|View Random Poem]]\n<<if visited("View Random Poem") >= 2>>[[Select <<if passage() eq "Validate Selection" or passage() eq "Select Poem">>A Different <<endif>>Poem|Validate Selection][$poemgoto = prompt($selectionPrompt, passage() == "View Random Poem" ? $poemNumber.toString().replace(/(\sd)(?=(\sd{3})+$)/g, '$1,') : $randPoemStr)]]<<else>>==Select Poem==<<endif>>
!Poem #<<display "poem number">>\n<<$lines[$digit0]>>\n<<$lines[$digit1]>>\n<<$lines[$digit2]>>\n<<$lines[$digit3]>>
!Poem #<<display "poem number">>\n<<$lines[$digit0]>> ([[Change|Select Poem][$digit0 = random(1, $lines.length)]])\n<<$lines[$digit1]>> ([[Change|Select Poem][$digit1 = random(1, $lines.length)]])\n<<$lines[$digit2]>> ([[Change|Select Poem][$digit2 = random(1, $lines.length)]])\n<<$lines[$digit3]>> ([[Change|Select Poem][$digit3 = random(1, $lines.length)]])