Sean Parent

Because technology sucks.

Conor

That's the answer. Well, should we hop right into the episode with that?

Bryce

I think so.

Conor

Welcome to ADSP the podcast episode 38, recorded on July 28, 2021. My name is Connor, and today with my co-host Bryce, we interview Sean Parent about the Adobe Software Technology Lab. Yeah, so I guess this is the third, I mean, we've had what, five episodes probably, but that was across two different recordings. So at this point, probably most of our listeners know who you are, Sean. But in case there are some people that have tuned in since the last time that you were on, maybe we'll start off by introducing you can introduce yourself just in case people are like, who is this who is this Sean that has appeared out of nowhere?

Sean Parent

Okay. Yeah, so um uh I'm Sean Parent. I'm a senior principal scientist at Adobe. Um I I've been at Adobe off and on a little bit, I guess, for over 25 years. Uh uh started on the Photoshop team, and most recently I've been working with the Photoshop team, and I'm restarting Adobe Software Technology Lab, which we'll talk more about in a bit here. Uh before Adobe, I was at Apple for five years. I worked on QuickDry GX and then the transition to PowerPC. And in the middle, somewhere close to the middle of my Adobe career, I took a year and went to Google and worked on Chrome OS and then flamed out and uh came back to Adobe.

Conor

So so that's who I am. Alright, so we uh I think it was episode 16 or 17 was one of the first ones we had you on. And I believe you did talk about uh what was it, the eight-year period with um Alex Stepanov and was it Paul McJones? Um that uh where you had the uh initial ST lab, but like maybe you can recount uh briefly sort of that period of time, and you just sort of nonchalantly said that you're bringing it back, um, which is like it's it's it's with Dave Abrahams. Yeah. Well you took away his thunder, Bryce. Not gonna cut that out.

Sean Parent

Uh no, so um uh uh yeah, so this came about, I don't know, 2001 maybe. Uh uh Alex Stephanov came to Adobe and gave a talk. And after his talk, it was on STL. For people who don't know, Alex Stepanov is the the person who created the standard template library for for C. And uh he came and gave a talk at Adobe, and after his talk, he and I started chatting, and at the time he was a vice president at Compaq, which was in transition, they had just been acquired by Hewlett-Packard. And so he was kind of sliding back to HP. He had actually created STL while working at HP Labs. And uh uh uh we were chatting about work that I was doing, and we ended up spending a long evening in my office just talking about engineering stuff, and at the end he said, you know, this is amazing. I would love to get back into engineering, and I haven't had a conversation like this in a long time, and uh and uh I said, Well, why don't you? And and he just kind of shrugged it off, but a couple weeks later he called me up and said, you know, I gave it a lot of thought, and I don't want to be a manager anymore, I want to be uh an engineer. So is there a position at Adobe at Adobe? And uh there's a bit of a long story here because he did did join Adobe. I was not able to get him to join uh I was working in Adobe's research group, and I was not able to get him into Adobe's research group. So he joined a different group, uh, one of our shared technology groups, and found it a bit frustrating. There was a a bit of a mismatch there between somebody who's who's kind of a very senior researcher and mathematician, and a group that's just slogging through a bunch of bugs. And and uh uh the result of that, you can find I gave this story at at Alex's retirement party, so there's a video of that online, maybe you can link it in the show notes. Uh but the the end result was was was uh I thought Alex was gonna quit. He was he was getting frustrated, but he insisted that no. He he thought that the job was worthwhile and he was enjoying it, and he was going to stick it out and work with his team. And about two weeks after we had that conversation, he called me up and said, Guess what? And I said, You're quitting. He's like, No, they fired me. And so he had been been fired from Adobe. And I scrambled, and uh Greg Gilly, who I think I mentioned.

Conor

I did spend like 40 minutes last time trying to find that video clip of him uh rambling on stage. It uh it took me a while, but I did find it.

Bryce

You didn't find it? I did find it. I did find it.

Conor

Yeah, yeah. It's hilarious.

Bryce

I hope people w that listen to the podcast Bryce does not listen to the podcast.

Conor

You're a busy guy, I understand.

Sean Parent

