Soon and Cox 2020

From Whiki
Jump to navigation Jump to search

Soon, Winnie and Geoff Cox. Aesthetic Programming: A Handbook of Software Studies. Open Humanities Press, 2020

https://aesthetic-programming.net/

…o offer critical reflection upon the practice of coding alone, instead it offers something more messy and at the same time more “useful” we would say: a book about the more complex and deeply entangled set of relations between writing, coding and thinking.

Page 15

…etween available literature and the growing interest in “computational thinking” 4 to expand programming beyond the confines of computer science or software engineering (or even the digital humanities, which ultimately presents another set of limitations).

Page 15

…ers an applied and overtly practice-based approach to understanding the importance of programming — reading, writing and thinking with software — as a critical tool for our times, in recognition of the way in which our experiences are ever more programmed.

Page 15

…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.

Page 15

…the book embraces both the technical aspects and formal qualities of code as well as opens up imaginaries of code, including acknowledgment of the material conditions of programming practice, the non-human agency of code itself, and its inherent relationality within broader ecologies…

Page 15

Pen

Page 15

As part of this, we take a particular interest in power relations that are under-acknowledged, such as inequalities and injustices related to class, gender and sexuality, as well as race and the enduring legacies of colonialism.

Page 16

…computational culture is not just a trendy topic to study to improve problem-solving and analytical skills, or a way to understand more about what is happening with computational processes, but is a means to engage with programming to question existing technological paradigms and further create changes in the technical system…

Page 16

…er programming to be a dynamic cultural practice and phenomenon, a way of thinking and doing in the world, and a means of understanding some of the complex procedures that underwrite and constitute our lived realities, in order to act upon those realities.

Page 16

The phrase “aesthetic programming” usefully describes this approach in our opinion.

Page 16

Pen

Page 16

…he growing importance of software requires a new kind of cultural thinking, and curriculum, that can account for, and with which to understand better, from within, the politics and aesthetics of algorithmic procedures, data processing, and abstracted modeling…

Page 16

…nuing the discussion of aesthetics, it should be clear that we do not refer to ideas of beauty as it is commonly misunderstood (aka bourgeois aesthetics), but to political aesthetics: to what presents itself to sense-making experience and bodily perception

Page 16

Pen

Page 16

Understood in this way programming becomes a kind of “force-field” with which to understand material conditions and social contradictions, just as the interpretation of art once operated “as a kind of code language for processes taking place within society.”

Page 17

…we have been working with fundamental programming concepts, such as geometry and object abstraction; loops and temporality; data and datafication; variables, functions, and their naming, as well as data capturing, processing and automation, as the starting point for further aesthetic reflection whereby the technical functions set the groundwork for further understanding of how cultural phenomena are constructed and operationalized.

Page 17

Aesthetic programming in this sense is considered as a practice to build things, and make worlds, but also produce immanent critique drawing upon computer science, art, and cultural theory.

Page 17

Pen

Page 17

Such practical “knowing” also points to the practice of “doing thinking,” 19 embracing a plurality of ways of working with programming to explore the set of relations between writing, coding and thinking to imagine, create and propose “alternatives.” 20 By…

Page 18

21 In many ways, and simply put, our book can be thought of adopting a similar approach of zooming in to the formal logic of computation and zooming out to the cultural implications of software.

Page 18

…lieve that paying attention to fundamental, or key, concepts from programming provides the opportunity to open up new insights into aesthetics and critical theory, as well as new perspectives on cultural phenomena increasingly bound to computational logic.

Page 18

Suffice to say for now, that the book sets out to express how writing and coding are deeply entangled, and how neither should be privileged over the other: we learn from their relationality.

Page 19

By allowing new versions to be produced by others, we hope in a modest way to challenge commercial publishing conventions and illuminate our capacity to understand some of the infrastructures through which we encode our ideas and distribute them across networks.

Page 20

…aim to do something similar to what Adrian Mackenzie has identified as “auto-archaeology” to indicate how the object of study is fully integrated into the analysis, which he demonstrated using the associated GitHub site for his 2017 book Machine Learners .

Page 20

In summary, the first six chapters set up the ground from which to understand the fundamental elements of programming, and the last four chapters build upon this towards more speculative forms and imaginaries.

