Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

2026 Participants: Martin Bartelmus * David M. Berry * Alan Blackwell * Gregory Bringman * David Cao * Claire Carroll * Sean Cho Ayres * Hunmin Choi * Jongchan Choi * Lyr Colin * Dan Cox * Christina Cuneo * Orla Delaney * Adrian Demleitner * Pierre Depaz * Mehulkumar Desai * Ranjodh Singh Dhaliwal * Koundinya Dhulipalla * Kevin Driscoll * Iain Emsley * Michael Falk * Leonardo Flores * Jordan Freitas * Aide Violeta Fuentes Barron * Erika Fülöp * Tiffany Fung * Sarah Groff Hennigh-Palermo * Gregor Große-Bölting * Dennis Jerz * Joey Jones * Titaÿna Kauffmann * Haley Kinsler * Todd Millstein * Charu Maithani * Judy Malloy * Eon Meridian * Luis Navarro * Collier Nogues * Stefano Penge * Marta Perez-Campos * Arpita Rathod * Abby Rinaldi * Ari Schlesinger * Carly Schnitzler * Arthur Schwarz * Haerin Shin * Jongbeen Song * Harlin/Hayley Steele * Daniel Temkin * Zach Whalen * Zijian Xia * Waliya Yohanna * Zachary Mann
CCSWG 2026 is coordinated by Lyr Colin-Pacheco (USC), Jeremy Douglass (UCSB), and Mark C. Marino (USC). Sponsored by the Humanities and Critical Code Studies Lab (USC), the Transcriptions Lab (UCSB), and the Digital Arts and Humanities Commons (UCSB).

Three Axes, Three Examples — What Escapes the Frame (Code Critique)

The Source Code Exhibition at UNESCO, which opened on January 28, organized its fifteen panels around three thematic axes: Source Code as Historical Testimony, Source Code as Mirror of Society, and Source Code as Cultural Artifact. These categories structured both the call for proposals and the final curation. But as @jeremydouglass observed in an earlier thread, the three axes present overlapping "value propositions" that may be harder to disentangle than they first appear:

"The hard thing for me about these keywords is that at a deeper level all three concepts are historical, all are societal, and all are cultural. [...] Or, to be disciplinary, we might articulate the exhibition value of Code for Historians, Code for Sociologists, and Code for Artists a bit differently because each discipline constitutes knowledge a bit differently."

Jeremy's observation sent me back to the call-for-proposals document, where three example submissions were provided to help potential contributors understand what we were looking for. Each example was deliberately chosen because it mapped cleanly onto one axis: Prolog for historical testimony, Black Perl for cultural artifact, the Brexit protest sign for mirror of society. This was intentional — the goal was to show the diversity of code's place in society and to signal that contributions from varied backgrounds were welcome. We were grateful that this approach worked; the examples helped potential contributors from different fields feel that their code belonged in the exhibition.

Now that the inauguration has passed, I want to reflect on these examples in light of what the final selection revealed. The material constraints of the UNESCO poster format (visible in the attached photograph) shaped what could be shown. Looking back at these three examples alongside the exhibited panels, what do the categories illuminate, and what do they leave in shadow?


EXAMPLE 1

Title: Prolog in Capitals — A Historical Glimpse into its First Programs
Author(s): A. Colmerauer, H. Kanoui, P. Roussel, R. Pasero
Language: Prolog
Year: 1973
Axis: Historical Testimony
Commentary by: Mathilde Fichen

From the call-for-proposals:

"This particular program, designed to decompose a product into its factors, reveals much about the scientific, material and social context of its creation. For instance, the code is written entirely in capital letters, and variables are marked with a star symbol. These features reflect the limitations of the hardware available to the research team, who accessed a remote IBM computer in Grenoble via a teletype machine connected by telephone line—a frugal setup that only permitted uppercase input. The use of the command 'AMEN' to enclose a statement suggests a degree of playfulness among the young team of developers, reflecting their informal working culture."

OPERATEURS ARI TH
   BINAIRE DG + .
   BINAIRE DG . .
AMEN

LIRE AXIOMES
  +T(*A + *B,*C)-T(*A,*A1)-T(*B,*B1)-TPLUS(*A1,*B1,*C)..
  +TPLUS(*A,*B,*A+*B)..
  +TMULT(*A,*B,*A.*B)..
AMEN

DEMONTRER(AXIOMES,DONNEES,RESULT)
ECRIRE(RESULT)
AMEN

The framing emphasizes hardware constraints and material conditions — teletype, remote access, uppercase-only input. But notice what else is present: the "AMEN" command is a joke, a cultural artifact produced by a specific working culture. The "DEMONTRER" command reflects Prolog's origins in theorem-proving, carrying traces of logic and philosophy that exceed the "testimony" frame.