Uh so in any case, I went to Greg, who uh uh Greg was uh like you know director of uh uh digital imaging, so he had had Photoshop and uh had a bunch of products under him, different org than I was in, and different organization than Alex was in. Uh uh but I knew Craig well, and I went to Greg and I said, so this guy, Alex Stepanov, I know you probably don't even know who he is, uh uh, but an amazing individual, he was just fired, and and you need to hire him back. And and Craig was like, I can't do that. It's another organization that would be going against another VP. Um uh I can't hire this guy back. And and I said, Well, I I'll put it this way. I said, if if he goes, then I go with him. And and so why don't you at least take the time and and go out to lunch and uh uh have lunch with the man and see what you think. And so he went to lunch with Alex and came back and called me and said, you know, come come to my office. And I came in and he was he said, you know, God damn you. He said, I'm gonna I'm gonna hire this guy back. And he said, But here's the deal. If I hire him back, you have to manage him. And so uh uh out of that uh uh Alex and I started Adobe Software Technology Lab, which was uh uh uh the uh the name came uh from Hewlett-Packard's Software Technology Lab, which is actually everybody always thinks that you know STL stands for uh for a standard template library, or some people think it's Stepanoff and Lee because it was it was Alex Stepanoff and Meng Lee who wrote the the initial paper. Um but it actually STL comes from Software Technology Lab, which is where Alex was working at HP. And so we created a group, uh Software Technology Lab, and it was within Adobe's digital imaging organization. And and the charter of the group was uh to improve software engineering practice uh at Adobe, but we also thought that to do that you kind of had to do it industry-wide. And we defined uh practice to be distinct from process, meaning that we were concerned with what engineers wrote when they sat down at the keyboard, not with things like how they ran a Scrum or or uh uh whether or not they were following an agile process or or or anything along those lines. It was it was concerned about what do they actually type when they sit down and write code. And we did that with a three-prong approach. So uh part of it was was education, and so Alex was teaching a class at Adobe, and that eventually led to the publication of Elements of Programming, uh, which is uh is Alex and Paul McJones, uh uh their book. And part of it was libraries, so uh you know, besides education, we had libraries and tooling. And so that uh uh created something called the Adobe Source Libraries, which are still kicking around. They've kind of moved into my own domain, which is stlab.cc. And they're still available up on GitHub and still in wide use inside of Adobe. Uh uh, but that's you know a set of libraries that do some interesting things that we could talk about at some point. And then part of it was research, and so we had ongoing collaborations with uh uh universities, including Indiana University where Andrew Lemstein was at, and Texas AM where Bjorn Strustrup was at. Um and we brought in Paul McJones, who uh for people who don't know, Paul's been around for a long time. He worked with John Bacchus uh at IBM. He worked on the the uh uh uh worked on the modular three language, uh uh System R, which was an early relational database.

Conor

Um John Bacchus, for those that don't know I think is uh that's the individual who was behind Fortran.

Sean Parent

Uh individual who's behind Fortran, uh Turing Award winner. Um uh if you've ever heard of EBNF as a way to describe grammars, that's that's uh Bacchus is the B in EBNF. Um so yes. Quite prolific. Uh uh one of the one of the greats in i in the industry. And uh uh another person from Adobe's research team was Matt Marcus, and he also represented Adobe on the C standards committee at the time. And then Foster Breritan, who uh who's now a very senior engineer on the on the Photoshop team, but he and I had worked together on the Photoshop team. He had been my intern for a while on Photoshop, and he joined the group. So kind of the peak of the group, there were five of us. And we had a good eight-year run, and then had kind of a spectacular, very political uh flame out at the end of the eight years, and that led to me resigning, and that's how I ended up at Google for a while, and Alex and Paul uh left. Alex went to A9, Paul retired. Um uh at that point, what led to the flame out was actually uh Adobe went through a round of layoffs and and Matt Marcus had been laid off and not it was a decision that I had absolutely no say in.

Conor

Um uh and I thought was was a very wrong decision. I think I maybe I knew this, but I forgot that the reason that you left Adobe uh was because of that. Um I don't think I knew that, but and it and it coincided with the the flaming out of the ST lab.

Sean Parent

Um Yep, yep. So so and at that point uh Foster had already slid over uh back to the Photoshop team. So so he was kind of spared the whole uh the whole implosion of the team.

Bryce

