Ben is going to be temporarily replacing Bryce. I say every once in a while on the podcast that uh we do have to test out different co-hosts, you know, in case uh Bryce takes a tumble. Temporarily, as temporarily, as far as Bryce knows.
Andreas WeisOf course, of course, like way way better, way better. Like your subscriptions will double at least.
Vincent ZalzalI really like it. Honestly, it's my first it's my first conference, both as attendee and speaker.
Tristan BrindleThe conference is awesome. So uh we're recording this at the end of the second day. Honestly, a really, really fantastic experience so far. I know, spreading the love for functional programming patterns and hang on, this thing is actually a find if, or this thing is a count if, or that you know, that's a rotate.
Victor CuiraUh but definitely changes the way you think about code. So it's about shifting the way you you approach code and design.
ConorYou could imagine some like godlike voice saying, and then there was the elementary identificator. We started with I. What about what do you mean, what about? It's about ducks, right? Ducks? It's not about ducks. Welcome to ADSP the podcast, episode 140, recorded on July 18th, 2023. My name is Connor, and today with my co-host Ben Dean, we record live from CPP North 2023 in Toronto, Canada. We interview several different speakers: Vincent Zalzau, Victor Ciora, Tristan Brindle, and Andreas Weiss. We are here live from C North. CPP North! I still messed it up, it's all right. With Bendin, it is live 2023. Today is July 18th, second day of the conference, and you have finished both your talks. You gave one talk, Calindrical C, yesterday on Monday, and you just finished your keynote today, optimizing for change. It was absolutely fantastic. How's the conference been, and how have your two talks been?
Ben DeaneThe conference has been great. My two talks have both been great. Um the calendrical one was that was the fifth time, I've I think the fifth or fourth time I've given that talk, so that was that's a really fun talk, you know. Um it was originally scheduled later in the week, but uh with things being swapped around with some folks had travel issues, it got swapped to yesterday. And then the keynote this morning, you know, I have this thing when I'm up on stage, I don't really remember what happens up on stage. I think it went well. I think I hit all the points I meant to hit, and uh people seem to uh enjoy it, so that's that's a win.
ConorI personally thought, I mean, I can't speak for everyone at the conference, I thought it was fantastic. The links will be in the show notes, but probably actually by the time I think keynotes, I don't actually know. The links they might go up fairly soon. Keynotes typically go up first, so the keynote talk will definitely be linked. And I think I don't actually think your calendrical C1 is out from C now yet, but by the time this airs, it probably will be, because I know that C now is slowly rolling out, so there will be some lot links, some will be live, some will be live in the future. Outside of your two talks, what have you enjoyed most? Is it the food? Has it been another talk?
Ben DeaneThere's been lots of good stuff here. The food is good, the food's really great. The maple tarts came out just now. We just literally like this break session. Did you did you have one? I did, I had one. I was specifically looking for them. Apparently they and I asked Mike about them from yesterday, and that's how I learned they'd be here right now. Uh but the talks have been fantastic as well. Um your talk composition intuition was just super fun, all about uh combinators.
ConorA passion project of mine. Link will be in that, in the description. That probably won't be up for a couple months, but uh all of them all the talks are being recorded, so you'll be able to watch them online if you weren't here at the conference.
Ben DeaneYeah, absolutely. Um I've been just trying to go to talks that uh are new to me. There's always a few at every conference where people, you know, people because people make typically maybe one talk a year, maybe two, and they take them to different conferences. So there's a couple of talks here, like would be at any conference that I'd seen before on YouTube or from ACCU or wherever it was given before. So I've been trying to hit talks that I haven't seen. Um I really enjoyed Victor's talk. Uh I enjoyed Timo's talk on safety, which which I had seen and actually an earlier version of, I think, but you know, people also evolve their talks, so that was great. Victor's talk was fantastic.
ConorIt was what, and then some tea, I think. And then some tea. Yeah, and then paren paren some paren paren tea. It was about what was it about?
Ben DeaneIt was about uh functional patterns with optional and expected. And maybe some other things I don't remember because I'm on the mic. Yeah, that was basically my recollection as well.
ConorI mean, it had an odd title. It could have had a different title that was like, you know, yeah, exactly what you just said. Functional patterns with optional and expected. And it it alluded. There was a bit of Haskell code, uh talked a little bit about functional programming, what my favorite kind of, you know, sprinkling code from different languages, show how we stole ideas and how to use them well in C. But right? Yeah, that's about sounds about right to me. Alright, I think the goal is now, you are going to be my replacement for Bryce, my traditional co-host, co-host for the moment, but uh being replaced by Ben himself. And also, too, I keep the stats, and maybe we're probably in a bad place because now that I realize we're standing right in front of the coffee.
Ben DeaneWe could step down into the more upholstered area where there's less odd surfaces.
ConorThat's exactly what we're gonna do. And it's for the moment, Bryce, I'm gonna hand the mic to Ben. Ben's gonna do the interviewing, I'm gonna do the audio adjusting. And the point is, Ben is gonna be temporarily replacing replacing Bryce. I say every once in a while on the podcast that uh we do have to test out different co-hosts, you know, in case uh Bryce takes a tumble. Temporarily, as temporarily, as far as Bryce knows. Yes. And and that was what I was gonna say is we'll see how Bryce reacts. Well, I have all the power, so if I want you to be co-host for the day, you get to be co-host for the day. I was gonna say is I think you are the number two most featured guest by podcast edits, like by podcast numbers. Sean is number one. I believe when this is released, it'll be like 11 podcasts across four interviews, and I think you are at like seven or eight across two interviews, because we I think it's just I think it's just that we we talk for so long when we interview, and you split it up for like maybe four or five.
Ben DeaneLike I've only actually talked to you twice, but you don't tend to have guests very frequently.
ConorMaybe you're ramping that up a bit, but Yeah, it's and actually I think it's three times now because the most recent, uh, you and Tristan, that was the third. We did a solo one with you that was like four, and then we did the you and Tony live from C now virtual 20 2020 or 2021.
Ben DeaneWas it virtual?
ConorIt was definitely virtual, I think. I think I think that was the 2020, it was the first virtual conference, right? I think it was cancelled in 20, and it must have been 21 when it came back. That definitely sounds right, actually. Yeah, I think 2019 was the last in-person one pre-COVID. 2020 was canceled, and then 2021. I think that was completely virtual. And then Tony showed up halfway through. Right, right, because we were in that I forget the name of it. Uh Gathertown, Gather Town. Gather Town, Gather Town, yes.
Ben DeaneYeah.
ConorAlright, now we're now we're hunting. We've talked to Kay Gregory and Jessica Kerr, two of our keynotes. One is spoken on Monday, Jessica speaking tomorrow. They've both agreed to chat with us tomorrow, but right now they're both preparing for lightning talks, which are going to be taking place in less than 45 minutes or so. Vincent, do you want to be interviewed? Alright, I'm handing the I'm handing the mic over to Ben. You're in charge now. And uh Bryce, let's hope he doesn't do too well because uh your your you know your tenure here could be uh could be on uh you know limited here.
Ben DeaneAlright, so uh here we have Vincent Zalzal. Uh you just gave a talk that I was in just now, and it was about how to write readable code. How'd it go?
Vincent ZalzalDid I did better than I thought I would. Uh really I'm happy uh with how it went, and uh I hope that it's a nice intro talk for anyone that wants to learn to use the C core guidelines and choose right parameter types, uh write code that every team member can understand clearly, and yeah, I just hope that it gets shared in the end.
Ben DeaneRight on, yeah. Uh how's the conference been in general?
Vincent ZalzalI really like it. Honestly, it's my first it's my first conference both as attendee and speaker. So I really like it. I like uh seeing all all the people I I've looked at uh on the internet before, like you actually, and uh listen to the podcast. So uh yeah, I'm very happy and uh surprised actually to now be on the podcast. So yeah.
Ben DeaneSo this is the first time you've been to any C conference, did you say?
Vincent ZalzalIt is, it is. It's my first time, yeah.
Ben DeaneYou think you're gonna come back to this one or to any others?
Vincent ZalzalYeah, maybe, uh maybe. The the stress level was quite high, so I have to uh uh calm down first. But uh yeah, yeah, I th I think so.
Ben DeaneWell, great, great. We have a new speaker on the circuit. We have Vincent. That's fantastic.
ConorAnd I'll uh follow up with a question just just for the listeners, where are you where are you based out of and uh and what do you do for work?
Vincent ZalzalSo uh I'm uh based in Montreal and uh Canada, and I work in the computer vision industry. So I've done 3D reconstruction and sensor calibration, so camera calibration, think about removing distortion from images, taking world measurements uh from pixels, converting all of that, maybe confirming that uh mechanical object is uh to specs, that kind of stuff. So computer vision in general.
Ben DeaneAwesome. How long have you been programming C?
Vincent ZalzalI've been uh using C professionally for 15 years, a little more than that uh before at school, say. And I've used some other languages, but mainly C at work. I've done some C2 for two years, and on the side, some MATLAB, Python, some Rust.
Ben DeaneAnd how modern is the C you you get to use? What standard are you on?
Vincent ZalzalUh it depends. Uh unfortunately, uh I've been uh capped to C 14 for a very long while. So it's actually by looking at those uh conferences, those talks that I could keep up to date and by side you doing side projects and that kind of stuff. And in the last two years I've been doing C sharp. So uh uh yeah, I I felt almost like an imposter now not being at the forefront uh and not using C in the last two years, but uh I think I've kept enough up to date to be on par, at least to be a speaker.
ConorSo I mean uh C sharp has the benefit that Link came in what, C sharp 3 or something? I don't know anything about C sharp, but I know that the equivalent of C20 ranges stuff has been in C sharp for many versions now. So my guess is that you have access to that kind of stream fusion, composable function stuff, which is great for C sharp. We love that, right?
Vincent ZalzalHonestly, Link in C sharp is pretty neat. I I find it really nice to use. Uh and it's, you know, the the fact that you can use the dot syntax or it you can use the SQL syntax if you prefer. You have like two different syntax to use that, depending on which you're more comfortable with. But there are also things that I really dislike about uh C sharp, so yeah, I'm glad to be back to C now. So yeah.
Ben DeaneCool. I need to tell you by the way that uh the global API injection pattern is usable in 14. It's not just for 17, even though I showed it with a variable template, which is 17, you can do it with a function template with return type deduction. Right? 11 doesn't have return type deduction, so you can't specialize the function template in the same way, but it works on 14. So if you are still stuck on 14, you can still use it.
Vincent ZalzalI'm looking forward actually to look at that code, understand it calmly, and yeah, I'm very curious to know because it's a very common problem having global APIs. I think everybody has that problem. So if it there's a nice pattern that we could encapsulate and propagate, it would be so nice. So yeah, I'm looking forward to try it.
ConorCool, awesome. All right, thank you so much, Vincent. We will definitely link your YouTube talk when it comes out in the show notes. And if you're on the socials, I'll find you and link your stuff so people can follow you. I'm not sure Twitter, Mastodon, Threads, you know. It's a confusing time for social media. But uh I will track you down if you have it and we'll we'll link it in the show notes. Thanks for being on the pod. Thank you. Alright, we are going to go find maybe we should talk to Victor, seeing as we were talking about his talk. I see the back of his head right there. Victor, do you want to be on the podcast? What about? Are you telling me you don't listen to ADSP the podcast? It's about travel. It's about ducks, right? Ducks? It's not about ducks.
Ben DeaneIt's about the travels of Bryce and Connor. Yeah, that's just C.
ConorDo you want to you wanna you wanna go? I don't know if I or do you have to get approved by uh you gotta talk to uh Satya Nandella?
Victor CuiraNo, hopefully not.
ConorHopefully not. We're gonna hand uh Mike once again off to Ben, our replacement for Bryce. And uh he's doing great so far. It's not looking good for Bryce. Uh here you go, Ben. Well, let me tell you my travels in the last month.
Victor CuiraYeah. I was Slovenia.
ConorYou're gonna be editing this, right? I mean, I think I'm gonna leave that part in. That's fantastic. Let's see yes, let's at the beginning of each uh interview we should roast Bryce a little bit. I love that.
Ben DeaneOkay, so Victor, Victor Chura. You're at Microsoft, right? Yep, that's what they say. And so what kind of I mean, what's your position? What kind of C are you doing day to day?
Victor CuiraI'm in the ID productivity team and the ID experience group, and I work on tooling. Uh stuff I've been working on for many, many years now, even before joining Microsoft. I've all always done developer tools, SDKs, libraries, productivity stuff for devs mostly. So I keep doing that. And helping to improve, hopefully, the tool I've been using for uh 20 years now. Visual Studio.
Ben DeaneNice. And uh so you ha you're more than one talk or just one talk? You had a talk yesterday here and then some tea, which was about optional, expected, functional patterns.
Victor CuiraYep.
Ben DeaneCan you tell us a bit about that?
Victor CuiraUh so it was um one of the talks in um my long arch on um I don't know, spreading the love for functional programming patterns and uh embracing um writing more clean and readable and uh composable code in and borrowing concepts from functional programming languages and uh figuring out how to use them in in day-to-day C. And uh m most of the examples were centered around uh monadic extensions for uh standard optional and uh patterns on in using the new standard expected. So I saw interest in in the crowd. I had uh quite a few questions after the talk. Uh so people seem to be interested in that kind of stuff and that makes me happy. And uh hopefully the the talk was well received and uh people will will be inspired to to learn more about these kind of things. Yeah. I've done quite a few functional programming style of uh talks, so um yeah, maybe I keep doing that.
Ben DeaneDo you use a lot of functional programming in your day job?
Victor CuiraUh not a lot, but uh I I I I tend to be in inspired by that style of of thinking and uh mostly by um decomposing problems in that way and structuring uh uh composing uh computation and structuring um uh programs in in that way. So it it's it's not something that uh resembles a lot in what you see in the slides, uh but definitely changes the way you think about code. So it's about uh shifting the way you you approach code and design.
Ben DeaneI agree wholeheartedly. That is my experience as well, I would say.
Victor CuiraSo C code won't look like Haskell code. Um but yeah, Connor does.
Ben DeaneAnd it won't look like APL either, Connor.
ConorI mean it definitely won't look like APL, but uh the ranger stuff, you know, the range of stuff is getting pretty Haskelly if you ask me. Yeah, yeah.
Victor CuiraAnd I I I like the how you did the progressive transition from Rust to C, where it was half Rust, half uh C mixed. And and when when he kept the the the the captures in the lambdas in in Rust style and because it looked better.
ConorSo that was cheating. That was don't uh don't tell anyone, but that was the the lunch break in the prior talk slot. Uh adding all of those slides was like over the last three days, and uh I wasn't sure I'd have time to get all those animations, but it just it looked so nice. Uh what's the name for enumerate? And then I think Ben, you were the only one that got it because everyone said about it. It's enumerate in 23, right? Exactly, yeah. But I even I forget about it. For so long, I have been using Zip with IOTA because it was the very, very last uh range adapter to get in because I believe it was quarantine, had been working for so long to change the API a little bit, but then they just decided to throw it out. Like they had something that was working. But anyways, it went in at like the 11th hour, and uh it's always at the bottom of the list of the stuff that people list off. Anyways.
Ben DeaneI mean I've never used it, I just know about it from somewhere because I read cppreference.com every day.
ConorI mean it's it's meant it's a weird hobby.
Ben DeaneYeah. It's a perfectly good hobby for a C programmer.
ConorYeah. I'm I'm still miffed that they didn't call it um zip with I actually really wanted like zip with iota, but Scala calls it zipwith index, which I actually I was having this debate with someone yesterday that they said, oh but enumerate's the right word for it.
Victor CuiraAnd I was like, uh I think index is more explicit. I mean it's uh it's more honest in in what it does. Whereas enumerate if you kind of have to know what it does.
Ben DeaneYeah, I mean other languages, there are some other languages that call it enumerate, right?
ConorYeah, definitely Python is the most popular, Rust calls theirs enumerate as well, so and I think Rust kind of borrowed it from, but I think the most common it's not like filter or map where there's almost you know an universal agreement on what it's called. Yeah, except for C when it comes to map. Uh that was also the other joke of uh enumerate's enumerate, filters filter, map is transform. But I think enumerate is the most common, and then it's kind of across the board. It's either enumerate or something kind of that every language chooses something else. Uh but you know, what can you do? Uh you know, we'll learn to love it. I I think it's odd though that enumerate doesn't have a overload that takes a starting value because the spelling of it sometimes is almost shorter because you have to do a map with a plus one. It's almost easier to just zip with IOTA, because IOTA has a overload that can take the exactly. I find that just interesting as like the mental arithmetic of like enumerates only useful when really you want zero or you're gonna be calling a map right afterwards. Anyways, it's uh check it out and see plus plus twenty-three folks. It's uh good stuff is coming.
Victor CuiraSpeaking of good stuff, uh yeah, let me do interviewer now. So uh I'm curious, uh I I saw a lot of folks approach you after your your presentation today, and uh I was curious uh how did they um I don't know embrace the combinators and and all that uh good stuff that you showed? Like uh did did you get a lot of questions around um and figuring out learning, understanding that kind of code when you see it for the first time? Like what was the reaction?
ConorI really think this is the inflection point for array languages. I can really see BQN and APL entering the top twenty languages, I think, after this. No, I'm just kidding. Uh it uh What are you doing? I I think there's definitely maybe at this conference it's more it piques people's curiosity. I mean Tristan, who we're about to talk to I mean Tristan, you can come up here.
Ben DeaneWe'll uh Yeah, Tristan, come on over.
ConorWell, uh I'll finish answering uh Victor's uh question in a second. What but uh Tristan asked a question or not asked a question, but made a comment how he s he sees how introducing maybe these combinators not in the same library, but like how it could increase the flexibility of a ranges-like or flux-like library. And more interestingly is that I gave this same talk at Lambda Days in Poland back in June a month ago. Oh, that's a different. And that was a functional crowd, and I heard heard from maybe not a double-digit number of people, but like I had on at the end of my talk sort of put the uh URLs for the BQM pad and try APL, and a bunch of folks had like immediately gone. But I think they are so much more ready because they're already in Haskell or Scala or Clojure. So, you know, APL and BQN, it's it's a much smaller step. It's still a big step, but they see that and they're like, Yeah, oh cool, I want to take it for a spin. Um because I I think also if they're coming from Haskell, they're already familiar with a lot of these ideas, so it's it's less of a mental jump. But I think there's definitely it piques people's curiosity. I I don't think folks are gonna be switching to a new language. Anyways, let's bring Tristan into the conversation.
Ben DeaneYeah, I'll just do a quick intro for Tristan. Uh friend of this podcast, all Tristan Brindel, C trainer, based in London, right?
ConorAll correct. Yes. Hello. And I just realized this is the in-person trio that we we just did at a podcast interview of several episodes, may have been two months at this point since we released it. We did it on Zoom, and now here we are, plus Victor. And Victor, where are you based out of?
Victor CuiraUm I'm in Prague now.
ConorSo look at that. We're we're we're global here, you know? We got a Canadian, someone in America, someone in the UK, someone in Prague. Awesome.
Tristan BrindleSo tell us about the conference, Tristan. The conference is awesome. So uh we're recording this at the end of the second day. Uh we're just about to have the lightning talks. It's been honestly a really, really fantastic experience so far. Uh so I haven't given my talk yet, that's coming tomorrow. Uh hopefully that's gonna go well. Uh but so far the conference has been great. And um especially the talks by uh by Ben and Connor. Um I'm not just saying that because Ben's holding the microphone.
Victor CuiraNo, beat your talk for tomorrow.
Tristan BrindleYeah, what's your talk about tomorrow? So my talk tomorrow is uh it's kind of uh well, it's about my flux library that uh long time listeners of ADSP will already be familiar with. Um so it's about kind of the motivation, why I wrote this new library, what I'm intending, what the goals are, and then some sort of uh usage examples and some information about how you can use it and the cool things you can do. Great, so practical advice. Well, getting started advice, I guess. Yeah.
ConorAnecdotally, we just interviewed you very briefly. You got you got listed in the guests interviewed, but your interview was all of about 30 seconds at C on C, which was two or three weeks ago now. And you gave the same talk, but since then, I'm not sure how many other talks, if you did a tally, mentioned or showed flux code in their talks. I think it might have been zero other than yours, but now here we are, less than a month later, and you've had two talks at this conference outside of your own that you haven't given yet that have mentioned flux. I don't know if it's gonna be an aeroth has what, four? Three, three? Well what was the third one?
Tristan BrindleUh Timor, apparently, uh yesterday.
ConorUh so it was yeah, Victor's was the first. It sounds like Timur in his talk showed some flux code.
Tristan BrindleSo that's he mentioned it. He didn't show flux code.
ConorThat still counts. That's zero to three. Is it gonna be arithmetic? Is it gonna be geometric?
Ben DeaneThis is what happens at conferences, right? You come and then and then you've got if you're a speaker, you've got a a talk that you're giving, and and you watch talks, and then things things occur to you, and you sort of react to the talks as you go through the conference. It happens all the time. Yep. So yeah. Flux is uh spreading like wildfire. Flux is an idea whose time has come.
Tristan BrindleWell, I mean, I think so. I think it's a great idea. I hope uh I can persuade other people of that as well.
ConorCool. Alright, I mean uh should we ask? We've got we got Victor, we got Tristan, should we ask anything else while uh favorite talks or uh you know what should what should uh the listeners of the podcast do after listening to this episode?
Tristan BrindleUm again, I'm gonna butter up Ben because he's standing right next to me, but uh generally your your keynote today that was uh really, really excellent talk. Um other sessions, I mean uh Kate's keynote was was fantastic. You don't really have to say that, you could just say, well, Kate Gregory Gregory J the keynote. Um I really I mean I I'm just I really enjoyed Victor's talk, I really enjoyed Connor's talk. You know, it's just been a great experience all around.
Victor CuiraI agree. Victor, any final words? Um so um most mo mind-blowing talk was combinators, yeah. Uh unsurprisingly, yeah. I'm still I'm still gonna digest that one.
Ben DeaneUh and uh So on that one, I'm not should I be thinking about birds? Should I be thinking about letters? How should I how form a coherent view of combinators, Connor? You should be thinking of composition patterns.
ConorHooks hooks?
Ben DeaneYeah, but uh what name should I use?
ConorI'm thinking I'm thinking I'll just go with birds. I mean, birds is fine. I ref like the strongest semantic attachment of this concept to a word that I have is combinators, specifically the combinatory logic combinators that I showed in that Venn diagram. Uh but birds is fine, composition patterns is fine. Honestly, like the birds, the letters, they're all attached, and it's more just the pattern of like, I didn't mention this in the talk, but like think if you have a binary function and a unary function. A function that takes two arguments and a function that takes one argument. How many different ways can you compose those? Is this like a Catalan number problem? No, it's it's not really a catalan. It's just like start to think like we covered the B1, the blackbird, which is apply the binary first and then pass that to the unary. The psi combinator is apply the unary twice to each argument and then pass the results of those to the binary. The S combinator is apply the unary to the second argument, but leave the first argument alone. The sigma is the reverse of that, apply the unary to the first argument. Okay. But like So you just like combinatorially explore the space there, and and each one is a different combinator. And what's what's interesting is like the what was the first time I came across it where the S is reversed, where you're applying the unary function to the first argument instead of the second, the second one is the S combinator. It's in the SKI combinatory logic. But like I hadn't seen anywhere where it was applied to the first until Marshall Lockbaum's uh I programming language, which he did in 2012, where they call S in J hook, and then he implemented what he called the back hook, which is basically just that missing combinator, which is what it doesn't have a letter, so I made one up and I just called it sigma, because like there were some Greek letters, and so S has a the corollary uh sigma, and then D, which I never explained, has a corollary delta. But like, just this like if you start to play this game of like it's the same thing with algorithms when you have like find, which takes a value, find if, which takes a unary predicate, adjacent find, which takes a binary predicate, it's like there are certain algorithms that like are missing the unary predicate version.
Victor CuiraIt's like the standard model in in particle physics, like you you anticipate new combinators based on symmetries and missing things. Exactly. Yeah, like the the arrow can point the other way, or saying new elements, yeah, new new particles.
Ben DeaneExactly, the periodic table. Was that you did you say that earlier? It's like a periodic table where originally there were gaps, but you infer the existence.
ConorIt's this uh I we were having this a similar conversation yesterday about this book, or I I was the one that mentioned the book called Mind and Motion by Barbara Toversky, which she makes this uh sort of push for this idea that like thought is not based on language like Noam Chomsky says, but it's based on visualizations. And like she described a couple things of like taking this text or you know, if if it's these combinators, but then you you visualize it, you put it in this kind of hierarchy, and then you see missing gaps. And it's like, I would never have seen that just by looking at the lambda definitions and saying, oh S, like, where's the where's the version of S that has it over here? But like you see this graph that's missing like a node, and then you're like, shouldn't something be there? And then you're just like reverse engineering what's missing.
Tristan BrindleIt's really so one of the takeaways I I got from your talk was that it's a bit like if you start off just write writing for loops, right? Um and then you kind of get to recognize the patterns of, oh, hang on, this thing is actually a find if, or this thing is a count if, or that, you know, that's a rotate. And then you you start to recognize, hang on, that's actually what I'm doing. And I think it's probably the same thing with these combinators, that you know, you just write the lambda and it does the right thing, but then you do it enough and you start to recognize the patterns of, hey, no, I'm actually I'm composing these functions in this way.
Victor CuiraYeah, and and uh the hidden combinators are an interesting thing where you have uh algorithms like uh inner product and uh and similar things where you don't actually see it, but it's part of how it's constructed, it's part of you know how in how you use it. So it's it's it's not visible. You have to understand and to identify the pattern. So it's it it's it's hidden, it's not visible. It's it's not a function or a macro that you see there like in in your face. You have to understand it.
Ben DeaneI've got a final question for you, Conrad. Do you have a copy of of the book? Uh Combinatory Logic, volume one.
ConorIt is not in print, and it is actually very hard to find on the internet. However, I do have not a legally obtained copy because my eyes go sideways, of the first volume. I have both a PDF version and some other I have no idea what the dot uh sort of it's not Moby, but it's something. Uh so I do have a copy. If you look hard enough, it is online, and uh that's actually where like I never found an article that mentioned the elementary combinators, and I haven't read the text in full because it's very dense, but I skimmed through it, and in chapter five, that's when they actually get to like introducing the different combinators, and there's this great section where you know it starts introducing them, and it's like you could imagine some like godlike voice saying, and then there was the elementary identificator. We started with I, and then it goes on like paragraph to paragraph, and I'm reading this, just being like, oh my goodness, like like this is fantastic. I mean, probably other people would be like, what is he talking about? But like for me personally, you know, it's probably the similar when you're doing your calendar research and you stumble across some factoid and you're just like, oh, this is great, you know, it's uh it's what we do for fun.
Ben DeaneWe love it, we we absolutely love it. Um I gotta say, the combinator that I miss most is Kestrel. I find myself needing that all the time, especially in in a type-based programming. Kestrel is the K combinator, correct?
ConorAnd the amp. Yeah, const in Haskell. Yeah. That is uh Yeah, I I mean when I first saw I think I said that in the talk, I and K, my first thoughts were both of these is like this is stupid. Like who needs a function that returns its argument and then K is just throwing one away and keeping the other like who needs that?
Ben DeaneYeah, you don't realize the need for it when you first see it cold until you actually start using combinators and you figure it's incredibly valuable.
ConorThey are very, very useful and it only becomes uh apparent once you, like he's like Tristan was saying, like once you start to name these or just recognize these patterns, they're all over the place. And like my I didn't I don't think I actually have said it in the talk, but like my one of my sort of evolutions of my thought or like I I I my assertion is that like these composition patterns are like more fundamental than like binary mathematical operations. Like we learn symbols for plus, symbols for time, symbol for divide and minus, and then we stop there and we don't do anything for min and max except if you learn APL or BQN or J. But but like these things they apply to to you know the the space of math and numbers, but not really outside of that, whereas composition applies to every kind of function. Like passing an argument, you know, the same argument twice, that that applies, there's no like domain that that's limited to, right? Like any function you can do that with. And, you know, maybe people prefer their parentheses and stuff, but like once you start to see it, it's like it's like when you see something in another language and then you come back to C ⁇ and you miss it. Like when I am coding without these little patterns, it it breaks my heart. Especially too, even in Haskell, like it you gotta use four characters, five characters for some of these things. Like it as a symbol symbol is it's massive. Like the fact that W or C, like flip or uh join, are just a single character really influences the way that you will reach for these things. Cause it's because it's just one thing, it's just one character.
Ben DeaneYeah. I mean in Haskell, I'm I come from Haskell originally before, you know, you came from Combinators to this, I came from Haskell to this, and and so I know them as flip and const and and join, as you say. Um so now I've got to rewire my brain to think about the birds instead.
ConorI'm being a terrible host now because Victor asked a question and then you know, it's like uh Yeah.
Ben DeaneWell, also, I don't know how long you wanted to go with this recording or when the lightning talks are.
ConorUh Lightning Talks are in 17 minutes, so we'll probably do 10 more minutes, but we'll we'll we'll thank Tristan and Victor and we will pivot to To Andreas.
Ben DeaneAndreas Weiss. Uh you work at Woven Planet. Thank you, Tristan. Thank you, Victor. Thanks, thanks, Victor. Thanks, Tristan. I I'm standing in for Bryce on the podcast. Oh yeah.
ConorSo I'm Oh any anything bad or any any uh you know you want to say anything bad or how great of a co-host Ben is, would you like to hear Ben Moore as a co-host?
Andreas WeisUh yeah, of course, of course, like way way better, way better. Like your subscriptions will double at least.
ConorOh, Bryce, if that's the truth, we might need to see some numbers, but if that's the truth, let's hope if this one gets twice as many views as we do regularly, we might have to we might have to consider this.
Ben DeaneSo, Andres, you gave a talk here yesterday. Can you tell us about it?
Andreas WeisUm yeah, I was uh talking about um interface design, the the famous Scott Myers guideline, make your interfaces easy to use correctly, hard to use incorrectly, and I was um demonstrating like some techniques how you can use the type system to make that work for you.
Ben DeaneVery nice. Something very close to my own heart. What what C standard were you targeting with that talk?
Andreas WeisThat's a good question. Um I think I've had mostly stuff that should work with 17. I think the only thing from 20 that I had in there was the uh designated initializers. Okay, which is a feature that that I like very much, but that that was just one example. So most of the stuff should work with not quite that recent standards as well.
Ben DeaneGreat, great. Yes, I think I mean I think pretty much most people are close to 17, if not on 17. A lot of a lot of folks I meet at the conferences are now. Um a lot of folks are wanting to get to 20.
ConorI mean, I'm on C23, but we will we will link that's because I'm in research. I mean, technically, I'm on C23 when it suits me, and then circle when it when C23 doesn't suit me. But we will leave a link in the show notes to I think it's the there's a JetBrains one. And is there a separate ISO C or like C foundation? JetBrain survey that uh does the actual analysis. And I think probably the median is 17, C17.
Ben DeaneI think Yeah, I think so. Um so how's the conference in general? Any any favorite talks?
Andreas WeisUh oh yeah, it's uh it's very nice. It's my first time in Toronto actually. Um I really like Kate's keynote.
Ben DeaneLike that's that's that was great.
Andreas WeisYeah, I mean yeah, that that that's the kind of talks. Like she she really pulls that off like like no other. So yeah, I I really enjoyed that one.
Ben DeaneGreat. Well, we've got lightning talks tonight. Uh are you giving a lightning talk?
Andreas WeisOh yeah, I'm I'm giving a lightning talk, and my lightning talk has more slides than my main talk, so that's going to be interesting. How many slides? 60. 60?
ConorThere you go, you got six minutes. Are you are you kidding? Your lightning talk has sixty slides? Is that like is that like 55 slides of animation or something?
Andreas WeisYeah, there's there's there's some animation in there and some stuff that you're not supposed to read. It's only there for the effect.
ConorSo I'm I am very intrigued. What give us a little teaser? I mean the the lightning talks will be recorded and will be online as well at some point, but uh for the listener, uh give them a little and us also for us because we're about to watch them, uh give us a little teaser of what we can expect.
Andreas WeisUm yes, it's about uh complexity, runtime complexity analysis, how you do that.
Ben DeaneHmm, interesting. I support the notion of having slides for effect and not talking about them at all. I like to do that in some of my talks occasionally. I mean uh that is six minutes is what, 360 seconds? Yeah, uh well, lightning talks to five minutes. If you could stretch I just went to six minutes because you said sixty slides, but but yes. Right. I mean good luck. That's five seconds a slide then.
Andreas WeisRight, yeah. I I did I did a couple I did a couple of test runs. Like my my best one I was 30 seconds under, or the worst one I was thirty seconds over, so it's it's going to be right in the ballpark there.
Ben DeaneIt's we're oh, we're gonna see Tony for the first time tonight. If he's he's hosting Lightning Talks, right? This is true.
ConorFor folks that have not met Tony Van Eerd in person, he is local to Ontario, not exactly Toronto. He lives outside, I believe, in Kitchener, which is just outside Waterloo. If folks, if folks have seen the new BlackBerry movie, that's where that takes place, Kitchener, Waterloo. And he famously does not make any appearances until after his talk because he's holed up in his hotel working on his slides. I think actually he's even maybe been feeling a bit under the weather.
Ben DeaneHe's been unwell, I think, the last couple of days. So I hope he's feeling well again and able to do lightning talks tonight.
ConorSo it'll be a good sign if he's hosting the lightning talks, because that means he's feeling well enough uh to host them. But if we don't see him tonight, we're we're hopefully gonna see him tomorrow, and then uh hopefully we'll be able to grab dinner with him afterwards because we're on day two, tomorrow's day three, and then the conference wraps, so it's gonna be a a short, a short debut uh from from Tony.
Ben DeaneYeah. Um anything to to say more, Andre Andreas, or is that it? Also tell the listeners uh where are you based out of and uh you know how'd you get here?
Andreas WeisOh yeah, uh I mean we know we took the plane probably. Yeah. Swam. Yeah, so I'm I'm currently still based in Munich, Germany. So um also still uh helping with running the user group there for C. Um and yeah, I I just flew in first first time flying into Canada and I'm having a blast. It's a great conference.
Ben DeaneCool. Did you have any did you have any travel problems? There were several folks who had connection problems through New York.
Andreas WeisYeah, no, I I had a direct flight, so uh fortunately I was spared by that.
ConorAlright. And that's enough about travel. Yeah, enough about travel. If Bryce isn't here, we're nipping that in the bud. And I guess so if you're in Germany, last question. I assume probably on your horizon is the Meeting C conference, because that's just a stone's throwaway in Berlin. Uh are you gonna be there and are you gonna be speaking?
Andreas WeisUh, unfortunately not this year. So it's um they they had to um usually the the conference was always in the end of the week, and this year they had to put it in the beginning of the week, and now it actually overlaps with the ISO meeting in Kona. Oh and because of the huge time shift from Kona, it's basically impossible to get there in time unless you leave the ISO meeting early. So I probably won't be able to make it. I didn't submit any talks because of that.
ConorInteresting, interesting. And so that means, well, I guess the CFP, I was gonna say this would be a great opportunity if there's some new speakers, because probably it's gonna take out of the rotation a bunch of speakers, but probably the CFP is closed long by now.
Andreas WeisSo uh just closed. They just started the the voting on the talks uh last week. So yeah, CFP is closed.
ConorWell, hopefully, hopefully we'll get to see some new speakers at the conference, because yeah, if it if it collides with the committee meeting, like there's I don't know what the overlap is, but it's definitely like 25% or 50% of uh committee members uh have also given a talk at some point in time. So all right. Is that a is that a wrap for now? That's a wrap for now. We'll be back on day three. We've got two people lined up. We definitely wanted to get Kate, who's been mentioned, and Jessica, who's given the keynote tomorrow morning. I think they're I think we mentioned earlier, they're both giving uh lightning talks uh alongside Andreas here. So we're gonna get excited for those. And I mean the listener, probably this is gonna be mid-episode, so they're gonna snap of the fingers and they're listening to Kate right now.
Ben DeaneYeah, you get you know, we have to wait another 12, 18 hours, and it's coming right up for you. Thanks, Andreas.
Andreas WeisOh, yeah, thank you for having me. Awesome.
ConorBe sure to check these show notes either in your podcast app or at adspthepodcast.com for links to any of the topics or talks that we talked about in today's episode, as well as a link to a GitHub discussion where you can leave comments, thoughts, or questions. Thanks for listening. We hope you enjoyed and have a great day.
Andreas WeisLow quality, high quality, that is the tagline of our podcast.
ConorIt's not the tagline, our tagline is chaos with sprinkles of information.