Yeah, I thought there would be negativity. I really did. I thought people would be like, how could you do that to C? How could you betray, you know, WG21 like this? And that hasn't been the case at all. People from the committee have, you know, saw it before the launch. People have seen it since. They say, oh, yeah, that might work for some problems. Because there are some problems, right? That are not tractable problems. Then it's another FAQ. Why don't you just improve C? Like, well.
ConorWelcome to ADSP the podcast episode 95, recorded on August 15th, 2022. My name is Connor. Today with my co-host Bryce, we finished our four-part interview with Kate Gregory and talked to her about the carbon programming language.
Kate GregorySo the conference went better than I could possibly have expected. The carbon launch also went very differently than I could have expected. A lot of the things I was really scared might have happened did not happen. And a bunch of things happened that were fantastic that I was not expecting. So, you know, uh, Chandler said in a keynote, join us, and people did. Very large numbers of people joined. And while some people um were perhaps not offering constructive help and suggestions, a bunch of people really were. So, you know, from the very next day, there were people saying, Hey, would a would a syntax highlighter for VS Code be helpful? I think I can do a Vim plugin, I think I can this, and people starting to discuss. See, you haven't settled all the designs for let's say Lambdas or something. Uh, three or four people start getting together, hashing that out. Um, and things are things are getting done. So some things that were designed but not coded in the explorer are getting coded in the explorer. Some things are getting designed, some decisions are getting made. Very happy.
ConorYeah, I just went and pulled it up to see uh it's since the launch. So today is August 15th, so we're almost a month exactly out, just less than a month, I guess. And um on GitHub it has 25.8,000 stars, which is pretty remarkable. Yeah. And already over a thousand forks. I don't know actually what those were, but I assume those were like, you know, less than you know, either single-digit or double-digit numbers.
Kate GregoryBefore we launched, there were a few dozen people involved.
ConorYeah.
BryceIt was 11 stars and it was either 11 stars and three forks or three forks and eleven stars. And I think it was probably the other way around, probably three stars and eleven forks uh before. I remember because I I checked, right, as the announcement went out.
ConorYeah, and it's up to I think it said 87 contributors or something. And if you look at the amount of code pushed, it has just sort of looking at since they started commits over a couple years ago. Looks like it quadrupled in the month of July. So clearly a lot of um active uh development happening in the last um in the last month here.
Kate GregoryYeah, I was looking to see if I could figure out how many people were on the Discord, but I don't know how to do that. And by and large, they're they're very understanding of our atmosphere and our code of conduct and what we're trying to do. Um the first couple weeks there was a lot of repetition. There was a lot of like, I don't get it. It's just rust. Why not just use rust? And then the answer to that question is yes, if you can use rust, you should totally use rust. Like, this is not a competitor to that. If rust works for you, use rust. And then people are like, well, you don't really mean that. That's just a thing you're saying. Nope. Nope, that's that's that's what I mean. And then there was a bunch of really repetitive uh questions and suggestions that we'd we'd already dealt with. Huge number of people wanting a logo. Like, I don't this is an age thing. They're like, you have to have a logo. You have to have a logo. People won't take you seriously if you don't have a logo. I'll make you a logo for free. No, we we don't have a logo. Yeah, but you should have a logo. Yeah, but we got we got bigger fish to fry. We don't we don't want a logo. I'll make you one, and that went on for for some time.
ConorI mean, I personally love, I mean, like the banners on most of my social media stuff, whether that's LinkedIn or Twitter or YouTube, are just a collection of programming language logos. However, I don't actually feel like Carbon needs one yet because if you've watched uh Chandler's uh keynote, this is yet to be like, you know, it they're in sort of still experiment mode. Like I get the feeling that like if in six months a certain like in the decision tree, a certain number of decisions are taken, it doesn't seem like it it's going in that direction at all. But like a part of launching it, uh it wasn't like we're launching and like when when Swift and Apple um were launched at a WWDC. This was here is Swift, it's our new language. Right. Um and the same with Kotlin, right?
Kate GregoryHere's this language, we want you to learn it, we want you to start using it, it's supported in these tools, and and carbon is nowhere near that, you know?
ConorYeah, it's it's pre-1.0, and although it doesn't seem like it's going the direction that it would get, I don't know what the word is, defunded or decided that you know we don't need this. It's before the point that that Google has said, you know, this is one of our goals, like they have some internal term. Um, although, and that shouldn't mention it's not a Google project. It's just that it's starting out a lot of Google folks. It's similar to some other projects, like I think Kubernetes is one of them, right? Started at Google, but then it got put on a little org boat and floated off into the sea, and now it's no longer have its own foundation and its own governance and and its own goals.
Kate GregoryYou know, because part of the issue is, and the three of us have have group groupally and individually talked about this before. The committee process for C is perhaps not serving the language well. Right? Bryce, you said you joined basically to get MD span, and you said how many years ago that was. Yeah, it took seven years. Yeah. You know, not everybody would have had the gumption to stick with that for seven years.
BryceI mean, the you know, uh one of my one of my colleagues um likes to say that uh a programming language needs uh to be 10x better than its competitors in in some way. Well, I don't I don't know whether I don't know yet whether carbon is 10x better than any of its competitors on any particular technical aspect, but it's definitely 10x better than C in terms of process.
Kate GregoryI I think so. The process in the community is a big part of the appeal for me. But there are people who tell us that we're naive and that when we want to play in the big leagues and get support from major compiler vendors and blah blah that will discover the advantages of a different process. I don't think so. I think this is a process that can scale and can be leveraged, especially with the the leads structure, so we don't we're not always voting amongst you know 10,000 random strangers, some of whom would just vote for Bodhi McBoatface because they think it's funny. Yeah.
BryceI mean, uh I'm I'm I it's certainly it's probably true that the carbon process will evolve as the language evolves. Um but the fact that the process can evolve in and of itself is a huge improvement over the C process.
Kate GregoryI think so. I I'm also very, very excited about deliberately rejecting backwards compatibility. They're just saying, like, we might change the language in a way that breaks your code. And when we do that, we will release a tool that will migrate your code, but we're not just gonna forever stick to well, this was how it was in 1972, and so it can never change, right? So, I mean, the joke about all our defaults being wrong in C is not a joke, it's the truth. All our defaults are wrong because the language was was written a certain way, and then people said that might be wrong, we should have this other capability, but we had to make old codes still work. So, like uh explicit for constructors. That you have to say, if you don't say anything, can't break your old code, can't say all constructors are explicit. But in carbon, we could we could say we were wrong, all constructors are explicit unless you mark them implicit, and then we'd give you a tool that would go through your code and find all your constructors and mark them implicit.
ConorI'm surprised I'm surprised to hear that you heard from certain folks that uh when carbon took some step into what you mentioned is the big leagues, that they would discover the process wouldn't work because isn't it already sort of proven? Like, not that carbon's process is identical to Swift's or Rust's or any number of languages, but like it's it's proven model that you don't need to be an ice, or I'm not sure exactly what they were saying, like you'll discover that what C ⁇ is doing right, but like it seems that like in general, uh at least from what I've heard, that like C is not like the model of modern process like evolving languages.
Kate GregoryLike they're so there's a whole there's a whole series of languages that say that's too slow, too corporate, too exclusive. Like it's very gatekeepy, you know. Yeah um if you can't fly to Hawaii, you you can't vote. Uh yeah, you know, that's a hard that's a hard thing to say these days, especially after the pandemic. People are like, no, we should all be able to get on a Zoom call and we should all be equivalent, you know, we should all be peers. Um but you know, maybe some things are hard to scale. Maybe secrecy has some value in some places. Being super open and super transparent maybe would keep some people away. I don't know. We'll see. We don't have to be the programming language for everybody, we just have to be a good programming language.
ConorYeah. I'm surprised to hear that that's what you've heard. Because if anything, I think that like most modern languages are all sort of following suit that they've got ways to discuss things online and make decisions online. And um not to say that there's nothing good about ISO. There's definitely advantages to ISO, but uh yeah, especially like when you keep in mind some of the things that we've brought up on this podcast. What did Bryce remark that you know the visa wait times for certain countries? I think you were talking about was it India at that one point, and it was like you checked at one time and it was like 700 plus days, and then when you rechecked it was 300 or something, and so it's like, well, you know, depending on when you check, you know, you might be able to go, maybe not next year, but like two years from now, and it's like, well, these committee meetings happen once every three months, or at least they did when before the pandemic took place, and it's uh and it's not just the time, it's like so I needed a visa to go to China.
Kate GregoryI very rarely need a visa to go anywhere. And you know, they say things like list everywhere you've been for the last ten years, everywhere you slept a night that wasn't your home for the last ten years. That's a lot to ask a person uh to produce that information or to even to write it up if they happen to know it, you know. And I think that the money is non-trivial either. Uh academics tell me that it it can cost a thousand dollars to apply for a visa. That's a lot of money. We just talked about how little money graduate students make, you know, you know.
ConorYeah. I mean, yeah, and then you'll hear about the there's a $250 stipend for conference travels and stuff, and it's like, oh well, that is helpful.
Kate GregoryYeah, that covers one night of hotel, maybe. Yeah. Yeah. Yeah. So I I understand the value of being in a room together. Um, I've really missed it over the last little while, and I was very, very happy to get back to it with in-person conferences. Uh, and I know that hybrid is expensive. Like, you know, we didn't run CPP North Hybrid, and a lot of people have been like, every conference should be hybrid. It's it's a violation of you know human rights not to. And I'm like, oh, I must have missed the part where you're giving me the money to run the hybrid conference because it's like a very expensive thing to do, right? Um I just I would love to make everything accessible to everybody. I would.
ConorYeah, accessibility is um, I mean, we've mentioned that before, is that we would love to, at some point when we get sponsored for it, we will love to have transcripts for all of our episodes. And my other podcast does do transcripts, but the amount of time, and it's not completely actually I'm not sure if they spend money, but like you can get you can pay for transcripts. Um, but it is currently not a cheap thing to do. Like um a lot of them are by the minute. So if you have hour-long podcasts, um, that totals up to you know a couple thousand dollars a year. And um yeah, and and more more importantly, it's it's time. Like it does take a lot of time.
Kate GregorySo like uh with the Plurisight courses, they come out almost immediately with a machine-generated transcript, which is basically useless. Um, and then some number of days or weeks later, a human has gone through and edited that transcript, and then it's it's great. And I use it all the time because someone will say, Could you explain whatever to me? And I'll go into my own course, bring up the transcript, search for that word, yeah, uh, and then I can find that explanation, and it links back to the exact moment in the clip, and I'm like, Oh, sure. In module seven, clip two, at the one-minute time mark, you will see. And I don't know, maybe they think I have the whole course memorized. I'm just searching the transcript, you know.
ConorThat is a great hack, not just for uh looking up course stuff, but like on every YouTube video, they have transcripts automatically generated, and you can do the exact same thing. If I'm ever looking for quotes from whether it's Kate or you know, Sean or someone, you can just open up the transcript, search for, rotate, yeah, and uh and then go and click next next a couple times and find a quote and then um and then click to that bit and play it.
Kate GregoryIt's fantastic. I mean, the this is the whole curb cut thing, right? You do something to help one group, but it turns out to help a ton of people.
BryceUm and I I found you should probably explain what curb cuts are.
Kate GregorySo the the cur so I don't even live in the city, but I used to live in the city, and if there's a curb, a little piece of raised cement at the edge of the road, to bump down that in a wheelchair is uncomfortable and difficult, and to bump up it may be impossible. So you get them to cut a gap there so that there's a smooth uh entrance from the road up to the sidewalk. But it turns out that it helps not just people in wheelchairs and people with walkers, but people who are pushing strollers and people who are uh wheeling dollies full of something they're delivering and what have you, and that perhaps ten times as many quote unquote able-bodied people benefit from the accommodation as the people that you justified doing it for. And so the same with closed captioning, people say, well, how how many people come to a conference who can't hear? Well, first of all, more than you'd think, because my son works for a hearing aid company, and when I mention that, people tell me they wear hearing aids. That can't tell you how many times that's happened to me. People say, Oh, well, I'm a hearing aids, and they they won't tell you otherwise. So there's an awful lot of people who could use some help when it comes to hearing, but there are also people who are brave enough to go to a conference in their second language, which I would never dream of doing, or they're fifth, and the written material helps them uh to understand the the the what they're hearing, or the speaker has a bit of an accent and the written material helps. So there's so many things that we do them for people with a condition that we sort of feel sorry for and we have to help them, but it turns out it's actually more useful to this huge other chunk of folk. And publishing the menus is very useful if you can't eat a particular food, but it was super useful for everyone else.
ConorYeah. Even even folks, yeah, completely able-body. Like when you were talking about the curb cutting, I was thinking, I'm sure there's like a percentage of people that have no problems with you know taking that step up that just you know, 10% of people trip every once in a while because there's a little higher, and it's just less people are tripping.
BryceOr or if you have if you have luggage, if you have suitcases.
ConorYeah.
Kate GregoryYeah. I mean, there's and it turns out like they say that if you're if you're not disabled, you're really just not disabled yet. Right? At some point, maybe you'll break your arm and you'll have your arm in a cast for some number of weeks, and you'll be very glad of those buttons that you can hit with your elbow to open the door. Um there's an apartment building that I go to a lot, and it has automatic door openers, but not at the door that has stairs up to it. Everywhere else there's automatic door openers. And they're like, no, if you can walk upstairs, you can open a door. And I'm like, that's not that's not how this works. Lots of people can walk up the stairs, but they can't open the door. You should have automatic door openers on all your doors, right? Because it because it's there's more than just one uh difference that you that you need to accommodate. Yeah.
ConorYeah. I love the new post-pandemic hand wave door openers now, too.
Kate GregoryThat's right, you don't even need to hit them.
ConorOne, yeah. I I'm not a germophobe, but like it's just nicer not to be able to have to, but two, they're also just easier. It's like it's half the time when you're carrying groceries or whatever, yeah, and you need to try and get your elbow up, and it's like now you can just wave the grocery bag in front of it and poof, you're good to go.
Kate GregoryYes.
ConorUm, yeah.
Kate GregoryBut there's so many things that you know were completely impossible before the pandemic. No, you can't order that online. No, we can't meet over Zoom. You have to drive three hours in to have the meeting, you have to fly for the meeting. We found out actually it's quite possible.
BryceOr or like uh everywhere everywhere takes credit cards now. That's yes, that's my favorite.
Kate GregoryYes.
BryceI don't have to bring cash anywhere.
Kate GregoryI I can't remember the last time I used cash for anything.
BryceNo.
Kate GregoryIt's just all credit debit. And you know, the book Beautiful C guy wrote that book in his commute time.
ConorWow.
Kate GregoryHe he had 45 minutes each way commute. I think that's the number. So when he was working from home during the pandemic, he had an extra hour and a half a day. And what he did is at the time he would have normally gone to work, he went and worked on the book until 9 o'clock. Then he closed that, worked on work all day. Five o'clock, when he would have been driving home, he worked on the book.
ConorYeah, it's um I've always never really I mean I don't commute anymore, but when I used to, I used to love it because I would read so much. Um I I do more audiobooks now, but back then the Toronto Public Library is just fantastic. And they've got a I haven't used it in years, but they've got an amazing reservation system where you can put books on hold and then like pause the on hold and you work your way up a queue. So like when you're at the anyway, it's great. Canadian, I mean I shouldn't say Canadian, it's specifically the Toronto one. And yeah, like with just 20 or 25 minutes each way, it's 50 minutes. And if folks are just whatever playing Candy Crush on their phone, maybe it's kind of irritating. But if you're consuming or or being productive, uh it's like an awesome little chunk of time that it's kind of kind of hard. It's like, oh, how hard is it to find 50 minutes or 25 times two slots a day? But like as soon as it's not there by necessity, it's it just kind of you you never are in the routine of like you choosing it, you know. People can say, Oh, you're right there, so I can just ask you a question.
Kate GregoryI can just ask you, I can just interrupt you, or maybe I could sleep for another half an hour, or maybe I could have uh I could take care of that errand or whatever. Yeah. Yeah. Yeah. It's I I haven't worked in an office for a real long time, but I used to go to to clients' offices and go to to meetings.
ConorYeah, it's good. I think I've said this a couple of times, but having to choose between either fully remote or fully in person, like it would I think remote would win 100% of the time because there's just too much flexibility and it's um anyways. We were talking about carbon. Yeah. Uh and then and then we got sidetracked.
Kate GregoryCarbon is all remote, right? It's all online and it's all open and transparent. There's no you know, secret meeting that comes back and says, well, this is what we're gonna do. Everything's everything's open. Every once in a while, there's things that the leads will have to decide, but it's quite common for that to happen on a call that other people are on.
ConorRight. And maybe as as one sort of like last final question, as probably we're actually winding down for the the final time, because you operate both in carbon and for years in C. Yeah. Have you no like what in your gen in general have you observed as sort of the response between because you hear a lot of, you know, oh, it's just rust, um, or you know, and then it's actually not just rust, and you answer that question. What's from your point of view been the reaction from the C community? Uh is it generally oh no, or is it generally, oh, this could be great?
Kate GregoryYeah, I I thought there would be negativity. I really did. I thought people would be like, how could you do that to C? How could you betray, you know, WG21 like this? And that hasn't been the case at all. Um people from the committee have you know saw it before the before the launch, people have seen it since. They say, yeah, that that might work for some problems, you know, because there are some problems, right, that are not tractable problems. Then it's another FAQ. Why don't you just improve C? Like, well, if you look at the cast of characters, it's all people who tried improving C, and there's certain things that can't be done because the priority number one is the backwards compatibility. Can't that's a promise that can't be broken. That's a promise that was made and that cannot be suspended. And that's fair. You know, I have no problem with that. But when you take that promise away, what does that enable? What can you now solve that cannot be solved in C? That's what we're gonna try to find out. And there are things to be solved, there are things about C that are Make it hard to write a compiler, but they also make it hard to teach or hard to work in sometimes. So what could we what could we fix if we didn't have to be backward compatible with literally programs from the 80s? Right. Um that is a great question to ask. And I know that there are people who've got some very specific wishes around performance. So did you see the Foonathon blog? I think that's who it was about the calling.
ConorYeah.
Kate GregoryYou know, that oh, some if you want to pass like an int, it's quicker to pass an int by value than by reference because it'll go in a register. Whereas if you pass it by reference, uh the address will go and it won't go in a register. And carbon says it looks like a value, but we'll we'll do whichever is quicker. If it's quicker to pass it by value, we'll pass it by value. Otherwise, we'll do it by reference. You know, that sort of thing is focused on perf. And for people who need that, that's going to be a huge, huge benefit. And there are all kinds of stuff like that, where it's just you have different goals, you have different priorities, so you can make different decisions. I hope it ends up with a language that I get to teach and that I get to work in for a real long time. But even if it totally flames out, there will have been lessons learned.
ConorYeah, I think, you know, I'm not sure it's the worst case, but one of the cases is um it just ends up making C a better language that's closer to what we would all like to see. Like I haven't met a single C developer that's been like, oh my god, C, it's my favorite language, absolutely nothing wrong with it. It's perfectly designed from the get-go. We made no mistake. There's no any C developer has their sections that frustrates them. And um, I mean, you know, you've heard Sean say that, you know, I think at the end of the Elements of Programming book, it even dis defines like this subset of C. And there's the quote, you know, like inside of C is a beautiful language waiting to get out, or something like that. You know, yes. It's it's a language we all love with some asterisks next to the love that things we have to do.
Kate GregoryOne of the cool things is everyone has their asterisk in a different place. You know, so so someone was just talking today about all, you know, you you can't teach operator overloading without getting into argument-dependent lookup. And I was like, you can't, because I'm pretty sure I have, you know. So we've all got our own little you know, bugbears that we're like have a have a big problem with or struggle with or wish we could eliminate or what have you. Um to say we'll make everybody happy can't be done because everybody has a different set of things they wish they could fix. But to be in a position where none of these decisions are binding, that we will not be held to the 40-year-old decision because we can we can break stuff if we want. We can break not just the syntax, which is relatively trivial, but the ABI break is a bigger deal, right? Um there's cost to that. Of course there is, people have to rebuild. But there's benefit to that too. Because you don't run around breaking ABI because you felt like it. You know, you can you came to realize that something would be faster or that something would be smaller or whatever. And then to be told, well, yeah, but we can't. Because they'll break ABI and people don't wish to rebuild all their code and they don't have the source code and all the reasons why you're not supposed to break things. Okay, but what if we did? What if we broke things? And that just provides a freedom that's very exciting to be part of.
ConorYeah. I mean, towards the end of CPP casts, you know, I don't know how many episodes it was, 50 towards the end. Jason was always bringing up every other episode, you know. Do you care about ABI? You know, because I, you know, and he started collecting these responses where I think either all of them or almost all of them were like, oh no, we could rebuild if we like it seemed like this issue, like, but then I know I know Marshall Clow has given talks that shows the issues of it, and that there are folks out there that, you know, it is a big deal for.
BryceWell, it's often not the engineers that um are the one like the engineers are like, sure we could rebuild, but it's often decisions that are getting made um at a higher level than line engineers.
Kate GregoryYes. That's it. And engineers are so optimistic. They're like, oh, it'll take like 20 minutes. It's no big, it's not it's not a big thing, you know. Then they're like, oh, we don't have the source for that, or no one remembers what options we set for this other thing, or or we get we we thought we remembered what options we set, but obviously we didn't because now that we've built it, it's not working the way it used to. That's a fun one. Yeah. Yeah. And and like I'm old enough, I have worked on stuff that we didn't have source code for.
BryceYeah, I mean, it it ABI is a real problem for you know some people. I still think we should break it regularly.
Kate GregoryNo, so someone asked a question at the Carbon Talk about, you know, changing the syntax of the language every day or whatever, and I said to the person, like, benevolent. We're supposed to be the benevolent leads, right? Like, just because we can break things doesn't mean we're gonna break them all the time. But some interesting things. The first big break is to say we're gonna break some C things. Or I'm gonna change some defaults, change the way some things are done, change the way some things are spelled. And you know, some people kind of losing their minds over that. That's okay. You know, I mean uh carbon has var and let. Um, and where var is a thing with an address that can change and let it can't change. And they're like, no, you need to spell that const, you can't spell that let. Okay. You know, we can talk about that, but the the basic concept that uh we're not just tacking another keyword onto an existing declaration, but we're actually gonna use a different keyword to declare it, that's uh in a way a break. And it's changing what the defa the defaults are, because if you just declare an integer in SQL, it's mutable. But it doesn't have to be that way.
ConorI mean, folks should keep in mind too that um the people working on this language aren't just looking at C. They're looking at many other languages, and if you look at the languages that they're looking at, um, sometimes the decisions they're making make more sense. Sometimes looking at it just from a myopic C only lens would be like, well, why are you changing that? That's there's no reason to change that.
Kate GregoryAbsolutely. So if you look at Go, if you look at Kotlin, if you look at Swift, if you look at Haskell, you know, people are looking at very, very modern languages and really quite old ones and and getting some inspiration. But you know, also the some very bike sheddy type questions are best solved by looking at other languages. So if you're gonna have introducers for functions, if you're gonna say keyword and then start talking about the fact that this is a function, here's its name, here's his signature, here's what it returns. You know, what should the keyword be? Should it be F for function? Should it be Fn? Should it be func? Should it be function? Should it be define, you know? And and you can find examples in a lot of other languages where they've used different introducer words. And you don't just like have a vote and say, well, it turns out nine out of ten languages abbreviated this way. But it is helpful to look across, you know, a wide history and say, listen, we're not the first people to face this problem. Let's let's take a look at some science out there.
ConorYeah, for sure. All right, with that, I feel like we've definitely taken you back to the city. We're definitely over.
Kate GregoryIt's getting dark.
ConorSo we should let we should let Kate go. Um, but thank you so much for coming on and spending all I know our listeners, they absolutely love the guest episodes, and um, we've been mentioning your name. I mean, I can't count the number of times across episodes where we keep saying, we gotta have Kate on, we gotta have Kate on. And I even uh apologized at the beginning of episode, I think it was 89 and uh 90, saying, We said Kate would be on, but uh she'll be on next time, we promise. All right. Well, any any last plugs or things you want to mention, calls to action before we uh let you let you enjoy your lakeside uh cabin, which we are all jealous that you are at right now.
Kate GregoryI would I would say to everybody, check out the CPP North videos. Um at the moment that we're recording, there's only a handful up, but by the time it airs, there should be well over a dozen. And that's probably more than you can watch right away. So start watching some of those and uh and plan to join us next year.
ConorAwesome. Well, once again, thank you so much for spending your time with us and uh enjoy enjoy the lake and the cabin, and we will talk to you sometime in the future, hopefully in person.
Kate GregoryAll right, take care.
ConorThanks for listening. We hope you enjoyed and have a great day.