As Jason Jones said in yesterday’s post, “Doing it Wrong”, ProfHacker is not about telling anyone they’re “doing it wrong” or that they should change from “old” ways to some newfangled glitzy technicolor “new” way. But since most of my days are spent embedded in development of “new” ways of interacting with cultural artifacts—texts, images, and even code itself—I figured I’d get a little meta in this space. I’m going to discuss why the heck I’d ever teach programming concepts (and code) to humanities students.
As students find themselves enmeshed in electronic information networks, it becomes necessary to investigate and interrogate how these networks and methods of information organization, storage, and retrieval permeate their lives. I stress the importance of understanding the social and cultural role of the information and systems that surround them (us) and the usefulness of understanding the rhetoric of the code that shapes these systems. The next logical step is to teach them to produce this code themselves, and then continue on to create new systems that (re)present “old” content in “new” ways—for me, this means literary texts (with a little history thrown in for good measure).
This grand plan harkens back to Matt Kirschenbaum’s January 2009 CHE article, “Hello Worlds” [paywalled], in which he reflects on his time spent in programming classes learning the fundamentals such as “variables, arrays, sorts, conditionals, operators, and the like,” but missing the “historical and intellectual context for why bubble sorts and do-while loops mattered.” Coming from an industry background, I have seen many (not all, of course) programmers and developers of information systems who are spectacular at coding bubble sorts and do-while loops but don’t have the foggiest idea of how their bit plays a role in the greater system they’re creating. In that situation, they have little real control over the system—of that world. But if we can turn the lesson inside out—dissect the model and close read the code—then the student can begin to conceptualize the interactions, intersections, and movements of information, all the while being reminded of (and picking up on) the underlying programmatic constructs used to represent that world in some tangible way.
From Kirschenbaum’s “Hello Worlds”:
“Computers should not be black boxes but rather understood as engines for creating powerful and persuasive models of the world around us. The world around us (and inside us) is something we in the humanities have been interested in for a very long time. I believe that, increasingly, an appreciation of how complex ideas can be imagined and expressed as a set of formal procedures—rules, models, algorithms—in the virtual space of a computer will be an essential element of a humanities education. Our students will need to become more at ease reading (and writing) back and forth across the boundaries between natural and artificial languages. Such an education is essential if we are to cultivate critically informed citizens—not just because computers offer new worlds to explore, but because they offer endless vistas in which to see our own world reflected.”
Fifty years ago, computer scientist J. C. R. Licklider described a goal of achieving symbiosis between man and machine, in which “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”. In other words, man must architect the system before the system can function; “architect” is used here to encompass the multiple tasks of planning, organizing, and (finally) building a machine, system, or process. It’s true, I want my technologically-inclined humanities students to become architects—some students will focus on shoring up the foundations of buildings that already exist, and some will set out to create a structure not yet encountered in the wild. None of them will get there just by working through rote, uncontextualized programming exercises. None of them will get there just by screwing around on the internet. All of them can get there with a combination of programming constructs, creative and generative activities, imaginative play, and through an understanding that “interpretation takes place from inside a system, rather than from outside”.
Thusly armed with enough knowledge to realize that they could do something useful with a million books and a billion tweets, I want these students to take their happy humanist selves and get excited and make things. A world perhaps different than a scientist or engineer would create, but one no less worth exploring.
Oh, the “Screwmeneutical Imperative”? That’s from Stephen Ramsay’s “The Hermeneutics of Screwing Around; or What You Do with a Million Books”, a draft essay for the Playing with Technology in History conference, in which Ramsay asks “whether we are ready to accept surfing and stumbling—screwing around, broadly understood—as a research methodology. For to do so would be to countenance the irrefragable complexities of what ‘no one really knows’.” Uh oh!
The first image above is of a manicule drawn in a 1475 commentary on Aristotle. If you look closely at the screenshot, you’ll see the mouse pointer touching the inked index finger; our new technology isn’t so new. The mouse pointer is just a skeuomorph.
The second image above is of the anatomy of a tweet. As Dan Cohen said, “If all Twitter objects are this verbose (i.e., so much metadata in each tweet) historians will have a field day.” If they know how to control and transform the data, that is…which is why we teach programming.