Interface Florian Cramer and Matthew Fuller It seems as if the term "interface" is borrowed from chemistry where it means "a surface forming a common boundary of two bodies, spaces, phases". {1} In computing, interfaces link software and hardware in relation to each other and to their human users or other sources of data. A typology of interfaces thus reads: (a) hardware that connects users to hardware; typically input/output devices such as keyboards or sensors, and feedback devices such as screens or loudspeakers (b) hardware that connects hardware to hardware; such as network interconnection points and bus systems. (c) software, or hardware-embedded logic, that connects hardware to software; the instruction set of a processor or device drivers for example. (d) specifications and protocols that determine relations between software and software; i.e. application programming interfaces (APIs) (e) symbolic handles which, in conjunction with (a), make software accessible to users; i.e. "user interfaces", often mistaken in media studies for "interface" as a whole. In a software studies context, only the three (c), (d) and (e) are of particular relevance. Regarding (c), software typically functions as an interface to hardware. Computer programs can be seen as tactical constraints of the total possible uses of hardware. They constrain, for example, the combination of a CPU, RAM, hard disk, mainboard, video card, mouse, keyboard and screen with its abundant possible system states to the function of a word processor, a calculator, a video editor etc.. In other words, they interface to the universal machine by behaving as a specialized machine, breaking the former down to a subset of itself. This operation is linguistic because it reformulates the totality of available machine instructions into a new control language. This language acts as an "abstraction layer". It is either a subset of the total available instructions when it is Turing incomplete, or a redressing of them with different symbolic handles when it is Turing complete. "User interface" and "programming interface" have not always differed. They used to be identical in many operating systems up to 8-bit home computers in the 1980s that booted into a BASIC programming language prompt, or MIT's Lisp machines which had a Lisp programming environment as their user interface. Character-based shells such as the DOS and Unix shells are used both as programming and user interfaces. The same is true, to a lesser degree, for graphical user interfaces when they are scriptable. But even if they are not scriptable, they still effectively act as specialized symbolic computer control languages. The distinction between a "user interface", an "Application Program Interface" (API) and a computer control language is purely arbitrary. That more complex interfaces to computer functions tend to be called "programming languages" and less complex, more specialized ones are known as "user interfaces" is simply a nomenclature arising out of convention. Since the user interface to a computer program is always symbolic, and involves syntactical and symbolic mappings for operations, it always boils down to being a formal language. To the extent that they are understood symbolically, everything that can be said about software interfaces falls under the entry on language. Interfaces, as with the word's etymological roots in chemistry and like language, describe the point of conjuncture between different bodies, hardware, software, users, and what they connect to or are part of. Interfaces describe, hide and condition the asymmetry between the elements conjoined. The asymmetry of the powers of these bodies is what draws the elements together, unless they are a savant a human user cannot calculate Pi to the 100th place, or generate a model world in which the dimensions and trajectory of every element in it are mapped, within the small amount of time that a computer does so. In this sense the term interface emphasizes representation, or more closely, re- articulation at another scalar layer, while the term language in a computer context emphasizes control. The dense condensations of computational power which computers embody and which are differently articulated by individual pieces of software are of intense fascination and productivity, and at the same time, radically alien to different human experiences of the world. It is this alienness that allows software, particularly at moments when one is attempting to understand its workings, or to program it, that engenders the delicious moments of feedback between the styles of perception and ordering, logic and calculation, between the user and the computer to be so seductive and compelling. At the same time, such a rich engagement with an interface tends to wear out once users realize the limitations of the programmed system. Equally, as when software is used to monitor, queue and structure the flow of work, the compulsion can often be of a different kind. The asymmetric powers conjoined by means of human-machine interfaces, also find themselves arranged in other relations which themselves articulate, filter and organise the activities modelled and modulated by the interface. This asymmetry, while it is fundamental to the difference between human and machine operations, can further materialize in different levels of machine control granted to the user. While any user interface, including every programming language, mediates machine functions, the mediation can be deliberately (Turing-)incomplete or (Turing-)complete. But even the latter usage and programming interface, Unix shells or the turtle of the Logo programming language for example, still impose, and enhance - like any language or instrument - particular workflows, thought modes, and modes of interaction upon or in combination with human users. Asymmetry of powers is also mapped and sieved through interfaces in other ways. A search engine operates as an interface of many layers, ostensibly that between the user and the data they are seeking. But crucially, it also instantiates an interface whereby the database can read the user, by means of records of patterns of search terms and choices. And asymmetry is not simply a means of recognising the associations made between computers and humans. APIs as well as protocols that operate as interfaces between computers linked over a network equally establish descriptions of operations that are allowed and assigned a priority or blocked. APIs are increasingly important with the development of networks that rely on data and software working without being constrained by their hardware platform, and the formulation of the algorithms that govern their operation has become of particular interest. Within the paradigm of "user- friendliness", that which is most easily recognisable and visible, software has been traditionally understood to place the user as its subject, and the computational patterns and elements initiated, used and manipulated by the user as the corresponding grammatical objects. As software is increasingly diffused through urban, social and institutional contexts, the design of interfaces and even the basic level of awareness as to what does or does not constitute part of an interface or that triggers a computational event becomes increasingly important. Learning to recognise a human functioning as an interface to a spreadsheet, or, as in much of generic electronic art, being able to read the sensors in a constructed space are increasingly useful skills as interfaces not only spread out from the screen and the keyboard, but are also designed to dissimulate their function as interfaces. Within (e) the user interface articulates asymmetry via different means: by the use of text; visual- spatial structuring devices such as a window and its subcomponents, timeline or button; sounds, such as system event sounds; animated representations of running data-processes such as a "loading" bar, "throbbers" (used in browsers), spinning cursors; widgets; menus, which describe available functions; and other elements. Because such interface elements provide a mode of access to data and data structures, the ordering and occurrence of such elements are usually describable by and at a lower level designed using formalisms, context-free grammars which attempt to describe a metasyntax comprising every possible use of the computer or within a language or application. If the universal machine describes every possible rational computation, such systems set out the syntax for all possible interactions within the domain they describe. Whilst the syntax of an interaction is logically describable, no such constraint is necessary for visual or audio elements of interface within (e). Such interfaces, and especially the skinning systems that provide users with the opportunity to "personalise" the visual appearance of interface elements in applications or operating systems, conjoin, even if only at the representational level, formal grammars with assemblages of visual codes drawn from domains as diverse as heavy metal and manga graphics. Low-level formalisms articulated through the representational matrices of high-trash generic conventions provide a refreshing break from the pretensions of computing to objectivity. The meshing of poetic and formal language in the area of writing known as codeworks explores the rich experimental and speculative potential of alphanumerical computer control languages. Other net and software artists have demonstrated how audiovisual computer control languages (user interfaces) can be a playground for subjective, ironical and epistemological disruptions, experiments and critique. These interventions become all the more important the more the deliberate separation between "user" and "programming" interfaces and languages is being mainstreamed. Footnotes {1} According to Webster's Ninth Collegiate Dictionary which dates the term to 1882