mergeconflict294 === [00:00:00] Frank: Thanks [00:00:09] James: for this week. Sponsor sync, fusion, listen, sync fusion has been with us and with you for every single year ever in life. And for the entirety of this podcast, because they are absolutely. Awesome. Cause they help you build absolutely fantastic applications with the ultimate component suites for anything web desktop mobile. It doesn't matter what you're building blaze or flutter, asp.net, JavaScript, angular react view J query Donna Maui, UWP JavaScript WinForms WPF when UI. The, all the things, they got everything for you. Now you can go to sync, fusion.com/merge conflict, and learn about all of their awesome developer platform, tools and component libraries. I use them myself on my apps, but they also have some free products. I don't want to tell you about. Such as the easy to use, easy to use essential UI kit for Xamarin. These are XAML templates for Xamarin forms, applications. Have you ever been like, man, I really want an application that looks and feels like this. Totally. They have it. You basically do file new. Give me a shopping application. File new. Give me. Uh, photo application file new, give me a login screen. And that just writes all of the code for you automatically. 100% for free. Go to sync, fusion.com/merge conflict to learn more. Thanks St. Visa for sponsoring this week's pod. I made it Frank. I made it through that. [00:01:31] Frank: And that was different. You've been doing sync fusion ads for quite a while. And that, that one had me on the edge of my seat. I was curious what was happening there. Hi everyone. Welcome to Burj conflict. [00:01:42] James: All right, Frank, it's the 20th anniversary of.net. We made it. Actually, we released a podcast on the anniversary of.net, the 20 w not about the dotnet 20th anniversary, you know? [00:01:56] Frank: Uh, that we released that that was smart of us, uh, that we plan that. Do we plan anything? Well, I mean, [00:02:03] James: technically it was the 13th, but then we celebrated it on the 14th. But then we decided to talk about dotnet trace, which is a tool in the diagnostic framework, but that's got a.net. It's not net related. It's been with us for a while. I thought it was a great episode. Um, but yeah, there was a whole celebration. My background on my computer is stunning. The Danette website looks super good. Um, I learned so much about the amazing, you know, customers and internal teams@microsoftusing.net and also Alex done billing this like super cool accessibility game library for, um, uh, for people that are playing like Minecraft and shooter. You can like speak to the machine and it like, does it for you? Like in Minecraft, like build stuff? I may, I know it was a really pretty cool events. It was some really inspirational. [00:02:54] Frank: Yeah, I just, I have to chime in and just say shout out to Alex. Cause, uh, I, I haven't seen him do some of that work before on other video games doing some kind of voice control or something. So he's definitely an expert in the area has been working through all the ridiculous bugs of actually making, you know, it's so easy to make a tech demo of. Like that work, but to make something that's actually useful and that's actually usable day to day, I know it was quite difficult. So shout out to him for it's a cool, cool project pro. [00:03:27] James: Yeah. So I think that was pretty neat. And Frank, guess what just happened this week? [00:03:34] Frank: Uh, oh, I'm nervous. That could mean anything, dude. We're still not out of 2020 yet. You know, times still doesn't exist. You can't open a sentence like that. And anything could follow it's dangerous, James, [00:03:45] James: at six, as we all know, launched three months ago. So it's time for.net/oh, of [00:03:50] Frank: course. Dig DBD. Oh, very good. Really? What okay. Rewind. When did outlet six launch? I forget because it was in beta for a while, so I didn't actually November-ish, I guess was.net. [00:04:06] James: So. Frank, there's a new version of.net that is released every single November at Donna comp every single year [00:04:15] Frank: that would catch on to that pattern. But I did say November, come on, give me some props. I got that much, right. You didn't. But I do know we are celebrating 20th anniversary.net in February, so there must be some kind of February release schedule, the PM's obey also. And so you're saying. You know what out with the old, in with the new, I say dotnet six.net. Didn't even know you. Uh, I'm onto that net seven train. No, I'm just kidding. No, I'm still upgrading my code to.net six. It's still going to take me years to get the dotnet six, but, uh, I'm excited for the seven. It's a good word, George. [00:04:51] James: Well, the great part about dotnet six is that it's eight LTS long-term support. So once you're on that puppy, Frank, you'll be on that puppy for years upon years and done at seven is a current release. Now in case anyone is new to what that means, it took me a while and talking to Kathleen Dollard to understand LTS versus current. Now. It is very much, no big difference at all. As far as like a quality perspective, there is no difference. It's just a new version and it's at the same quality bar. Every single year of a release, the difference is the official support policy. So if you call up, you get on your, you get on your rotary phone, you call 1-800-MICROSOFT. I don't know if that's a real number. Don't do that. [00:05:36] Frank: I do this all the time, but tell me what I should do. That's time [00:05:39] James: you pull out the rotary phone. You say one and it rings. You call up the Microsoft and you say, Hey, Microsoft, I have a problem with the dot nets. And then they will say, well, what version do you have? And you say, well, Whatever. And then that is adjusting for the official support policy of when you're going to get security, patches, official stuff, and sort of be forced to update. But the idea is that you move along with the versions of.net, uh, as there should. The very minimal breaking changes idea. [00:06:12] Frank: Ideally. Um, it's funny because you just took that in a, from a different perspective than I was expecting. Um, when you're, when we were talking about like the, you know, the endless cascade of versions, I was thinking, well, what is my actual. Version of.net. And I was thinking, well, it's, you know, whatever you, the cloud support. So it's whatever Azure supports or whatever's easy to deploy. And then I was thinking, sorry, my mind was wandering during your beautiful rant there, uh, to, um, I've been playing with self-contained apps on dotnet lately. Do I talk about this on the show? I don't think so. I'm just, I, I want to tell everyone how I have wanted this, my whole life. I hate dependencies. Okay. I back in the day was like, I used to love visual basic, but you could never release a visual basic app because people are like, well, I don't have that version of VB and you have to write an installer. And the installer has to do a thing in our blah, blah, blah. And so what I was thinking was like, from now on. Definitely any web app I write and definitely console apps and oh, okay. Every app I'm doing self-contained because it's super cool. You can do like dotnet publish dash self-contained and then there's a million other little arguments that you can put into your project file. And. Literally a single file pops out containing all the dotnet runtime, all of your code, all your resources. I don't know if you have external file dependencies. Maybe you have to deal with that kind of stuff, but it's, there's nothing to install. Your app is your app. It's a single executable and I forget the size of it. It's big, but who cares? It's like 30 megabytes. It'll compress fine. And. I mean, we've been doing that on iOS forever, but I love that that's a feature on desktops now, too. So it doesn't matter what run time, what servers running, you package that thing up into a binary. You throw it in a Docker file and you throw that up on the cloud and you're. [00:08:09] James: Yeah, no, I think that, you know, at the, at the dinette 20th anniversary, they were talking about Don at seven, how that is a major focus of even furthering the containerization of applications, not only just for microservices, but for all applications. Um, and then I think that they were seeing more investment in Do you know what a [00:08:31] Frank: Waze is? Uh, oh, are we out of my league? I don't know what a web is. Uh, Is it like a version, two thing or they improve upon [00:08:41] James: what it, well, what does the M stand for and wisdom? [00:08:45] Frank: Oh, no. I always assumed it just meant web assembly. And so that it's just, you know, ASM is assembly, but am I wrong? It better not be an acronym. I just thought it meant web. I don't know. I don't know, Frank, um, thought it was just a shortening anyways. So they're going to support some technology. None of us have heard of out also. And that same news headline is HTTP two and HDP three. There's like 10 servers out there actually running them. But you know, one of these days I'll be one. [00:09:17] James: Yeah. Now we are recording this, um, this podcast before it actually comes out. Well, you can actually go to themes of.net. Do you know about this theme? Dot net. There are [00:09:34] Frank: too many clever.net URL websites. We need a clever.net, your a website website to track all these clever URLs. Uh, no, sorry, James. I do not know themes of.net. This is. [00:09:51] James: Uh, blazer site. Okay. And, uh, you can go to roadmap or you can go to query. This is cool. I'll put it in the show notes and it was really cool as you can, you can actually look to see what's on the roadmap for dotnet eight. Now there's currently nothing. So, oh, [00:10:04] Frank: this is like a program manager thing. Okay. This is almost like Gantt chart level here. It's not quite that bad, everyone. It's it's almost readable. I had to of course go straight to. Machine learning part to see what's coming up here. Lot of stuff about CIC D I, I wouldn't bother with that. That's true. [00:10:22] James: Yeah. So you can really dive through this and you can look at like application models, like here's, uh, you know, asp.net Gordy. You can click on it. It goes to, um, to the get hub and, you know, there's minimal API enhancements signal, or as improvements. There's all these things and there's statuses. And so if you don't know, It's pretty cool. Uh, I think emo may have worked or built it still maintaining it. I'm not really a hundred percent sure, but you can tell it's very like PME driven. But it's all in the open, like that's kind of unbelievably cool. [00:10:55] Frank: Well, what's nice is it's actually tied to get hub. What I was worried about was this was just going to be a PM cesspool of Gantt charts. I'm sorry. I keep saying those things that they're fine. They're fine, everyone. Um, but. Disconnect between what's actually happening and what people are planning. And that disconnect happens inside bill, uh, companies. I didn't want to see that on the internet at large, but anyway, all that's to say these are actually issues on get hub. And so you can actually track leads in a reasonable way. Uh, this is kind of fun, a good site. Can you run themes of dotnet for your own projects? [00:11:32] James: That is a great question. Uh, there's a source, um, Uh, it's actually, it's an emos repo. So I'm assuming. Yes. Um, I dunno how it all works. It's magic, but if you do type in Donna at seven in , there is a runtime that says expand on at WebAssembly capabilities. It says developers can AOT compile dotnet apps into web assembly, formats. There's all these things underneath it. I mean shenanigans to me, I don't really [00:12:01] Frank: know we're going to have to do an episode on this because I want to check back because people are doing some amazing work with this WebAssembly AOT stuff. So we've been doing AOT on iOS forever. And I think like the minimum app size, we got it down to like three and a half megabytes, something like that, four megabytes in the heyday these days. I think it's actually a little bit larger, but, um, And blazer, let's go with a blazer. WebAssembly I think was more around five megabytes, but I've seen these AOT people throw all those libraries away. Okay. No libraries. We're doing just pure. C-sharp pure. I L here, I've seen people get these libraries down to like 32 kilobytes and 64 kilobytes. And so I'm really excited to see, um, What we can do in that space between 64 kilobytes and five megabytes. Cause I think that's a sweet spot for an app. I mean, given that half the images you download on the internet are already five megabytes. Um, I think with IOT, it's going to be wonderful to get app down. [00:13:07] James: Yeah. Yeah. So anyways, I thought this was cool. You can go check it out, um, in general, but I have no idea what all the new features are, but I do know Frank that there's a new. Version of C-sharp C-sharp 11, you know about this? Oh my [00:13:19] Frank: gosh. I'm just learning feed sharp 10 dude. Do you know that pattern matching stuff is really complicated and it can do really weird stuff. Have you learned all the C-sharp? No, I didn't know. There was a C sharp 11. I am so behind on the times, is there a blog post or something I should be reading? [00:13:36] James: No, I don't think so. I mean, I think probably, you know, sin, just, [00:13:41] Frank: just some talk, some talk on the streets about the C-sharp alone. [00:13:45] James: I think was because everything's in the open people, people like put these blog posts out around Christmas. I was like, leak C sharp, 11 features. And then they're like, here's all the open source stuff or whatever. [00:13:59] Frank: Yeah. You know, I always act like all this stuff is a surprise. I could spend all day just reading the Roslyn repo, you know, it's fascinating. I love that stuff. I have to work hard to not do that. I can spend all day just following along there and reading all the proposals and everything. So it is actually important for blog posts like this, to distill it down because. And one thing to really keep in mind here is when this is not released, things really change. There are still features that people thought were going to be in C-sharp eight. It's still haven't made it to C-sharp 10, but you know, we're all talking about them in C sharp eight time. Anyway, all that's to say is I'm super excited. I love programming languages, dude. I mean, I just it's my hobby. I like them. Uh, [00:14:45] James: do you like them? And there is a new feature that I can at least talk about, which is the. Bang bang operator. Oh [00:14:53] Frank: yes. Oh, this is created a stir on Twitter. Are we going to stir the Hornets and that's James are we [00:14:59] James: we'll see if we merge or if we conflict on this one. So, [00:15:04] Frank: uh, do we have to have an opinion we have, it's a brand new feature. Who's going to describe the feature because the first person described the features is going to set the tone of this discussion. [00:15:13] James: Well, let's talk about the problem first that is trying to. [00:15:16] Frank: Hm. Sure. Okay. Um, I, I can cover that. Uh, so in C sharp, we've had NOLs around for awhile. People really hate the NOL reference exception. We hate it. It's the worst. And so we want to catch our NOLs as soon as possible. And so for ever since time immemorial for the last 20 years, any public function. Public class. That's that's my own bar. That's the bar I use, uh, will knowledge check its arguments with the assumption that lower down in the code. Hopefully you're doing your nail checking, especially these days with no reference checking. It's all good, but basically, uh, public stuff. You do the argument just so that you don't get an all referenced exception deep down in your code. You catch it as early as possible. [00:16:02] James: Yeah. Does that make [00:16:03] Frank: sense? I mean, it's a good practice. I don't know. Um, you know, the nice thing about exceptions is that they're safe or at least you should be designing your codes so that your code is acception safe. So, all we're really talking about is how early is an error versus how late and how dangerous. So if, if, if it's very dangerous code, if you're doing, if you know, launching rockets or something deep down in that code, then you should probably do your Knoll checking early as possible. But, um, all my libraries don't do it because honestly it's a pain in the butt to type, and sometimes I pass it in like 30 arguments. I'm not going to I'll check all those. Yeah. I'd like to know reference checking, uh, cause the compiler is just like your good buddy. Good job. Good job, Frank. [00:16:47] James: Yeah. You know, I think often in my code, what I'm doing is I'm like if I'm building an app and I'm normally seeing if I'm in my app code, I'm normally seeing like, did something past me now. And if they did, then don't do anything. Like don't throw an exception in my app. That's going to crash it. Yeah. However, if I am a library creator, I think that this. Is much more impactful because you often build libraries to be guarded against. Um, these errors in general, right? So you, sorry, [00:17:21] Frank: defensive programming. They used to call it. I don't think people use that terminology anymore, but it was very important. Check all your arguments defense. [00:17:30] James: I think it's good because we didn't. We talk about swift guarding the swift Gardner. Yeah. [00:17:36] Frank: Yeah. And it's used 99% of the time for null checks. It has a full pattern matching system, just like C sharp. It's probably a better pattern matching system then C sharp, but everyone just uses it for no, because no, you know, so, uh, definitely. And I've I've was into other SI. Because it was such a clean language, especially in the early days, it was such a simple language. People liked building dialects of it. And there used to be a version of C-sharp called like, um, spec sharp or C flat. I don't know. They, they went through a few cute names over at Microsoft research and what they did was put in what's formally called a deep. Type system. And you could put in a full, full set of checks and to all your arguments and actually change the syntax of the language to add a lot of features. In fact, they did one version where they change the syntax and another version where they didn't change the syntax. Some of that stuff actually made it into the standard library, but it's all in this goal of, um, we understand that getting a function to work with. Good. Is hard. So let's not try to even pretend that that function works with bad inputs. So catch all the bad inputs early. [00:18:56] James: Yep. Yeah. Yeah, exactly. And that's sort of how I have written a lot of my libraries. Right? You want to make sure that that, that good stuff is working its way down, but then you also want to tell the user that passed you, that information that's Hey, that's not okay. You know, it's not okay for you to pass me. Probably a no, but also could be other things beyond, uh, in general. [00:19:19] Frank: Yeah. And, uh, and there are philosophies here, so there is one philosophy and it's usually considered an internet protocols philosophy, but you should be generous in what you receive, but strict in what you eat. So it's a counter philosophy instead of being strict on what you receive and strict on what you emit, the idea is be flexible in what you receive it's, but it really is an attitude. And it's harder. For example, that's kind of the attitude that objective C has. And so objective C has this nice way where no, no, my knee, my nemesis can just kind of propagate through the system pretty safe. Honestly and objective, see the design, the system is designed to constantly be Knoll checking, you know, doing that kind of stuff. Um, but, uh, but it's, it has cons um, When you're working with that kind of code, like on iOS and you have a system like C-sharp, that's very strict and it's talking to a very flexible system, then you constantly have to be doing error checking of the type that you and I have grown to love because no reference exceptions happen constantly with apple API APIs, because those API APIs are designed to just thrown all around. [00:20:41] James: It's true. Yeah, pretty much. Yeah. It's um, No is that we literally did an entire episode about, [00:20:50] Frank: we will do more because it's [00:20:52] James: that important. So, so I mean, I, one, I got to say talking about opensource themes of dinette, I want to see themes of C sharp by the way. Um, that could be a feature, a languaging, maybe it's in there. Who knows. I got to see, but there's these proposals you can go to proposals on the C sharp line. Get hub under.net and turn off here's pyramidal checking. This is called parameter Knoll checking, and it's exclamation point exclamation point. Or as I like to say, bang, bang, bang, bang, bang, bang, and that's what's called the bang bang, bang, bang. So [00:21:24] Frank: it could be check, check. I've heard that it called chick too. [00:21:27] James: I thought that the chicks were [00:21:30] Frank: the hash sign. Uh, oh, no, that's back tick. That's effecting does tick tick, tick, [00:21:37] James: tick, tick, [00:21:38] Frank: tick. Yeah. Chicken chick is, can be extra mission point bang, bang, bang. Bank's funnier. Okay. It's okay. So are you going to find a way we're we're 20 minutes and we're going to find we state what this thing is? [00:21:53] James: Uh, yeah, go ahead. Go for it. [00:21:56] Frank: Dear listeners. It's a minor proposal. The idea is at the end of your parameter name at the end of the name, not the type at the end of the name, you put bang, bang or chick chick, or not tick tick. And that. Autogenerates because it's a compiler, the compiler can do whatever it wants at the very beginning of your function. It does that argument and all check that we've all written eight bazillion times. And so it's just a tiny bit of syntactic sugar to add a piece of code that we all write a million times. I don't think anyone has. Any complaint would that at all, that is almost the definition of what a programming language is supposed to do. And capsulate common patterns into syntax. That is what a programming language is, but I think people hate it because it's bang, bang, and it goes in a weird spot. And yeah. So how do you feel? [00:22:52] James: Uh, well, so some, some individuals say that, well, why don't we just have attributes. That we had on top of our thing. And I would say, well, what happens when you have like 10 parameters? You have like 10 attributes. I love attributes no more than one attribute terror. [00:23:14] Frank: Yeah, exactly. Attributes are not attributes show a weakness in the programming language attributes are like syntax in the language waiting to become actual syntax. I see a lot of languages out there. Go attribute heavy and just like, oh, I get it. I, I like meta programming too, but you guys have really lost the key here. Like the point of a programming language has to be clear and readable and to understand what's going on. And anyway, I think, I think attributes. Terrible thing here. Uh, there even are systems I believe there already is an attribute system and they're from the spec sharp work. It used to be like an maybe it's system component model, or, you know, one of those, uh, type things where you could throw in all those attributes. And there used to be analysis tools that could do like theorem checking on all that kind of stuff. [00:24:07] James: Yeah. Uh, so I think that, and there's tons of open source libraries as well, that do all sorts of guarding and they do attributes. And that's the beautiful part of C-sharp that you can create these attributes and do a bunch of work in there and generate code. And now you have source generators, you can do a bunch more, but to me, Uh, I like it. I think it's great, uh, in the instance where you need that, right? It's like, Hey, I need an argument in all exception. What I was going to do before is thrown an argument, no exception with the name and then that's it. So to me, it's a nice little helper that is, that is on there that you can specify and really clean up your code to remove three lines of code. So before, so here's the other thing too, is in, C-sharp not. Yeah. And below you would do, if X equals equals now throw in your argument. No exception. We [00:25:01] Frank: don't do equals equals small anymore. Okay. [00:25:03] James: So in C sharp, when was that introduced? Eight, six, whenever is eight or nine. I don't even remember. So before it used to say equals equals, then you could say is that's a pattern matching also, there's this new thing called pattern pattern variables. You got to read this back wide. This is amazing. So I'm just in the specs proposals and it's fantastic. Okay. So then in C-sharp 10 and Don at six, they introduced something on argument. No exception, which was throw if no. So the writing was on the wall, which was, they don't want you to check for? No, because the compiler can check for null better. We did an entire episode on it. Frank, we did an episode on it. Okay. Go ahead, but we [00:25:46] Frank: should be clear though, what the differences between these two features because they are different. So no reference checking is a compile time feature. It is an analyzing your code, looking at what you're doing with all your NOLs and how you're miss misusing them. And it's yelling at you and being like, you're totally misusing your Knowles here. It is a compile time thing at runtime. It does absolutely nothing. It is a zero. It's zero overhead, zero impact because it is just a compile time feature. That's just an error checker. It is not doing anything. It is not actually protecting your code in any way. If you have a public function and you access that public function from say, like visual basic, that just doesn't care. And it's just like, I'm going to know I'm going to send you Knowles. I don't care what your annotations are. I'm going to send you a note. Your code would not handle that perhaps in the way you're expecting, because you're not referenced checking doesn't do any runtime checking, but the bang, bang operator, bang, bang, throws an argument in all exception, at least. And that is the runtime check. And if someone misses uses your library, you'll get that. [00:27:00] James: Exactly. Yep. So to me, I think it's nice syntax, you know, I think that. You know, does the bang bang make sense? I don't know, but what else are you going to do? So I think I've [00:27:11] Frank: seen, you know, I don't like it. I really don't. I here's the thing, I even tweeted this. I don't like it, but I'm going to use it. I'm going to use it a lot. I'm going to put everywhere. Every function I have is on bang, bang, and I'm going to be happy. I'm going to be bang, bang. Um, so I almost, oh geez. Do I like it now? Just for that? Um, I've totally lost my train of thought. Cause now I'm just excited to start putting bang bangs everywhere. Yeah. [00:27:36] James: It's I dunno. It's nice. I think that it's well thought out when you look at the specification, it talks about all the different use cases inside of Lambdas, inside of, you know, you know, all these different things. Um, and you can extend it. You can do all these different things. It's the [00:27:53] Frank: extension part. I'm a little bit curious about, because no checking is obviously the most important one, but there are other ones out there. A range checking is a very common one. So if you have a function where you receive an array and maybe an index variable, you will. In such a function, you have to do a million little range checks at the top of your function to make sure everything's going to behave itself when it's supposed to operate. Of course, again, these are safe languages. You don't have to do that. You're just giving better error messages to the receiver. And so there is a question of, will this syntax, this idea of putting funny characters at the end of parameter names, can that. Do other things, could we put a less than sign there and a number, a greater sign number there and a number. And so what I'm curious about is if we'll ever get that kind of stuff, or if it's always just going to be bang, [00:28:48] James: bang. Yeah. Like a, like a bang, less than. [00:28:52] Frank: You don't even need the bang. Like the bang makes sense because bang means something in, um, in the NOL reference checking Trang means, uh, I know what I'm doing compiler. You're dumb. I don't trust you. I know what I'm doing hashtag I know what I'm doing, but again, it's not a runtime check. It's just telling the compiler to go away. So bang bang is kind of the equivalent of it is just saying, I need a runtime check here, but it really should not be. [00:29:19] James: Yeah, that is, that's a good point. I liked, I liked the idea of it is you're sorta defining, you're defining when you define your method inside the parameter list, you're defining what is valid for your inputs. So you don't have to write a bunch of code down the line, and it's very clear, even that's also the cool part could be IntelliSense at the same time, right? Because the IntelliSense. That is giving you, let's say this went further, right? So it's not just pram, no checking, but it was parama everything. Imagine that down the road, and we're not saying this is happening, I have no insight or knowledge, but to what Frank just said, if you could check against three, are there so that the IntelliSense and visual studio or vs code or rider, it could tell you like what the valid things are when you're reading the method and then the compiler. And the IntelliSense, cause I'd be super smart and like tell you when you're doing things wrong. And when you're going to throw an exception and whatnot, I think that's almost the nicer part of it is, is sure if you have NOLA bill on, if you allow NOLA, not sure as well, but I think that this is like an extra step that can even probably help down the road of I'm looking at the method and I can clearly read some of the inputs and outputs and maybe not for every single type, um, that you want to go in there and get crazy with it. But. I, I don't know. I, I, I liked some, I like some of the things that Kotlin and swift do that sort of make it. Shorter and compactor. So people coming into the language or like, oh, okay. Like I get it like this thing's valid or invalid things are this right. Um, I think that's, that's kinda nice. [00:30:59] Frank: So I think, yeah. Um, oh boy, sorry. I just had a whole bunch of thoughts all, all at once. I think the, it, it could maybe be a little bit overused. I hope we don't get into a situation where everyone's like bang, bang, every reference parameter on every function. Because it's certainly not needed. There's a reason. I said public functions earlier because you should be doing your checks early on. And then once you get into the private or internal stuff, you know, you should be relying on, um, no reference checking, let the compiler figure that stuff out for you. Yeah. So I hope we don't see that. And even though I was talking about, um, the, the formal name of what I was talking about is a dependent typing and there are whole programming languages out there that do it. And although I like to talk about it just because that state-of-the-art does exist. Truth of the matter is I don't write that many argument range, checking things. I maybe I'm on bad library, develop. But I trust that the language is pretty safe, so I don't go insane with my argument checking in the beginning. So although I would like to see all those other features, just putting this knowledge check on here is honestly fixing 95% of the. [00:32:14] James: Yeah, to me, it's like, if I, if I have that code or if I was going to throw a no exception, then I would do that. Or else I wouldn't write that code. And I agree with you, right. I think that this is a feature that, you know, doesn't probably need to be utilized all the time because you either need to check the knowable stuff. Or this it's only like when you need to throw an exception, then you would do this. Right. And I think that that's the key takeaway that I have is like, You know, there's people that have this code written all over the place, especially library creators. And this is going to tighten up that code and my personal opinion. [00:32:47] Frank: Yeah, I'll be blunt. Like I just don't do it. And now I will, because if it's just two characters away, like why not? And it's not going to affect performance that much. If anyone's freaking out one, one Knoll check at the beginning of your function is not going to break the performance of your app. It just won't get better. Not then you have other issues. So we love C sharp 11. We love dotnet seven, or we just bandwagon people. I'm I'm afraid. I, the truth is you're not going to stop this train, so you might as well enjoy it. Enjoy the ride. Um, I hope this feature makes it, I know it was controversial on the Twitters and everything, but I think you and I are somewhat merging on this and not conflicting and agreeing that we both kind of are okay with it. [00:33:34] James: The other great point, every single feature, you don't have to use it. It's totally cool. [00:33:39] Frank: I'm just worried of what it's gonna make other people's I'm honestly worried about like every parameter getting bang, bang. Don't do what people, not every parameter, please. [00:33:48] James: That's correct. Not every parameter, not all the time, but yeah, I think it is up my alley. My mouse is dying, so I'm plugging my house right here. Um, but I'm for it. I'm for new features all the time. Um, and the cool thing is, you know, these things have been discussed in the, in the wild. So let your voice heard, I'm going to link to all of the issues and all the things as well. Um, as we move forward, new versions of.net, new things happening all the time, man. I love the.net website. It just look so good. [00:34:20] Frank: Yeah. Um, yeah. W w which one? You're talking about the.dot net. Which one are you talking to? Dot dot, dot, dot.so properly. I don't know how many dots I actually say in that. I just like, say as many dots. Yeah. That's a good looking site. [00:34:35] James: Yeah. Beautiful. I love it. Good to go. Watch the stuff, go get some swag. I a, they have some really high Rez, super high Rez wallpapers, and does have an ultra wide. I was able to open it and like make it the perfect proportion over my 4k. So 2.5 K five three K my three K monitor. [00:34:56] Frank: So. Well, I'll look at a semi cropped version at four by three or whatever this monitor is. I have no idea. You can get [00:35:04] James: crop it, open it in the, [00:35:06] Frank: and then do the crop eating. It's going to render beautifully. Okay. [00:35:09] James: Good. All right, everyone. So that is going to do for this week's podcast. Do not forget that we have all sorts of goodies over at merge conflict. That FM there's a contact button. You're going to like contact until it emails and send us your show. You can look at all the other podcasts episodes that we've recorded. You can subscribe to this podcast. You can send a URL to a friend and say, this is a great podcast. That'd be super rad. There's a discord that we're barely ever in, but totally you're totally there. And we love everyone that's hanging out on there having a discussion, but more importantly, we have a Patrion, a patriarch. We put out an exclusive behind the scenes episode every single week, just about 99% of the time. In fact, we just released. Last week all about my developer's certificate issues. And that's a super fun one. If you want to become a Patrion member and help the podcast survive and thrive. Go to merge conflict RFM and hit that button. You also get access to the suite discord and behind the scenes, patriotic exclusive zone Regan notified whenever we put out stuff, but that is going to do it for this week's merge conflict. So until next time I'm James Madison. And I'm Frank [00:36:20] Frank: Krueger. Thanks for listening.