Skip to content
Melo Podcasts Home
CategoriesLanguagesFollowing

Episode · ADSP: Algorithms + Data Structures = Programs

Episode 262: 🇳🇱 Chaos with Sean Parent! Bikes, Buses, Waffles & More!

28 Nov 2025 · 36 min

Play episode WhatsApp Download

Episode notes

In this episode, Conor and Bryce interview Sean Parent about generic programming and there is much chaos! Link to Episode 262 on WebsiteDiscuss this episode, leave a comment, or ask a question (on GitHub)Socials ADSP: The Podcast: TwitterConor Hoekstra: Twitter | BlueSky | MastodonBryce Adelstein Lelbach: TwitterAbout the Guest: Sean Parent is a senior principal scientist and software architect managing Adobe's Software Technology Lab. Sean first joined Adobe in 1993 working on Photoshop and ...

Transcript

Read the transcript · about 6,610 words, follows along as you listen

Sean Parent:I put together specifically, I got invited to give a keynote at Pacific C ⁇ , and it happened to coincide with the 30th anniversary of generic programming. So it was 30 years after Alex Stepanov and Dave Musser coined the term generic programming. And I thought it really deserved uh a proper covering of kind of the history of generic programming and where it came from and and and why it's a thing. And so I put together that talk and I'm pretty proud of the talk because I ran it past Alex uh uh before I gave it, and Alex's comment was that he couldn't do it better himself.

Conor:Welcome to ADSP the Podcast, episode 262, recorded on October 10th, 2025. My name is Connor, and today with my co-host Bryce, we primarily interview Sean Parent at C Under the Sea, but this episode is pure chaos. We talk about generic programming, but also bikes, buses, waffles, and more. And with that, we will transition to not Sean Parrot, but Sean Parent. Apparently we're getting t-shirts made, according to Bryce.

Bryce:The idea is the t-shirt would have the parrot, but with like uh, you know, a cartoonized version of Sean's face on it.

Conor:How do we how do we feel about that, Sean?

Sean Parent:Uh there's a bobblehead of me from CVP Con. So wait, you have a bobblehead? I have a bobblehead, yes. I don't have said bobblehead.

Bryce:Maybe you have a champagne bubblehead.

Conor:It's a pretty good wedding gift, folks. Yeah, you go. I mean, it sounds like a limited edition item, so uh there's probably a fixed number in the world. So uh we were trying to I mean we recorded a couple months ago, or do we have to start leaving? I don't know. When they kick us out. Oh, I see you. We're being kicked out. I mean, we can I guess you're leaving to the the train soon. Are you going straight from here or I mean we can go?

Bryce:I think I need to go to go to the hotel. Yeah. We can go to the hotel.

Conor:Oh yeah, that's true. We'll go to the hotel. Um so wait, actually, do we have to leave right now? Should we pause this and then resume at the hotel, or do we have like 10 minutes?

Bryce:I I don't know. Is there a bus? If there's a bus, let's let's get more information. I think we should pause for now and get more information.

Conor:Alright, folks, we were here with Sean at the venue. We talked to a bunch, we talked to a bunch of folks, everyone but Sean, even though that's how we started this off. We said we're about to talk to Sean, and then we talked to like six different people, and you you got uh you got collected by a couple different persons. Is there a bus coming?

Bernhard Manfred Gruber:I have no idea, but we should get out.

Koen Poppe:Okay.

Conor:We can also record outside at the bus station. We've never recorded at a bus station.

Bernhard Manfred Gruber:Are you still recording? Yeah, you want to see something? Yeah. Absolutely. So so so Bryce this morning, uh, he he sent out on the Slack channel, like like uh he doesn't know whether he can find his way to the menu because he couldn't get a cab uh a cab within an hour. But we are in a European city, right? We have buses running every 15 minutes, and yeah, on time and on Google Maps, they're easily discoverable. So, like everybody just wondered like, why can't Bryce just take the bus, right?

Bernhard Manfred Gruber:Connor, do you know?

Conor:Listen, folks, uh I would love to side with you, but I was also in the position of not being able to find an Uber. I looked in the public transit, it said it was gonna be 30 minutes, and at that point I had wasted 15 minutes ordering and canceling three different Ubers and had already waited five minutes into a 19-minute wait for an Uber. It's actually not the fault. We discovered today that a lot of the trains ended up being canceled, and that's why Ubers because last year I Ubered a couple times to and from.

Conor:We never had this issue. I did look into public transit and I had to walk like five minutes, the whole thing was gonna take 27 minutes. And uh look at that, the NVIDIA backpack, folks. I've had mine for six years now, and it's as good as new. It's a good backpack. I Bryce and I had the same problem today that uh we were trying to get here, and honestly, I think the solution is uh either the hotel or the conference should just have like rentable bikes for like 10 euros a day or something, because that's when we were in Aarhus in in Denmark.

Bernhard Manfred Gruber:This is the Netherland, this is the Netherland way, right?