Here's a question, Sean. Do you um do you you you were only at Google for a year, right?

Sean Parent

Yeah, just over a year.

Bryce

Yeah. Um do you do you regret having left or because like you you came back to Adobe, so so obviously it was the right place, but like do you regret having left, or was it just sort of like you like you needed a break and and and even if it maybe wasn't the right long-term decision, you felt that like in hindsight it was a good thing at the time. A good thing for you.

Sean Parent

Uh i it was a good thing for me. You know, I don't see how I could have stayed at Adobe under the circumstances. Um I came back kind of under very different circumstances. Uh the promise at Google was, you know, they gave me a great pitch that they were creating a new OS from the ground up, and it was a web-oriented OS, and they had read a bunch of my papers and they liked my ideas, and they wanted me to inject my ideas into this new OS. How do you say no to something like that? Uh the reality was the new OS was Chrome OS, which isn't really a new OS. It's it's uh uh uh Linux uh with the Chrome browser tightly bonded to it. Um uh I don't really think uh the manager who I was speaking with had actually read my papers. He had read some of my blog posts, which meant we agreed on the problems, but not necessarily the solutions. And uh so I was a bit of a a mismatch with uh with the team that I was hired into and was kind of going against the grain of both the team and and uh and Google. Um that said, I still you know very much believed in the vision of of Chrome OS, and I'm still a fan of of Chrome OS and kind of what it is and and and uh uh you know where it's at. I think it's a it's an amazing product. Um so yeah, you know, I learned a lot. I got to work with some some great people, um still have friends that I made at Google, but for me personally it was not the right fit and it was was uh you know, a painful environment to work in because I'm somebody who if you if you give me a problem um uh I will kind of keep chewing at it and keep coming back to it and keep revisiting it and just keep kind of drilling down and and I will uh you know, if it's an interesting problem, I'll obsess about things for years and just kind of keep chipping away at them. And Google was not an environment that that allowed for that. It was uh you know, here's the highest priority problem get it done enough that it's not the highest priority problem, move on to the next problem. And I don't I don't switch tasks like that well. So so it was it was it was not a good fit.

Conor

Um from my point of view, it was an amazing year for you, Sean, because we're forgetting what came out of that year. Yeah. Uh but that's where the that's a rotate comes from. Your time at Google. That is where that's a rotate from.

Sean Parent

That was there the the the long story of the C seasoning talk is on A9 videos. I went and gave it at Amazon when Alex was over at Amazon. And yes, so the the backstory on that, the the code that I put up in the in the C seasoning talk is is code from my very first code review at Google.

Conor

Oh wow, I did not know that part.

Sean Parent

Yeah, so you know, at Google, you know, you kind of have to earn earn gold stars. You have to, you know, get your your readability certificate and your code review certificate. Even you had to even me. It doesn't matter how senior you are coming into the company. So so you know, I joined the team and I'm I'm the noogler, right, with the pinat, and and uh uh I've got to uh uh you know go through code reviews and I've got a mentor who's going to you know look over my shoulder during the code review to make sure I'm doing the code review correctly according to Google's uh guidelines. And I was given this piece of code um uh uh to review. And when I do a code review, the first thing I always look at is is are there any loops? And if so, what are the loops doing? And this was a very long function with a whole bunch of loops in it that I'm reviewing, and I'm like, what in the world are these loops doing? And so I sit down and and kind of draw it out, and and you know, they're they're they're iterating over vectors and and and erasing elements and inserting elements, and uh like like what in the world is this thing? And eventually figure out, oh I see, this is uh it's basically a find if followed by a rotate, and really that was the start of it. But if you look through the rest of it, it was a find if followed by a slide, which is a rotate going one way or the other. Um uh and then wrapped up with a transform at the end. And so you know, I spent an evening kind of digging through this and figuring it out, and then uh uh wrote that up in my comment and was like, oh okay, so this whole big mass of code I'm reviewing is, you know, find if pair of rotates, transform, done. And the person whose code it was was like, this isn't a rotate. And I was like, oh no, this is a rotate. It's an inefficient quadratic rotate, but it's a rotate. And and he was like, no, it's not a rotate. I'm you know, uh it it's it's doing something else. And I'm like, nope, I you know, it may not be what you intended to do, but what the code is doing is a rotate. And it it took me, you know, a fair amount of time, kind of conversations on and off for two weeks with the individual who wrote the code, to convince him that yes, in fact, it was a rotate, and that that a rotate would be more efficient in this case, and and shorten up his code. And uh and I convinced him, and he was like, like, okay, I see, I understand, you're right, this is so much better. And so he rewrote the code and checked it in in in or put it back in for the code review. I said, you know, Sean convinced me this is correct. And my mentor said, no, you can't you can't submit that. It was better the way it was before. Uh nobody knows what a rotate is, and that's too tricky. And uh, you know, I argued that argument and lost. And so the code got got checked into Chrome OS and Chromium, and the reason why I'm able to put that code on my slides is because uh, you know, Chromium is open sourced, and so that code went into the open source project, and it is now part of the public record. Um the code actually does use a rotate now.

