From now on, you can read about my adventures in programming here:
The next day, I decided to take matters a bit more seriously and do some ground research to find out which programming language I should choose from. From what I understand it, programming has various layers and many different languages can be stacked on top of these layers. Like if you imagine a computer and the internet like a cake, only the top layer will be, lets say, written in the programming language of ‘Java’ and then the other layers of the cake under it, will be made up of other protocols (which seem to be sort of recipies of how to get things done), and other languages that make up these protocols.
Now what I just said might be completely wrong. I decided that during this long learning process I will pick up bits of knowledge and piece it all together as I see fit. And despite the fact that it all might be rubbish, this process of writing-it-all-down will help in my sense-making and making-sense of it all.
So I decided to speak to two of the most nerdy and connected computer guys I know: a Hamburg-based open-knowledge activist and a Croatian hacker.
So today at 9am and I was waiting for the train to take me to work. I randomly bumped into my open-knowledge activist friend on the platform, almost as if I summoned him to answer the questions roaming around in my head. “So what language should I start to program in? I just played around with Java yesterday and really learned a lot!” He scrunched up his face and started shaking his head. “Nope. Use Python. Python is less evil than Java. It’s framework is a bit more open.” I paused and stared off into space, thinking to myself “Less evil? Why would a program be evil? And what does ‘more open framework’ actually mean? And how to respond to him now without looking like a complete loser?” I decided to avoid responding at all and continued to stare off into space and nod until the conversation dissipated.
Later on in the afternoon, I sat down with my Croatian hacker friend and he tells me this: “start coding something that makes sense to you. Start with building something. Don’t start doing it if you don’t have a purpose. Because coding is just like bad socialist beurocracy. You go to a counter and hand in a form, and the lady behind the counter says ‘no’. And you get angry. And when you ask ‘why ‘no’? They reply by saying ‘just, no.’ And you then feel like banging the wall with your head. Its the same with programming. If you get stuff wrong, you’ll just get frustrated and not really understand ‘why’ its actually wrong. This will happen over and over again.”
He then continued to explain to me what open protocols are in the context of alternative currency transaction systems (like Stellar.org), and mentioned things like decentralized networks and consensus mechanisms. My brain retained something, but mostly started shutting down after the first 3 minutes of his talk. Thank you croatian hacker, but I am still not there yet.
After 5 minutes into the “programming basics” website (see previous post), I really thought it might make sense to also pick the brain of my developer friend. So I messaged my dear friend Ori who works as a software developer in Berlin.
So I have been working at the Digital Cultures Research Lab for about 16 months now, surrounded by a slew of philosophers and historians jumping up and down over terms like ‘algorithm’ and ‘infrastructure’ and ‘interface’. And all of this jumping around got me frustrated because I couldn’t really jump around with them. I couldn’t (and still can’t) get myself excited about all things theoretical and digital. Mainly because I couldn’t understand what the heck they were talking about. And I don’t mean theoretically. I mean practically. What is a program? What is an algorithm? What happens when I type this, and then this send to some sort of server and then comes back to you and splatters itself on your screen? I also began thinking of the majority of the population who has no idea how this world is run. We have a vague idea about how a plant moves through photosynthesis, or how a bridge is built. But a mobile phone application? So before getting too annoyed, I decided to go back to the very basics and understand how to program. In the middle of a reading group about the “history of the programmer” (where we were discussing a new text by a Swiss historian of technology who wanted to uncover the industrialization of the programer/developer), just as my colleagues were talking about how the programmer came to be a figure who got the computer running, I started well, running… out the door and back to my computer to look at way I can start to understand what a programmer actually does.
So yes, I literally ran out the door, plopped myself in front of my laptop, and typed “learning how to program” into the google searchbar. And I came up with this amazing little tool: http://www.programmingbasics.org
The website is designed with the principle that “there are a lot of barriers that confuse beginner programmers and discourages them from starting lessons. These barriers should be reduced as much as possible.”
Good thinking guys.
In a matter of minutes I started punching in brackets and semi-colons, and forming commands that would make an animated robot wave his hand, jump up and down or clap his limbs. I felt excited. This robot was my robot. I made him live. I gave him the ability to move through this world. I was the queen of everything!!
I imagined this to be the sort of excitement every developer feels when they get their commands right.
Another thing I learned that a command after a command after a command is a program. Wow. All this in 5 minutes?
As a sociologist plopped into an interdisciplinary environment run mainly by media philosophers and media historians (Digital Cultures Research Lab where I’ve been working for the past year), I was surrounded by questions that made me re-think the way in which basic social problems come to exist. The problem I was recently trying to unpack was one of sharing – a sociological (as well as economic and anthropological) problem which can be linked to all sorts of notions of kinship, gift-giving, markets, trust, friendship, and reciprocity, among others. I stumbled across the idea of sharing and reciprocity during my doctoral work, where I spent a few years conducting ethnography with couchsurfers and ride-sharers who told me a bit or two about the values of reciprocity, and what sharing was really all about. But along came these media studies and software studies nerds and told me that media, interfaces, and software, as well as the geeks who make such software, do indeed largely contribute to what is being shared, with whom, and for what purposes. If anybody out there has suggestions on great ways of unpacking the technological infrastructure that influences our social practices – (STS folks, ANT folks, software studies folks?) – let me know.