Conor:It's like you just ride a bike. That's I mean the problem is that all the locals don't have one bike. I've heard that it's per capita, there's more bikes than there are people, and so there is no need for a more elaborate infrastructure, which I actually love. I love that uh you know, Netherlands and Europe in general, it's more eco-friendly, it's better for your health, yada yada yada. So I wasn't actually upset at Uber. Uh I just wanted to get there faster, but I I looked into it and like there is not the uh widely availability-ness of like limes or birds, like they have scooters and and and bikes.

Conor:Like when we were in Copenhagen, a couple times we just hopped on a lime bike, which like you can just whip out your phone, you scan a QR code, and you're off to the races. I think in the Netherlands they're less available because everyone just has so many bikes personally. So if you're not from here, you kind of just are screwed a little bit, but you're not screwed because Uber typic typically is not that bad. Uh it just happened to be that the trains weren't working today.

Conor:And I heard actually from Andrew, one of the co-organizers of the conference, that someone, I don't know how far away they were, but they were gonna train in, and then the train was broken, so they just cycled in. And I I asked how far, and the answer was uh he was only 30 minutes late. I mean, Andrew's right actually there. We could get the the full distance, but I am uh imagining that this person like hopped on like a serious road bike and and did like a decent workout on the way here.

Conor:But um unfortunately uh there is not the availability of these bikes for foreigners. But it's our fault. We should have brought our own bikes. That's true. Well, we also talked to someone that said uh there they do have at the uh Breda station bikes that you can get, but you need like a little ID card or like you know, payment card. You can't just like do it with your cell phone and an app. Anyways, uh we love the Netherlands, we love the bike, and I actually like Breda a little bit more than Amsterdam because you're not gonna get killed here by a cyclist or a cohort of cyclists.

Bryce:Amsterdam we shouldn't have chose the bus. The bus is the best.

Conor:Is the bus? Oh wait, we gotta go to the bus. Wait, why are we recording this? Mark Harris. That's when when Bryce said he was the scan man, and Mark Harris came to mind because he has all the scan papers, Bryce was just saying, and I don't know why the mic's just been by my side, is that he oh actually, do we want to dox him? We'll just say he lives in the hills of Australia. But Mark has told some crazy, because Mark was uh PIC, which is a pilot in command person in charge.

Conor:Uh I don't know what the actual acronym pilot in command. Yeah. And he while while both uh myself and uh Jake and a bunch of folks work for Rapids, that's where I spent the first one. Yeah, well, uh pilot in command. It's just uh the person that is like a uh an IC but is a mentor at the same time.

Bryce:It's the actually I don't I don't I'm just the pick is the person is the person who is responsible for a particular thing at NVIDIA. Like it could be it could be it could be a feature, it could be a product, it could be like an event, it could be a goal. And the idea of a pick is that there's supposed to be just one pick for any given thing so that it's clear who is in charge of the thing.

Conor:Are we at the right place? What I was gonna say is I only see one other person. What was I think Mark was the pick of Rapids Memory Manager, RMM, but I don't actually fully know that I I'm getting multiple yeses, so anytime you hear somebody anytime you ask somebody at NVIDIA who the pick is and they say that it's more than one person, that means I haven't been at NVIDIA a very long time.

Bryce:It's supposed to be one pick for any given thing.

Conor:Alright, one pick. Anyways, there's uh I mean we should have Mark on. One to talk about scans, but then he can tell this story himself. Uh he's a Python story. Yeah, yeah. Say what you just said and nothing more. The Python story. So every listener, I guarantee you, is thinking that Python refers to the programming language. It does not. It refers to homing pythons that apparently can get up to several meters in length. Is that that's accurate? And uh Mark tells this story, I'm sure he's told it to you, he's told it to me, where every once in a while, because he lives in the hills of Australia, these pythons show up in his backyard, and he has to, I don't know how, but he collects the python somehow, throws it in the back of what I assume is a truck, because that would be the right vehicle for a python, and then he'll drive it like literally hundreds, maybe not hundreds, but a hundred.

Bryce:So the story that he told me was like the first time he took it and he drove it like 40 kilometers and he dropped it off, and then the sucker came back. And so the next time he researched how far they can home, and like the internet said, like, if you take it like 60 kilometers, it should be good. And then apparently it kept coming back. Um at some point the python just becomes your pet, you know? If it's coming back that long, it's just your I know I don't know how he knew that it was the same python, but I just assume that when you've lived in Australia long enough, you can tell the pythons apart.

Conor:And this folks is why I've I I will be going to Australia for the first time this year, and I'm a little bit scared because they have like all the deadliest spiders, like Well, and you do you even know about the drop bears? That's a joke. Those are uh reference to koala bears. And I will say, uh, they're actually pretty evil as well. They're very cute. But if you actually just Google, or actually, link in the show notes, I forgot, we have a podcast.

Conor:Uh link in the show notes to a video of a uh koala bear on the ground going they make the most awful sound when they're crying for their parents. Uh so cute in some circumstances, and they're actually mostly high uh a lot of the time because they just live off of eucalyptus, which is some kind of carcinogen, or I don't know. Anyways, I mean we have Sean here. Should we should we rotate to back to interviewing Sean? So we tried to interview Sean earlier, but he was being is absconded the correct word?