Page 22

The book expresses itself as a dynamic object not fixed in terms of attribution or commodity form or specific determination. It follows that, although this preface is only the beginning of the book, there can be no end: this book is purposefully stuck in an endless loop of its own becoming.

Page 23

Yet, despite its broad applicability, access to the means of production at the level of programming remains an issue all the same.

Page 31

As she puts it, “Seeing programming in light of the historical, social, and conceptual contexts of literacy helps us to understand computer programming as an important phenomenon of communication, not simply as another new skill or technology.” 4

Page 31

The choice is simple: “to program or be programmed.” 8

Page 32

JavasScript is an interpreted language by design that in modern browsers, generally operates using both an interpreter and just-in-time compilers to translate source code at runtime.

Page 33

Importantly, the core idea for p5.js is not just to deploy Processing as a web-based platform, but to address diversity and inclusivity explicitly, and take these issues seriously in software development and communication.

Page 33

Another example, of decolonizing software, is the use of the terms “master” and “slave” in programming (where one process exerts control over another process within a dependent relationship), which is considered “a broken metaphor” and “an oppressive metaphor” according to Ron Eglash and The Internet Engineering Task Force (IETF) respectively.

Page 46

Think, for instance, of the use of “class” to describe one or more objects in object-oriented programming as well as stratifications in society based on economic and social status. An excellent example of this is Harwood’s codework Class Library , a melding of program code and written text that stresses the material conditions of working with code and the possibility of class action.

Page 47

Much like the utopian project of developing a universal language to be spoken and understood by the majority of the world’s population (such as Esperanto) Unicode is clearly important to communicative operations across international/multilingual systems. By the time of the most recent version, Unicode 12.1’s release in May 2019, there were 137,994 characters covering 150 scripts, as well as multiple symbol sets and emojis. 6 Yet, as the standard expanded from the underlying characters and glyphs to symbol sets and emojis, the universalism has become increasingly problematic. Criticism has unsurprisingly centered on the politics of representation, such as blatant gender stereotyping and racial discrimination: for example, female emojis were under-represented in certain professional roles, 7 there were also limitations of skin tone applied to emojis and “universal modifiers” that were not displayed “universally” across all devices and operating systems.

Page 56

It was mathematician and author Augusta Ada Byron Lovelace who was one of the first to introduce and Figure 3.1: Early alchemical illustration of illustrate the concept of a programmatic loop in the ouroboros accompanied by the text ἓν τὸ πᾶν early nineteenth century. She recognized that there (“The All is One”) from the work of were repeatable operations in the conceptual design Cleopatra the Alchemist (10th Century). of the first ever, automatic, general-purpose Image from Wikipedia computing machine,…

Page 75

Loops offer alternative imaginaries of time.

Page 94

…is discussion in relation to “untimeliness.” 20 He draws on the infamous “halting problem” that underpins Turing computation and refers to the problem of whether a computer program, given all possible inputs, will finish running or continue to run forever.

Page 94

This “problem of decision,” or “ending” as Ernst puts it, underscores broader notions of algorithmic time and the way the computer forever anticipates its own “never-ending” in an endless loop. Perhaps the throbber icon is a good metaphor for this, in terms of the impossibility of predicting the quality of transmission conditions, and, in this way, the animated graphics depict a sense of uncertainty that underlies deep processual micro-temporality.

Page 94

…omplexity is further developed by referring back to Turing’s speculation on artificial intelligence, whether a finite- state machine can be aware of its “conscious” state at a given time and whether a sense of ending is necessary in order to be functional.

Page 95

…t is clear that finite-state machines are procedural, in the sense that they operate linear sequences of discrete events in time like clockwork, but as Ernst reminds us: “There is no automatic procedure which can decide for any program, if it contains an endless loop or not.”

Page 95

Leaving aside a deeper discussion of Heidegger’s philosophy, the importance of this for the discussion of loops seems to mirror the complexity of lived time.

Page 95

We might go as far as to say that programming allows for a time-critical understanding of how technologies play a crucial role in our experience of time, not only how we model it, but how we can forge new beginnings and endings.

Page 95

