mergeconflict303 === [00:00:00] James: Frank. Last week, we talked about how excited we were that dotnet Maui hit its first release candidate and kind of had the same time. That meant there's new versions of visual studio, new versions of the Don SDK. And we also got some updates to see. Oh 11, [00:00:29] Frank: no, James. No. Tell me we're not in the beta summer already. It's too soon. It's too soon. I just got the WWDC invitation. Geez, come on. [00:00:37] James: Well, you know, I made the mistake that I thought that, you know, I made the mistake that like only C-sharp 11 is in, you know, dot net seven or whatever, but I'm like stupid James. Like it's a compiler flag. It can just change the Lang version. As long as I have stuff and visual studios, if it compiles it compiles. That's my takeaway if it compiles it compiles, but I haven't really used anything. And I haven't flipped that Lang over bit. However, Kathleen dollar to put out a blog post talking about some brand new updates to C-sharp 11, but have you turned it on? Have you played around with this stuff that we did a whole podcast on C-sharp. [00:01:16] Frank: No, no, no, no, no. I I'm still catching up the C-sharp 10. I'm still, I'm a year behind James. I'm really trying. I'm trying, I'm converting everything. Now. Pattern matching I'm using is not normal everywhere. Um, I haven't fully embraced records, which is funny, but, um, it's just because when I'm in C-sharp I'm an object oriented mode I use when I want records, I go enough sharp. So, um, no, I haven't. I haven't. And I was honestly a little caught off guard by the blog posts because it was like C sharp, 11. That seems like an awfully large number. What are we up to these days? And so, yeah. Um, it it's, it's, it's totally a thing. Um, preview three or four. You'll have to correct me on dotnet seven. Isn't this a little bit confusing because yeah, we were talking about Maui, which is right now, the release is coming out on Don ed six, but that's not slowing progress. James, the trains must be kept running and.net seven, steaming through [00:02:11] James: it's all happening. Very everything's happening. You're you're correct. You know what I mean? And it's all happening. I'm very excited about it. And, uh, I'm with you. I'm also still catching up on C-sharp Tam, which by the way, still some of my favorite things that I've really enjoyed global usings file scope. Namespaces super-duper yeah. Yeah. Um, [00:02:34] Frank: I I've as follow up. I wasn't sure if I would take advantage of either of those, I back in conversations, any code base, I've switched over to CHR 10. I've fully embraced when I see it indented. Now I'm like, what's wrong with this code? Oh yeah. It's indented. It shouldn't be intended, but the global usings too. Oh my God. Those are great. Especially global static. Usings. [00:02:56] James: Oh, those are super-duper good people. It's very under appreciated this, the global using stuff. I mean, there's tons of just really good stuff in there. Uh, I still have it changed over everything to you records either, but then they have their place. You know what I mean? So they're in there and, um, you know, I did, uh, a little, a little video on some C-sharp 11 features, but where do you want to start in the world of this updates? Because there's some really cool ones, to be honest. [00:03:22] Frank: Yeah. Um, th there's an update that, that scares the heck out of me and then an update that absolutely just delights me. And so let's start with a delight Jameson, some delight here. Um, so C sharp has had, uh, Let's say you want a constant string, James, and you need a new line in it. In the old days we put backslash N and it was terrible. Cause you could never tell what anything was. And so modern languages have raw strings where you can actually put new lines in them. And sometimes they ignore quotes, but you forget what the quote pattern is and all that. So in C sharp 11, what we have now are way more powerful. Ross strings and they're a little bit crazy, but they also kind of match how Python does it. So I'm really charmed because it's, it's similar to Python syntax. Uh, what you can do now is. Three. Yes. You heard me three double quotes did start a string. And that goes into, I'm going to call it crazy rostering mode where absolutely nothing is escaped. You get no escaping. Everything is literal, no slashes. [00:04:29] James: So this, you know, is really people can imagine this in their mind, imagine that you want to put an XML element. Into a string. There's all sorts of bad stuff in there. You got slashes, you got double quotes, you've got all sorts of stuff. And if it's complex is going to be on multiple lines, this is a big issue. So you're saying I can go in and do a, what is it called? Quote, quote, quote, double loading, difficult quote. And then I can do a new line, put anything I want in there. And then a new, new line, difficult, difficult. Doko and then it. [00:05:06] Frank: Yeah. And what's really fascinating is that quotes themselves are never quoted. This is all so hard to follow. I apologize. Um, and they did something very clever. So it's the number of. Of double quotes that you use at the beginning of the string that tells you the number of double quotes you need to at the end of the string to terminate it. So it gives you a lot more control over what actually starts the string and why ends the string because you know, the world is crazy and sometimes the literal strings you put into your code need double quotes themselves for different reasons. You know, I think the worst case, and this is fun, cause it's right in, uh, Kathleen's blog posts is Jason because. Uh, Jason has curly braces. Jason has double quotes in it and all that stuff. Anyway, I think we should name these things. Super quotes. Yeah. [00:05:57] James: I mean, super quotes. Well, I can tell you that I've before taken Jason and I've put it like on some website that is like, you know, D. Make my G quote quote, if I make my Jaison look terrible and it'll put out a single line, it's all long, it's got all the escaped characters and it's just shenanigans pretty much. [00:06:20] Frank: Right. So it gets worse though. When you try to do the new hotness, the interpolated strings, right. You try to put some, yeah, because you want to put some variables in here, not everything. That's a constant string. You're trying to present some content to the user, fill out some Jason, whatever. Uh, and so what we have now is you can actually do a string interpolation with the dollar sign in front of these super quoted strings. So that's awesome. But then they went crazy and you can actually use a different number. This is crazy a different number of dollar signs. Okay. So like $4 signs, $4 signs, three quotes, and then you can put your stuff. And what the number of dollar signs controls is the number of. Curly braces you have to use when you want to do variable injection into the string. When you wanna do the string, uh, what do they call it in line? Whatever the word is, interpolation. When you want to put a variable in there, uh, you, you use curly braces for it. And the number of dollar signs changes the number of curly braces. James. It's absolutely insane. And I love it. I love it. I love how insane it is. [00:07:31] James: Uh, I'm pretty sure I'm going to call this podcast episode. Ready for it'll be. Dollar sign dollar sign, double, double, double quote, curly brace that then then double quote C-sharp double quote semi-colon and then I'll do like, you know, whatever, like the 11 or something like that. I'll do, I'll do something. [00:07:53] Frank: So everyone listening to this episode who has saw complete jibberish as their episode title. Now, you know why? [00:08:00] James: Yes, I'm going to, I'm going to do this. I think quite funny. I'll see what I can do. Um, uh, yeah, anyways, so this is the [00:08:08] Frank: crazy, it's crazy, but honestly, it's a welcome feature because we all do like little simple templates and our code for string output writing to files, all that kind of stuff. It's one of those funny little features that it'll just be a nice thing to have. Yeah. And [00:08:24] James: this is, this is pretty cool. Uh, I gotta say, because we've all struggled with. Many many times doing things like this, which is, uh, often putting in a string that has quotes or double quotes. I've often just hacked around it by putting single quotes instead of double quotes. Cause I'm lazy [00:08:46] Frank: HTML for supporting both. [00:08:48] James: Yes. And, uh, and then, yeah, I've, I've done that before and many, many moons because not that I'm lazy, it's just like, you know, I don't want to worry about it. So this is going to be really nice because. Uh, it's very flexible. So this is great motivation behind it. And this feels like a very, like when I, when I think about these features of C-sharp 10 and C-sharp 11 and CRM and all that. I, I think they're all great additions, right. But then there are features that are, that are highly usable features. Like I will use this feature. So the ones that I said earlier, like the file scoped, uh namespaces and the, um, global using like these are features I will use in every single project and probably every single page, uh, every single class. Right? So in this instance, it's like, oh, this is a, this is a feature that I could use that. [00:09:38] Frank: Yeah, and I'm definitely using five double quilts as my super-quick I'm using [00:09:42] James: 17 man. Just [00:09:45] Frank: all quotes. [00:09:46] James: Oh, it's now I want to make sure though that I want visual studio, you know? Cause it'll add like the quote at the end. I wonder if I'll add, like it's got to add like all seven. [00:09:58] Frank: The poor IntelliSense has to figure this out, or copilot is going to be so confused. [00:10:02] James: He's so upset. Oh my goodness. That'd be great. [00:10:05] Frank: Hello. I love that. I don't, I don't know. It's such a simple feature, but it just delights me. [00:10:11] James: Oh, okay. So what do you, what do you, uh, dislike what's going on? What's it? What's your bummer? [00:10:16] Frank: I have a small fear, but my small fear comes from James. I wrote a dotnet runtime. I don't know if you know this about me. It's used in an app. Yeah. And there's this new feature? It's probably good. Maybe it's good. I haven't made up my mind fully. Attributes attributes attributes can go on classes. Attributes can go on methods. Attributes can go everywhere. It's wonderful. It's a great, uh, uh, feature of it's a part of.net. It's not even a part of C-sharp. It's a part of.net. Uh, one fun thing. I don't think people fully, fully grok is attributes can kind of run arbitrary amounts of code. And when they run, you don't really know when they're gonna run. They're very confusing. They're lazy, loaded. There are only available. Reflection, except for when they're not, sometimes they actually have effect on the compliant and all that, but there is a new addition and because attributes is Chancery have to be executed. Uh, and anytime you load a class or create an instance and all that, there are optimizations to make sure we don't actually execute all those things. You know, it's not truly executed. But, um, part of that is because of that execution requirement, you were never allowed to have generic attributes. As in, it takes a type parameter under Anglee braces, or you have to use the word of and visual basic. And that was more of a, a runtime limitation because the runtime wanted to guarantee that I could, you know, load classes, execute classes, all that stuff. Okay. Okay. [00:11:47] James: Okay. So, so people don't know what exactly you're talking about. So you may have an attribute that, um, is like a dependency and then you say type of food. For example. And what you're saying is what you want to do is converter, um, open, open mouth Fu closed. And attribute, I don't know what the little, what are those things called? [00:12:14] Frank: Less than sign, greater than sign. Let's stick with those arrows. [00:12:18] James: There's a, there's a dog by my foot. I just looked down. There's a [00:12:22] Frank: person. You are amen. [00:12:24] James: So, so that could, could not happen, which does seem kind of crazy. Seeing that, see sharps are this, you know, I ne you know, I never, I never thought about this. I never thought why doesn't that exist? [00:12:39] Frank: Yeah. And it was more of just a runtime thing. If you remember in C sharp came out, it didn't have generics. Those didn't come till version two. And so the runtime, initially it wasn't designed that way. And then I suppose when they add a generics, they're like, wow, why would anyone ever want a generic attributes? But there are reasons the reasons mostly being, because you can constraint. Type types on generic types. So I don't know if you ever do this, but when you write a generic type, you can put a set where, or when, where T implements this interface or where T is a value type or where T is a, has an empty constructor, things like that. And those are constraints. Now you'll be able to add those kinds of constraints. So your dependency thing might have a requirement that you inherit from an interface or something weird like that. I have no idea, but it is definitely safer than just passing around type objects around because you can add those kinds of constraints and the compiler can enforce all that stuff. [00:13:42] James: So you're saying we can, we can do this now. That's how so [00:13:45] Frank: it freaks me out because the whole attributes system is a little bit of a, I'm sure it's fully specified somewhere, but it's confusing to implement. And so what it means for me is I have to improve my interpreter to make sure if people start using generic attributes, that my interpreter can handle them because it is a runtime feature. And it's interesting to see. Actually I'd have to check on that. If it's actually runtime, it might've just been a C-sharp limitation, but, uh, it's certainly, I never implemented it because I'd never seen anyone doing that before. So now I, it means I have to do work and I hate [00:14:20] James: that. Yeah. I reasonably been using a lot more attributes because I've been really getting into some. Uh, open source libraries that use source generators, which are the coolest thing under the sun and specific lab and using some of these MVVM community toolkits, the dinette community tool kit. And what's really nice about that is that you can just add an attribute onto, um, Any properties let's see of string first name, like just, that's it. Like, it's just a private variable. You can say observable property and it will generate all of the MVVM code for you automatically. But I imagine a world where they could start using these generic attributes to specify some type of a method that it wants to create or something like that instead of a type of, or something like that. Like, [00:15:08] Frank: if you are doing an ORM, it could be a foreign key constraint to a very specific type. And then the compiler can constrain that type to be, you know, a table type or whatever it needs to be. Yeah. Yep. And actually you brought up a good point that I was trying to think like why beef up attributes now? Like why now? Or wherever version 12 of whatever. But, um, I love and sorry everyone. Uh, why do it, oh, oh yeah. Source general. 'cause all those sorts of generators require pretty specific type information so they can do their job. So that makes sense. I like your theory [00:15:43] James: all day source generators. All right. Before we get into some crazy stuff, that's happening with C sharp 11, let's take a break and let's thank our amazing sponsor. This week. You guessed it St. Fusion. That's right. Seek fusion as a world's best UI component suite for building absolutely anything. Whether it's web, desktop or mobile apps, they got you. Whether you're billing, asp.net view blazer. It has been on a core web forums, JavaScript, angular react, jQuery dot M Mallee, flutters, Xamarin, UDB. When Forbes WPF, when you, I say I got it all, they literally have it all. They got all sorts of beautiful controls and widgets and gadgets and all the things that you need to make your applications absolutely stunning. They also have an entire dashboard platform. They have file formats like Excel, PDF, a word and PowerPoint. And I just did a webinar with them talking about how you can not only use native controls with Danette Maui and sync fusion together. But. Hybrid controls with blazer and Don Maui, which means you can use all of their blazer controls, which are, there's like hundreds of them and all the down Moe controls altogether scrape beautiful iOS, Android, Mac windows. Web applications as well. Check them out at sync fusion.com/merge conflict. That is sync, fusion.com/merge conflict. If my webinars live, I will also put that in the show notes. It should be on there YouTube, but thanks for St. Fusion for sponsoring this week. Ah, [00:17:08] Frank: God. Thank you. Thanks fusion. I'm excited. I want to see your webinar. You should. [00:17:13] James: I think I, a little sidebar is. Trying really hard over the last six months to figure out two things, which is the dynamic Maui pitch, because, you know, I worked at Xamarin and I had like the pitch and worked on the pitch and the wording and this and that. And then. I'm like, what's the dynamic MLE pitch, which isn't too different than San Fran San Marin forms was together. And then what, how do you pitch hybrid? And I think I finally cracked the cookie on how I want to present it, but I am very excited about it, basically. Okay. [00:17:52] Frank: And I'm, I'm still, uh, we'll have to talk about when I actually get around to doing it. I do want to try to release a hybrid app. Just I want the experience. So we'll definitely get back at that stuff. [00:18:04] James: What is a, what's a field what's this field thing? [00:18:07] Frank: Frank James, I'll be honest. I'm a little bit in the dark here. Field field. Uh, have you ever tried to initialize a struct or have an auto property? And the compiler is just like, you'd never assigned to that field, buddy. You're not doing a good job programming. Maybe, maybe you should be assigning to your, to your fields a little more. You ever get that error? Yeah, I get that error a lot too. There's a new keyword field. I don't, I don't fully get that. So everyone, please look up the documentation here, but it seems like, uh, if you use this magic keyword field, you will get some free initialization initialization that you might've thought you were getting already, but you weren't because he didn't mark these things appropriately. So it says C sharp 11. I think this is all just trying to make the record life and the struct life a little more taller. And C-sharp. Yeah, [00:19:02] James: I'm also seeing that perhaps the field will be used in auto properties where it'll automatically create the backing field for you. [00:19:13] Frank: Yeah. So we we've had this, we've had auto properties forever, but, um, what if you want to actually control the field used for the auto property and I believe that's where it's just giving you that kind of control. Oh my God. [00:19:27] James: I think, I don't know if it's complete, I need to like this one. We're gonna have to do an update on, cause I actually need to double check on this. But if this is the case, this would be mind boggling, amazing where like you no longer had to create any backing field for any public property ever. [00:19:45] Frank: Um, yeah, we're where I always run into having to do fields is when I have like some kind of notified property change and that kind of stuff. I don't know if it's going to help out there. Um, but this is definitely helping out with initialized initialization and stuff like that. Yeah, [00:20:01] James: yeah. That, that's, that's a good point. Cause there was like very often, like what I'll have to do is. I have like a list or like I have a command or whatever. And like, I only want to create that in some instances I'm never going to use the private thing, but I need to initialize it, like on the fly basically. Um, I think that's what this is doing. All right. Well, let's get into the big one. Frank. You're ready to get into. You ready to get into the big one. If you have something that's smaller, you want to get into, [00:20:25] Frank: I'm curious which one you consider the big one. I'm just nervous that we're, whether we're going to agree here or emerge conflict here on which one's the big one. I don't know. Should we 1, 2, 3? Which ones did they want? [00:20:37] James: Uh, I, the big one for me is the one that's at the bottom near the bottom of the blog. [00:20:43] Frank: And near the bottom. It can't be too important if it's near the bottom of the blog post. [00:20:48] James: No. Well, let's, let's run [00:20:49] Frank: through, you're going to bring up bad blood. Aren't you? Okay. Now let me bring up one more thing before we bring up bad blood. There are lists patterns. Now, James, Ooh, we are getting more pattern matching, more pattern matching. And this is a great one where you can actually use square brackets. So it looks like a Jason array or thing like that. And you can actually pattern, match the individual elements of the list. And even better than that, you can use.dot and get like skipped the middle part and just capture like the first part and the last part, it's honestly a big missing feature I've found in the C-sharp pattern matching. And so. If you want to find out, if a list contains a certain element at a certain location, it's going to be super convenient for that, or just handling the base cases, empty lists, that list of one element of list of two elements. You'll be able to break those out much easier. So I am super excited for list patterns. Now this didn't make a Kathleen's blog, but it's. Ben merged into Roslyn and they most likely won't, unmerge it? Cause it's a pretty, it's a pretty nice pattern. And I haven't seen any kerfuffle on Twitter about it or anything like that. So I think we have now some really cool list pattern. [00:22:07] James: Yeah, that's a nice one. The one that did make, uh, her list was pattern matching for spans. Now I don't actually use a lot of spans. Maybe I should be using a lot of spans, but I do know that I do know that the libraries like ESPN on a core and like the, the core underlying like frameworks use a lot of spans, which was a huge boost in performance as well. But now you can like pass in, like, let's say a span of chars cars. Cars cares. [00:22:36] Frank: I'm terrible. I say cares. I say charm, but I try not to say it out loud. So people can't hear me, [00:22:41] James: Charles. I do a span of chars and there's cares cause it's a character. Yeah. Yeah. But it looks like a chair, but it's a. It's a char char anyways. So you can like return switch on that. And let's say, you can say ABC, and then that's our example in here, which is nice. And then if it, if it's there, it would know what it is, uh, which is really cool. So I think that's, that's neat. It's like basically pattern matching as if it was a string, but it's a span of chars or read only as well. So, and then you get like, it'll check for knowledge as well, which is cool. So dope. This is super [00:23:15] Frank: important when you're trying to get, um, hi. Uh, you're trying to avoid memory copies. The big problem with string is it's always an allocation, always a memory copy as a string, unless you use intern strings, but that's complicated. Let's not talk about it. And that's why the asp.net people especially have pushed so hard forward with, um, span and read only span. I, I like read only so. Don't forget them. And I like it because it has a little bit of a contract. You can't change the data underneath it. And so this pattern matching is honestly just, you know, beautiful sugar that kind of should have been there because if you've adopted the span lifestyle, then you're missing out on a lot of pattern matching stuff. And so they're just improving the pattern matching with span, especially span of care. Now you can match against strings very clever. This honestly, I'll probably change. Um, how am I seeing. Oh C sharp. My C lexer works for my C language and I circuit, this is perfect for that. [00:24:12] James: Um, all right, let's get down to it. This happened, boy, feature removed. Frank. I didn't know any you on it. I did a whole video on, I was so excited. No, [00:24:23] Frank: we were excited. We were all excited and that's not true. The entire internet almost revolted against the sharp James. We are talking about exclamation point exclamation point also known as bang, bang, also known as chick chick. Um, I don't know. I guess it was ugly syntax. But yes, it also fulfilled a huge need. We have in C sharp what's that need, you may be asking if you haven't run into this sometimes, you know, even though you're using don't reference checking some evil, evil doers out there, passing a Knoll into your function. And so you should have some argument checking in your function. We're all so tired of boilerplate code. You know, life is hard. We don't want to be type employee replay code. And so instead of doing the Knoll check ourselves, like we've been doing for years, you could put chick chick at the end and it was going to do that for you. But no, the internet revolted, they said, chick chick is bad and they removed. [00:25:16] James: Yeah, it's gone. There was, you know, the argument, no exception throw if now that you can pass in, which is a nice alternative that was introduced in doc. Yeah. It's there. Um, I will say this though. I did do a video. I'll throw this in there, which was on also the community toolkit. Uh, there's a library that they have a guard method. And what you can do is you can say guard and you could say. You know, is NOL is not known, is greater than is less than is all these other things. And it will throw the correct exception for you. So I don't know what the feedback was. Maybe it was to scope down to just strings or. [00:25:56] Frank: It wasn't limited to strings. Um, Jared Parson was nicely on Twitter giving some feedback. So you had just mentioned that one, like I can do greater than, and less than. And all of those Jared was making the point that they did a research on why, what guards, what in. Whatever input validation that you want to do, what is, what are the numbers out there? What are people actually doing with that kind of stuff? And it's something like 98% of it is just no checking. And so it seems smart to have syntax in a language to do a pattern that we all do. Certainly you can express that in a language we've been doing it since the sharp 11, but the point of a programming language in my opinion, is to take common patterns. Concise syntax for it. That's all we're doing. We could be writing an assembler every one, but we choose not to. We want better syntax for writing our programs and that's what our programming language is. So I'm a little bit sad, especially it's tricky to add a big feature like this because C-sharp has been so good at backwards compatibility. They don't want to break any old code. It's a really, it's a great feature of the language that they never break out old code. Unfortunately, I'm adding syntax to a language that can break old code is very hard. They found some syntax and I think people just found it objectionable. I honestly don't understand. People's objection to it. [00:27:21] James: It's a tricky one. I mean, and you said in a good tweet, which was, if we have this, basically all of our. You know, operator things would not be doubled up. We'd have double quotes would have triple, you know, and a double [00:27:36] Frank: we're running out of operators. So we need to double them all. Yeah. We got like $2 signs, three double quotes plus class [00:27:43] James: minus four hashtags. I don't know. [00:27:47] Frank: Yeah, I'm snap. I hope they try again. I really don't know. [00:27:50] James: I will say this though. Nick , uh, cha cha sepsis. I Nick, I'm sorry if I, if you're listening and I, your last name, I have a, also a last name. That's hard to pronounce, so I am sorry. Uh, but Nick is great. YouTube channels have been new and stuff, and he did a YouTube survey. You can do like little surveys and your community. I think he got like six or 7,000 response and it was 60%. Or like 50%, you know, there were like, I wish they would've kept it. Then there was like 25%. That's like, I don't care. And then 25%, that was like, I hate it. Right. So, but 25%, 25% of all C-sharp developers at 25% of them hated it. If you just didn't have [00:28:36] Frank: to dress it, you have to use it. Not forcing it. [00:28:40] James: Yeah. Sorry. Sorry. [00:28:43] Frank: I think it was two shots. It was now ouch bang too soon. James down, bang, bang. I think if it was just one bang me, maybe people would have accepted it. Maybe, maybe the two was too much. [00:28:57] James: Um, it wasn't a, it wasn't a single isn't the single bang used [00:29:01] Frank: for something. Now single bang is used for asserting, not know an expression. It's not allowed in a parameter. Right. So it could be used. I think they chose not to do it because it would be confusing. What you have to keep in mind is no reference. Checking is a compile time fee. No checking as a runtime feature, making double certain, but no one's messing with you. And to be clear, I, and I, I, I, I made this tweet. I think, I don't know if I was super clear C sharp is a safe language. You don't need any of this stuff. You never need to check for null. The runtime will do that for you guarantee. All you are doing is improving the error message. Yes, because we've all tried to track down a terrible mental problem and we all get annoyed. And that's why we add, uh, argument in all checking. So all we're really doing is improving an error message. We are not making our programs better. And that's why it really kind of makes me mad. Cause like, yeah. Make it easy for me to produce the errors. [00:30:03] James: Correct? Yeah. Yeah. Oh, well, [00:30:07] Frank: oh, well, I don't know. I feel defeated. Yeah. [00:30:10] James: I liked that one. Well, and the advantage there, right. Is if, let's say you weren't checking for Nall at a time, right? Like you would get a NOL exception. Um, and then you would get some stack trace. Yeah. But the difference here is that you would be able to check against that null earlier in execution in the runtime, which would make it very clear that. At this specific variable was Nall and not old muddy down into your actual, um, method. Yeah. [00:30:42] Frank: You sometimes have to keep it clear in your head. What, what is a programmer note and what is actually needed? Like throwing an exception is easy. It's a managed runtime. It's going to be safe. The question is. Are you catching that exception and are you dealing with it properly? That's what you should be paying attention to? Not, not argument knowing every single gosh darn thing. The other benefit of argument knowing is, you know, where the exceptions gonna originate from. But even that's a little bit of a lie because we never get it a hundred percent. Correct. So I try to remind myself that all of that stuff is just trying to improve the error message. Yeah. [00:31:17] James: That makes sense. Hmm. Well, it is. [00:31:22] Frank: What is it possible that we have a dot that seventh C sharp 11 and Maui on that six coming out life is crazy James, but you know what? I think I'm finally getting comfortable with it. All that that release candidate of Maui made me feel a lot more confident and everything. And so, uh, um, I was honestly ignoring news about dotnet seven because all I care about is Maui and you know, all the mobile apps and stuff. But now I feel like I'm starting to actually pay attention to dotnet seven. [00:31:53] James: It's all happening slowly but surely. That is for sure. All right, Frank. Well, that's going to do with our C sharp 11 escapades over here. Uh, I'm excited to see how the progress is, or there's going to be more stuff that's thrown in there as a more so than maybe doesn't make it. Uh, but uh, to me, I'm, uh, I'm excited, especially for the, I now understand the rostering literals, which is an interesting name, but I, I get it. [00:32:16] Frank: And I am excited to see what this episode title is [00:32:20] James: me too. So we'll find out because that'll be out. Cause you'll you have seen it by the time this [00:32:26] Frank: town, everyone knows. They know, I don't know. It's weird. Time [00:32:30] James: travel is weird and I don't know yet, but I will know when it comes out. When I post a live. [00:32:36] Frank: Gosh. Yeah. How do anyone do [00:32:40] James: well? Thanks to St. Fusion again for sponsoring this week's pausing fusion.com/merge conflict, and that's going to do it for this week's episode. So until next time I'm James Montoya Magno [00:32:48] Frank: and I'm Frank Krueger. Thanks for listening. Um,