Conor:Absconded is the correct word. Uh link in the show notes to a definition of that word if you don't know what it means. Uh Miriam Webster or Oxford or something. Maybe we'll give it the Scrabble dictionary. Uh there you go. I think people need to up their vocabulary if they're not.

Bryce:You get phrase absconded a good Scrabble word, you get a lot of points.

Conor:It's not a great Scrabble word, but abscond, I believe, is seven letters. Uh if my math is wrong, then it's eight. But I A B S No, it's seven letters. So that's a bingo. So even though the highest scoring letter in that is gonna be the C or the B, you're gonna get an extra 50 points if you can spell that. And also, too, it's gonna be a high probability bingo because most of them are one letter tiles, and you're more likely to have those on your rack.

Conor:There's no E though. And abscond, if you had only two vowels and B S C N D, are you gonna be able to spot that? Not me. Not me either. I'm not that good. Uh and also too, the S you would assume is gonna go at the end. And unless is there like a Bacon's, a Bacon's plus a D? I don't know. Anyways, we're interviewing Sean Perrin here, not talking about Scrabble. Uh he was absconded though, uh, by a lot of folks. What were they asking you? So, I mean, no introduction.

Conor:He doesn't need one. He was opening keynote, and uh we we talked to you about your keynote a couple months ago, and now we're here in person. Uh, what were you being ex absconded? Were they asking questions about your talk or about other things?

Sean Parent:Uh mostly about my talk, yeah. And and uh what I'm doing with ST Lab, and and uh we talked some about their talks, some of them were speakers, some of them were just uh attendees asking questions. So yeah, it was good. It was good, good questions. Good questions, great questions, yeah.

Conor:And how have you found this is your first time C under the C, correct? It is. Yeah. How would you one other, so that's true, and you and we were here? I asked that question and I I knew the answer. Like, we were here, he wasn't, therefore. I was here, I was just sit sitting in the back corner, so you didn't see me. Yeah, said to Sean Perrin never. I don't think you ever get to sit in the back corner. Yeah, um so how was it? Was a good conference?

Conor:It was a good conference, yeah.

Sean Parent:I enjoyed it. Uh uh good venue, uh a little remote, so a little too far from the hotel, but uh yeah, it was fun.

Conor:That is the only uh that is the only thing that we were saying is that I mean it was never a problem with the Ubers and whatnot, but is this us? That looks like a public bus. That one looks like a non-public bus. Man, we're this is gonna be the most we were we were in the building, then we were at the bus stop. I was gonna say, we're we almost lost that guy too. He just darted in front of that bus as if it wasn't a bus.

Bryce:Uh I mean like like again, isn't it?

Conor:I see the guy, he's given me uh uh a hand across the throat, which is uh I'm not sure if that means that's not the bus or he almost lost his life.

Ambrus Tóth:I should have third of that back to it.

Conor:Anyway, so a little bit remote. Is this I imagine you've been to the Netherlands as a uh never. Really? First time to the Netherlands.

Sean Parent:I'm in Amsterdam? Yeah, yeah, you uh not. I should, but I'm not. So I spent some time in Zurich on the way here.

Conor:Oh yeah. You were at the we talked about this when we last interviewed you, the Zurich C meetup. Uh, how was that? Giving the same talk, correct? Uh same talk, yeah. Uh amazing.

Bryce:I got sure we have an understanding of is the bus coming the public bus or is it the private conference bus?

Ambrus Tóth:I think the other is like we can assur and then let's go back.

Bryce:Alright.

Conor:Yeah, we may have just missed the bus, folks. We're about to find out. Sorry, Sean. The most chaotic episode ever. Uh anyways, first time in the Netherlands, you were just in Switzerland at the Zurich C meetup.

Sean Parent:Yes. Uh Switzerland is beautiful.

Conor:Uh have you been to Switzerland before?

Sean Parent:Or is this for first time to both Switzerland and Netherlands? I added two countries to my uh to my checkoff list here on this trip. Do you have a list? Do you know how many countries you've been to? I was trying to add it up. I think it's well, I've spoken in ten countries, so yeah.

Conor:Okay. And so that I guess this was uh nine and ten. Nine and ten. There you go. That's I'm pretty sure more countries I've spoken in. So but you've got a few years on well.

Bryce:Uh who speaks that help mouth in the station.

Bernhard Manfred Gruber:Hey.

Bryce:Yeah? Yeah, completely. Yeah, you can add a little company.

Bernhard Manfred Gruber:Oh, thank you all. So we move?

Conor:Ah, okay. Does that mean we missed the bus, or I think we're standing in the wrong place.

Bernhard Manfred Gruber:Okay.

Conor:But the bus is still en route?

Bernhard Manfred Gruber:I think so.

Conor:I mean, he's just laughing, so I'm not sure if that's a good sign or a bad sign. Ooh, look at these cars.

Bernhard Manfred Gruber:So are we now? Wait, wait, wait.