Conor

So I think that's an exclusive we just got there.

Bryce

Did they change it to use the rotate after the talk? After you gave you talk, Sean.

Conor

As far as I know, yeah. I wonder if there's like a long story of like that getting back to like the team or the manager and the person that wrote the code initially, or probably they had moved on at that point, but it would be so funny if like they were still there and then like this story is just getting like retold, and the story of it getting told is getting retold, and they're like, you know what, we should we should this is uh we gotta go and change that code.

Bryce

Um well con Connor, obviously after this uh after this recording, you're gonna have to go find that code and do the git blame on it and see changed it to a rotate and when.

Sean Parent

Yeah, you know, I would uh you know, I try not to uh uh just because you know I w I work on a product that's been around for 30 years, so a lot of times I do the git blame. I'm like, who the F wrote that? And I'm like, oh I did. Darn it. Okay.

Conor

So yeah, I mean Yeah, I think we've all been there where we're staring at some code and yeah, who did this? And then you find out and it's like, oh, it was me from two years ago. Oh, that's impressive. I didn't know what I was doing two years ago. I can't believe that works.

Sean Parent

Uh yeah, yeah. It it it it was a bit of a culture shock though, going from being a uh you know, managing a a a research team with some world-class computer scientists on it to um uh kind of you know working as a nuclear with uh I you know, I would say a a you know, an organization that that that didn't care about about uh about about your previous history. So so that was a bit of a culture shock to slide into that. So where was I? Yeah, so so that's that's what Software Technology Lab was. We had uh, you know, I think an amazing eight-year run. Uh like I said, the Adobe Source Libraries are still in heavy use. Uh I still have uh some ongoing university collaborations going with uh uh Yako Yarve, who he was at Texas AM, and now he's at uh what is it? I'm trying to blink on the name. It's uh we'll we'll fill it in. It's uh uh a university in Finland. Uh we worked on something called property models. Which are within the library. And now I've got Dave Abrahams hooked on property models. And we wrote the book, published the book, Elements of Programming, which which I think kind of had a huge influence on C and formalizes the ideas of generic programming. Alex Stepanov is the person who created the term generic programming.

Conor

I think Bryce, you've said that that's the only book that you've read on C, correct?

Bryce

The only programming not the only book that I've said, yeah. It's the only programming book that I've read, though. Yeah. Yeah, and actually, because I'm in the middle of the move, I'm uh I'm packing up all my books right now, and I'm like I'm tempted to get rid of half of them because I got all these C books that I never read, but uh uh I I'm obviously not gonna get rid of my Elements of programming copy. Which uh was a it was my like 20th birthday gift from my mentor Hartmitt, uh who just appeared in the office store on the day of my birthday, and he's like, here, you should have this. And uh then I read it and uh I was like, yeah, I should have this.

Sean Parent

Yep, and it's uh the book is open source now too, so it's uh or I don't know, open source, freely available. Uh you can you can look it up online and and download it.

Bryce

I didn't I didn't realize that Stepanov had coined the term uh generic programming.

Sean Parent

You haven't seen my talk, The History of Generic Programming. I guess I have to uh the 30th year, uh the 30th anniversary of generic programming, and so I gave a talk because I thought it needed to be recognized, so I gave a talk on the history of generic programming.

Conor

Yeah. That's the one you gave at Pacific C, right?

Sean Parent

Yep.

Conor

So the big news is that uh ST Lab is back.

Sean Parent

