CCSWG14 Week 1 Highlights

Critical Code Studies Working Group 14
Week 1 Highlights
by Viola Lasmana

The 3rd biannual Critical Code Studies Working Group (CCSWG), organized by Mark Marino and Jeremy Douglass, launched a great first week with Nick Montfort’s discussion of “Exploratory Programming,” a conversation that has raised thought-provoking concepts and issues and become an immensely useful resource for tinkering with various programming languages and projects.

As of March 4, 2014, the CCSWG has a total of 90 participants, and Montfort’s discussion thread has garnered 84 comments. To date, 10 Code Critique Threads have been posted for further discussion:

“Exploratory Code Sample: Cable” by John Bell
“Code that encourages exploratory coding by modification: Function Explorer” by Frances Van Scoy
“Esoteric Code Languages and Other Ephemera” by David Berry
“Cryptographically-obfuscated code” by Quinn DuPont
“‘Genderswapping’ or ‘Misgendering’? A Question of ‘Jailbreaking the Patriarchy’” by Chris Lindgren
“SCIGen” by Zach Whalen
“Hey, you: Interpellation via Perl” by the WG organizers, Mark Marino and Jeremy Douglass
“Feminist Code: micha cárdenas” by Arielle Schlesinger
“Considering rhetorical genres in code via Gary Bernhardt’s ‘wat’ talk” by Kevin Brock
“In Pursuit of Natural Language: FLOW-MATIC by Grace Hopper” by Mark Marino

One specific work using exploratory programming is the wonderful Taroko Gorge, Montfort’s poetry generator (written in Python and later Javascript) inspired by the Taroko Gorge in Taiwan, which then prompted others to remix the work by using the Javascript code and reworking it to create new pieces. As participants in this discussion thread, some of the remixers, including Judy Malloy, Leonardo Flores, and Kathi Inman Berens, have offered their insight into the roles that exploratory programming played in their experience of remixing Taroko Gorge. As Flores points out, “To hack the code of such a poem… is to take a machine literally made of words and try to repurpose it to produce other kinds of output.” The kind of “generative work” that both Flores and Malloy discuss is also echoed in Berens’ articulation of how code play is “an act of reading expansively.” Indeed, the generative mode of exploratory programming opens up a space in which it is possible for numerous outcomes to happen, particularly for those, as Montfort points out, “doing something that doesn’t easily fit into either [the generative or analytic mode].”

Montfort offers some general tenets that highlight exploratory programming as a form of computing that is flexible, unpredictable, does not require expert programming skills, and iterative, always in a process of revision. He describes it as “a way of thinking,” “a means of innovating,” and “a way of learning more about humanistic methods.” No wonder, then, that several of the participants have also pointed out the intersections of exploratory programming with disciplines such as art and writing.

In thinking about the contours and possibilities of exploratory programming, here are some of the ideas associated with it that came up in the discussion:

Bricolage (as theorized by Levi Strauss and expanded upon in Turkle and Papert’s essay on “Epistemological Pluralism”)
“What is considered a result worth recording, and what does declaring a result mean for future explorations of that bit of code?” (John Bell)
“It’s another dimension… of studying code as a form of meaningful writing.” (Kevin Brock)
Constructive hacking is “consistent with exploratory programming. I would say that in the musical domain “noodling around” is also similar.” (Nick Montfort)
For David Berry, exploratory programming is akin to the notion of iteracy: :
Language and Translation
How do different social groups and languages impact the ways in which exploratory programming gets carried out?
“The goal of using language, whether natural or computational, needn’t be about the product… but more about the process” (Patsy Baudoin)
Play (and, as Mark Marino puts it, the “magic” of computing!)
Closely related to documentation: what and when do we record for the purpose of learning and teaching?
“The programmer learns where to take the project and what the ‘final’ version of it will be in the process of programming.” (Nick Montfort)
Both in terms of getting feedback from others, and also self-reflexivity.
Remix (on both the code and thematic levels)
“The programmer develops working code quickly, changes it often, and runs it constantly to see what happens.” (Nick Montfort)
How has exploratory programming used “software versioning (e.g., git) to develop collections of iterative texts that trace such explorations?” (Kevin Brock)

An important issue that has been taken up during this first week of the CCSWG is the ways in which exploratory programming can be both a source of anxiety and a remedy for it. One of the aims of Montfort’s book-in-progress is “to develop a no-prerequisite way to learn programming.” While this undoubtedly opens up the practice to a wider range of individuals with varying degrees of skills and interests, it can also be a nerve-wracking process. When Kevin Brock talks about the countless conversations he and his students have had about their anxieties learning Processing, I’m sure some us can relate. Mark Marino points out the frustration that can arise when one is unfamiliar to syntactical requirements in code, and “exploratory,” says Rachael Sullivan, can indeed be “slightly scary.” Can we think of this anxiety as productive, though, and a necessary part of learning and discovery? In her essay on “Being Wrong,” Kathleen Fitzpatrick talks about “exploring a new path, one along which we develop not just our critical audacity but also a kind of critical humility.” The movement of ideas that Fitzpatrick refers to is not unlike the programmer who constantly revises his or her code, with an outcome that is not always readily apparent. Could exploratory programming be a practice that fosters such “critical audacity” and “humility”?

The term “exploratory programming” has been a point of contention in some of the discussion. Warren Sack points out that “exploration has some unwanted baggage, especially in an arts and humanities context,” where it conjures colonialism, and he suggests the possibility of a different term that emphasizes its lineage with artistic strategies. Since naming is a crucial, foundational part of discourse, this was a key point to consider. What if, however, we think of “exploratory programming” with Edward Said’s notion of “contrapuntal reading” in mind? Might it be possible to open up the contours of the word “exploratory and think about a polyphony with a simultaneous awareness of both the dominating narrative and also those that act against it? To think and read contrapuntally, as Said articulates in Culture and Imperialism, is to take into account both imperialism but also the resistance against it, and it seems that exploratory programming already carries with it the possibility for resistance, particularly because of what a practice of programming afford in terms of hacking and remixing, as well as allowing an interdisciplinary mix of scholars from all levels to engage in a critical methodology that does not foreclose knowledge, but rather allows for further iterations, revisions, and growth.

CCSWG is sponsored by the Humanities and Critical Code Studies (HaCCS) Lab at the University of Southern California. Twitter: @haccs
Organized by Mark Marino and Jeremy Douglass. Coordinated by Viola Lasmana.

Works Cited

Berry, David. “Reading, Writing, and Running Code.” Stunlaw: A critical review of politics, art, and technology. 16 Sept. 2011. Accessed 2 Mar 2014,

Fitzpatrick, Kathleen. “Being Wrong.” Planned Obsolescence. 29 Dec. 2013. Accessed 2 Mar 2014,

Montfort, Nick. “Taroko Gorge.” 2009. Accessed 2 Mar 2014,

Papert, Seymour and Sherry Turkle. “Epistemological Pluralism and the Revaluation of the Concrete.” 1990. Accessed 2 Mar 2014,

Said, Edward. Culture and Imperialism. New York: Vintage Books, 1994.

This entry was posted in CCSWG, Events. Bookmark the permalink.

Leave a Reply