Theme: Aesthetics and Poetics as Politics in Code

https://wg.criticalcodestudies.com/

Threads: 500-750 words exclude questions

  1. Main thread: Introducing Aesthetic Programming
  2. Side thread: Translating Aesthetic Programming

proposed collectively by:
Winnie Soon /孫詠怡(co-author of Aesthetic Programming, HK/DK), Geoff Cox (co-author of Aesthetic Programming, UK), Tzu Tung Lee /李紫彤(Artist facilitator, TW), Ren Yu/礽喻 (Lead Translator, TW), Shih-yu Hsu /徐詩雨 (Lead Translator, TW).

Bio (50-100 words)

Thread's leaders:
We are a team of 5 people who are working on a translation of the book "Aesthetic Programming: A Handbook of Software Studies" into Chinese. Winnie Soon (HK/DK) and Geoff Cox (UK) are the co-authors of the book in English (published late 2020). Based in Taiwan, Tzu Tung Lee is the artist facilitator, Ren Yu and Shih-yu Hsu are the lead translators. See: http://aesthetic-programming.net/ and https://hackmd.io/@aesthetic-programming/book (Feel free to join us).

Week 4: Introducing Aesthetic Programming - discussion starter

In late 2020, Winnie Soon and Geoff Cox published the open access book "Aesthetic Programming: A Handbook of Software Studies". Together with a Taiwanese working group, we are also involving the local community to translate it into Traditional Chinese language (to be further discussed in tomorrow's thread on Translating Aesthetic Programming).

In summary, the book addresses the cultural and aesthetic dimensions of programming from its insides, as a means to think and act critically, offering an applied and overtly practice-based approach to understanding the importance of programming. Our intention is for readers to also become writers in the sense that they acquire key programming skills in order to read, write and think with, and through, code. We feel that it is important to further explore the intersections of technical and conceptual aspects of code in order to reflect deeply on the pervasiveness of computational culture and its social and political effects — from the language of human-machine languages to abstraction of objects, datafication and recent developments in automated machine intelligence, for example. Moving beyond a STEM focus, the book develops discussion of power relations that are still relatively under-acknowledged in technical subjects, concerning class and capitalism, gender and sexuality, as well as race and the legacies of colonialism - issues that are already familiar to the critical code studies community of course. This not only relates to the politics of representation but also nonrepresentation: how power differentials are implicit in code in terms of binary logic, hierarchies, naming of the attributes, and how particular worldviews are reinforced and perpetuated through computation.

Details of the book

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

The book contains 10 chapters + 1 bonus machine generated chapter, containing both the technical and basic principles of learning to program with sample code explanation, as well as wider political, cultural and social issues (also see : http://aesthetic-programming.net/). Each chapter starts with a flowchart that serves as the starting point to exemplify our approach of turning concepts "inside out" and the need to understand computational and programmable objects, relations, and processes in both logical and discursive forms. The current topics of the 10 chapters are: Getting started, Variable Geometry, Infinite Loops, Data Capture, Auto-generator, Object Abstraction, Vocable Code, Que(e)ry Data, Algorithmic Procedures, Machine Unlearning. They are the topics that are currently used in the delivery of the BA course/module "Aesthetic Programming" at Aarhus University, in Denmark.

Forking: An Open Invitation
Importantly, we do not see this book as a fixed and universal teaching resource, but rather a situated curriculum with the potential for extension and customization with other arts and coding communities. Following the free and open source ethos, we open up different possibilities for making “cuts” across the various materials and ideas, and encourage readers to fork a copy and produce their own versions; with different references, examples, reflections and new chapters for example, for further modification and re-use (see the respository: https://gitlab.com/aesthetic-programming/book). Responding to the invitation, in 2021, Sarah Ciston and Mark Marino forked the book and created the chapter 8.5 entitled "Talking Back," which sits between Chapter 8 (Que(e)ry Data) and Chapter 9 (Algorithmic Procedures), extending our discussion of APIs and conversational agents. They have also added two new perspectives and structural changes: Code Confession and Code Commentaries, considering the affective relationship and further insights regarding coding. With this open invitation, we want to stress that Aesthetic Programming is not only a book, but it is also a computational networked object, distributed across other spaces and temporalities, made available to both readers and writers alike.

To begin the thread, we invite you to join us to explore the following questions:

  1. What pedagogical approaches are useful to teach/learn how-to-code, but also to work with (read and write) code through critical and creative action? What are the challenges in practice ("the real-life cases") of working across engineering and culturalist traditions? And how to cultivate "problem-posing" rather than "problem-solving" through learning to program?

  2. Beyond the solutionist approach of emphasising state-of-the-art technology, big tech normalisation, as well as the ideology of standardisation, efficiency and optimisation that fit into capitalist economy, how might combinations of free and open source ethics, and intersectional feminist/queer politics open up ways of learning to code otherwise?

  3. What other themes and topics are useful to explore in Aesthetic Programming? And what are the implications of forking a book like forking software? How to involve and include local contributors and situated real life cases?


Week 4 - Translating Aesthetic Programming (release on Day 1)

After the launch of the Aesthetic Programming book, we have recently formed a small working group to translate it into Traditional Chinese language, working closely with Taiwanese art and coding communities. The politics of translation has been well-established in general, but what of the specifics of translating a book such as this?

Translation is necessary but impossible. So says Gayatri Chakravorty Spivak, acknowledging not only the inherent difficulty of translating any text into another language whilst retaining its meaning, but also across cultures and logics. It’s easy to see this with English language that has been challenged by postcolonial and feminist scholars for the way it imposes itself as the predominant man-made language of globalisation. But this is no less the case with programming languages that reinforce the hegemony of English as the lingua franca of communication between peoples and technical systems. In the forking of Aesthetic Programming, we are curious to consider translation at the various levels of socio-technical operation - recognising the many layers of translation at work when machines interpret instructions in their own terms. But how do problems of translation resonate more broadly when translating a book about programming that requires precision of language that is both descriptive and active/executable?

Chinese/Machine translation

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

Translating into Chinese makes a useful case study in this respect, in all its rich variations across history and geopolitical context. Indeed the complexity of Chinese language has taken on a metaphoric role in technological discourse, such as in Searle's 'The Chinese Room' experiment where it stands for the inability of humans and machines to 'think' when using a language that one doesn't understand (thus setting out limits for AI but also implying occidental fantasies and prejudices). More pragmatically, in Google AI language translation, we found that many of the translated Chinese words, and technical terms, follow the style of Mainland China even though the words are selected in Traditional Chinese characters (mostly used in Hong Kong and Taiwan). This is also confirmed by Google, in which the same training dataset is used for both Traditional and Simplified Chinese translation given the many similarities between them (Cattiau, cited in Chris 2017). However, many terms, in practice, are used differently between Hong Kong, Mainland China and Taiwan, prompting reflection on the implications. For example, the title of Chapter 3 - "Infinite Loop" as 無限循環 or 無窮迴圈. Aside from the technical and aesthetic challenges and implications, this raises the question of how the Chinese language model enforces particular hegemonic worldviews that occlude differences. With all the variants of Chinese language, how is this tied to expressions of colonial power that resonates with our use of English? Given the rich variations of Chinese and indigenous languages (such as Amis, Atayal, Truku, Pinuyumayan, in a Taiwanese context), we are curious how we might be sensitive to language diversity that challenges the Western-centrism of programming in English (and inherent nationalisms). We are also mindful of the way that "queer" politics has informed the way that terms can be appropriated/expropriated, as a means to "talk back" (hooks 1989) to the source codes of oppression.

Forking translation
Translation is evidently more than textual dimension as it needs to consider cultural, political and historical contexts, it has always been a forking of sorts. It is a form of cultural reproduction and creation with new forms of interpretation and articulation, a new version attentive to its source. Suffice to say, we are influenced by texts such as Benjamin's The Task of the Translator (1922) in thinking about originality, and the "afterlife" of the translation processes, opening up new modes of thinking and expression. Our examples include how to use languages in ways that fearlessly encourage questioning, measuring, sensing and experimenting within ourselves and the environment in yet unknowable and scientific ways. We add Alexis Pauline Gumbs' poem in the annotation alongside Femke Snelting's definition of a circle while translating Chapter 2 entitled "Variable Geometry". Since the conventional Chinese translation of Euclid's geometry elements (幾何原本) is something seemingly authoritative and undoubtable (see the earlier Chinese translation in 1600 AD by Jesuit missionary Matteo Ricci (利瑪竇), Ming dynasty agronomist, astronomer, mathematician and bureaucrat Xu Guangqi(徐光啓)). That only mirrors the phallogocentric genealogy of Chinese translation in the mathematical and scientific field. We are seeking alternatives that shed new light on the expression of geometry and other key terms, and the naming of attributes and functions.

To continue the discussion threads about forking and translating Aesthetic Programming, we would like to explore the following further questions:

  1. Can we think of forking as a kind of translation, and cultural translation in particular? What are the implications of drawing forking and translating together?

  2. What other platforms might faciltiate further distributed forking and cultural translation such as DokuWiki, MediaWiki, PmWiki, WikkaWiki, HackMD, Git, etc? How to fork the politics of translation in ways that are sensitive to the cultural situatedness of tools, their descriptions and operations?

  3. Is programming necessarily Western-centric? How to resist colonial and profit-driven exploitation of the earth, people, other beings and to reveal the scale of atrocity and neglected narratives? If non-Western, what new lines of oppression are apparent (e.g. the link of language to Chinese nationalism)? How is power encoded in human and machine language? How does local specificity lend additional layers of meaning to an understanding of how words perform or resist symbolic violence? How to pay attention to the procedures that slowly kill languages and restrict diversity, and how to reverse these tendencies? Can programming be sensitive to this or does it necessarily perpetuate dominant modes of address and colonial logics? How to talk back to dominant source codes of human-machine oppression/expression?


References


Code Critique - Recurrent Imaginaries

We offer the bonus chapter of the book Aesthetic Programming: A Handbook of Software Studies in the form of an “Afterword: Recurrent Imaginaries,” a machine-generated chapter based on the contents of the book, on what has been learnt, and what might be unlearnt. The chapter is generated by machine learning processes (the sample code is adapted from ml5.js).

Image Not Showing Possible Reasons
  • The image file may be corrupted
  • The server hosting the image is unavailable
  • The image path is incorrect
  • The image format is not supported
Learn More →

We are interested in how this book might open up recurrent imaginaries for aesthetic programming, in the form of further iterations, and additions to chapters by others. We are inspired by Ursula K. Le Guin and woud like to delve into the imaginaries of reading, writing, coding and thinking: “As you read a book word by word and page by page, you participate in its creation, just as a cellist playing a Bach suite participates, note by note, in the creation, the coming-to-be, the existence, of the music. And, as you read and re-read, the book of course participates in the creation of you, your thoughts and feelings, […] the ongoing work, the present act of creation, is a collaboration by the words that stand on the page and the eyes that read them” (1977-1978).

let charRNN; let textInput; let lengthSlider; let tempSlider; let button; let runningInference = false; function setup() { noCanvas(); // Create the LSTM Generator passing it the model directory charRNN = ml5.charRNN('models/AP_book/', modelReady); // Grab the DOM elements textInput = select('#textInput'); lengthSlider = select('#lenSlider'); tempSlider = select('#tempSlider'); button = select('#generate'); // DOM element events button.mousePressed(generate); lengthSlider.input(updateSliders); tempSlider.input(updateSliders); } // Update the slider values function updateSliders() { select('#length').html(lengthSlider.value()); select('#temperature').html(tempSlider.value()); } function modelReady() { select('#status').html('Model Loaded'); } // Generate new text function generate() { // prevent starting inference if we've already started another instance if(!runningInference) { runningInference = true; // Update the status log select('#status').html('Generating...'); // Grab the original text let txt = textInput.value(); // Check if there's something to send if (txt.length > 0) { // This is what the LSTM generator needs // Seed text, temperature, length to outputs let data = { seed: txt, temperature: tempSlider.value(), length: lengthSlider.value() }; // Generate text with the charRNN charRNN.generate(data, gotData); // When it's done function gotData(err, result) { if (err) { console.log("error: " + err); }else{ select('#status').html('Ready!'); select('#result').html(txt + result.sample); runningInference = false; } } } } }

Code:

One of the interesting sections of the generated bonus chapter:

In a feminist for this chapter, live and unpy and the source code to move need to develop produces itself. Chapter 8, “Que(e)ry data,” trans. Face) has a class, a “smart” that is returns a closer loops are developed a modifying code with the code or solve an auga was partly rendering to the technical intelligence as a form of software and new emoji stairs are requires itself — to further identify able to mered model in the dataset by noats in order to train how cultural and powerful writes injustices that look with archificational logics,19 declared the network for political and changing that our deaden, that coding it operative file, you learn to Chinister and syntax continue to show the credentials, and distributed mobil purposes, and are contingencies which properties and behaviors, made server libraries and adding the Universals us too and happens entries that we do not just automaticulas on focusing of this sense of hiding up the present in generator form from software and originally deeply encourage the execution, and commerciculusing of learning to develop because the function draw(), the program and ellipses is a new syntax with other syntaxes from the curated by specifying compring try was the web cam tracker practices and conceptual thinking to use.

Discussion Questions:

  1. Can a machine respond convincingly to an input with an output similar to a human — or more precisely — can it mimic rational thinking?
  2. How might combinations of free and open source ethics, and intersectional feminist/queer politics open up ways of learning and unlearning?
  3. When it comes to the book as a whole, which alternative knowledge and aesthetic practices emerge as a consequence?

Code Critique - Geometric Emoji


Multi by David Reinfurt. Courtesy of the designer.

For this thread of code critique, we have decided to post the mini exercise adapted from Chapter 2 - Variable Geometry. The purpose is to spark both the technical and conceptual discussion.

+++
Objective:

  • To experiment with various geometric drawing methods and to explore alternatives, particularly with regard to shapes and drawing with colors.
  • To reflect on the politics/aesthetics of emojis (with ref to the text Modifying the Universal, written by Roel Roscam Abbing, Peggy Pierrot and Femke Snelting. Download the open access article here).

For additional inspiration:

AIMoji by Process Studio (2019), as part of “Uncanny Values,” Vienna Biennale (2019).

Tasks (RunMe):

Explore shapes, geometries, and other related syntax and design two emojis.

Questions to think about (ReadMe):

  • Describe your program and what you have used and learnt.
  • How would you put your emoji into a wider social and cultural context that concerns a politics of representation, identity, race, colonialism, and so on?

+++


Previous example of CCSWG's threads

Starting last year, we made the CCSWG public, at least as far as readership goes. That means, threads have an immediate audience. For that reason, you may want to have side threads, but keep in mind that auxiliary threads rarely get the kind of discussion traffic the main thread does. That said, we want this to be a publication venue for you to air whatever ideas you think are relevant.

Examples of notable conversations:

Post-Colonial Critcode:

https://docs.google.com/document/d/1CGr82FbgIsEAkRnZ1JScs1lxzPkBMsN927N8uvL2bSc/edit?usp=sharing

Gender and Programming:

http://wg18.criticalcodestudies.com/index.php?p=/discussion/11/week-1-gender-and-programming-culture-main-thread

Which had several side threads:

http://wg18.criticalcodestudies.com/index.php?p=/discussion/18/week-1-colossus-and-luminary-the-apollo-11-guidance-computer-agc-code#latest"

http://wg18.criticalcodestudies.com/index.php?p=/discussion/17/week-1-gendering-the-apollo-11-onboard-in-flight-software

Another version of this was our Creativity and Coding discussion:

Main Thread:

Creativity and Coding:

http://wg18.criticalcodestudies.com/index.php?p=/discussion/26/week-2-creative-and-critical-coding-main-thread

Side threads Week 2:

http://wg18.criticalcodestudies.com/index.php?p=/discussion/27/week-2-creative-and-critical-coding-coding-as-method

Poetry as Code:

http://wg18.criticalcodestudies.com/index.php?p=/discussion/35/week-2-poetry-as-code-code-as-poetry

Calvinball and Coders:

http://wg18.criticalcodestudies.com/index.php?p=/discussion/31/week-2-critical-and-creative-coding-calvinball-and-coders

Alternatively, here’s an example of a video intro from the 2016 Critical Code Studies Working Group.

https://www.youtube.com/watch?v=cNBjVNU69AI


Notes for thread responses

LANGUAGE SPECIFICITY - Variation of Chinese + Indigenous languages (TzuTung)

“What is programming?” Is there programming in Taiwan/from other regions? If yes, what is it like? If not, why not?

The politics of language in Taiwan indicates a multi-layered colonial background. Until 2022, the Taiwan government recognized 16 Indigenous people groups, each with its unique language. However, the long history of national compulsory education, both from Japanese rule and the Nationalist Party, had made Japanese and Chinese the Taiwan’s first language and English as the second. In the opposite, Amis, Atayal, Truku, Pinuyumayan…, these Indigenous language has been classified as endangered.

There were efforts made for “localizing programming languages.” In Arabic, there is قلب made by Ramsey Nasser in 2013. In Chinese, there are PerlYuYan and WenYen made by Lingdong Huang. These are efforts made under the colonial power imbalance in each industry. For critical programming, the questions can be further looked into the international division of programming labor, the question of programming family, or even, to offer theoretical concepts—keywords that surface the politics behind programming. To make a postcolonial programming language embody a decolonial mind.

The notion of "Git" is mentioned in the first chapter of Aesthetic Programming as a distributed version-control system for software, originated to the Linux Kernal architecture, and named in an esoteric manner. In new versions, we have added related references such as Audre Lorde's and Walter Benjamin’s use of the word “kernel” to point to a kind of energy that heightens, sensitizes all experience and intricate, paradoxical, delirious spirits within languages that make literal translation impossible.

[RY]
notes about Machine Translation from the old pad that we missed out on 1/5 check in (probably from Shih-Yu?) could be part of the material to be re-woven into this thread or in the Q&A session?

  • 1.2: line 483-525 同時她也表示,現今無論繁體中文還是簡體中文,Google Translate 都是用同一套模型去訓練,這是因為若將模型拆成兩種資料庫,需要資料庫內容太大、太多了,而且在繁中、簡中之間語法極為相同,僅有少數詞彙不一樣的狀況下,採用單一學習模型再搭配不同詞彙是最符合效益的做法。https://www.inside.com.tw/article/9231-google-translate-machine-learning-taiwan
  • Ren Yu used Google translate to make the first draft of our texts. Unsurprisingly, many jargons and terms are translated into the words of the simplified chinese. We spent a plenty of time editing these terms. How do we decided the chosen words? Is it important to differenciated the use of the simplified and traditional Chinese in the technical and aesthetics aspects? Also, the traditional punblishing industry has a stereotype on using machine translation. The texts generated by machine translation is considered as unusable. How do we work around this stigma?
  • On social media/ AI:
    How do we break the echochamber created by social media (which calculated by AI/machine learning)? so that ideas can be equally and respectfully preceived and discussed, without the dogblood drama enhanced by certain media and platforms? How people can interpret information in a respectul and healthy way?
    How does superintelligence/AI achieve such a goal?
    AI Value Alignment Research Landscape
    https://futureoflife.org/valuealignmentmap/

  • On translation:
    the traditional punblishing industry has a stereotype on using machine translation. The texts generated by machine translation is considered as unusable. How do we work around this stigma?

  • (here is another example Critical Coding Cookbook organized by Xin Xin and Katherine Moriwaki)


Brainstorming

Brainstorm thread 1

  1. Introducing Aesthetic Programming (for initial reactions/engagement to the book)

Brainstorm thread 2

  1. Translating Aesthetic Programming
  • how translation has been theorised (Benjamin's "task of translator", Spivak), postcolonialism
    According to Spivak, the only way to translate, or to read a culturally different book, is to go beyond English and the very sense of one’s time (connects translation to historical processes).
  • hegemony of English language
    e.g Lingdong Huang has developed an esoteric programming language based on ancient Chinese called “wenyan-lang,” that closely follows the grammar and tone of classical Chinese literature.

https://wy-lang.org/

  • machine translation (google translate, machine learning)language of maths, numbers, computer languages, esoteric languages
  • how chinese has been used as metaphor for complexity in computer science/AI (e.g. Searle's "the chinese room")
  • https://www.notion.so/2a815532d0454a718e68c08f245185c0 (redundency)
  • e.g on how Google translate is based on mainland Chinese?
  • Taiwan Chinese, Hong Kong Chinese, and Mainland Chinese (verbal/written) + Chinese Simplified, Chinese Traditional, in all its variants and how this is tied to expressions of power

Need example: (repurposing terms)

  • infinite loop? (example: 無限循環 - google vs 無窮迴圈 -human - convention in science)

  • Queer?

    • The concept of Queer - The content of the AP involves examples, artworks and figure, containing feminist critiques (e.g ch. 8) and challanging the heteronormative forms of binary, gender and sexuality e.g love letters (ch. 5), vocable code (ch. 7), the stories of Alan Turing (ch. 7), Recurrent Queer Imaginaries (in Ch.5 ). So how would that be even possible to translate these in Mainland Chinese given the recent acts of Chinese government who constantly censors LGBTQ+ content and representations of effeminacy in TV, games, films etc, and they critique these content rigorously and considered them as presenting a "wrong set of values" to the society.
  • Not only the traditional Chinese translation, but also the Indigenous languages: Amis, Atayal, Truku, Pinuyumayan We may not translate word by word, but how to include the idea of language diversity > as for queering up the English-dominant programming language.

  • "What is programming?” Is there programming in Taiwan/from other regions? If yes, what is that like? If not, why not? Is programming necessarily Western? the questions can be further look into the international division of programming labor, the question of programming family, etc. Can we attempted to offer theoretical concepts—keywords—drawn from Taiwan’s historical and cultural experience, to create our own programming terms? the programming keywords? Instead of being merely consumers of programming, we wanted to be creators of the programming langauge.

  • Refrence Book/ Author:

Keyword of Taiwan Theory https://www.books.com.tw/products/0010815886?loc=P_br_r0vq68ygz_D_2aabd0_B_1