Programming for Programmers
When Steve Klabnik walks onto the back patio of Fritzl’s Lunch Box in Bushwick to join Tyler, Gregg, and me around a rickety table, it’s as if we already know each other. In a way, some of us do — the way you can know somebody from the Internet. But Steve also carries himself with welcoming assurance. He’s wearing his typical outfit: a black hoodie and skinny black jeans. The mohawk that used to get him confused with Skrillex is gone. He sits down resolutely, responding to Twitter with one hand, ready to be bombarded by questions both from us and his followers.
Steve is one of the world’s leading Ruby on Rails committers. Last year, he made over 1400 public contributions (“Wow, I’ve been slacking off, it used to be 2300”) and is the 200th most active GitHub user. He has built numerous Ruby Gems, and works as an educator for several projects. He taught programming at Jumspstart Lab. He’s spoken at countless conferences around the world, and recently started working for Mozilla to produce documentation and the original tutorial for the less-known programming language Rust.
Ruby on Rails, or Rails for short, is an open source web application framework which runs on the Ruby programming language. If you’ve visited Basecamp, Hulu, Scribd, Slideshare, Funny or Die, GitHub, or Twitter in the early days, you’ve used web applications built with Rails. The software that powers Mask Magazine is also built with Rails.
Besides being a prolific programmer, Steve is an outspoken anti-capitalist and Deleuzian who reads lots of philosophy. For example, he published the text “Deleuze for Developers”. Yesterday, he launched a new blog exploring the intersection between philosophy and technology: metaphysics.io.
Being a public figure in the tech world and advancing a public political agenda is uncommon among most programmers, so it’s not surprising he often finds himself in heated Twitter arguments. Accordingly, while we order food, Steve’s phone lights up over and over with notifications.
What’s today’s Twitter controversy?
I’m caught up in this argument on Twitter with a bunch of people. It’s about whether you need to study theory to become a programmer. People only see the first half of the problem. Yes, you don’t need to study theory to become a programmer, that’s not what I’m talking about. To make a terrible analogy: nobody expects plumbers to have a physics degree but they do have to know some things about water physics, and that can be learned in a way that doesn’t necessarily involve getting a physics degree. And that is super cool, totally valid, and not a problem. But that doesn’t mean that physics degrees are bullshit or not useful to plumbers.
How do you like Brooklyn?
Brooklyn is amazing and wonderful. New York City in general is. I’ve learned that I need variety, and you can definitely find that here. It’s kind of a country of it’s own. At some point, Bloomberg said that if the NYPD was an army, it would be the 7th largest army in the world. [Turns out it wasn’t true,] but in a certain sense, that’s the scale of New York — it’s massive.
I often pick a new neighborhood and just go to work out of different coffeeshops or parks. I realized they don’t turn off free wifi when the stores close so I’ve sat outside of Macy’s on 34th St at like 4:30 AM programming away, because why not?
Steve is originally from Pittsburgh, PA, and admits that, technically, he started coding at age 7. But he doesn’t really want to talk about that.
I kind of shy away from that fact because it perpetuates this bad stereotype. There’s this weird fetishization of young people who are good at programming and who end up being programmers. The programming I did from age 7 to 22 is worth the same amount of time as the programming I did from 22 to 24. One year during that time period isn’t qualitatively the same as one year of time in my adult life. I know a lot of people who started writing code in college who are really good programmers.
How did you become interested in philosophy and anti-capitalist theory?
I’ve always enjoyed intellectual stuff and been a theory-inflected person. But I started taking that more seriously when several personal events in my life eventually led to me being an anti-capitalist. My anti-capitalism is intrinsically tied to my interest in theory.
I was raised republican and Catholic and never thought critically about it. I like to joke that libertarians are republicans who met a gay person they actually liked. I became a libertarian in college when I made some gay friends.
I also almost married this girl I went to high school with and she left me for someone in World of Warcraft. At that point I decided that I needed to reevaluate my life. Laughs. When I came to think about it, I realized that I’d only ever assumed that all these things I thought of the world were true, because they were told to me and I never bothered to question them. So I decided to be a hard core libertarian.
The very first instance that led to me to becoming an anti-capitalist was that I was reading some stuff and had this epiphany. I thought, the fundamental problem of the world is definitely the accumulation of wealth; that’s totally a problem, and libertarians should figure out how to fix that. I didn’t really understand what a big idea that was. I'd never read any Marx or anything like that. I was totally ignorant but semi-independently I decided that that was the problem.
Our grilled cheese sandwiches arrive.
So then the G20 came to Pittsburgh, and I went to it. I didn’t really know what the G20 was, but the fact that people felt the need to fight cops over it meant that it was probably a big deal. As a libertarian, I vaguely didn’t like the cops already. Because I’m a nerd, I dressed like this.
Steve points at his clothes. All black.
I had no idea that the black bloc was a thing, and I showed up to a G20 event dressed for the black bloc. Little idiot me.
Did the other kids recognize you as a friend?
Yeah, kind of. On the second day, an illegal march happened. I showed up and saw a bunch of college kids gathering. I watched as the cops started lining up on one side of the park, then I watched them line up on the other side of the park, and I realized it was getting bad. Suddenly I get a tap on the shoulder, and these four women from the bloc were standing there: “Hey, where’s everyone at?” I thought: me?! I don’t know anything! I was looking for all of you! They were like, “This is bad, we gotta get out of there.” So we left, but a bunch of other kids got arrested.
I ended up being one of the first American citizens to have a sound canon aimed at me. The first time they used it outside of Iraq was on me. And tear gas, and rubber bullets, and all those other things.
At the time, I didn’t really agree with all the people waving their anti-capitalism flags, but I had never really considered capitalism to be anything but ‘the way the world works’. These people cared about this enough to get shot at by cops. I figured I should probably try to understand their arguments — even if I disagreed with them — just to make sure that I understood why they cared so much.
I was also into ‘citizen journalism’ at the time. So I was tweeting about where stuff was going on — reporting from the ‘citizen’s perspective’, or whatever. I ended up befriending this English professor who was also active on Twitter at the time. This was in 2009 — Twitter was a lot smaller then.
I ended up meeting up with her, and she always managed to recognize when I was saying something ... ‘pro-capitalist’. Instead of telling me to get out, she was like: “Why don’t we read the books together?”
Were you in college then?
I dropped out of college, actually. I ended up finishing my undergrad later, but I would have been a senior in college at the time. I dropped out to launch a startup, that’s what I was doing.
So the English professor told me, “Here’s what we’re gonna read: Nietzsche, Foucault, and Marx.” So I stumbled through all of those. Eventually I realized that Marx was saying all these things I had been thinking independently. And I thought, “Well, I guess capitalism is bad”. I've been on that side of things ever since.
Oftentimes people pretend they’ve always thought the way they think now. They don’t even want to admit that they once had different opinions.
Oh yeah. I advocated for tons of things that were completely, ethically abhorrent during different periods of my life. This is one of the reasons why I’m so scared of them keeping data on everything. There is one person who specifically pulls things I said in my past and tries to make me look shitty with them. And it sucks. I’m not for those things anymore. For most people, that’s called growth and change. But it’s called ‘inconsistency’ by jerks.
[Tyler:] Eventually, as this public data record builds on the web, I think that people will care a lot less about somebody’s record in terms of consistency over time. Everybody will know what it’s like to have been naïve in public.
Yeah, but there’s going to be a lot of pain and suffering before then. In a generation or two that might be true, but I’m going to be dead by then.
After doing more and more reading, I actually tend to identify more as a communist than an anarchist. Which a ton of anarchists consider treacherous bullshit. Honestly, I mostly roleplay being a communist, because it’s so shocking to most people. I don’t actually believe existing communist movements are the way forward, but it’s much easier than trying to explain Deleuze and Guattari’s views on identity, and so on.
That’s one of the reasons the United States is so fucking reactionary, we don’t have any real Left here. The anarchist movement is so fractured and fragmented. Most people don’t experience regular old boring interactions with people who are genuinely Left. I enjoy roleplaying a more traditional extreme lefty. I also know the counter-arguments well enough because I’ve made them myself in the past.
I grew up in Finland and moved here in 2009. The absence of the Left here surprised me. Many of my friends at home see themselves as ‘non-parliamentary leftist’ or just proper leftists and not anarchists. There’s just a much stronger tradition of economic critique and analysis. The anarchist tradition is not as strong there, it’s more rootless.
[Tyler:] And the State also permits so much less interesting things for youth to do here. In Europe, the State gives grants for social centers, consequently people develop political goals that don’t really involve confrontation with the State. They end up being more traditional Left even if they believe they are further out. Whereas here, if you want a scene, it has to be a DIY scene.
You can even take it back to the foundations of the country, when a bunch of rich people were sick of paying taxes. Like, that’s what it was. That’s why we’re a country.
The Fourth of July just happened, and it’s one of the two days of the year when people get the most upset at me on Twitter.
What’s the other day?
Christmas. I hate christmas. And Fourth of July. Christmas more, Fourth of July ... a little less. My parents have always told me, “never lie to anyone”. It backfired on them when I decided all their ideas were wrong. When my mom emailed and asked me where I was going to watch the Fourth of July fireworks, I told her, “Mom, the only thing I can think of is a hundred thousand dead women and children in Iraq, and millions of dead Native Americans, and tons of terrible things all over the world. So I don’t see any reason to go watch the fireworks, I’m sorry.”
That kind of attitude usually means people get real mad at me on Twitter. Last Christmas I tweeted “Happy lie to your children about a man breaking into your house last night day”. People got really upset. I have a friend who went through this problem with their kids. She has decided not to lie to her children as a categorical rule, so when Christmas started to become a thing and her kids asked her about it, she told them, “OK, we need to keep a secret together, because you’re going to get me in so much trouble. This is going to sound totally crazy, but all the other parents lie to their children about this man breaking into their house and leaving presents, and it’s stupid, it’s not real. All the kids are gonna tell you it’s real, but one day they’ll grow up and find out that it’s not real and it’s gonna be a giant problem.”
So of course her kids went and told the other kids, and all these parents told her she was a shitty parent. But how was she a shitty parent? She wasn’t lying to her kids. She was like, “These are human beings who are relying on you for everything in their entire existence. You’re fundamentally violating their trust, how am I the fucked up person in this relation?”
It’s funny seeing it like that. Of course it sounds crazy to a kid, but I don’t remember having that broken to me.
When my partner found out that Santa Clause wasn’t real she was like, “Oh, God’s not real either!” and her parents were like, “– no, no. That’s totally true”, and she's like, “Eeeh, I'm not going to be fooled by you twice!”
When did you decided to move to the West Coast?
I lived in Pittsburgh almost my entire life. I was actually supposed to move here when I went to California, but then I tweeted “I'm moving to Brooklyn because I wanna leave Pittsburgh and I don't know where else I should go, and I like Brooklyn, so what's up?” And my friend said, “I really need a roommate in Hollywood,” so I changed my flight and went out there, to the Farmhouse.
What’s the Farmhouse?
The TL;DR is that my house has a website, farmhouse.co. Back in the day, Los Angeles used to be a bunch of farms. Hollywood had avocado groves, and the Farmhouse is a house in Hollywood that survived since those days, it was literally a farmhouse. It’s this old house and a two-story tall avocado tree. It’s a very stereotypical punk house — some people are kind of living there, kind of not, and some are there to work on various projects. It’s great. I eventually had to leave because I was running out of money. I had been doing work that was primarily open-source, and that meant I was taking a salary that was OK in Pittsburgh, but when I moved to LA rent took 50% of my income. I couldn’t afford to stay and keep doing that job, so I chose the job.
Having accelerated rapidly through his career as both a programmer and an outspoken political voice, making tough adjustments along the way, I can’t help but wonder if Steve has moved from place to place as a way of purging old selves. I imagine Steve ends up being a token anti-capitalist among programmers and a token programmer genius among his political friends, and that he’s become such a charismatic diplomat as a result of always being at work for one side or the other.
How do you work?
When I quit my last job to return to contracting, I jokingly told my old CEO that I would like to disassociate all time and space requirements from what I need to do. I don’t really have a typical work week. I will work a ton some day, and not at all for a little while, or switch between projects and do different things. Sometimes I find myself in other countries last minute — that has happened several times. I travel a lot, to speak at conferences but also because I like moving around.
I have to live by my calendar, I don’t know what day it is half the time. I made it here on time because my phone buzzed an hour ago telling me to go here.
Is that a result of being somebody who works in code, or is it your natural inclination?
Living under capitalism is stressful; it demands that you sell your labor-power on some sort of hourly or salaried basis to someone else. That just doesn’t work for me. This last job I had was a nine-to-five job [at Balanced that] I took to see if I could handle it. I lasted six months. And I got actually, for-real depressed. They’re awesome, it’s not a problem with them. I’m used to living this way. The job I had before Balanced had no formal job requirements. Once you experience that freedom it’s really hard to give it up.
People always tell me I’m super productive and I always feel really lazy. I know that by most objective measures I produce a lot, but right now I know I have 8 emails I’m supposed to answer in my inbox, and I was supposed to write something earlier this week, and I have a lot of other things I’m trying to do that are not done yet, so ...
[Tyler:] Most people have hundreds or even thousands of unread emails, and they know they have maybe a hundred in there that are really important, so they’re afraid to even look at it. Eight’s not that bad. People fantasize about eight unread emails.
Some people are into the Getting Things Done methodology. Tyler and I have our phases with it for different stretches of time, and it plays a big role in how we organize our work.
I’ve read all of those books.
It’s as if to get something done without the drive to be a good worker, you need to boss your future around sometimes. You have to implement all these systems just to know when you’re working and when you’re not.
I always try to tell other people this, and to remember it myself: productivity is a capitalist measure of value. Fetishizing productivity is really harmful, because who decides what is productive? What type of labor is and is not productive is an inherently political question. Most of the time, the answer to questions about how to be a better worker are essentially about how to make more money. So I think there’s a bit of danger in being all pro ‘lifehacking’. For me it was more that I started to hurt people I cared about because I didn't show up to their thing. Or, I scheduled brunch with two people at the same time. So I just made myself keep a calendar because I recognized that I was being an asshole. It's not like I was trying to be one, it's just that I was being scatter-brained and it didn't work.
The only thing I do productivity-hack-wise is I turn all email notifications on, and then use Gmail filters super aggressively to keep them out of my inbox. The only thing that hits my inbox are new or unique emails. Rust gets about 200 to 300 emails a day from GitHub. None of those ever hit my inbox, they go in my Rust folder and I check it a couple of times a day. I’m super email-focused and use email as a todo-list. It’s not really anything formal, I just try to keep on top of it as much as possible, and doing a little bit often keeps it from becoming unmanageable.
You’ve become a big advocate for Rust, and you’ve started working for Mozilla to produce documentation. What excites you right now about the future of your career?
I like Rust for a number of different reasons. Mostly, I see it as a natural next step for me.
I’ve come to understand that my function is to go read all of the weird theory stuff and write all the secondary literature that applies the theory in a way that people can understand.
If I make Rails better, and a lot of people make a lot of rails apps, my influence is amplified. That’s why I’ve enjoyed doing educational work as well. I was into education, because I realized that if I can teach a new programmer every day, and they go do stuff, the result is way more code than I would ever be able to write myself.
That’s why I’m excited about Rust. Rust is specifically taking advantage of lots of ‘new’ computer science ideas. It’s called Rust because there are no new ideas in it. But the funny thing is that the industry is so backwards that our mainstream programming language technology is literally 40 years old. Ruby’s garbage collection technology was described in a paper in 1968. The newest thing in Rust comes from Cyclone, which had its paper published in 2001 or something. So by building the best programming language that the year 2000 had to offer we are far, far ahead of what other people are doing. And it’s bringing more and more of the theory that is useful into the hands of regular everyday programmers.
For example, the person who made the idea of ‘null pointers’ called it “my billion dollar mistake”, and Rust eliminates the concept of null pointers altogether. You can only eliminate that concept by adding in a bunch of theory of linear and affine type systems, which is, whatever, theory. The point is there’s some theory you don’t really need to understand to get the benefit of that theory. So Rust is bringing these ideas that are newer than what most other languages use, to a wider and more mainstream audience. There are some other languages that are doing that too, but Rust has the right timing, backing, community, and buzz to be successful. I’m basically picking it because I believe it’s already destined to be a winner.
And maybe you can play a part in it becoming a winner?
Yes. I’m writing the introductory tutorial right now, and so if Rust replaces C++, my words will be explaining systems programming to every new systems programmer for however long that is.
It starts raining, so we pack our stuff and move inside. Steve orders a limeade.
This is a terrible analogy: but like hunting, my job is to go kill the theory bison and then drag its carcass back so that everyone can eat it. That’s what I’m good at. So that’s what I’ll be doing, whatever I happen to be working on.
I really liked how you used Deleuzian concepts as a way to help startups and organizations understand the value of openness at your keynote at the API conference. I’m wondering, do you promote Deleuzian concepts because you find them intrinsically good, or as something we must adopt not to be eaten alive by conglomerates?
This is the ultimate question of the Left, right? I don’t necessarily know what to do. In the sense of Deleuze, specifically, it’s more that I enjoy the result of thinking about the world through his eyes. I think that’s useful in and of itself. Even if it means that we are building systems that aren’t necessarily ‘the best’.
I do think that capitalism will collapse. I do think that we need to do something to get it to collapse. But I don’t know what that something is. I don’t think that means you should do nothing. You should do a bunch of stuff and see what happens. I don’t have any sort of grand master plan, I’m just trying to do things I think are good. A lot of it involves bending these organizations.
For example, as a publicly traded company, Twitter is ultimately problematic, but if I can get them to be a little bit open... It’s almost like harm reduction. I’m not trying to help Twitter become a better capitalist entity, I’m trying to help them harm less people, while they’re doing what they’re inevitably going to do anyways.
You blog quite a lot. What role does your blog play in your life and work?
I’ve had a number of different blogs, and as I told you I’m starting a new one. For me, blogging is a way of recording stuff I want to save for later, and/or working through an idea. I’ve written technical blogposts and then a year later googled and found my own blog post, and been like ‘Thank you, past me!’ Regarding the more political stuff, it usually starts with an argument I’ve made in conversations several times, and then decide to make a blog post out of. That way I can just point to the post instead of repeating myself. If I’ve made the argument a couple of times, it’s probably good enough for the blog. So it’s a way for me to record my thoughts and avoid regurgitating myself over and over. But a certain amount of regurgitation is good because that’s how you develop ideas.
Who reads your blog?
There’s an inverse proportionate relationship where more people like the technical stuff, but people who like the political stuff like it more, there’s just a lot less of them. When I write about Deleuze and programming, I know five people who will get super jazzed about it, but we are the five people. But when I write some stupid post about Ruby, a few thousand people read it. I’ve had people ask me to silo off different kinds of content, that they only want to hear what I have to say on programming and stop talking about your politics. But I’ve refused to do that.
Our phones beep: flash flood warning. The rain starts falling heavier outside.
First of all, you can’t separate those two, and secondly, that’s on purpose. I will write lots of boring technical posts so that people subscribe and have to at least click through some Lefty propaganda they wouldn’t otherwise read. It kind of goes back to me playing the communist. I think there’s something valuable in personalizing it.
One of the things that’s hard about real-world activism is the social expectations we’ve developed in the activist community which say that if you talk about an action you went to, you’re probably a cop. And that’s a good thing, but it also means that we have no way of communicating these situations to other people. I decided that I’d rather talk about situations that I’ve been in previously as a means of personalizing them. When I tell people that I was hit by a sound canon by cops, they now know someone that it actually happened to. When they see those things happen on the news it’s not some abstract person, it’s me in a way. I think that’s useful.
What are you reading right now? Or what are some texts that have been important to you?
I should be reading Capital by Pickety right now. I finally got a copy, and because he states his conclusions so early upfront, I read the first three pages and I thought, “Do I want to read these 700 pages? No. I already know what your point is and what you’ll end up saying.” I just finished What is Philosophy by Deleuze and Guattari. It’s the last thing they ever wrote together, and it’s sort of their model of what philosophy is. Which is to create concepts. It’s not a love of concepts, it’s concept creation.
I’m taking a small hiatus from reading right now to finish up a lot of my writing. So I’ll start reading again in a month or so. But I think that anybody who considers themselves vaguely Left should read either the first three chapters of Capital Vol. I or Wages, Price and Profit, which is the same idea but a little easier to digest. I really love Ursula K. Le Guin. Especially The Dispossessed, which is one of my favorite books ever. And The Left Hand of Darkness.
It starts pouring outside.
Wow, maybe this flood warning was not totally ridiculous. I live in a basement so LOL.
Last question: what do you think about the future of open source?
Open source is a mega-capitalist conspiracy to reduce programmer wages.
In the 80s, there was this thing called the free-software movement, and that was about the ethics of software; making software free had nothing to do with money but with ethics. Other people came along, and they removed the ethical aspect of it and made it solely about the monetary aspect.
The free-software ethos and the founders of the open-source movement are mega-racist, libertarian people, and so it’s always really weird to me that a bunch of Leftists are so into open source; it explicitly manifests capitalist social relations.
With that said, I think there’s a bright future for open source, because it’s yet another method to drive down costs. They can earn more money off of the stuff that we produce. Like, I still have $52,000 in student debt, and I’ve made a bunch of people super rich — the same is true for everyone who lives under capitalism, but for me it’s very acute because I’ve worked on all these open source projects.
The other day, I was hanging out with two people and there was somebody using a jackhammer outside where we were. I said, “Nobody asked the jackhammer dude to work on an open jackhammer project on Saturdays, that would be totally absurd.” But that’s what we do. Programmers as a class systematically devalue their own labor, doing it for free without even being asked to.
It’s not universally bad — it’s really cool that you can get all this software for free. But, value is being generated from your labor and it’s not being captured by you, and that’s unsustainable. I’m only able to do open source work now because I’m getting a real salary from Mozilla. They’re a one-of-a-kind organization that can afford to pay people for open source stuff, that’s their entire mission. But the whole world can’t work for Mozilla.
Having an open source portfolio has become a job requirement. We’re self-selecting the people who are willing to work for nothing and giving them a leg up in the employment process, which has all sorts of detrimental effects in skewing the population of who’s a programmer and who isn’t.
Like the internship economy.
Exactly. If you come from a good-off family and you can afford to not work for a year to take an unpaid internship, then you get a job. Super similar to that. But programmers have zero class consciousness. If the American proletariat does not have a class consciousness, programmers have negative class consciousness. We even acknowledge that people fuck us over all the time and then do absolutely nothing about it. And we actively harm the attempt to fix the problem. If you mention the word union around programmers, they start frothing at the mouth. But people complain about their boss sticking them over all the time.
That would be such a great story. Programmers unionizing. Workers of the world, "Hack the Planet".
It’s a hard argument to make because being a programmer is a relatively well-paid profession, so when I tell people “You should be paid more than $150,000 dollars a year like you currently are,” they’re like, “You sound greedy.” No, the point isn’t whether you’re making enough money or not. The point is that you’re making millions of dollars to your bosses. The reason you can get paid so well is because there’s lots more up there.