Conor:Would anyone like where are we going?

Bryce:I'll run there. Okay.

Conor:I know there's another problem. This is what?

Bernhard Manfred Gruber:I'm gonna leave, so.

Conor:Oh, you're gonna leave? I thought you were asking for the mic. It was a pleasure. You had a car, so you're driving home. Yes, sir. Alright, we'll see you potentially in a year. Good luck with the wedding. Yeah, yeah, thank you.

Bernhard Manfred Gruber:Thank you for meeting you. Yeah, I'm gonna go.

Conor:Well, there's not enough room in his car, so.

Bernhard Manfred Gruber:Alright, it was good seeing you. Hey, cheers.

Conor:And thank you for the PR, first PR on uh the pair repo.

Bernhard Manfred Gruber:Oh, really? Second PR second. First was to turn it green.

Conor:Oh, that's true. Well no, he did not open a PR, though. No, he just opened an issue. Okay. No, you didn't you have not submitted PRs. You Bryce is trying to be like, I submitted a PR.

Bernhard Manfred Gruber:You submitted the first. Okay, go ahead.

Conor:Good seeing you, Gancoon.

Bryce:Chaos with sprinkles of information. Oh, way over there.

Conor:Is that our bus? Alright, folks. We can see a bus in the distance. And our our good little helper. Oh no, it's leaving! Why didn't he sprint after it?

Bryce:I don't know. Wait, where did where did Kuhn go?

Conor:Was that the bus?

Bernhard Manfred Gruber:Okay, why don't we go find Kuhn? Half an hour. Oh my god.

Bryce:So you fail. Go grab Kuhn. Go run and grab Kuhn. You're a runner! Go run and grab Kuhn. What are we gonna do though? Partially. But otherwise we're gonna have to get two cabs. Why don't we go get Kuhn? Because then he can take some of us. He's somewhere over there. Run, man, run! Jeez, man says he's a runner. No, it's fine. Connor will find him. Connor, run! He's like Look at this!

Sean Parent:So now we know how Connor runs.

Bryce:Yes, now we know how Connor runs.

Sean Parent:Oh I don't believe he put in 20 kilometers.

Bryce:Yeah, yeah, I find it I find that hard to believe too, but uh I guess worst case we'll just we'll just get a we'll just get a cab.

Sean Parent:Um he ran 20 kilometers like that, which is why his watch earlier was saying he had a a day of relaxation.

Bryce:I have I have faith in Connor. I mean his bag is here, so I think he will. I would guess he will come back. I've already had like five of the ASML waffles today. Okay, understood. There are there are many types of waffles.

Bernhard Manfred Gruber:Between waffles and straw faffles? I'm not that much of an idea. I mean as interested.

Bryce:I I don't they are they better be. Tell us the difference.

Ambrus Tóth:So this straw waffle, it has honey in the middle. It's like half a centimeter wide. Um and real waffles are like two centimeter wide, and uh they have something with chocolate on the top and a lot of sugar.

Bryce:Okay, understood, understood. To Americanize, none of those are waffles. They're a little a waffle is a thing that you put into a waffle iron, and uh you maybe put blueberries in, you maybe put chocolate chips in, and then you put some real American maple syrup, none of that Canadian maple syrup. You want some you want some Yes, the best maple syrup is from Vermont.

Bernhard Manfred Gruber:I thought this was a Canadian thing. Vermont?

Bryce:No, no. No, no, no. Wait, what's your preferred maple syrup? Minnesota. I would that's also, I think, an acceptable answer to me. I did not know that there was even Minnesota uh maple syrup. Oh yeah.

Sean Parent:Distant cousin who uh does maple syrup in uh Minnesota along with wild rice.

Bryce:Oh, that that is an interesting combination.

Sean Parent:Okay you don't have it together, different seasons, but he sells it.

Bryce:I would imagine, yeah. Yeah, so uh Connor is still not returned. I'm starting to uh starting to grow concerned.

Sean Parent:Like I said, he found a ride, so yeah. We're stranded.

Bryce:Yeah. Where did you get that uh NVIDIA this this NVIDIA puffer? Is that from the gear store? Yeah. Okay, that's nice.

Bernhard Manfred Gruber:I I got it at G2C. Uh yeah. Yeah. Santa Jose. Yeah, in Santa Claus A. Yeah. Too bad we don't have ladder checkets, right? Um but uh we had that at a conference.

Bryce:That would be a good that would be a nice thing to have in the gear store.

Bernhard Manfred Gruber:But like uh the CEO says no.

Bryce:Does Adobe have good swag? I imagine because Adobe's also a company known for the visual art, so I would imagine having good good material.

Sean Parent:Yeah, we have pretty good swag, but uh we never get to go to the conferences.

Bryce:So oh really? To the Adobe Conferences, you know? The Adobe Conferences. Because those are for the creators, for users?

Sean Parent:Yeah, those are for the creators for the users, etc.

Bryce:But but who gives the talks about the new features in Photoshop and things like that?