Compare to the exhibition:
Kate Mancey's panel on The Hooter similarly begins with technical description (audio debugging on the Manchester Mark II) but opens onto questions of musical thinking and human-computer relationships. Both examples show how "historical testimony" inevitably carries cultural and social dimensions.


EXAMPLE 2

Title: Black Perl
Author(s): Anonymous (updated by kck for Perl 5.20, 2017)
Language: Perl
Year: 1990 (updated 2017)
Axis: Cultural Artifact
Commentary by: Pierre Depaz

From the call-for-proposals:

"The most obvious feature of this code poem is that it can be read by anyone, including by readers with no previous programming experience: each word is valid both in English and in Perl. A second feature is the abundant use of verbs. Perl belongs to the family of imperative programming languages, which matches a similar grammatical mood in natural languages, the imperative mood."

#!/usr/bin/perl
no warnings;

BEFOREHAND: close door, each window & exit; wait until time.
    open spellbook, study, read (scan, $elect, tell us);
    write it, print the hex while each watches,
        reverse its, length, write, again;
    kill spiders, pop them, chop, split, kill them.
        unlink arms, shift, wait & listen (listening, wait),
        sort the flock (then, warn "the goats" & kill "the sheep");
    kill them, dump qualms, shift moralities,
        values aside, each one;
    die sheep? die to : reverse { the => system
        ( you accept (reject, respect) ) };
    next step,
        kill 'the next sacrifice', each sacrifice,
        wait, redo ritual until "all the spirits are pleased";
    do { it => "as they say" }.
    return last victim; package body;
    exit crypt (time, times & "half a time") & close it,
        select (quickly) & warn your (next victim);
AFTERWARDS: tell nobody.
        wait, wait until time;
    wait until next year, next decade;
        sleep, sleep, die yourself,
            die @last

Pierre's framing emphasizes aesthetics: dual-register words, imperative mood, ambiguity of address. But the 2017 update introduces a historical dimension — the Perl community's ongoing maintenance of Black Perl is itself evidence of how communities sustain cultural artifacts across technical change. Its anonymous 1990 authorship documents a specific moment in USENET culture.

Compare to the exhibition: Baptiste Mélès's panel on Wenyan similarly explores programming as linguistic and cultural expression. Where Wenyan challenges English hegemony by using Classical Chinese syntax, Black Perl exploits the fact that Perl keywords happen to be English words. Both raise questions about the relationship between natural language and programming language — and both have communities that maintain and celebrate them across versions.


EXAMPLE 3

Title: britain.js — Protest Sign at the People's Vote March
Author(s): Unknown (photographed by u/Bronson_AD)
Language: Pseudo-JavaScript
Year: March 23, 2019
Axis: Mirror of Society
Commentary by: Titaÿna Kauffmann

From the call-for-proposals:

"This protest sign exemplifies how programming languages can be repurposed for cultural expression. Rather than instructing a computer, the code serves as a symbolic language for political commentary, similar to a political cartoon. By using JavaScript, the protester specifically targets tech-savvy individuals and younger generations, adding a layer of cultural specificity to the message."

// britain.js
//government servers
while(brexit.isHappening()){
    weAre.screwed();
}

The "mirror of society" framing positions code as reflecting political struggle and programmer identity. But the Reddit circulation revealed something else: community debates about whether the code was "technically accurate" exposed gatekeeping norms about what counts as legitimate code. The sign is also straightforwardly historical testimony — it documents March 23, 2019, a specific moment in British political history.

Compare to the exhibition: Stéphane Bortzmeyer's panel on the RSA T-shirt shows another case where code on fabric performs defiance and community membership. Both examples raise questions about code's circulation beyond screens.


Synthesis: What Escapes the Frame

Jeremy's suggestion that we might reframe the axes disciplinarily — Code for Historians, Code for Sociologists, Code for Artists — clarifies something important. The axes are not properties of the code itself but modes of attention we bring to it. The same snippet can be historical testimony, mirror of society, and cultural artifact depending on what questions we ask.

The call-for-proposals examples were chosen for clarity, and that clarity served contributors well. But looking at the final exhibition — panels like ELIZA, git-stash, or Murs Invisibles — the most compelling code tends to resist clean categorization. These panels invite multiple disciplinary approaches simultaneously.


Discussion Questions

  1. Do you find the three thematic axes helpful as interpretive lenses, or do they risk flattening what code can tell us? Would different categories — perhaps disciplinary ones, as Jeremy suggests — open different possibilities?

  2. The call examples were chosen for clarity, and several contributors told us the examples helped them feel their code belonged. Is there a tension between pedagogical clarity and interpretive complexity when curating code?

  3. For those who work with code as primary source material: how do you decide which frame to foreground? Do you let the code guide you, or do you arrive with questions already formed?

Sign In or Register to comment.