Conor

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 Weis

Of course, of course, like way way better, way better. Like your subscriptions will double at least.

Vincent Zalzal

I really like it. Honestly, it's my first it's my first conference, both as attendee and speaker.

Tristan Brindle

The 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 Cuira

Uh but definitely changes the way you think about code. So it's about shifting the way you you approach code and design.

Conor

You 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 Deane

The 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.

Conor

I 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 Deane

There'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.

Conor

A 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 Deane

Yeah, 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.

Conor

It 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 Deane

It 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.

Conor

I 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 Deane

We could step down into the more upholstered area where there's less odd surfaces.

Conor

That'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 Deane

Like I've only actually talked to you twice, but you don't tend to have guests very frequently.

Conor

Maybe 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 Deane

Was it virtual?

Conor

It 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 Deane

Yeah.

Conor

Alright, 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 Deane

Alright, 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 Zalzal

Did 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 Deane

Right on, yeah. Uh how's the conference been in general?

Vincent Zalzal

I 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 Deane

So this is the first time you've been to any C conference, did you say?

Vincent Zalzal

It is, it is. It's my first time, yeah.

Ben Deane

You think you're gonna come back to this one or to any others?

Vincent Zalzal

Yeah, 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 Deane

Well, great, great. We have a new speaker on the circuit. We have Vincent. That's fantastic.

Conor

And 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 Zalzal

So 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 Deane

Awesome. How long have you been programming C?

Vincent Zalzal

I'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 Deane

And how modern is the C you you get to use? What standard are you on?

Vincent Zalzal

Uh 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.

Conor

So 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 Zalzal

Honestly, 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 Deane

Cool. 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 Zalzal

I'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.

Conor

Cool, 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 Deane

It's about the travels of Bryce and Connor. Yeah, that's just C.

Conor

Do 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 Cuira

No, hopefully not.

Conor

Hopefully 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 Cuira

Yeah. I was Slovenia.

Conor

You'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 Deane

Okay, 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 Cuira

I'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 Deane

Nice. 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 Cuira

Yep.

Ben Deane

Can you tell us a bit about that?

Victor Cuira

Uh 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 Deane

Do you use a lot of functional programming in your day job?

Victor Cuira

Uh 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 Deane

I agree wholeheartedly. That is my experience as well, I would say.

Victor Cuira

So C code won't look like Haskell code. Um but yeah, Connor does.

Ben Deane

And it won't look like APL either, Connor.

Conor

I 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 Cuira

And 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.

Conor

So 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 Deane

I mean I've never used it, I just know about it from somewhere because I read cppreference.com every day.

Conor

I mean it's it's meant it's a weird hobby.

Ben Deane

Yeah. It's a perfectly good hobby for a C programmer.

Conor

Yeah. 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 Cuira

And 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 Deane

Yeah, I mean other languages, there are some other languages that call it enumerate, right?

Conor

Yeah, 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 Cuira

Speaking 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?

Conor

I 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 Deane

We'll uh Yeah, Tristan, come on over.

Conor

Well, 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 Deane

Yeah, I'll just do a quick intro for Tristan. Uh friend of this podcast, all Tristan Brindel, C trainer, based in London, right?

Conor

All 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 Cuira

Um I'm in Prague now.

Conor

So 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 Brindle

So 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 Cuira

No, beat your talk for tomorrow.

Tristan Brindle

Yeah, 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.

Conor

Anecdotally, 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 Brindle

Uh Timor, apparently, uh yesterday.

Conor

Uh so it was yeah, Victor's was the first. It sounds like Timur in his talk showed some flux code.

Tristan Brindle

So that's he mentioned it. He didn't show flux code.

Conor

That still counts. That's zero to three. Is it gonna be arithmetic? Is it gonna be geometric?

Ben Deane

This 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 Brindle

Well, I mean, I think so. I think it's a great idea. I hope uh I can persuade other people of that as well.

Conor

Cool. 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 Brindle

Um 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 Cuira

I 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 Deane

Uh 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.

Conor

Hooks hooks?

Ben Deane

Yeah, but uh what name should I use?

Conor

I'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 Cuira

It'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 Deane

Exactly, 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.

Conor

It'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 Brindle

It'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 Cuira

Yeah, 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 Deane

I've got a final question for you, Conrad. Do you have a copy of of the book? Uh Combinatory Logic, volume one.

Conor

It 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 Deane

We 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?

Conor

And 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 Deane

Yeah, 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.

Conor

They 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 Deane

Yeah. 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.

Conor

I'm being a terrible host now because Victor asked a question and then you know, it's like uh Yeah.

Ben Deane

Well, also, I don't know how long you wanted to go with this recording or when the lightning talks are.

Conor

Uh 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 Deane

Andreas 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.

Conor

So 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 Weis

Uh yeah, of course, of course, like way way better, way better. Like your subscriptions will double at least.

Conor

Oh, 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 Deane

So, Andres, you gave a talk here yesterday. Can you tell us about it?

Andreas Weis

Um 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 Deane

Very nice. Something very close to my own heart. What what C standard were you targeting with that talk?

Andreas Weis

That'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 Deane

Great, 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.

Conor

I 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 Deane

I think Yeah, I think so. Um so how's the conference in general? Any any favorite talks?

Andreas Weis

Uh 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 Deane

Like that's that's that was great.

Andreas Weis

Yeah, 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 Deane

Great. Well, we've got lightning talks tonight. Uh are you giving a lightning talk?

Andreas Weis

Oh 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?

Conor

There 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 Weis

Yeah, 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.

Conor

So 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 Weis

Um yes, it's about uh complexity, runtime complexity analysis, how you do that.

Ben Deane

Hmm, 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 Weis

Right, 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 Deane

It'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.

Conor

For 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 Deane

He'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.

Conor

So 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 Deane

Yeah. 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 Weis

Oh 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 Deane

Cool. Did you have any did you have any travel problems? There were several folks who had connection problems through New York.

Andreas Weis

Yeah, no, I I had a direct flight, so uh fortunately I was spared by that.

Conor

Alright. 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 Weis

Uh, 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.

Conor

Interesting, 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 Weis

So uh just closed. They just started the the voting on the talks uh last week. So yeah, CFP is closed.

Conor

Well, 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 Deane

Yeah, you get you know, we have to wait another 12, 18 hours, and it's coming right up for you. Thanks, Andreas.

Andreas Weis

Oh, yeah, thank you for having me. Awesome.

Conor

Be 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 Weis

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.