And yeah, so so ST Lab is back. Um uh this time it's uh uh Dave Abrahams, who for people who don't know who Dave is, uh uh uh in the C ⁇ community, Dave was very well known uh uh uh uh as a Boost contributor and somebody who had, along with Eric Niebler, they they they had a company uh Boost Pro, which was a consulting firm uh around Boost. And uh uh you know Dave contributed many things to the standard library, and uh I think one of his key contributions he gets a mention in my my history of generic programming talk uh was the the formalism of the requirements uh for exception handling, the uh basic exception guarantees and the strong exception guarantees. That's from a paper that that Dave published, uh which I think was a very important piece of work. And then he kind of left the C community, I don't know, almost a decade ago, not too long after I had my my run to Google and went to Apple and is one of the creators of of the Swift language, and then he created Swift UI, and then he was most recently at Google uh uh working on Swift for TensorFlow, which you can look that up. Uh it was a project uh that ran for about a year at Google uh recently, or it had uh uh uh Chris Lattner started started it there. Chris Lattner is the person who created LLVM for people who don't know, and also he worked at Apple and is one of the creators of the Swift language. And uh uh but uh uh Chris left Google and then about a year later, while Dave was working there, they canceled the Swift for TensorFlow project. And I managed to snag Dave. And it it came about at uh at a good time for Adobe. Adobe's been uh pushing our products onto a lot more platforms. I think you're seeing that. We have you know Lightroom Mobile, Lightroom Web, uh Photoshop Mobile at this point, uh you'll see Photoshop appear on on other platforms. Um uh and so our products are increasingly getting brought up on increasingly diverse environments. And one thing that we're struggling with is exploiting the hardware on uh on uh where we have uh uh an increasingly diverse landscape of what the hardware characteristics are. So kind of how do you code for that? And and you know, part of that is is how do you deal with concurrency in a way that scales both up and down and and is efficient on in kind of all configurations and uh doesn't cause a lot of bugs and problems. And right now concurrency is driving a lot of our quality issues, um uh and they're not not things that thread sanitizer will pick up, they're not hard race conditions, they're you know what I refer to as logical races. They're their developer made an assumption that uh that you know A will happen and then B, but sometimes it happens B then A. And uh uh uh so so that generated some some some impetus to say maybe I could s try to get out in front of the teams and blaze a path uh uh around concurrency and follow the same charter that we had for the old software technology lab of taking a three-prong approach through through education, tooling, tooling in libraries, uh uh uh and research with uh university collaborations and uh pull in Dave, and Dave has a lot of experience in this area and uh uh working on on memory safety, which is closely related to concurrency issues. And uh uh, you know, hopefully together we can we can make a dent in this. And so he's you know, got permission, we kind of spun up the team. It's just the two of us at this point. Uh we'll probably grow to three to five, which is the old software technology lab peaked at five. Uh I I'd like to get like to get in between there. Uh we're looking at the the problems that the the teams are having and trying to figure out how we have an impact on them. And so we'll be restarting some classes soon. We're taking taking a bunch of notes and we're kind of identifying what are some of the the key problem areas where we think we can we can come up with some solutions that can can filter back down into the teams and have an impact.

Conor

Is there a chance um this is gonna be like A9 videos 2.0 where they're gonna get posted on YouTube at some point?

Sean Parent

I think so. Um uh we're we're getting a uh uh you know right now in the valley, you know, in the industry, not just Silicon Valley, in the industry, uh uh hiring is is very competitive. And Adobe's been growing very fast even through the pandemic. In some ways the pandemic's been you know, Adobe's one of the companies that the pandemic's been good for, right? Every mom and pop shop now has to create uh create their own website and get e-commerce online, and they're gonna need, you know, Photoshop and Acrobat and and uh uh our web creation tools and and and they need analytics for their advertising and all of that, and though these are all things, all products that that Adobe sells. Um so so because it's become competitive, uh uh uh Adobe tends not to have the visibility in in the industry that say, you know, Facebook, Apple, um uh Google, Netflix, the Fang companies, as the kids say. The Fang companies. Yep. Yep, that the Fang companies have. Uh so we tend to lose a lot of of potential good hires to the Fang companies. And uh I think part of the issue there is that kind of outside of me talking at developer conferences, uh Adobe doesn't have a really strong presence in the C community or even in the broader just software development community. You know, if you go to the the Vision AI uh you know Siggraph uh areas, you know, Adobe has dozens of SIG Graph papers that usually get submitted every year, and we have a strong presence in in those communities, but um uh uh uh not in kind of your you know day-to-day. We need a great C engineer to pull them in. And so so part of the charter for this group is to uh is to raise external visibility for some of the interesting stuff that's happening uh at Adobe. And so I think you'll see uh both Dave and I speaking at conferences and promoting Adobe a bit and uh uh trying to raise awareness and and encouraging others at Adobe to also submit papers and speak at more conferences.

