top of page

 / Hardware to Software 

The computer, at its core, consists solely of hardware. Software is the meaning we assign to particular states and configurations of hardware. As Friedrich Kittler argued in his essay There is No Software (1997), “in principle, this kind of descent from software to hardware, from higher to lower levels of observation, could be continued over more and more orders of magnitude. All code operations, despite such metaphoric faculties as call or return, come down to absolutely local string manipulations, that is, I am afraid, to signifiers of voltage differences” (Kittler, 1997, p. 150). 1 In essence, the computer functions blindly, executing highly complex electrical circuits with varying voltages. We impose meaning on these voltages (typically “1” and “0”), and by organising them in sophisticated ways, we enable the computer to perform complex tasks, such as rendering images by lighting up colored pixels in specific patterns. The decoding of commands between the human input and the computer’s response is facilitated by a microcontroller, which processes real-time inputs and outputs. A microcontroller comprises a multitude of transistor switches arranged on a compact circuit, operating in an on/off state, represented by voltage levels. For example, voltages between 2.0 and 3.3V may represent ‘on’ (or “1”), while voltages from 0 to 1.5V represent ‘off’ (or “0”). The ambiguous voltage range in between is avoided for accuracy. These voltage states are translated into digital logic, which allows us to categorise high and low voltage levels as binary values in the digital world. While the process seems basic, the complexity increases exponentially when considering the sheer scale: modern CPUs, such as Intel’s i9, contain around 10 billion transistors, making it possible to perform highly sophisticated computations.

We have developed methods to interpret these binary values through agreed-upon rules, analogous to how Morse code represents letters through dots and dashes. This principle extends to digital communication and the interpretation of data, as we assign specific meanings to the patterns of 1’s and 0’s. For instance, when information is transmitted from a PlayStation 5 to a TV, the HDMI standard governs the connection and interpretation of binary signals. The software within each device (the PS5 and the TV) dictates how signals are sent, received, and interpreted, enabling the appropriate display of information on the screen. Microcontrollers store binary data in memory for later use, and they manage input/output connections via pins, which interact with external components. The “magic” of this system lies in the programming: we define the behaviour and decision-making of the device through complex sets of instructions, translating human-readable code into machine-executable instructions via a compiler. This process works because there is a universally accepted set of rules governing the transmission and interpretation of data. Without these standards, communication between devices would become meaningless, akin to two people using the same letters but speaking different languages. As Kittler observed, "there would be no software if computer systems were not surrounded by an environment of everyday languages" (Kittler, 1997, p. 150). 2 In this sense, computer languages function similarly to human languages, constructing systems of signs and signals that transmit information in a structured way. However, different programming languages operate according to distinct sets of protocols, creating not only divisions between devices but also between interfaces. For instance, to build a website that can be displayed across various devices, one must use a specific HTML markup language with defined rules. Yet, the same language cannot be used to build an operating system (OS). Currently, there are approximately 8,945 programming languages, each with its own unique rules and development history. The genealogical tree of programming languages is so vast that it cannot be represented in a single readable image.

To further situate this discussion within an artistic framework, it is instructive to consider the work of Queer Technologies (2008–2012)—an organisation dedicated to producing critical tools, applications, and situations that foster queer technological agency, intervention, and sociality. By reimagining technology designed through a queer lens, the project mounts a sustained critique of the heteronormative, capitalist, and militarised assumptions embedded within conventional technological architectures, designs, and functionalities. Among its director-led initiatives is transCoder: Queer Programming Anti-Language, a project engaging directly with the multilayered nature of interface as discussed throughout this research. transCoder operates as a playful yet pointed response to Lev Manovich’s concept of transcoding, the fifth principle of new media, which describes the translation of content into another format. Manovich proposes that new media objects are shaped by a constant negotiation between a “cultural layer” and a “computer layer,” each compositing and transforming the other ( Manovich, 2001, p. 63).

transCoder literalises this process by offering a programming language designed explicitly to mediate between these layers through a queer framework. It functions as a form of anti-language to signify its opposition to normative coding conventions. Through its software development kit, transCoder provides libraries rooted in queer theory, aiming to sever ontological and epistemological ties to dominant technological paradigms and disrupt the flow between heteronormative culture, programming logic, and interface design. In doing so, it embodies Alexander Galloway and Eugene Thacker’s assertion that “to write theory means to write code” ( Galloway and Thacker, 2007, p. 129). 1


The project enables code to become a site of queer non-essentialism: Boolean logic expands beyond binary true/false dichotomies, loops behave unpredictably, conditional statements multiply into open-ended possibilities, and comments evolve into digital manifestos. Variables are stripped of heteronormative assumptions, and coding structures may resemble passages from the works of Judith Butler, Donna Haraway, or Luce Irigaray rather than conforming to the syntax of C++ or Java. In this way, transCoder does not merely use code as a tool but inhabits it as a medium—a space where language, theory, and technology converge in the service of queer world-making.

As Wendy Hui Kyong Chun argues, “Although one codes software and, by using another software program, reads noncompiled code, one cannot see software. Software cannot be physically separated from hardware, only ideologically” (Chun, 2006, p. 19). 2 This notion positions software as an abstract concept, one that manifests ideologically but cannot exist independently of hardware. Therefore, the idea of the "interfacial stack" becomes even more significant, as each layer of the interface must be functional and accessible for the computer system to operate. 


These layers, from hardware and microcontrollers to high-level programming languages, form an interconnected structure that is essential for enabling the complex tasks that modern computing systems perform. In examining the foundational hardware/software dichotomy and projects like transCoder, the critical relationship between a system's material layers and the cultural meanings imposed upon them becomes clear. This analysis is directly relevant to my research into the archival process for The Wrong Biennale, which functions as a key case study. My archival website is itself an interface, a designed software environment built upon hardware substrates. The process of structuring this archive forces explicit decisions at every layer of the interfacial stack I am investigating. Just as Kittler argues that software is an ideological assignment of meaning to hardware states, the decisions I make, what to preserve, how to categorise it, and through what interactive logic (GUI) it is accessed, constitute an act of imposing meaning onto the raw data of screen recording that I collected from the Biennale. This archival software becomes the "cultural layer" that transcodes and interprets the event's historical "computer layer.”

bottom of page