Referring to button pressing, Terranova describes social relations as an asymmetrical relations between two poles — one active, the other receptive. To her, actions such as “liking and being liked, writing and reading, looking and being looked at, tagging and being tagged,” are examples of the transition from individual to collective forms. She considers how “these actions become discrete technical objects (like buttons, comment boxes, tags, etc.) which are then linked to underlying data structures,” and, in turn, how these actions express the possibility of being able to experiment with processes of “individuation” and “transindividuation,” i.e. the possibility of social transformation itself.

Page 118

While the previous chapter discussed the data capture underlying the interaction with input devices, this chapter follows the concepts of input and output to introduce the idea of the abstract machine.

Page 125

This refers to the creation of rules by a self-operating machine, widely known as an abstract machine or Turing machine.

Page 125

More specifically, the Turing machine is capable of six types of fundamental operations (at the time there wasn’t a thing called a computer) including read, write, move left, move right, change state and halt/stop. Turing suggested these operations could be performed by running an endless tape (that worked like memory does in a modern computer) with instructions on what symbols to read and write, as well as how to move. These instructions constitute the fundamental principles of the Turing machine, 3 but also modern computing, with the capability to compute numeric tasks and automate various processes.

Page 125

Algorithmic drawing has been explored by artists including Joan Truckenbrod, for example in her series Coded Algorithmic Drawings that dates back to the 1970s and 80s. 13 Entropic Tangle (see Figure 5.3) was coded in the Fortran programming language in 1975, using a mainframe computer with keypunch machine, and magnetic storage media.

Page 126

The line of code was printed in the 1982 Commodore 64 User’s Guide and was later published online, and has become an important example in the field of software studies for demonstrating the history and culture of creative computing.

Page 128

…all systems contain subsystems that continually fluctuate. One or more fluctuations, resulting from feedback, could change the preexisting organization, and as such the multiple interacting elements of a system cannot be governed, and the collective behavior cannot be predicted…

Page 139

…generative “love-letters” that appeared on the Manchester University Computer Department’s noticeboard in 1953. These computer-generated declarations of love were produced by a program written by Christopher Strachey using the built-in random generator function of the M. U. C.(Manchester University Computer, the Ferranti Mark I), the earliest programmable computer.

Page 140

Abstraction is one of the key concepts of “Object-Oriented Programming” (OOP), a paradigm of programming in which programs are organized around data, or objects, rather than functions and logic.

Page 147

In other words, objects in OOP are not only about negotiating with the real world as a form of realism and representation, nor about the functions and logic that compose the objects, but the wider relations and “interactions between and with the computational.”

Page 147

4 In other words, the way we understand all media formats (whether texts, images, video or sound) is quite different from how a computer understands them as data, or — more precisely — as binary numbers.

Page 147

Recognizing the various levels of abstraction is important to understanding that the specific details and processes of how a computer actually works are largely hidden from view and/or substituted by desktop metaphors (e.g. deleting a file by throwing it in the “bin”).

Page 147

OOP is based on “illusions of objectivity and neutrality of representation,” in which “[a]bstractions are simplified descriptions with a limited number of accepted properties. They reply on the suppression of a lot of other aspects of the world.” 9 The understanding is that objects in the real world are highly complex and nonlinear, such abstracting and translating processes involve decision making to prioritize generalization while less attention is paid on differences.

Page 149

…computational objects allow for a different perspective on lived conditions in this way and how we perceive the world. Worldviews can often be unethical, and we only need to think of game-worlds to see poor examples of racial and gendered abstraction that expose some of the assumptions of the world, and what properties and methods that these characters are being defined.

Page 163

Rather we would like to emphasize that code mirrors the instability inherent in human language in terms of how it expresses itself, and is interpreted.

Page 169

In this chapter we explore this line of thinking, and the ways in which the voice of the human subject is implicated in coding practices, and how coding itself can “voice” wider political issues, particularly concerning sexuality.

Page 169

Code is constructed from language and can be poetic as the programmer can play with the structure, and experiment with symbols, and the syntactic logic.

Page 176

13 In this way, choosing meaningful identifier names is more for the purpose of expression and communication, as the example above clearly demonstrates.

Page 184

