It looks like you're new here. If you want to get involved, click one of these buttons!
Building on the conversations happening over on the "[PROMPT]: Queer Bodies, Embodied Code" thread and the other [CODE CRITIQUE] threads, I wanted to offer further glimpses of the code for my code-as-essay-as-text game "Why Are the Digital Humanities So Straight?," which appeared in Alternative Historiographies of the Digital Humanities (Punctum 2021). The code is in PC BASIC, which was meant to run on a Tandy PC.
The essay and full playthrough video is part of the Electronic Literature Organization's ELC4: https://collection.eliterature.org/4/why-are-the-digital-humanities-so-straight
As I noted in the [PROMPT] post, the provocation of the essay is pretty simple: why is code normative, why are algorithms constraining, and is code always "straight"? Or as one section of the essay argues (I am using the 80-character line version of the program; the printed book version is only 42 or so characters, which caused a major headache during copyediting):
976 PRINT " Computers are encoders of culture, culture is the encoder of computers. "
978 PRINT "The digital is infected with technonormativity, technonormativity is embedded "
980 PRINT "in the digital. As explored and experienced above, the digital humanities has "
982 PRINT "imported, copied, saved, and replayed the gendered and sexual codes and con- "
984 PRINT "straints of computer history, practices, and technologies. "
For this [CODE CRITIQUE] I suppose I want to look at the ludic parts of the essay, the gamic innards of the code to think about the affordances and limitations of our understandings of computers, code, and games. In my other work on queer game studies, I really do wonder at whether or not these very binary, very structured, very contained technologies can be queer(er) or be made queer(er). That said, I do think there are ways to have fun with the limitations of code and computers, to play with the structures and to reconfigure our understandings and engagements with boxes, switches, edges, bits, and bytes. In a very, very limited way, I think my code-as-essay-as-text game tries to unsettle expectations for a scholarly piece, to throw a little camp into the digital humanities, and to goof with a programming language I haven't (most of us haven't) seen since the 1980s.
Once you are past the essay proper, the march of all of the PRINT statements, you get to the guts of the text game, which opens with the following:
4000 REM Set Starting Variables
4002 REM The player must assume the computer and the playing field are leveled.
4004 RANDOMIZE(999)
4005 LET Sit$="0"
4010 LET Alan=0
4015 LET Ada=0
4020 LET Purna=0
4025 LET JustRead=0
4030 LET Teletype=0
4035 LET Message=0
Variables are set to zero. PC BASIC has a Randomize command which invokes the RND function to generate "a sequence of numbers that appears randomly distributed, so they can be used to simulate things like shuffling a deck of cards or producing different behaviours every time a program runs" (Random Number Generation). Already, randomness is not really randomness--just the illusion of randomness.
The biggest surprises are the "easter eggs" in the code that the player would really have no way of ascertaining save for sheer blind luck or hacking. These surprises are meant to reveal the arbitrary yet consequential nature of the program; in a game, nothing is possible that isn't already there. If the game does not "imagine" it or have code for it, then it cannot exist within the game. Granted, there are glitches, exploits, unintentional things that happen with games and in games, and players can bring all sorts of paratexts and modalities when playing or addressing the game.
Here's the code for Alan's parser, what commands actually work when you are trying to puzzle through this little section of story:
5100 REM Alan's Only Choices
5102 REM The correct commands are predetermined but give the illusion of choice.
5103 REM Unable to see the code, the player's commands are arbitrary and contained.
5105 IF Action$="look" THEN GOTO 360
5110 IF Action$="sit down" THEN GOTO 5160
5111 IF Action$="sit chair" THEN GOTO 5160
5112 IF Action$="sit" THEN GOTO 5160
5114 IF Action$="stand up" THEN GOTO 5180
5115 IF Action$="stand" THEN GOTO 5180
5116 IF Action$="get up" THEN GOTO 5180
5118 IF Action$="read" THEN GOTO 5200
5120 IF Action$="read text" THEN GOTO 5260
5121 IF Action$="read message" THEN GOTO 5260
5122 IF Action$="read teletype" THEN GOTO 5260
5124 IF Action$="read paper" THEN GOTO 5260
5126 IF Action$="look teletype" THEN GOTO 5260
5128 IF Action$="look paper" THEN GOTO 5260
5130 IF Action$="open door" THEN GOTO 5210
5132 IF Action$="look console" THEN GOTO 5260
5134 IF Action$="type" THEN GOTO 5220
5136 IF Action$="use teletype" THEN GOTO 5220
5138 IF Action$="remove name tag" THEN GOTO 5230
5140 IF Action$="remove tag" THEN GOTO 5230
5142 IF Action$="hit switch" THEN GOTO 5275
5144 IF Action$="stop being gay" THEN GOTO 5300
5145 IF Action$="come out" THEN GOTO 5300
5146 PRINT "You are constrained by the limits of the room and its design. Try again."
5148 PRINT "You cannot "; Action$; " here."
5150 GOTO 368
Here's Ada's choices (or lack thereof):
5600 REM Ada's Only Choices
5602 REM The player's commands are constrained by narrative, expectation, and code.
5603 REM Narratives, expectations, and code often produce gendered choices and commands.
5605 IF Action$="look" THEN GOTO 552
5610 IF Action$="sit down" THEN GOTO 5660
5611 IF Action$="sit bench" THEN GOTO 5660
5612 IF Action$="sit" THEN GOTO 5660
5613 IF Action$="sit loom" THEN GOTO 5660
5614 IF Action$="stand up" THEN GOTO 5680
5615 IF Action$="stand" THEN GOTO 5680
5616 IF Action$="get up" THEN GOTO 5680
5618 IF Action$="read" THEN GOTO 5700
5620 IF Action$="read message" THEN GOTO 5870
5621 IF Action$="read weave" THEN GOTO 5870
5622 IF Action$="read cloth" THEN GOTO 5870
5624 IF Action$="open door" THEN GOTO 5710
5626 IF Action$="look handkerchief" THEN GOTO 5730
5628 IF Action$="take handkerchief" THEN GOTO 5760
5628 IF Action$="drop handkerchief" THEN GOTO 5780
5630 IF Action$="look loom" THEN GOTO 5745
5631 IF Action$="look weave" THEN GOTO 5745
5632 IF Action$="look cloth" THEN GOTO 5745
5633 IF Action$="open windows" THEN GOTO 5795
5634 IF Action$="use loom" THEN GOTO 5820
5635 IF Action$="finish weave" THEN GOTO 5820
5636 IF Action$="weave cloth" THEN GOTO 5820
5637 IF Action$="weave" THEN GOTO 5820
5638 IF Action$="work" THEN GOTO 5820
5639 IF Action$="become famous" THEN GOTO 5704
5640 IF Action$="help babbage" THEN GOTO 5704
5645 PRINT "A voice beyond the door admonishes, 'You cannot "; Action$; " now.' Finish your work."
5650 GOTO 566
And here's Purna Jackson's possibilities:
5900 REM Purna's Only Choices
5901 REM The illusion of choice and control is the interactive fallacy.
5602 REM It presumes that code is genderblind, colorblind, and queerblind.
5904 IF Action$="look" THEN GOTO 752
5906 IF Action$="look floor" THEN GOTO 5977
5908 IF Action$="look button" THEN GOTO 5980
5910 IF Action$="look buttons" THEN GOTO 5980
5912 IF Action$="look panel" THEN GOTO 5980
5914 IF Action$="sit" THEN GOTO 5975
5916 IF Action$="sit down" THEN GOTO 5975
5918 IF Action$="press O" THEN GOTO 5990
5920 IF Action$="O" THEN GOTO 5990
5922 IF Action$="o" THEN GOTO 5990
5924 IF Action$="press C" THEN GOTO 5992
5926 IF Action$="C" THEN GOTO 5992
5928 IF Action$="c" THEN GOTO 5992
5930 IF Action$="press A" THEN GOTO 6000
5932 IF Action$="A" THEN GOTO 6000
5934 IF Action$="a" THEN GOTO 6000
5936 IF Action$="call" THEN GOTO 6000
5938 IF Action$="open doors" THEN GOTO 5990
5940 IF Action$="1" THEN GOTO 6010
5941 IF Action$="press 1" THEN GOTO 6010
5942 IF Action$="2" THEN GOTO 6010
5943 IF Action$="press 2" THEN GOTO 6010
5944 IF Action$="3" THEN GOTO 6010
5945 IF Action$="press 3" THEN GOTO 6010
5948 IF Action$="4" THEN GOTO 6010
5949 IF Action$="press 4" THEN GOTO 6010
5950 IF Action$="5" THEN GOTO 6010
5051 IF Action$="press 5" THEN GOTO 6010
5952 IF Action$="6" THEN GOTO 6010
5953 IF Action$="press 6" THEN GOTO 6010
5954 IF Action$="7" THEN GOTO 6010
5055 IF Action$="press 7" THEN GOTO 6010
5956 IF Action$="8" THEN GOTO 6010
5957 IF Action$="press 8" THEN GOTO 6010
5958 IF Action$="9" THEN GOTO 6010
5959 IF Action$="press 9" THEN GOTO 6010
5960 IF Action$="10" THEN GOTO 6010
5961 IF Action$="press 10" THEN GOTO 6010
5962 IF Action$="11" THEN GOTO 6010
5963 IF Action$="press 11" THEN GOTO 6010
5964 IF Action$="12" THEN GOTO 6010
5967 IF Action$="press 12" THEN GOTO 6010
5966 IF Action$="13" THEN GOTO 6010
5967 IF Action$="press 13" THEN GOTO 6010
5968 IF Action$="FeministWhorePurna" THEN GOTO 6200
5969 IF Action$="Feminist Whore Purna" THEN GOTO 6200
5970 PRINT "You try valiantly to "; Action$; " but to no avail."
5972 GOTO 766
Again, if you want to access the whole program-essay-text, you can download the .txt file from ELC4: https://collection.eliterature.org/4/why-are-the-digital-humanities-so-straight
Thoughts? Questions? Comments?
Comments
@edmondchang Thank you for guiding us into this fascinating essay. And I found the multilayered temporalities very impressive (from the programming language to the characters, through many references - just the weave with Ada is an invitation to reopen a whole part of the history in many ways + may invite to explore further about Weaving and technofeminism, cf. Sadie Plant, can also lead to the piece by Ann Lislegaard, Spinning and Weaving Ada (2016), etc.) So much to discover, uncover there, thank you very much for sharing.
You're welcome! I hope you get to play the essay!
@edmondchang - what encoding is the source text file? I finally got a chance to download it to play around with it, and I'm struggling to open it with so that there are line breaks before each line number--ISO Latin 1, UTF-8, and Windows didn't work.
I've tried wrangling it with a few regex statements and made good progress, but it is a bit of a tough nut to crack.
Is it okay if I cheated and watched the video of the essay instead of running it? 😅
Browsing through the code though really revels quite a bit!
@jeremydouglass: Not sure... I can attach my .txt file here...