Sean Parent:Uh yeah, so usually that might be some executive executives, but it will also be um uh uh we have a lot of creative art directors who who take on that role.

Bryce:And Adobe doesn't have like an Adobe developer conference. I mean like Photoshop's known for the whole plug-in ecosystem.

Sean Parent:Yeah, you would think we would. Um maybe we'll have to start one.

Bryce:Um I'm hearing I'm hearing things.

Bernhard Manfred Gruber:Yeah, I guess he he will come around.

Bryce:I see people running. I know that was a proper run. Unlike Connor's unlike Connor's run.

Sean Parent:Is this our bus?

Bryce:No So wait, wait, what? Is Connor there? Okay. How many people will fit in this vehicle?

Bernhard Manfred Gruber:Uh all the Americans. We take the bus. Um I guess it didn't breach Plena?

Bryce:What?

Bernhard Manfred Gruber:Uh you didn't answer. Oh no, wait, like one uh I'm fine taking a bus.

Bryce:Oh there we are, okay. Uh what uh you get to say that again.

Bernhard Manfred Gruber:That's yours, right?

Conor:Yes. We're taking chaos to a whole new hell level on this episode. How many people are are we going with? Is it just three or and then there's gonna be another Uber?

Bernhard Manfred Gruber:Uh oh no bus comes in ten minutes. Uh I'll take the bus.

Conor:I see the bus. You don't want to take the front shot?

Bernhard Manfred Gruber:No, I'm good.

Conor:You sure?

Bernhard Manfred Gruber:Yeah. I do think he's the tallest.

Bryce:Is that why I'm strong the tallest?

Conor:I I promise you, Sean is the tallest, but also too, there has to be a factor of uh age and And uh here, you you can you can hold it.

Bryce:Uh I don't want to say seniority because that sounds bad uh uh it sound it sounds just an age.

Conor:I don't want to say major This is honestly, it's uh I mean crew's probably thinking, god damn, I just went from two episodes to four episodes, and now I'm recording in my car.

Bryce:This is gonna be legendary. I heard a lot of a lot of people when I was asking him what they liked about the conference, and what they a lot of people said that they things, something to the effect of Wait, can we can we do a can we back up? Uh what's happen- they just heard a bunch of noise. Okay, we're in Kuhn's coming. Okay. Other people agreed. You'll listen to the tape that was recorded when you were gone. We're now in Kuhn's car. Kuhn's driving us into uh the center of Breeda.

Bryce:Um was that covered while I was gone? Yeah, I think so, yeah. Well, the fact that you were gone was covered. Some people thought that you may have abandoned us. Oh, because it took uh we have a second to find them because the market was pretty big and Well, if you'd run faster, it would have been less of a problem. But so a lot of people commented that your your talk got them thinking about generic programming and what generic programming means. And uh I thought maybe maybe you could share your thoughts with the wider audience on what generic programming means, because I think a lot of people just means I use the template, think it means that I used a template.

Sean Parent:Yeah, so I had two slides. One is that generic programming is not uh uh metaprogramming, and programming with generics is not generic programming. Uh uh the ideas behind generic programming are that programming is mathematics, and it's built on this notion of a concept, which is a little different than the language notion we have of a concept, although the intention was to represent uh uh uh the same basic idea. Uh but uh concept is a collection of related requirements, and it's the equivalent in mathematics uh to an algebraic structure.

Sean Parent:And algorithms then are defined on concepts. Yeah, so that was the the the main thrust in talking about uh uh uh uh how we express those requirements, what it means for a type to model those requirements. So yeah, uh if you want to learn more, uh we'll I'll have Connor link to uh link to the book.

Bryce:Also, wait, let me know. It's gonna it's gene something.

Conor:Also, too, folks. It's uh I don't know if it's a gem or uh a hidden in the rough. I don't know how many views your Pacific C talk is. It was clipped in my algorithm intuition 2019 talk, and it is one of the it's I mean it's you have so many good talks, but it's up there. Top three for sh uh, do I know top three, top five? It's one of Sean's best talks, uh, because that was where the first time, and and you said it a bunch of times, but it's just the order that I watched your talks in, where you refute you refer to beautiful code.

Conor:And it's it is there is something, I don't know what the word is, like uh not liberating, but like when you hear someone with as much experience as you talking about the beauty of code, and Stepanov does it a bunch, but I hadn't watched any of his content at that point in time. Um, like I had always thought that I was like in the minority of like the aesthetics of what code looks like is important because I hadn't heard anyone else talk about it.

Conor:But then you were giving this talk called Generic Programming at Pacific C, which is a conference that I believe no longer exists. And it was I don't know if you consider the talk like an homage to Alex Stepanov, but you referred to his algorithm and um uh the uh uh what was it, stable sort? Was it was that the yes, stable sort was the algorithm? And that was the moment where you were saying, you know, it's this beautiful piece of code that you know was considered, it was on some list of hard problems to solve, and he did it in like a few lines of code, and like you I remember explicitly the quote that was what I clipped in the talk, which was you saying, like, I saw this code, and like that's that is the code that I want to write.

