everyone's a coder now: reading and writing technical code
DESCRIPTION
These slides were part of my presentation in session H.18 "Writing text, writing code, writing connections" at the Conference on College Composition & Communication (4Cs) in Atlanta, GA (April 2011). More information at http://bit.ly/gQpszQTRANSCRIPT
EVERYONE'S A CODER NOWREADING AND WRITING TECHNICAL CODE
JULIE MELONI
UNIVERSITY OF VIRGINIA LIBRARY
CCCC 2011 // 8 APRIL 2011 // ATLANTA
[email protected] // @JCMELONI
ABOUT CRITICAL CODE STUDIES
CONTEXT
N. Katherine Hayles on Media Specific Analysis:
“all texts are instantiated and that the nature of the medium in which they are instantiated matters”
From “Print Is Flat, Code Is Deep: The Importance of Media-Specific Analysis”
ABOUT CRITICAL CODE STUDIES
CONTEXT
Lev Manovich, Matthew Fuller, et al
• We investigate and interrogate cyberculture, digtal culture, new media – the effects of software – but not the cause of those effects.
• Look at the programs that produce those outputs, through “software studies.”
ABOUT CRITICAL CODE STUDIES
STILL A PROBLEM
No one was looking at the code.
• Binary or Machine code
• Assembly languages
• Procedural languages
• Object-oriented languages
• Declarative programming
• Literate programming
It’s like living in the Roman Empire
without knowing Latin.
CRITICAL CODE STUDIES WORKING GROUPSix weeks in Spring 2010 • Critiquing viruses• Annotating code• Live reading live code• Investigating “who reads code”• Interrogating “what is code?”
CRITICAL CODE STUDIES WORKING GROUPCritical Methodologies• Context of the software
• Coders, development history, funders, research questions, language, paratexts, social and economic effects
• Software itself• Procedures, structures, programming paradigm
• Individual lines• “elegance”, whitespace, clarity, variable names,
methods and functions, efficiency, recursion
CRITICAL CODE STUDIES WORKING GROUPCritical Methodologies• Issues for Consideration
• Social implications, world representations, aesthetics, impact on race, gender, ethnicity, sexuality, socio-economic status
• Tactics• Reading form vs content, considering
implementations in multiple languages, reading code against output, reading instructions against data, reading code against real world processes
THE PROGRAMMER’S OBJECTION
“those who have more experience or even make a living programming
or teaching programming worry about making ‘too much’ of
particular lines of code”
A call for a more rigorous examination of the code itself: the context, clarity, efficiency – what non-programmers
aren’t wired to examine.
WHO READS CODE?
mathematicians reading for beauty
craftsman reading for elegance
customers reading to make a purchase decision
managers reading for quarterly job evaluations
hackers reading for exploits
amateurs and hobbyists and students
...making their first web page
...copying some other script kiddy
...or just trying to learn to think differently
lawyers and expert witnesses
...looking for a DUI acquittal in a breathalyzer
...impugning the code or security of a voting machine in a recount
...trying to define an IP violation in an open source OS
easter-egg hunters
...collecting trivia from code
...harvesting data and media assets from code
...indexing business contacts from code
...participating in ARGs and viral marketing campaigns in code
WHO READS CODE?
Everyone reads code because code is all around us.
source code written and read by humans ->
compiled code executed by machines ->
"technical code" or “the unexamined cultural assumptions literally designed into the technology
itself“
From Andrew Feenburg’s Alternate Modernity
WHO CARES ABOUT CODE?
Is the (technical) code• functional
• virtuous or deceitful
• conscientious or negligent
• egalitarian or discriminatory
Community Practices:Sharing code / Performing code / Forking code
WHO WRITES CODE?
Everyone writes code, knowingly or not.
REMEMBER, WE BUILT THE MACHINESHuman-Computer Interaction• an attempt to discover specific methods for the efficient and productive use
of machines based on the ways in which humans interact both with machines and with each other
Achieving Symbiosis as a Goal• "men will set the goals, formulate the hypothesis, determine the criteria,
and perform the evaluations" while the machines "will do the routinizable work that must be done to prepare the way for insights“ (Licklider in 1960)
Man must architect the system before the system can function.
To "architect" is to plan, organize, and (finally) build a machine, system, or process.
We all do this, knowingly or not.
CONTINUING ARGUMENTS
• Despite different audiences, intent, and perlocutionary effects, writing and code both represent and construct the world.
• Composition and rhetoric (as a field) has much to offer the world of programming.