index2019-02-28

week 5: preparing for teaching as art day

In leading up to this workshop I have been thinking a lot about computation as metaphor. I’m having a moment where I believe all computational processes to be always and already built on top of metaphor which in turn requires that programming, as we know it today, be a set of abstract concepts.

By this, I mean that if computers at their core are just complex sets of on and off switches then coding requires that we abstract away those complexities in order to have our computers do what we want them to do.

Enter the GUI. A file inside a folder on a desktop. The office metaphor, one which we will never get away from. But what is the file really? And what is the folder? I just learned that folders aren’t actually anything. They don’t take up any space on your computer.

Since folders and files, which if we looked closely at them might not resemble anything close to a piece of paper inside a folded piece of paper, are already metaphors for underlying computational processes and therefore already abstractions of code required for physical computation to occur then the feeling of control that we as users of computers have is an illusion.

I think it’s important to note this illusion. I think having an illusion of control leads programmers down a potentially dangerous path. Programmers, through the creation of complex processes and algorithmic systems go through so many hurdles trying to get the computer to do what they want it to do. When the computer finally obeys their commands they are granted with this feeling of immense gratification and power.

I’m wondering, if the process of programming a smartphone application, for instance, is rooted in notions of command and control and illusion and power, does this make for potentially dangerous results? Does it perhaps mean that programmers get so caught up in the power dynamic between themselves and their computer that they lose sight of how what they’re doing lives in the real world alongside real humans?

What would it mean if programmers had to manually move the switches to on and off positions in order to make their program work? What if programmers had to press the keys of their keyboards so gently that it required them to move extremely slow and therefore with care?

Enter hand coding. Hand coding is the process of development that brings the gap between you as the programmer and your computer, specifically your browser, as the performer of the program. The code you will write in this workshop will be very particular and you will write out each character slowly and by hand, no copying or pasting. You will also do this on each other computers - the intention here is to perhaps erode this feeling of ultimate control that you have over your computer’s system and to move carefully around someone else’s.