All kinds of things. So one of the first questions, you know, like the introductory episode was about like what actually is good code, what is good well-designed code, what do we mean? And and how do we teach it? And that's a really difficult question to answer, right? And the way I decided to answer that question in the course, the question of how do you actually teach good software design? The the only way I came up with that seemed to me worthwhile was to take a leaf out of Welcome to ADSP the Podcast, episode 247, recorded on August 5th, 2025.
ConorMy name is Connor, and today with my co-host Ben, we chat about the philosophy of software design and more.
BenWell now maybe now's a good time for me to say sometimes when I listen to you and Bryce, the things you say are hilarious. I don't know if it's intentionally hilarious. Sometimes I think there's a certain lack of self-awareness, but uh, you know, I want to be gentle here. You know, I laughed out loud when Bryce said, Oh, you know, uh Polish has no word for gelato. I'm like, where'd you think the word gelato comes from? It's not English. It's not English, is it?
ConorOh yeah. I mean, I uh I didn't say it, but I thought I've been to Poland multiple times. Uh they do have a word for it. It's gelato.
BenExactly.
ConorYeah. Um I I understood his point he was making, like, oh, they don't they don't they have one for ice cream, but not for gelato.
BenBut like English doesn't have a word either.
ConorYeah, yeah. If you've been to other countries around the world, they just call it gelato everywhere. I mean, I I'm sure there's a couple languages that put a little spin on the word gelato. Yeah, I I I didn't say anything. There's a lot of times when Bryce is saying some stuff, and I I kind of just am like, yeah, there's no reason for me to point this out. But I'm glad that you uh you left. If you haven't, I'd be curious if there's other moments that you can recall off the top of the channel.
BenOh, in that same episode he said he was bad at pronunciation, and I'm like, yeah, you are.
ConorI was another how I was I was uh I spent quite a bit of work getting that intro because I actually hadn't started recording and uh I had to get Bryce to share permissions to the team's recording so that I could get my audio because it was just hilarious when he he was like, Alright, we're going. Sheish and I was like, What? It's like that's not even Polish, that's uh closer to German or something like that. And and Shima actually speaks a little bit uh Polish too, and she knew how to say Czech. And uh I I had no idea she she spoke uh uh any Polish and she was like, Oh yeah, like that uh very far off. But uh maybe there'll be an app for him soon that that he can do that's or use that's better than Duolingo. And and someone actually, yeah, that's a callback. Someone did point out that there is an app called Speak that is trying to reinvent the space. Like I s I I said in the podcast, like there's uh it's uh ripe for disruption, because most of them just teach you vocab and it's not that great. And apparently speak is that, and they started in Korea as an English um teaching app, and then they got they're massive in South Korea now, and they're branching out to other languages, but currently uh Farsi or Persian is uh not on the app.
BenSo I mean I thought you might have an interesting take here because you at one time worked in China and you certainly spoke Mandarin fair pretty well, like what did we say, ten years ago?
ConorYeah, twelve twelve years to be or thirt thirteen to be exact. Anyways, just over ten years, yeah.
BenSo I was surprised that you didn't actually bring up learning language from humans over the internet, right? Because all these apps, they're fine, but uh certainly once you get to a certain level, I would much rather get lessons from a native speaker, right? I would I would I would go with Duolingo or or uh Rosetta Stone or whatever to up to a certain point, but but there's no substitute for, you know, talking to real people, I think. Yes. And you know, there's there's there are several sites now. iTalkie is one I'm aware of, and there are I'm sure others where you can just go on the site, sign up, get lessons in whatever language you like from whatever native speaker tutor is on there.
ConorYeah. Uh a hundred percent agree. I I mean I th I think implicitly I kind of said that by saying as soon as you go to the country and you're immersed, you know, it it just skyrockets.
BenYeah. But if you can't go to the country or, you know, like many of us can't just drop things and go to a country to learn a language. Uh and also, you know, there are lots of languages you might want to learn where you don't particularly want to live in the country, or at least not for an extended time, right? Right. So, you know, like like when I was at school I studied French. I s because I'm English, you know, that is the standard foreign language that everyone in England learns as a as a um high schooler, as a middle schooler. Um and so by the time I graduated from high school, equivalent of I was pretty fluent in French. You know, like I we had a standing homework, which was to record uh the news bulletin from France Anter, which you can receive in the south of England on long wave, um, or could. Um so I would record that every week and translate it. That was our standing homework, right? So and so by the time I graduated high school, I was pretty fluent in French. I've lost it now, but but I I did go during the pandemic. I went back and I went to iTalkie and I booked a couple of lessons. And the great thing was I could choose, you know, I what kind of French do I want to learn? This tutor is speaking French and they're from Paris. This speaker is from Montréal, right? This other speaker is from Senegal. So you can choose kind of which variety of the language you want to learn, and you can get a tutor that matches you. And I found that really good.
ConorYeah. No, a hundred percent. Uh I hadn't heard of that website, but there are definitely a bunch of websites. Some of them specialize in just a specific language, which was the one that I tried out that one time. But yeah, that 100% agree. I mean, I I forgot a bunch of things that I should have mentioned. One was someone pointed out I it was either Mastodon or Blue Sky, I can't remember which one, but someone said, I I'm surprised you didn't mention watching television shows in that language. Yeah. And I was I just had this kind of like facal moment because there is I I think I've mentioned it at some point on this podcast. There is a specifically in in China or uh in Chinese is an amazing show for learning um Chinese called Fei Cheng U Rao, which is imagine uh the X Factor combined with the Bachelorette that resets every 15 minutes. So there's like 20 women on stage, each with an X Factor uh button in booth, and they bring out guys one at a time, and you know, in the show, who knows who how it is in real life, but it's about 15 minutes on the show where he comes out, he introduces himself, and at any point during the segment, the girl can hit the X button uh to say she's not interested.
BenI've never seen either of those shows, so you're gonna have to explain to me how they work.
ConorX Factor is like three judges with an X, where it's kind of like an odd, you know, they come out with some kind of talent or singing, and if they don't like it, they hit the X. Okay. The Bachelorette is one or The Bachelor, I guess, is one guy, and then N girls, and you know, one of them and they end up together at the end, and it's just one of the romance reality shows. So if you combine those, there's a bunch of women, each with an X button slash uh booth, and uh and then one guy. And the reason it's great, I mean, say what you will about the show, it's quite entertaining because you know, there's they have different characters that come on in terms of the guys, and then sometimes if they're not attracted to them initially, like half the girls will just hit the X, and then it's kind of awkward because you know, that's usually bad. You you ideally you want them not to hit the X. Don't judge your book by its cover. Yeah, yeah, exactly. But the reason it's great is that it one, it resets every 15 minutes. It's like an hour-long show, so you'll see three or four different guys, and if you get lost at some point, it just is you just gotta wait five minutes and then it's gonna be a new person. The other reason is it's all hi, my name is uh, you know, I live in this city, my job is starting out conversational. Yeah. And and towards the end of the 15-minute segment, they do start to talk about their hobbies, and I like to dance or I like to fly airplanes, and so it you do get to learn new vocabulary. It like it always starts off very easy if you're just learning the language, and so it's it's a great show. Like a lot a lot of times people will recommend you some, you know, the equivalent of like Friends or the Big Bang Theory, but like you're gonna get lost so quickly and you're not gonna understand what's going on unless if you have English subtitles, uh, which I don't recommend. Anyway, so that that is a a another fantastic way that you know it doesn't it's you can find a lot of these shows online for free, like Fe Chung Rao, it's on YouTube, you can get all the episodes. Um and the other one is if you have a f uh if you live with someone like in Embrace's case, a cousin of mine who lives in Montreal, with his partner, he would alternate days in English and French. And he is he is not just fluent in French now, but like uh most people don't realize that he d didn't speak French to begin with, because his accent is so good. But that it takes a lot of effort, right? There's a struggle at the beginning when you're trying to do French all one day.
BenYeah, to get to get a halfway good accent, you need to be in some way immersed. Um I was, you know, living in England, I had teachers who were fluent in French and German, and in some cases uh were themselves French. Um so I was able to get a pretty good accent. And of course I was consuming actual French media. Right. Um so I was able to my accent's pretty good. Um, although these days I'm super rusty. Like when I went onto the site and got a got a uh got a lesson, um the teacher was really nice, um and she said uh you know you know, but it's strange, some kind of some vocabulary, some strange vocabulary stays with you, right? The kind of thing you would get in vocabulary tests as a kid. Um I when I last met my French teacher, I said to him, You're still the reason I will never confuse a steering wheel and a shutter. You know, because in French those are common those those words could be confused, at least to English speakers. But uh but yeah, so what I've lost is the fluency. I so my my when I speak it's halting. I'm no longer thinking in French, right? That's that's what you lose, that's the first thing you lose. Yeah. Um but uh but yeah, if if you can drop someone in a country after three weeks, four weeks of immersion, I think I think you know, they they they pick that up.
ConorYeah. It'll it'll skyrocket for sure. Look at that. A second mini episode on uh learning language. Is French the only language uh that you've got a lot of different things?
BenWell I studied up. So in school I studied, I have a German GCSE, although I don't remember that much of it. I never really cared to learn all of the different ways that prepositions take different cases. French French is the main thing I learned. Uh I learned Latin as well, but again, that was by the side. But um French was the thing where I learned it and I learned it over a fairly long period. Like I had a good ten years of of French. I did French GCSE, I did French AS level.
ConorUm G C S E and A S, these are I think UK terms.
BenYeah, so G C S E is you take that in um uh sophomore year of high school.
ConorOkay.
BenWhen you're sixteen. And A levels are kind of like university entrance exams, you take them when you're senior year. AS level is same standard as A level, it counts for like half. Um it's basically speaking in French in the case of French when I took it, it was um speaking and reading and fluency, but no literature component. So we didn't have to study Victor Hugo or anything like that. But we did uh you know totally listen to French radio.
ConorInteresting. Yeah, that w is probably preferable if you're just trying to learn how to converse. Yeah.
BenAnd not necessarily uh Although I'd have to say, re you should read French literature as well, because it's something that's really good. You can read it in English translations, but can you read in French now still? Uh I think it's charitable to say no. Um you know, haltingly, I I could I to read an actual book or a a newspaper article, there'd be there'd be bits of vocabulary I don't know. So I'd have to s I'd have to say no. But I still, you know, you can you can get an English translation alongside the French translation, and if you have reasonable French, then it makes sense to to read the French and when you need to to cross-reference.
ConorRight, right. There yeah, I remember when I was learning Chinese, there was a really good website where they had popular uh novels. The one that I read was uh Narnia Twanchi, which was I'm probably terribly messed up the tones there, but it's uh Chronicles of Narnia. And uh it was great because it would show you the in Chinese the text, but if you didn't know a word, you could hover over it and it would basically give you the English one. So it's kind of like an interactive way to progressively learn how to read, which is quite nice that like you can imagine you're trying to read something in I think in in Kindles they have the ability to like define words that you don't know, you know, you hit on it and just define a word. So it's the same kind of thing, but just for translation, and that was a really good tool. Alright, anyway, so we've talked about AI, we've gotten your thoughts, and we've we've talked a little bit about learning languages and a couple other topics. Um where should we go from here? I I mean I've kind of been dictating uh have you got topics? I know I know we mentioned C now if you if we want to if you're there.
BenAre there other topics on your um stack of a little, I mean, a a lot of what I've been putting brain power into these last few months is um I've been I've been giving a course in software design at work. Oh. So I and how how to design functions, APIs, types, all of the above. You know, the course has been fairly wide-ranging. It's been very interesting. This week is actually the final the final one. There have been twelve of them. So it's been quite the undertaking. It's been really interesting, I think it's been really valuable, it's been hard work for me. Um it turns out it's really difficult to distill thoughts on like and it's the thing of like, you know, we know beautiful code when we see it, but how can we teach people what good code design looks like? So those are the kind of questions I've been wrestling with.
ConorI imagine you uh so this is a fantastic I had no idea about this. It's a fantastic topic to talk about, software design. And it immediately makes me think of the fact that uh Sean Parent at Adobe is also, he, with his reincarnation of the ST Lab, um, has been also, I think, with friends at the company, teaching a course which I think is called Better Code in Symmetry with his upcoming at some point book.
BenUm and has given I'm really still waiting for that book. That book's been upcoming for a while. I'm hoping that Sean gets time to finish it.
ConorYeah. I think he's been um the last time we chatted, he said he was been spending more time um, you know, getting the the videos out which correspond to the you know chapters of the textbook, and um we'll link a couple of them in the show notes that he's given talks at different conferences called uh you know Better Code Colon Insert a chapter of the book. I bring that up because uh the first question is is all is is this stuff uh publicly available in terms of slides or recordings anywhere?
BenNo. No, it's it's an internal course, but you know, some of the same thinking makes its way at times into some of my conference talks. I see.
ConorAnd is this is this a one-time thing at uh Intel, or is this something that you plan to do potentially in the future?
BenWell, you know, in a sense that part of my job is helping to level up the teams that I'm on, um, that that aspect continues. In terms of this course, I am I am glad to have done it. And I'm I'm not in the market for spending spending a huge amount of brain power doing another course right now. But um But it's been great. It's been really good.
ConorWould it be if you ever did it down the road after taking uh hiatus from uh doing the course, as obvious it's a lot of work, would it be something that or is is it would it be something that you know would uh ever be recorded similar to the A9 or Adobe stuff, or is it um too much internal For this particular course there's not a whole lot of internal content, like there's nothing particularly secret in it.
BenMost indeed when it comes to actually talking about code, most of the examples come from our open source libraries that I work on. Um as you as you sort of may expect, that's that's fairly commonly the case that I reach those for examples. So yeah, there's no a priori reason why something like this should not be public, I suppose. But but you know uh there's it swings and roundabouts, right? Um because it's not public, actually when I give the when I give the talks internally I get I get to sort of tailor it to the audience a bit more. Right. Which is which is helpful as well.
ConorYeah, and of and of course if you're if you would record uh the lectures or the talks, it's obviously gonna affect the willingness of participants to speak up and ask questions if they know it's being recorded. Right. So there's obviously trade-offs. I mean, exciting to hear that you're doing that kind of thing.
BenSo I mean can you give an overview of you said there's twelve different talks or lect are you calling them talks, lectures, or there are it's a series of twelve, and really it's twelve because I think because after I'd done this many, I got I kind of got to the point where I'm like, twelve seems like a good number to finish it off and I want it to be finished. Um but we cover all kinds of things. So one of the first questions, you know, like the introductory episode was about like what actually is good code, what is good well-designed code, what do we mean, and and how do we teach it? And that's a really difficult question to answer, right? And the way I decided to answer that question in the course, the question of how do you actually teach good software design? The the only way I came up with that seemed to me worthwhile was to take a leaf out of non-software design's book, right? To look at to look at other other things in the world, like like graphic design or like you know, um any kind of creative endeavor where design is a part. And in almost all cases, the way you hone design skills is through uh critique, right? So it's not enough just to say, oh, you know, this is good, or here's an example of good. Um, but we have to, you know, so one of the things we did in the course was look at different APIs and critique them and say, you know, what when the author wrote this, what were they thinking? Um, what do we think they had in mind, right? And what use cases do they have in mind, and what requirements did they have and what constraints did they have? And then, you know, if we were to sit down and write this same API now, would we make the same choices? What are the choices? You know, what are the axes of variation that we can identify? You know, just the simple act of sort kind of identifying the design space of the code is is one important thing to do, right? And and it's important to really think broadly about that and to think about that in a way that is not as much as possible thinking about implementation. And it is so hard, you know, for engineers like us, because we're so used to implementing, right? As soon as we see a problem, we think, oh, I know how to do that, I know how to solve that, I know how to implement that, just tap, type, type, type, I can have an implementation. But no, the trick with design is to say, let me assume that this can be implemented. I don't care about the implementation today, I'm not wearing that hat, right? There will be a time when I wear that hat, but that is not today. Today I'm saying, what's the design? What are the, like I said, axes of variation? How are these things going to be used? How are they going to be composed? It's thoughts like that. And it's also kind of um expanding our horizons there. Sometimes one of the things I like to do is like ask absurd questions, you know, and particularly having studied multiple computer languages, sort of helps expand your ideas there. So you think so you think of things like, well, what if I, you know, what if I could in C in C, what if I couldn't use functions? What if I only could use lambdas? Right? No such thing as a function. Well, what if, you know, what what things have to live at compile time, what things have to live at runtime? Um, you know, what what if I can't use this construct? What if I only can use this construct? What you know, sort of absurdities. Like what if what if no functions ever return? And all they ever did was pass on a continuation. There's a style of coding that we almost never do in C. But you know, thinking about that really helps you think about senders, for example. So there are all sorts of different kinds of I don't know, techniques I tried to come up with, just kind of examining how I think about code and how people I have worked with who I have seen what they can do and sort of I've learned from them. And I tried to I tried to put all these things into a course. And along the way, we did some API critiques, like I said, because that's a great way to really one of the only ways to hone a kind of design sensibility is by reading other code and thinking about it deeply and critiquing it. But we also studied, you know, we studied patterns, we studied some practical things about how can we design functions, how can they be more or less composable, how does that scale up to APIs and types and objects, uh, and how do we test things? You know, that was that was one of the one of the sessions.
ConorSo I mean it sounds like a certain percentage of this course is almost like the philosophy of good software design. Is it Yeah. Is that true? Would you agree with that?
BenI mean that certainly was how I pitched it in the introduction and the the coda um sessions. Because because yeah, um design is about it it's separate from implementation, right? That's one of the things that we're trying to we're trying to uh present here. It's one of the things we're trying to say. Like you can you can get a problem to solve and you can go ahead and implement something and solve it. And you know, Alice can do that, Bob can do that, Charlie can do that. They can all code up implementations that fulfill the criteria, that fulfill the requirements, that adhere to the constraints, that that pass all of the tests. But then we can look at those three different implementations and they will be differently designed, they will be, you know, one might be ugly, one might be beautiful, one might be somewhere in between. What how how do we quantify that in a sense? How do we characterize that? How do we know that code is ugly versus beautiful? You know, and it's about looking beyond what today's problem is. And it's about looking to, you know, how will things change in the future? Is this code uh changeable, malleable, understandable? Properties like that.
ConorVery interesting. I mean, it sounds uh not dissimilar to a couple talks. Are they the same or are they talk about uh tangentially similar topics? There was one that Titus Winders has given about I think it was software engineering versus programming, or he has some kind of quote around that, you know, that programming, software engineering is programming plus time or something.
BenLike integrated over time. Yeah.
ConorYeah, integrated over time. And then David Sankel, he gave a talk a couple years ago at a C now that was looking at software engineering from the perspective of other engineering domains. Was kind of like what can we learn from you know actual civil or mechanical engineers and stuff and engineers that have bodies of whatever professional organizations behind them that have a lot more not weight behind them, but you know, they they have codes of ethics and whatnot and uh things like rules they have to abide by, whereas we don't really have that, at least at this point in time.
BenYeah, and there are a couple of thoughts there, you know, to tie back to our earlier discussion about AI coding. Like one of the problems right now is that AI can't take responsibility for the code, right? The programmer has to take responsibility. And, you know, if you're working in a field where your code could result in harm to humans or loss of livelihood or even of life, um that's a very serious uh ethical concern, I think. You know, this is something I feel every day. I work on code that that goes into chips that are used for everything, right? You know, including you know, uh computerized operating theatres, for instance. Um we don't just make objects anymore as a society, we make computers. We what's the quote? We don't we don't drive cars or fly planes, we have computers that with wheels and computers with wings and you know, computers that we use to to heal people. And it's qu when I took this job few a few years ago now, and even when I took my previous job, that was something that I sort of felt quite strongly. Um, you know, I came from the games industry. In the games industry, if you screw up, it doesn't matter that much. Um but if but if you're working in really it doesn't. That's not to say that the you know the games industry is is a hard job and a worthwhile job, but at the end of the day it doesn't have the same kind of ethical concerns around it as if you're shipping code that could lose millions of dollars in seconds, or could hurt someone if it goes wrong. Right? Um computerized operating theatres are a thing. Um you don't want to know what happens inside them and what kind of you know, because tech support exists, and sometimes it is. Have you tried turning it off and on again in the middle of an operation?
ConorI guess yeah, I I definitely have never worked in a domain where I've had to worry about someone's life. I mean, I uh You're obviously completely correct about the the gaming industry, you know, there was a bunch of bugs and stuff that happened with Cyberpunk 2077. Not that I never played it, I just I well I like watching reviews online and people getting upset and whatnot. But like that was that was the result of it, right? People post YouTube videos of uh and you know, maybe in the worst case, like someone's GPU gets overclocked and you know i it it's fried. But no one died, right? Like it's um it's not life and death, at least that that that I know of.
BenAnd I'm not working right now, I don't work directly in that line, right? If but I often think, you know, it like if I went back and had my time again, I might choose to work in in medical devices, you know, because that's an area of the where it helps people, and that's just something that I think is is is good, you know. That's just my bias maybe or my my leaning. Um but I don't so I don't work directly on those things today, but I but I do work on kind of a substrate of things which is used for all kinds of reasons, right? And so, you know, I work on power management inside the CPU. If my code goes wrong, CPU doesn't run, right? In extreme cases, the CPU burns itself up physically. Right. Um so so we have to be absolutely sure that our code works and works correctly, right? Because because of the use cases that that things get put to, it could mean that someone's life is on the line. That is a very real possibility.
ConorBe 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. I am the anti brace. Um