…source code does not show how a machine operates with physical memory (such as store, load, add and halt actions), how it translates symbolic actions into real addresses, or how it discloses operation sequences as low-level programming languages would do. The point is the source code only describes what might be visible to hear/see, but it does not facilitate other forms of knowledge about how a machine operates from the source code…

Page 184

Firstly, the source code is made available, but the process of translation from source code to machine code is still hidden, and not all the lines are executed.

Page 184

Secondly, source code and its execution, usually in the form of screen interface, should be considered as translations rather than equivalents of each other, and this points to the veracity of the interface-principle WYSIWYG (what-you-see-is-what-you-get).

Page 184

In this way, the artwork perhaps challenges the usual, prominent front-end interfaces and the transmission of meaning from one source to another by giving voice to both the front and back ends, or even queering the demarcation.

Page 184

There is a politics to this as some voices are louder than others, and some are marginalized or suppressed altogether. In executing the function SpeakingCode(iam, makingStatements), we question who is speaking, to whom, and under what conditions? We want to make these relations more queer.

Page 185

There are clear power dynamics at work in computing, at a fundamental level, if 1s and 0s are considered to be numbers of equivalent status in mathematics.

Page 185

In a query-driven society, search engines have become powerful mechanisms for truth-making and for our making sense of seemingly endless quantities of data, manifested as streams, and feeds — indicative of the oversaturation of information and the rise of the attention economy.

Page 191

The discussion of errors brings us back to what we mean by query and que(e)ries: asking whether something like data is valid or accurate, but also to questioning how it is deemed to be valid or accurate in the first place. There is a danger of self-fulfilling prophecy here unless further questions are asked about data, and the conditions of its operation. When it comes to big data, for instance, there is a tendency to think of unstructured data as raw and unmediated, whereas in practice there is always some additional information about its composition, not least derived from the means by which it was gathered in the first place. A more “forensic” approach reveals how the data was selected, preprocessed, cleaned, and so on.

Page 207

…s.” 29 This presumption of stable classes and classifications is one of the main problems that we wish to query here, as if the world was organized that way too (when it is clearly not). The difficulty lies as to what extent any model is accurate or valid.

Page 209

UBERMORGEN’s The Project Formerly Known as Kindle Forkbomb (2012), used a machine process that stripped comments from YouTube videos. An algorithm then compiled the comments and added titles, producing an e-book which was subsequently uploaded to the Amazon Kindle e- commerce bookstore. 21 This process is sketched in the diagram, using an image of a traditional printing press (see Figure 9.3), and further exploited in the installation version, which combined the diagram on the gallery floor and physical objects (see Figure 9.4)…

Page 220

The shift of critical attention in software studies from source code to the operations of algorithms, such as the sorting exercise above, reflects the rise of big data, and machine learning (which we will discuss in the next chapter).

Page 222

It is clear that algorithmic procedures play an important role in organizing culture, and subjectivities, and it is not very easy to see through or describe them because they operate beyond what we experience directly. They produce wider effects in the ordering of life.

Page 222

29 His key point is that the algorithm reverses the centralized panopticon model of surveillance and control, and instead offers a “bio-political machine” that captures time and living labor through dataveillance.

Page 223

…programming is a form of abstraction that requires the selection of important details in which the implementation embodies the programmers’ thinking and decision-making processes. In addition, algorithms themselves are decision-making machines that are full of emergent, even predictive, potential…

Page 224

ImageNet dataset, 26 a hugely influential project in the field of computer vision, developed by Fei-Fei Li at Stanford University in 2009. The dataset is vast and contains over 14 million photographs that are organized into over twenty-one thousand “synsets” (categories), taken from a lexical database called WordNet. 27 The labelling work was completed by over 25,000 workers over a two-year period using Amazon Mechanical Turk, a crowdsourcing platform.

Page 236

50 That machines can be said to “see” or “learn” is shorthand for calculative practices that only approximate likely outcomes by using various algorithms and models.

Page 247

What is learnt should not be separated from the means by which it is transmitted, nor the direction of travel from human to machine or from machine to human.

Page 247

…we consider critical technical practice to be a queer praxis, as we hope has been made clear throughout this book. Aesthetic programming in this way demonstrates some of the possible ways to further unsettle the binary split of theory and practice, thinking and doing, art and technology, humans and machines, and so on.

Page 248