Bryce

Cool. So does this mean that we'll see does this mean that Dave is returning to COVID?

Sean Parent

Uh open-ended question, you know, maybe Adobe switching to Swift. Um uh uh we d we don't know what the answer to that is. Uh is you know, certainly there will be Adobe has a huge investment in C and uh and a and a very large amount of code in C ⁇ . And so any answer to these problems has to include C ⁇ . So so there's going to be you know a connection there. Um but at this point we're not we're not ruling out uh you know, we're not we're we're trying not to over constrain the solution set. Right. So so but yeah, I think you know Dave Dave is gonna have his hands more in C ⁇ , and it's very clear he's yeah, but he he kinda left the community pre-C11, and so so it's uh uh he's got a little bit of a culture shock stepping back in and uh and just to seeing how how far C ⁇ has moved in that time frame. Right, right, right. It's it's one thing to kind of be looking at the news articles, it's another thing to be, you know, stepping into big code bases and going, wow, this has a has a significant impact in how people are writing code.

Conor

Yeah, it's definitely evolved. One thing I was thinking too about the visibility is unlike Microsoft, which Bryce and I have talked about this on a past episode, Microsoft doesn't fit into the FAIN acronym. But Adobe and uh NVIDIA, we could just have a triple A FAIN and a double N just make that acronym a little and Adobe's logo is a legitimate A.

Bryce

So uh I think I think we should make a we should make a new acronym for the cool C places. And so it would be Microsoft, Adobe, and NVIDIA. Now there is one word that Adobe does not send the right message for the acronym to be MAP.

Conor

We gotta just add a couple letters. What word do we want uh to spell? We can spell A-Man, we can spell main. We gotta think of a cool word, reverse engineer it, and then just go find that, or like go tell a company with that letter.

Bryce

Main. I like main. What's like what's a company with an I that that rises to the same level of cool?

Conor

Uh I was thinking E, like the horse's main, but okay.

Bryce

Um okay, we could be a company with an E.

Conor

I guess main makes more sense because of the main branch on GitHub. I don't know any companies that start with the letter I. Um we'll we'll leave it to our listeners. Uh if you'd like to be in our new acronym created I podcast, uh tweet at us and uh you can be the I. Or if you've got suggestions on extending our our acronym is not gonna be MAN, I'll tell you that. It'll be it'll be MAN of course man.

Bryce

Um well it's it's interesting because because uh Adobe, you know, I think of Adobe as being one of the old school like classic C shops because you know, back in the day, you know, at like A9 in particular, there was Stepanov, um, you know, Tony Van Eerd went through Adobe. I think Niall Douglas was at Adobe at or no, maybe it was Niall and Tony were both at BlackBer, um, Louie was there. A bunch of like a bunch of old old school C ⁇ people went through Adobe. And like it's got a big C ⁇ code base. Like uh Sean, I I recall you once telling a story that involved the number of lines of code and like Photoshop and all the plugins, and I remember it was a surprisingly large uh amount of code.

Sean Parent

Yeah, yeah. We recently reran the stats. I don't have them at my at my fingertips here, but yeah, it's it's uh you know it's it's it's millions of lines. And if you I I don't think, unless you're kind of a professional Photoshop user, I think a lot of people don't have a full deep appreciation for just how much stuff is in Photoshop, right? I mean Photoshop can edit videos, uh Photoshop can edit 3D. It's a very broad, broad product uh that gets used in a lot of different different markets, both in graphics art and in science and engineering. So it's uh you know, it it's a very big indeep product.

Conor

Thanks for listening. We hope you enjoyed and have a great day.