Flight of the CodeMonkeys (Mark C. Marino) is a cyberpunk-resistance story rendered in the Jupyter Notebook platform for Python coding. You’re a codemonkey, a peon making edits to obfuscated code that, apparently, runs your dystopian society. You interact by editing snippets of that code.
This is not really a novel idea, but it’s a challenging one to make work, and it’s something of an accomplishment that this is playable by people not fluent in Python and still works as a story.
I often imagine a chart of artistic fields, ranked by how frequently their artists think it’s a great idea to make art about themselves. Hollywood fucking loves a movie about Hollywood people, but mainstream videogames generally understand that nobody wants to play a game about being a game dev. (In general. Mostly.) In interactive fiction that’s also sort of true, but the close analogy is that we get a lot of stories about being a coder.
This one is not a very distinctive story: it’s a generic dystopian hacker-discovers-too-much, contacted-by-Resistance, must-make-a-choice narrative. The trick is that cyberpunk generally breaks up the fact that code is boring with, y’know, wire-fu and systemic explainers and fetish gear. This is cyberpunk but normcore, a version of The Matrix where Neo just stays in his cubicle and edits lines of Python.
Like that Neo, he’s not hugely sympathetic. He has a crush on a co-worker and doesn’t handle it well; he’s fixated on getting a holiday, which he plans to spend entirely playing VR. Part of the point, maybe, is that he doesn’t really have space in his life to become much more than this. But I think it’s more strictly a writing problem; this piece needed character voice strong enough to sustain the character on its own.
There’s also, in this kind of experimental work, a difficulty with trusting the game: if something goes wrong, have you messed up the diegetic code or the actual game’s code? That’s really important to know, in a game that wants the player to tinker about with stuff. The order in which you run things matters, but there were things I changed which didn’t seem to have any impact, and I’m not sure if this is because I made the changes incorrectly or because my sequence wasn’t right or because the game itself made a mistake. Here is where I think being more familiar with the language and its environment would have helped a lot, in understanding the impact of changes I made and what would need to happen for them to affect other bits of the code. There’s an awkwardness here in that, fictionally speaking, you seem to be directly editing the master version, with more or less immediate results; but in reality you’re running your own branch, and tinkering around is the expected mode of play.
So, the plot: there is a Membrane, a kind of boundary; and an immigrant population, Sandows, who are non-specifically oppressed; your code can affect how many of them are allowed through the Membrane, and how many are recorded as existing. In 2019, this is clearly a story about the ethical implications of working for, say, a tech company that has contracts with ICE, or a census-taker pressured to under-report vulnerable populations. But as a portrait of internal resistance or sabotage, it feels more aspirational than realistic. Other people have mentioned that the consequences of your actions feel kind of distant and ambiguous; and that’s true. But everything feels a bit distant and ambiguous, honestly. We don’t see enough of Marta to catch any of the protagonist’s crush. We think about our mother not at all, so when we wake her and she goes off to start the revolution it’s a bit, eh, why not? It was easy enough, I suppose that can happen.
I think, in particular, it didn’t do a strong job of evoking the pressure to comply. The player doesn’t care about the protagonist’s holiday, the financial pressures don’t come through convincingly, and it feels as though you can edit your own error count. I was already fucking around with the code before the Resistance contacted me. The problem here is that, in making the code easy enough that a non-expert can tamper with it, it ends up feeling like the society-controlling AI oppressor is pretty much the relative who needs help sending email but still wants to enable parental controls; and while there’s definitely a lot of whatever, Mom about hacker narrative in general, this is a bit too close to the surface.
(Why is this a problem for code? We don’t blink in a game when we’re told ‘you are an ace pilot’ but piloting is way easier than the real thing. I think the deal here is that code, here, is rendered literally; there’s no mediating layer, no abstraction, because the game’s whole deal is that you can edit anything. And I think it’s kind of hard to do moderate levels of abstraction, here – there’s not a lot of useful space between ‘here are the literal lines of code’ and ‘flying through 3D environment of binary numbers while hands dance across keyboard.’
But there’s also the issue that this is a game about political effects, about choice and risk around sabotage and internal resistance. And the system, as shown, is so simplified that it’s exploited with implausible ease; and that implies completely different things about this world, which go against what the plot is aiming for. A story about a society run by a codebase so janky that it’s trivial to exploit it would be interesting, but that’s not this story. Similarly, the effects of your choices are always pretty simple: this isn’t a system so complex that your power has unforseen knock-on effects.)
I think that it’s impressive that this does as well as it does! It tells the story it sets out to tell and it allows the player to interact with that by fucking with code. But it doesn’t manage to push beyond that to become something good. I had some fun tinkering around with this, but as a story it’s a little wanting. 6.