Menu

Topic

jbork

Critical Programming: Toward a Philosophy of Computing
The overall trajectory of the dissertation lays out the problem in the first chapter that under digital technologies humans have begun to get dumber while machines continue improving, and articulates this situation as the post-postmodern cyborg network dividual in the second chapter by looking at the relationships between subjectivity, technology, cybernetics, embodiment and techno-capitalist networks. The third chapter develops a theoretical framework and methodology combining textuality and media studies with the social construction of technology, as applied to the history of computers, networking, and software. This background sets the stage for review of the related disciplines of software studies, critical code studies and platform studies, arriving a critical framework for revisiting cyborg identity deeply intertwining human and machine practices and concerns. The fourth chapter then applies the framework to a study of philosophical programmers, examining the work and writings of pioneers of computers, programming languages, networking protocols, and operating systems, and application developers. It also examines ethnographic studies of programming practices and research in learning programming. The final two chapters synthetically develop the notion of critical programming as a digital humanities discipline aimed at mitigating the problems of the cyborg dividual by suggesting an approach towards a philosophy of computing. Chapter five explores how philosophy happens in such working code places articulated in the previous chapters, foregrounding the work of a number of contemporary programming philosophers before delving into three software projects that I have been developing for the past decade as sites for expanding my philosophical horizons in the context of my professional work as a software engineer and the UCF texts and technology doctoral program. Finally, chapter six responds to the problems posed at the outset and offers recommendations for further study.

[Home]
Topic
[Literature]
[Significance]
[Framework]
[Outline]
[Timeline]


Prior version replaced 20140124
The philosophy of computing and philosophy of programming are both uninstantiated as explicit critical disciplines in the way the philosophy of information, philosophy of software, semiotics of programming, and computer ethics have been articulated as scholarly work (Floridi; Berry; Tanaka-Ishii; Johnson). A reasonable explanation for this condition is the relative scarcity of programming philosophers and relative obscurity of their work. Others produce the content that fills in for official philosophy of computing and programming positions. This default concretizes around the two poles Mitcham distinguishes: humanities philosophies of technology in academic circles and engineering philosophies of technology in technical communities. It privileges the texts of early theorists, and work efforts of influential technologists. Default assemblages of von Neumann, Licklider, Engelbart, Kemeny, Gates, Stallman, Torvalds generate default philosophies of computing and programming including binary logic, stored program, functional, procedural, object oriented methodologies, free or restricted, cathedral and bazaar epistemologies, and so on (Campbell-Kelly; Hafner and Lyon; Lammers; Rosenberg). Moreover, programming philosophers are hard to find when they work in industry rather than the humanities. Their ideas are mostly shared among coworkers in meetings, around the water cooler, and over lunch; when published, their voices are muffled by IEEE paywalls, and appearing in otherwise irrelevant blog postings. Their private musings might be found in source code comments, though most are uttered in strange languages like C++, sometimes doubly occluded on account of nondisclosure and superseded revisions. Letting the default prevail heralds the fearful consummation of Heidegger's dreaded conclusion to Western metaphysics.
Few critical theorists addressing the human situation with respect to technological media more compellingly evoke the serious need to study it, while at the same time harboring a fundamentally pessimistic outlook on the endeavor, than Friedrich Kittler in the preface to Gramophone, Film Typewriter. Even in translation, his argument that we have long passed the point of being able to take stock of our condition is doubly convincing, for its rhetoric appeals both to those who are ignorant of the technological details of the schematism of the perceptibility of technological media, and, it seems, more strongly prohibitive for those who do, better appreciating the enormity and thus rationalizing the futility of the endeavor. By default we foreclose focused study of TCP/IP or STL C++, and work with generalities like information, intellectual property, or the robotic moment (Floridi; Johnson; Turkle). Accepting with Hayles that we have already become posthuman, we cannot shun study of our machine others and maintain understanding of how they, and we ourselves, work. The crisis at the heart of the philosophy of computing is the dilemma between the incompatible epistemological imperative to comprehend the subject matter, and the reflexive avoidance to not look too deeply at it, to refrain from studying what is judged to be inscrutable and ephemeral anyway. Ong rejected considering programming languages as on par with 'natural' languages, mother tongues, but he missed the fact that programming languages, especially higher order, reflect their authors' natural languages. Nonetheless, he is not alone in handling code as a dangerous pharmakon, preferring human topics. Questions about whether C++ can be the most philosophical programming language despite its weak late binding capabilities, or whether open source methodologies are ethically preferred, are left to accidental philosophers, forming the default (Rosenberg; Raymond). The consequence of this avoidance, uncannily similar to the Heideggerian retreat of Being in the essence of modern technology, is that our intellectual trajectory has decelerated from mutual, symbiotic improvement as cyborgs intermediated with machine technologies, to bifurcating strata of humans getting dumber and machines getting smarter. Crises in education, shortages of STEM workers, fetishism of Apple products, addiction to Facebook, and dread of robots can all be seen as symptoms. To begin to extricate ourselves from this downward spiral is a task for the philosophy of computing when humanities thinking braves to not turn away from technological knowledge. Through developing a more finely nuanced conception of the human situation with respect to computer technology, humanity may alter its collective, long term intellectual course.
Critical programming is a digital humanities practice that privileges working code, both acts of software engineering to produce research results, and running iterative versions of those programming products to enact scholarship, research, and performance. It extends Software Studies, whose theorists identify 'critical software' as intentionally designed to foreground normalized understandings or reveal "the underlying construction of the user, the way the program treats data, and the transduction and coding processes of the interface" (Fuller; Manovich). It acknowledges with Critical Code Studies that programming occurs in socio-historical contexts, “the larger human and computer systems, from the level of the computer to the level of the society in which these code objects circulate and exert influence” (Marino; Montfort et al.). Finally, it foregrounds awareness of computing systems and architectures promoted by Platform Studies, emphasizing the materiality of code over the abstract mathematical representations of algorithms (Montfort and Bogost; Berry; Galloway). Critical programming combines all three to illuminate default forms of human computer symbiosis by complementing passive, consumer uses of technology, challenging face value, interface level interpretations, especially when offered in the service of philosophical thought, with active production of code. Kittler points out that soon after purchasing a typewriter, Nietzsche declared that our writing machines influence our thinking. Derrida mused at the interface level about the word processor archiving his thoughts about Freud that were themselves destined to be set in a book. Surpassing such consumer comportment characteristic of these print bound thinkers, programming philosophers write the code for their own language machines, illuminating the schematism of perceptibility of those interfaces. Doing philosophy through deliberately engineered, real time machine computation, eating ones own dogfood, as it is called in maker communities: with a nod to Nietzsche, this is how one may philosophize with programming.