Conor:I want to learn how to how do you write code like this? And like in no other talk, at any other programming language, conference, whatever technology, have I ever heard anyone talk that like passionately and emphatically about like the aesthetic and the beauty of an algorithm or a piece of code. Anyway, so if you are interested in what Sean was just talking about in this keynote, you should definitely go check out the Pacific C generic programming tech.

Conor:Did you give it anywhere else or is that the only recording of it? Anyways, I'll hand the mic back to you because I think that might be the only recording of it.

Sean Parent:That talk was I put together specifically, I got invited to give a keynote at Pacific C, and it happened to coincide with the 30th anniversary of generic programming. So it was 30 years after uh uh uh Alex Stepanov and Dave Musser coined the term generic programming, and I thought it really deserved uh a proper covering of kind of the history of generic programming and where it came from and and and why it's a thing. And so I put together that talk, and I'm pretty proud of the talk because I ran it past Alex uh uh before I gave it, and Alex's comment was that he couldn't do it better himself.

Sean Parent:So um so yeah, so that's that's one of the talks I'm most proud of, I would say.

Conor:It's a very good talk. Link in the show notes. Yeah, what I was gonna say.

Sean Parent:What I was gonna say is you should link to uh uh from mathematics to generic programming also, which is uh uh uh Alex and Dan Rose's book, um uh which makes the very strong connection between generic programming and mathematics.

Bryce:Oh yes. So is generic programming hard? Or or harder than pr programming non-generically?

Sean Parent:Uh I you know, this comes up a lot, and I actually think not. It it does take some amount of time to learn and get familiar with, but the basic idea is learning to see uh uh uh what are the necessary operations and ignore all of the unnecessary ones. And uh, you know, so having practiced it for years, I find when I write code, I tend to write it generically as a matter of course. Yeah. Just because it helps me distill it down to like like what are the essential properties, and if I'm writing it in those terms, uh then I'm not distracted by by properties that are not essential, and and I'm less likely to be confused about what I'm doing.

Sean Parent:So I think there there might be a bit of a learning curve there, but in general, I I think doing proper generic programming is easier. Um you know, there's also a reliance on on whole part relationships and mutable value semantics. And internalizing those concepts means you're never confused about object ownership or about invariance being violated because you called some function in the middle of making a transformation in the middle of a class or threat safety.

Sean Parent:Um uh uh all of those concerns drop away and it promotes local reasoning.

Bryce:Now it's um I I've always sort of mentally thought that generic programming might have a higher upfront cost, but that writing generic code code is more sustainable and more scalable, that it it it holds up better over time. And that's why I tend to write things generically the first time. Although I've certainly heard the criticism made, and I certainly have written code that is maybe over-generalized or over-engineered, and I feel like that's one of the the challenges is to know um is to figure out how to define the scope of what this operation or entity needs to handle.

Bryce:And that's part of this finding figuring out the constraints and the requirements of the code that you're trying to write.

Sean Parent:And and then once you've identified some useful models, figuring out what are those models' inherent properties, because you basically get those properties then for free, right? And uh even I covered it in my talk, there's confusion about just the basic idea of regular. We tend to slice it up. And part of that is because we have a limited vocabulary within the language for how we specify these things. So there's no way to say that something that's uh is copiable, it's required that the copies are equal without requiring the implementation of equal equal.

Sean Parent:And I tend to bias on just just implement the missing functions on your types, uh uh and then go ahead and require them. So so I would be a little more opinionated if I were in charge of the standard and there would be you know a concept regular at the root, and we wouldn't have concept copyable, concept movable, cop, concept uh quality comparable. Those are just all regular, and those are required on most types.

Bryce:And so that you would require that everybody you would require that everybody provide all those things.

Sean Parent:Yeah, everybody implements them. Now, that would be much easier if we actually had good default implementations that you didn't have to actually write the code. Um so so that's the direction I take it in, and that's you know largely the direction we've been pushing with Hilo is uh you know, we just assume regularity.

Bryce:I I am on I am sympathetic to the way that the standard structures it today because um I have certainly been burned by places in the standard where you are required to provide a certain thing in particular. I'm thinking of like coroutine handle. Um like there's a bunch of the exception and error handling functions where you have to provide a definition and you get a compilation error if you don't, because it's this is not a concept thing, this is like a compiler or a feature thing.

Bryce:Yeah, yeah. It's a compile, and it's also it's just like it's this magic type that the compiler knows about. And like I just wish that there was a default, and the default could have been just like terminated or something, but like if I'm just playing around with a curoutine, I don't I don't want to have to define the error handling, the exception handling, you know, uh piece of it. And it always it's always pained me that uh that we've made those refin required functions instead of being like let's have a default and um and I I I mean perhaps if we just had more defaults and better defaults, uh it would be easier for us to define whole concepts instead of these sort of piecemeal um I don't know what you call copy constructible, but you you alluded to that it's not really a concept in your talk.

