It’s not magic: For decades, Ellen Ullman has lived, coded and written through technology’s transformation. This week she sits down with Paul Ford and Gina Trapani to talk about how the past shapes the culture of tech. Ullman’s Life in Code is a memoir of a career spent in communion with computing, but often at odds with the culture around technology. We talk about sacrificing deep understanding for expediency, our expanding proximity to hardware, technology’s woman problem, and about obsessing over a bug (Ullman once spent a year on one bug).
[Intro music]
00:16 Paul Ford Hi! You’re listening to Track Changes, the podcast of Postlight, the digital product studio at 101 5th Avenue in New York City. My name is Paul Ford.
Gina Trapani And I’m Gina Trapani.
PF We both work at Postlight in various capacities.
GT Yes.
PF Lemme tell the people what [intro music fades out] Postlight does, just real fast. Let’s get this done with because I think most people know by this point. If you’re holding something in your hand and it happens to be on a phone. It’s not like a piece of fruit or a tissue. Um we can build that for you. We build big platforms, big, low-level API services, things that run real fast that serve millions of people and we build the apps and the web pages and the web sites that talk to those platforms. And we do it for giant media companies, and we do it for insurance, and we do it for finance, and we do it for all the clients who we love, and so if you wanna get in touch with us and talk about that, you send an email to hello@postlight.com. This concludes the advertising portion and we will move onto to a very interesting interview.
GT Ellen Ullman is with us.
PF I’ve been reading Ellen Ullman before I knew anything and I still don’t know anything except what I learned from Ellen Ullman.
GT Me too.
PF It’s about right. So let’s talk to her. She is a technologist, career programmer, and also a very, very essayist and novelist. So you don’t get that combination very often.
GT And she’s also — she doesn’t know this yet but she is my mentor. I have made her my mentor. I read all of her stuff and follow her — her advice.
PF I think that’s a great idea. I’ve been doing the same thing for years. Alright, let’s talk to Ellen.
GT Alright, good morning everyone! I’m so excited about our guest today here in the studio, Paul. We’re joined by Ellen Ullman, author of — well, many things but most recently Life in Code, an incredible memoir about a long career in programming. So excited to talk about this morning. Good morning.
Ellen Ullman Good morning to you.
PF Good morning!
EU It’s a pleasure to be here. Thank you for inviting me.
PF This is exciting. I read Close to the Machine it would’ve been I guess around 1997. So this interview has been 20 years in the making for me.
EU [Laughs]
PF Pretty cool.
EU Well it better live up to that.
2:26 GT Tell me a little bit about this book.
EU Well I didn’t wanna write it. I felt that I had been writing and talking about technology for years, two decades, and I wrote a novel called By Blood and the New York Times online said, “Ellen Ullman abandones technology,” or something else, you know? But I did feel once I moved on that it forced me have new thoughts, and to think about the past, and the relationship of the past to what was happening snapshot by snapshot going forward, and to bring it up to today and see the curve of things that were put in motion in 1996, the first boom. The stocks crashed but the ideas lived on. I feel one of the problems I encounter is that, as everyone feels, that what’s happening in their own time is new. And really it may be new but it’s not new. It’s a recent unfolding of patterns that had been in motion for decades.
One of the problems I encounter is that, as everyone feels, that what’s happening in their own time is new. And really it may be new but it’s not new. It’s a recent unfolding of patterns that had been in motion for decades.
PF Going through the first which overlaps with Close to the Machine. What struck me is a lot of things you’re talking about are words, and terms, and concepts that are not just familiar but utterly current. Like the style of programming, thinking about the windowing systems, and so on. And we do that, and not only that we just reinvent it constantly. Like if I go out to this office, we’re recording at Postlight, we are building window components that open and shut, and thinking about the lifetimes of these components in the system –
EU Life cycle.
PF Life cycle. Thank you. And it doesn’t change. The patterns, everything is faster. We’re now sort of layering it onto the web in new ways but the patterns are the same.
EU What really disturbs me is how the front-end of the web works.
GT Oh! Let’s talk about that.
EU Now understand that it’s designed to minimize transmission or messages to the server over the wires of the internet. It looks like, to me, exactly like RPG screens on mainframe where you fill out all the things in the form and you hit enter, actually it was called send, and it went to the mainframe, and then it came back with an error. You fixed that one, went to the mainframe, came back with an error. Does this sound familiar? This is the way webpages were. They don’t come back and tell you, “Here’s all the errors you fixed, and you can fix them in one path,” right? This is to me is uh ok stupid [GT laughs]. I know it’s designed for the technology but not for the human being.
5:13 PF But they’re coming for us now. Now it’s all dynamic windowing toolkits on the front-end, bundling data up to send to the back-end. Like it’s — that batch mode that you’re talking about, they’re blowing it up. Facebook, in particular, is leading. They don’t want it anymore. So that document version is about to go. We’re not gonna have it anymore.
EU Hurrah! [All laugh] how many years has this taken?
PF Many — although, see, I get nostalgic because anyone could get in there and make that html page and publish their stuff.
GT Yeah. That’s the thing, right? Like the new update takes you farther and farther away from the machine, really. I mean when I look at web development, you know reading this book and most of what I do is web development, I’m like, “Wow, I’m very far away from the internals. And I’m building this virtual DOM on top of the browser that does a bunch of stuff that I’m not even really sure because I used, you know, some toolkit to get started.” We should maybe talk about it a little bit. You talked a lot, actually, about building tools to make things easier for users, including developers, and, you know, kinda what that means.
PF Well and this is sort of a big subject, right, because the web happens at this very high altitude –
GT Yeah.
PF — where you’re making pages and increasingly now you’re kind of retrofitting components into a page style interaction.
GT Mm hmm, yup.
PF — but you’re getting further and further away from how a computer actually works –
GT Yes.
PF — as you’re doing this. Like, we’re many levels of abstraction up. And one of the things you talk about a lot is sort of proximity to the hardware. The further down you go in the stack, the more sort of, and I’m making air quotes as I say this, the more “real” a programmer you are. And this seems to kind of show up a lot: is someone a real programmer or not — in your work.
6:52 EU Well, first of all, these higher level tools are absolutely necessary. Why reinvent everything? And not everyone can go, you know, work on the Unix kernel, or the Linux kernel, that doesn’t make sense. But what we sacrifice as we go higher and higher, further from the kernel, literally, is that we understand less and less about the basic workings of a computer. And when things go wrong it’s hard to know exactly where that wrong is coming from.
GT Yeah, so for expediency you’re sacrificing understanding, a deep understanding. That can bite you on the other end.
For expediency you’re sacrificing understanding, a deep understanding. That can bite you on the other end.
EU Well it’s necessary –
GT Mm hmm.
EU I mean we can’t keep reinventing system calls.
GT Sure.
EU I mean at one level you can. But you think everyone’s gonna send system calls to the kernel? Or begin with machine language and write compilers? Uh device drivers? Ugh that’s nasty stuff.
PF See I’m a self-taught programmer and so there was a point where I became ambitious and I wanted to know more about how it worked and so I started to dig in. And I remember I was writing some Java and I got my first full stack trace experience and, for those who don’t know, when you are working in Java and you hit a bug, it shows you sort of all the layers of what went wrong, and those things — and they’re all indented, so it’s this endless cascade of error. And it kinda shows you where your problem is and it is –
GT Hopefully toward the top you see something that you recognize.
PF That’s right. But it took me two years to really understand what was going on. Like I just couldn’t make sense of what the hell it was trying to tell me and this was the easy way. This was supposed to be the, “Look, no, we’ve documented everything all the way up this call tree. You’re gonna see where you are”. Is it call tree? I’m having a bad jargon day [all laugh].
EU It’s fine. You know, people on the other end are not, you know, scoring, they have little pieces of paper or –
PF Uh Ellen, they are. There’s a thousand engineers out there going, “[Sucks teeth] mm, I knew it. I knew it.”
EU Are we talking to a thousand engineers?
PF Oh easily.
EU Oh god. I’m leaving! [GT and PF laugh] I’m going to get hell. I mean one of the things that happens, especially as a woman, is that when I make technical errors I get this thing that’s like, “Well, the bitch doesn’t know what the hell she’s doing”.
9:17 GT Mm hmm.
One of the things that happens, especially as a woman, is that when I make technical errors I get this thing that’s like, “Well, the bitch doesn’t know what the hell she’s doing”.
EU Now of course everyone makes errors.
GT Yeah.
EU I mean one time I fixed what I thought was a fix of the bug and I went to lunch and I brought down the entire development system.
PF Mm hmm.
EU And everyone sat there for an hour and hated me [GT laughs]. Fine! I know that was really bad but it’s not that other people don’t do the same thing.
GT Yeah.
EU It happens all too frequently.
PF You know there was a point at Yahoo where they had an actual like silver cup for the person who broke the system the worse that year [EU laughs]. I think it was called Grant Pattishall Award and it was um there’s this guy, Kellan McRae, who we both know, he won it one year because I think he brought down all of Yahoo Chat while trying to like fix flickr [EU and GT laugh]. And but I’m trying to think if it would be different — like that’s a very dude thing.
GT I visited Google’s campus at one point, I think it was the Gmail area, and they had these screens up all around the office and the person whose bug was blogging the build that had to [PF sighs heavily] happen, their face was on the screen.
EU Their face? [PF chuckles]
GT Their face with like the ticket number and description was on the screen and being like, “This is the person who’s blocking.”
EU Development by humiliation [PF laughs].
GT Yeah! It was — I was, you know, I was amazed. I was like, “I don’t think I’d wanna work here” [laughs] “I don’t know if I could handle this.” But, you know, people are motivated in different ways, I guess. I guess some people are motivated [laughing] by humiliation.
10:50 PF That’s bad. Don’t do that.
EU No one is motivated by humiliation.
GT Yeah.
EU I really feel that’s horrible.
GT I don’t know.
EU That’s a horror.
GT I feel like some personal trainers their business model is humiliation [laughs].
EU It’s not human.
GT I agree.
EU It’s not civil.
GT Mm hmm.
PF Right.
EU It’s not collegial.
GT Right.
The constant quantification of what people are doing is the most alarming thing for me and the fact that it almost comes out of programming and seeps up into the world. Journalists: how many clicks? How many responses? How many tweets? Based on what you did. You’re always counting and that is the nature of quality. It doesn’t speak to what human beings can actually do.
EU The constant quantification of what people are doing is the most alarming thing for me and the fact that it almost comes out of programming and seeps up into the world. Journalists: how many clicks? How many responses? How many tweets? Based on what you did. You’re always counting and that is the nature of quality. It doesn’t speak to what human beings can actually do.
PF One of the things I really enjoy in the book is you come back to debugging a lot and there’s a story in there about, which I think it was the early 80s you decided you needed to become familiar with mainframe programming, right? So for the listeners here, mainframe — we’re all using phones and desktop computers but there’s a whole class of machines that are huge and vast and often created by IBM that are — could be a hundred times more powerful than the ones you’re used to. But you decided you needed to get in there and use mainframes. And there’s a story in there about finding a bug that then sort of took over your mind for a while. And, first of all, do you remember how long you worked on it?
12:22 EU Well, a little over a year. I planned to leave after a year. You know you wanna put it on your resume you gotta have a year [PF mm hmm]. These days it’s like six months, I guess. But then I had this bug and I began to imagine the bug as a glamorous lady [GT laughs], the lady vanishes, the lady reappears. This was the kinda bug that seemed to be fixed and then came back. And I was determined, month after month, week after week, to find this bug. And over the course of great frustration and time and there was a legless man that sat in front of this place where I worked. And he was there in the early morning selling pencils. He sat there selling pencils and I became friendly with him and I bought a pencil everyday. And while I was looking for this bug — now in the olden days, I’m getting out my rocking chair, you got a big printout [PF mm hmm]. We did have a screen but you couldn’t really look at it. The libraries were primitive. So –
PF Was this the big, sort of lined paper with the green and the white squares?
EU Yeah! And it came in, you know, big folders, you know, plastic covers. And so I began ordering piles of printouts. And they all thought I was insane. That my office had mountains of bound printouts and in order to follow the trail of where I had to go back to I was sticking pencils in the printouts –
PF Oh! Cuz you had all these pencils.
EU I had all these pencils. I had a whole box of pencils [GT laughs] and so [laughing] I used them to keep track of where I had to go back to. And we’d put marks on them, it was a ridiculous thing but — and I felt that, just for the sake of this legless man in a wheelchair, somehow I owed it to him. And when I finally fixed it, I — I don’t know, I felt that I had paid him back somehow [PF mm hmm]. And also when I found the bug it turned out to be something a prior programmer had done really stupidly. So this glamorous lady I expected to find, waiting with a cigarette, saying, “Ah ha. At last you found me”. Turned out to be this complete anti-climax. I do wanna go on to say that as I went on I did stupid things myself and I had more compassion for this other programmer which completely screwed me up. I liked working on a mainframe. It is a powerful — it was an old system in those days, a 370. You get this sense of how it rolls programs in and out, in and out. It doesn’t have multiple processors. It’s speed is what allows it to swap things in and out [PF mm hmm]. And so I marvelled at how these different programs were running and the question of precedence. Which we still have [PF mm hmm]. It’s always a question. Symmetrical multi-processing has to decide, you know, what has to go first. And the whole idea of what’s more important and what can run more quickly and you have to describe resources you’re going to need. You had to say, “Well, I need two disc drives, I need this much memory, I need the printer,” and you had to spell ahead of time what resources you were gonna need and that’s quite primitive, if you think about it, but it made you think about, “Well, what does this — how does it relate to the machine? What pieces of it do I have to describe?” In addition to multiple modules, and the spatial need, and so on. I learned a great deal from that.
16:10 PF You know it’s the physicality is really interesting, right, compared to now.
GT Yeah, I’m trying to imagine having to account for all the resources I will need to run the webpage that I’m building. Um and it actually it’s important, especially when you’re building internet connected apps for places that don’t have great internet connections. But that’s like a lesson that young, particularly young engineers have to learn and relearn.
EU One of the things I would love if is more engineers understanding the humanities because that’s when they will learn their effect on human life and social life. If they have that background of understanding deeply the emotions of human beings and how they interact and their desires thwarted or fulfilled. I do think the lack of the humanities and — now this is coming in. I hear that Google is hiring philosophers. But philosophers are kinda mathematical thinkers.
PF But don’t you think this is — I mean the Bell Labs used to send people out to get master’s degrees in the humanities. Or actually Bell did and then sort of to broaden the focus of the place. I feel that they always see it as a nice volton and I remember in the bug really clearly cuz it’s the first sort technical novel I ever read that also went deep on Middlemarch, right? Like there was a lot [EU laughs] — there was a lot of play in there and a lot of sort of — like Middlemarch was used to devastating effect in the book. I won’t spoil it but if you’re a Middlemarch fan and you like classic event loop programming, this is the book for you. It was for me. And I just — it’s such a hard reach, I feel that — cuz I’ve been thinking about this for years and years and it feels that the humanities doesn’t want a lot to do with them which is part of the humanities fault. Like the humanities wants the power, and the access, and the distribution but it — nobody, aside from a few people now in the digital humanities, is particularly interested in like getting into the ethos and the rhythm of like a good event loop in Javascript and understanding why that might have a cultural significance.
EU One of the things I talk about in the book at some length is the desire to mix these worlds [PF mm hmm] and they will enrich each other. Not everyone’s going to learn to program, become a professional programmer. It’s just try your hand at it. Demystify code. It’s not magic.
PF Sure. Are you as careful a coder as you are a writer?
EU Well, that’s for people to evaluate. That’s for other people [PF hmm ok] to evaluate, I think. You never can evaluate your own work. I mean my measure is I’m not embarrassed by it.
PF Great. That’s a very good measure.
GT Do you miss it? Writing code actively everyday?
EU No. At a certain point — I love learning new things. You have to. You can’t stay in the profession — cuz there are still mainframes out there with new operating systems on them but if I were still working on operating systems I would feel like I’m missing the entire technical revolution of my time. So the new, you have to keep up with it over and over and over. And at a certain point I decided, “I’ve had enough of that”. On the other hand, I felt that experience was — is not being valued. The things that are happening now have happened before and in a different form. There are roots in there from which people can learn. There are lessons in the past and it’s important to at least see something of the history of your own profession. Have a sense of it. So you can understand the power of what you have now. The systems we have now are onions, you know, you’ve got this stuff in the middle and you build things around it and around it and around it. You can’t scrap all that and really start over. So part of it is you’re saying, “Well, you’re taking this stuff that we wrote, I don’t know, 20 years ago, and we’re putting that in the middle of stuff that we wrote ten years ago, and we’re wrapping something around that we made five years ago, two years ago. Oh! Now it’s brand new”. And so it does work itself out and the understanding that there’s stuff under there that was written a long time ago. And you have to take lessons from the people who created those systems. You need to know a little bit about it [PF mm hmm] and that is inevitable. Everyone wants to be at the forefront. Everyone wants to be working on the new thing.
I felt that experience was — is not being valued. The things that are happening now have happened before and in a different form. There are roots in there from which people can learn. There are lessons in the past and it’s important to at least see something of the history of your own profession. Have a sense of it. So you can understand the power of what you have now.
20:41 PF Up until –
EU But, of course, that’s natural. I mean so did I. So did everybody in this room, right?
PF Up until a few years ago though I followed a Twitter account called Real COBOL Jobs because just in case I was gonna — I was like, you know, “Let’s keep an eye on that. Just in case it all goes south. I got a couple of short sleeved shirts, some neckties [EU laughs] and I’ll just I’ll learn COBOL and I will write -” Cuz, you know, I look at COBOL. I went and learned enough of it and I was like, “Well, it’s a very nice description language built in there. Like it’s got some perks. It’s a little verbose and bad but that’s ok”.
EU Now it’s time to talk about Grace Hopper.
PF [Laughs] yeah ok sure.
EU Who was the creator of COBOL essentially. She is known for that but what she’s lesser known for, and needs to be known for, is that her team created what was essentially the first modern compiler [PF and GT mm hmm] and higher-level language in a compiler. So you weren’t writing code for a single machine or a single chip. And this was revolutionary. And now changed the entire era of programming as we know it. Everything else had to be written for a particular computer. Now this is what she really needs to be known for. She really put in the germ of where we are now and uh — you know, quite a history. I mean there is a conference now called The Grace Hopper Conference [PF mm hmm] and, especially women, are wanting to say, “Look, there’s this person who provided the foundation of your entire profession and -” Well, ok, that’s my Grace Hopper rap [laughs].
PF No, but I mean –
22:29 GT It comes back to this empathy thing, right? This like kinda looking at this broad problem and being like, “How do I make the lives of so many programmers easier? Let’s back up and be like — make something that, you know, allows you to write in a more human way and compile and run across many different devices”. You know the empathy thing, it keeps me awake at night. I manage engineering teams and you know how do you instill empathy for users, whether your users are engineers or other people –
EU The issue of empathy and women [GT mm hmm] is a very dangerous path.
GT Yes.
EU I had to report it from the times after the James Damore memo came out. Your engineers out there know I don’t describe that. She uh she called to interview you and, well, “Don’t you think, you know, women have more empathy and isn’t that a good thing?” And I just went, “Why are we going there?”
GT Yeah.
EU I can’t say that I have more empathy than anybody else. Women can be as bitchy and unaware of others as anyone. And we should have the freedom to be bad, you know? [Laughs]
I can’t say that I have more empathy than anybody else. Women can be as bitchy and unaware of others as anyone. And we should have the freedom to be bad.
GT Absolutely.
EU I don’t wanna have empathy for — demand that of everyone and, especially, this is a role given to women.
GT Absolutely, absolutely. And I often wonder like am I taking this on because I feel like it should be my role and it absolutely shouldn’t. Um there’s a section in your book where you talk about the programmer’s mindset that really resonated with me. This idea that like you kind of — I think you call it mind time. That when you’re deep in kinda the coding process, you’re not working synchronically with other human beings. You’re off in another space. You’re not washing your clothes, or sleeping, or eating, or I get annoyed when I need to get up to go to the bathroom if I’m really deep in something and how I am extremely capable of that. And most days I just want everyone to leave me alone so that I can go to that space. And it’s funny because, you know, my career is pulling me toward supervisory roles, and sales roles, things that require like meetings and talking to people [chuckles] and I miss coding a lot. And I’ll say, you know, a cocktail party is where things are like light and easy. I’ll be like, “But you know I love programming”. But the truth is it’s kind of a compulsion. Uh you know some people do heroin and I write code because I go to this like other place where I actually don’t need to deal with anyone else’s needs [laughs] and –
I love programming, but the truth is it’s kind of a compulsion. You know, some people do heroin and I write code.
EU Oh yeah I love going into a dark room with three humming machines and the flicker of a nice, big, you know, screen [GT yes!], and closing the door, and don’t bother me.
25:04 GT Yeah, and I’ve got one purpose.
EU There is that just wonderful part of it.
GT It is. This is one of my favourite moments in the book is when you said, you know, “I had a tiresome house guest and I kept thinking, ‘I gotta go fix that bug. I really should go fix that bug,’” [laughs]. Coding as like escapism. It really is that for me in some ways. And I dunno maybe I’m projecting my impression onto your writing.
EU No, it is. It’s an escape into something extremely rewarding [GT yes]. There is a sea of thought in there that is stimulating, and it is addictive, but it gives you pleasure [GT yes]. I mean one of the parts that I hope to convey in anything I write is my love of all this stuff.
PF Mm hmm. There’s so much power in this business. There’s economic power, but there’s also just the power to do previously inhuman things. And I think, you know, all three of us think about this, right, like how do you distribute that power? How do you get it back? You know it’s education is one path, you know writing about it, communicating about it. I don’t — I’m not optimistic that we can get a meaningful tech curriculum into education right now. I don’t know if we can. I just don’t know if the culture wants it. It wants the kind of like, “Hey, technology is really changing things”. But that — the actual effort to make it part of the curriculum and connect it to other things. I don’t know if we’re gonna do it.
EU Connecting to other things [PF mm hmm]. Not saying you’re going to go in a room and be involved in this addictive activity [PF mm hmm] which can be pleasurable. Like connecting it to other things, looking at code, looking at programs in a social life, in a civic life, in light of relationships. You know, what has Tinder done if you look at these other relationships with things you’ve read. Compare and contrast! As the teachers are fond of saying. That’s kind of what I mean. Not that everyone should code but everyone should learn enough to connect what’s happening with coding, with engineering, with technical products, with other things they know, and have learned.
PF So you’re calling for a school of technology criticism?
EU [Laughs]
GT I’d like to go to that school.
EU Comparative — comparative operating systems.
PF I think that would be healthy for us all. I think some of the output from that could be great. Let me leave us all with a question, um, when you’re programming at home doing something interesting and a loved one comes to the doorway of your office, what is the reaction?
27:44 GT My spouse and I really had to talk about like, “When I’m typing, anything that I say to you [laughing] while I’m typing because you’ve said something to me. Like I can’t — it’s like, consider me drunk. Like I’m just I’m impaired. I’m not equipped to have a productive interaction.” With my five year old, I need to stop [laughs].
PF Yeah. Ok.
EU Well, I put a yellow sticky on the door that says, “Is this important? [GT No, that’s great] Is this really important?” Which means, “Leave me alone”. Uh that’s the way I handle it [GT yeah] because there are things that if you’re interrupted, you lose it.