Rekindling interest in learning programming among adults and promoting teaching as any other essential human skill like orality and literacy, humanity may alter its collective, long term intellectual course. My work involves software studies, critical code studies, and specifically programming as a digital humanities practice. Demonstrating through a portfolio of this and other software projects, my goal is to argue that software design and system implementation ought to be considered as legitimate accompaniments to more traditional forms of humanities scholarship. Therefore, I intentionally build the dissertation product by writing software, including the tapoc project along with symposia and pmrek.

References
Berry, David M. The Philosophy of Software: Code and Mediation in the Digital Age.
Bogost, Ian. Alien Phenomenology: or What It's Like to Be a Thing.
Campbell-Kelly, Martin. From Airline Reservations to Sonic the Hedgehog: A History of the Software Industry.
Derrida, Jacques. Archive Fever: A Freudian Impression.
Floridi, Luciano. Philosophy and Computing: An Introduction.
Fuller, Matthew. Behind the Blip: Essays on the Culture of Software.
Fuller, Matthew. Software Studies: A Lexicon.
Hafner, Katie, and Matthew Lyon. Where Wizards Stay Up Late : The Origins Of The Internet.
Johnson, Deborah G. Computer Ethics:Analyzing Information Technology.
Kemeny, John G. Man and the Computer.
Kittler, Friedrich A. Gramophone, Film, Typewriter.
Lammers, Susan. Programmers at Work: Interviews with 19 Programmers Who Shaped the Computer Industry.
Marino, Mark C. "Critical Code Studies."
Montfort, Nick et al. 10 PRINT CHR$(205.5*RND(1)); : GOTO 10.
Montfort, Nick, and Ian Bogost. Racing the Beam: The Atari Video Computer System.
Rosenberg, Scott. Dreaming in Code: Two Dozen Programmers, Three Years, 4,732 Bugs, and One Quest for Transcendent Software.
Tanaka-Ishii, Kumiko. Semiotics Of Programming.
Turkle, Sherry. Alone Together: Why We Expect More from Technology and Less from Each Other.

[Home]
Topic
[Literature]
[Significance]
[Framework]
[Outline]
[Timeline]


Related

Wiki: Abstract
Wiki: Framework
Wiki: Home
Wiki: Literature
Wiki: Outline
Wiki: Significance
Wiki: Timeline

Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.