Sean Parent:Yeah, yeah. It's uh it's a it's a concept fragment because a concept by definition is a set of connected axioms, and you can't talk about something being copyable without defining what copy means. And to define what copy means, you have to talk about equality. Uh-huh. Yes. Right? So um uh uh uh yeah, and there's so many places where uh uh uh these properties compose, right? If all of your parts are copyable, the whole is copyable. If all of your parts are movable, the whole is movable.

Sean Parent:Um so you know, if all of your parts are ordered, you can at least provide a lexicographical ordering by default. So there are reasonable defaults for most of these most of these cases. These these things compose pretty well. So, you know, a lot of the pushback um uh uh on some of these things from the standards committee has been, well, we don't want a default, or we don't want a default that's confusing. But if you kind of step back to first principles, I don't think the defaults are confusing and they compose well.

Conor:Alright, wait, wait, wait. I gotta, or do you want to do this other side? Wait, so the silent hero of this episode has been Kuhn, who's been taking us driving us. I I assume everyone uh mentioned that the bus we missed, uh I mean you can grab your stuff out of the back. But uh if you if you want any final things to say, here here's your moment, uh, the silent hero of episode whatever, 260, whatever this is. Oh, it's been my pleasure. Uh happy to help.

Conor:All right, thanks so much, Kuhn. We are trapped here. Be sure to check these show notes either in your podcast app or at adsphepodcast.com for links to anything we mentioned in today's episode, as well as a link to a GitHub discussion where you can leave thoughts, comments, and questions. Thanks for listening. We hope you enjoyed and have a great day.

Bryce:Low quality, high quality! That is the tagline of our podcast.

Conor:It's not the tagline. Our tagline is chaos with sprinkles of information.

Bryce:We'll see you next week.

Conor:Alright, Coon, you're a uh a lifesaver. Um at least you saved half of us, and uh we'll see you again. We gotta come back now next year because uh you're our most we've had a few different listeners on, but none is a story to journey as yours. Uh from recording to we've never recorded in a car before, I don't think.

Bryce:I think there's also there's a Belgian C. You know, that's the first thing I was thinking.

Conor:I think we should not focus on conferences so much and just start. We should do the circuit of Stockholm has this uh Sweden C, hit up the Copenhagen, hit up the Belgium one. Yeah.

Bernhard Manfred Gruber:Just we'll do it.

Conor:Is it you? Nope. I know the I know the organizer, it's me.

Bryce:Oh maybe that's maybe that's uh maybe that's after some conference here, someone say so much.

Transcript supplied by the publisher with the episode.

Podcast

ADSP: Algorithms + Data Structures = Programs

Conor Hoekstra, Bryce Adelstein Lelbach & Ben Deane · Tech & Science · English

Deep dives into algorithms, data structures and C++ — exploring the STL, functional programming and computer science fundamentals with three experienced engineers.

More from ADSP: Algorithms + Data Structures = Programs All episodes →

  1. 2 Jan 2026 · 35 min

    Episode 267: Advent of Code 2025 (Day 2 & 3)

    In this episode, Conor and Ben chat about Advent of Code 2025 Day 2 and 3! Link to Episode 267 on WebsiteDiscuss this episode, leave a comment, or ask a question (on GitHub)Socials ADSP: The Podcast: TwitterConor Hoekstra: LinkTree / BioBen Deane: Twitter | BlueSkyShow Notes Date Recorded: 2025-12-22 Date Released: 2026-01-02 Advent of Code 2025Day 2 ProblemDay 3 ProblemC++23 std::views::chunkchunk Hoogle TranslateBQN fn.ChunkBQN ↕ (windows)Ben's Day 3 AoC 2025 in C++Ben's Day 6 AoC 2025 in P...

  2. 26 Dec 2025 · 1 hr 10 min

    Episode 266: Holiday Special 🎄 CppCon, NDC Toronto, C++Now, Teletext, Bamboozle & More!

    In this episode, Conor and Ben chat about CppCon, NDC Toronto, C++Now, Teletext, Bamboozle & more! Link to Episode 266 on WebsiteDiscuss this episode, leave a comment, or ask a question (on GitHub)Socials ADSP: The Podcast: TwitterConor Hoekstra: LinkTree / BioBen Deane: Twitter | BlueSkyShow Notes Date Recorded: 2025-12-22 Date Released: 2025-12-26 Bamboozle!Bamboozle! QuizCeefaxTeletextNDC TorontoC++NowCppCon 2025 ScheduleAPI Structure and Technique: Learnings from Code Review - Ben Dea...

  3. 19 Dec 2025 · 28 min

    Episode 265: 🇦🇺 YOW! Live 🇦🇺 Kevlin Henney & Damian Maclennan

    In this episode, Conor chats with Kevlin Henney about the past, present and future of programming languages and with Damian Maclennan about YOW! 2025! Link to Episode 265 on WebsiteDiscuss this episode, leave a comment, or ask a question (on GitHub)Socials ADSP: The Podcast: TwitterConor Hoekstra: LinkTree / BioAbout the Guests: Kevlin Henney is an independent consultant, speaker, writer and trainer. His software development interests are in programming, practice and people. He has been a col...

  4. 12 Dec 2025 · 35 min

    Episode 264: 🇦🇺 Aphantasia, Anendophasia & the Future with Kevlin Henney

    In this episode, Conor interviews Kevlin Henney about aphantasia, anendophasia, synesthesia, future and more! Link to Episode 264 on WebsiteDiscuss this episode, leave a comment, or ask a question (on GitHub)Socials ADSP: The Podcast: TwitterConor Hoekstra: LinkTree / BioAbout the Guest: Kevlin Henney is an independent consultant, speaker, writer and trainer. His software development interests are in programming, practice and people. He has been a columnist for various magazines and websites....

  5. 5 Dec 2025 · 42 min

    Episode 263: 🇳🇱 The Sean Parent Origin Story

    In this episode, Conor and Bryce interview Sean Parent about the origin story of his career in software engineering! Link to Episode 263 on WebsiteDiscuss this episode, leave a comment, or ask a question (on GitHub)Socials ADSP: The Podcast: TwitterConor Hoekstra: Twitter | BlueSky | MastodonBryce Adelstein Lelbach: TwitterAbout the Guest: Sean Parent is a senior principal scientist and software architect managing Adobe's Software Technology Lab. Sean first joined Adobe in 1993 working on Pho...

  6. 21 Nov 2025 · 26 min

    Episode 261: 🇳🇱 C++ Under the Sea 🇳🇱 Bernhard, Koen & C++26 Reflection!

    In this episode, Conor and Bryce record live from C++ Under the Sea! We interview Bernhard, Koen, talk about C++26 Reflection and more! Link to Episode 261 on WebsiteDiscuss this episode, leave a comment, or ask a question (on GitHub)Socials ADSP: The Podcast: TwitterConor Hoekstra: Twitter | BlueSky | MastodonBryce Adelstein Lelbach: TwitterAbout the Guests: Bernhard is a senior system software engineer at NVIDIA, where he extends, optimizes and maintains the CUDA Core Compute Libraries (CCC...

  7. 14 Nov 2025 · 24 min

    Episode 260: 🇳🇱 C++ Under the Sea 🇳🇱 Ray, Paul, Parrot & Scanman!

    In this episode, Conor and Bryce record live from C++ Under the Sea! We interview Ray and Paul from NVIDIA, talk about Parrot, scans and more! Link to Episode 260 on WebsiteDiscuss this episode, leave a comment, or ask a question (on GitHub)Socials ADSP: The Podcast: TwitterConor Hoekstra: Twitter | BlueSky | MastodonBryce Adelstein Lelbach: TwitterAbout the Guests: Ray is a Senior Systems Software Engineer at NVIDIA since 2022. Studied Software Engineering at the University of Amsterdam. Fou...

  8. 7 Nov 2025 · 47 min

    Episode 259: 🇳🇴 NDC TechTown 🇳🇴 Vittorio Romeo & JF Bastien

    In this episode, Conor and Bryce record live from NDC TechTown in Norway! We interview Vittorio Romeo and JF Bastien about C++, training, their talks and more! Link to Episode 259 on WebsiteDiscuss this episode, leave a comment, or ask a question (on GitHub)Socials ADSP: The Podcast: TwitterConor Hoekstra: Twitter | BlueSky | MastodonBryce Adelstein Lelbach: TwitterAbout the Guests: Vittorio is a passionate C++ expert with over a decade of professional and personal experience. His expertise c...

  9. 31 Oct 2025 · 17 min

    Episode 258: 🇳🇴 An Algorithm Taxonomy (Serial, Parallel, Cooperative)

    In this episode, Conor and Bryce record live from Norway! Bryce explains the taxonomy of algorithms: serial, parallel, and cooperative! Link to Episode 258 on WebsiteDiscuss this episode, leave a comment, or ask a question (on GitHub)Socials ADSP: The Podcast: TwitterConor Hoekstra: Twitter | BlueSky | MastodonBryce Adelstein Lelbach: TwitterDate Recorded: 2025-09-23 Date Released: 2025-10-31 MPIIPCRow-wise Softmax in TritonRow-wise Softmax in ParrotCCCL - Parallel and Cooperative AlgorithmsI...

  10. 24 Oct 2025 · 35 min

    Episode 257: 🇳🇴 Live from Norway! Replicate, Scatter, Gather & RLD (Part 3)

    In this episode, Conor and Bryce record live from Norway! They continue their chat about the replicate, scatter, gather and run length decode algorithms! Link to Episode 257 on WebsiteDiscuss this episode, leave a comment, or ask a question (on GitHub)Socials ADSP: The Podcast: TwitterConor Hoekstra: Twitter | BlueSky | MastodonBryce Adelstein Lelbach: TwitterDate Recorded: 2025-09-23 Date Released: 2025-10-24 thrust::gatherthrust::scatterthrust::permutation_iteratorthrust::counting_iteratort...

Take it with you

The Melo app keeps playing with the screen off, works in the car and on your watch, wakes you to your station, and browses the whole catalogue offline. Free, no ads, no account.

Get it on Google Play