mergeconflict276 === [00:00:00] Frank: Frank [00:00:07] James: you are back. How did the dry, [00:00:10] Frank: Ooh, that was a harrowing drive. Actually it was half boring and half harrowing. The boring part is. Kansas Nebraska. You are lovely states, but my goodness, your roads are very straight and endless. I don't think I would ever get through those states. And then I got through those states, hit a snow storm, got stuck for a day, hung out and then got moving and drove through. More mountains than I care to ever drive through again. But other way, I had a lot of fun. I saw a lot of the U S I did over 6,000 miles, uh, great times, but I'm happy to be back in dark and rainy Seattle. [00:00:52] James: Yes. Um, well, I did get a photo from you and I saw it and I was very confused because you had a smile on your face. And yet there was tons of slushy snow on the road and your car was what it looked like in a ditch. And I literally freaked out and I texted you right away. And I said, are you okay? Is everything okay? Do you need me to call help? Like what is going on? Cause it looked like your vehicle was destroyed. [00:01:25] Frank: Oh, okay. Well, I guess that's my bad photography skills. I, I thought I had parked it very nicely. Yes. Partly in a ditch, but that was just to get off of the road. What happened was I decided that I wanted to see Mount Rushmore and I was driving through the mountains. You have to do like 10 or 15 miles through the mountains to go see. And it was snowing and it kept snowing. And there was a big hill and my car barely got up the hill. Then there was a bigger hill and it really barely got up that hill. Then there was a third hill and I was like swinging the car around, trying to get it up this hill. And that's when I saw I had six miles left and now was a good time to stop trying to go up the mountain and my tiny little car not fit for snow driving in the mountains. And that's when I parked it. Levelly on the side of the. It took some happy pictures. And then, uh, the trick was, you know, the, those big Hills that were hard to go up where hard to go down. Also, I had to just ride the brakes the entire ways, because again, the car was not fit for the conditions and it was fun, fun, and quotation marks. [00:02:34] James: Yes. I still am looking at this photo and I, I mean, I may have to make it the. Artwork for this on merge conflict IFM view allow me only because if you see this, you even see skid marks coming from the road through the slosh of where your card is at. Frank. Look at this photo again and tell me that it is not you in, on the side of the road, in a ditch because your car, why would it even be it's literally horizontal to the road. [00:03:09] Frank: Yeah. Yeah. It's horizontal. So I gave myself options. I could go down the hill or up the hill. I know options, options, cars. Don't go down the hill sideways. You have to be pointing in a direction. It's the safety maneuver. [00:03:23] James: Um, you later gave me other photos where it, it appears as though there's a road over there, something else. But regardless Frank, I know you don't have snow tires and I know you don't have chains because why would you have chains? It's October. [00:03:36] Frank: I grew up in upstate New York so I can handle this. I was [00:03:42] James: born for snow, driving, whatever I grew up in Ohio and its nose in Ohio, even as the worst is upstate New York, but still, and I am never ready for snow ever. I am terrified all the time. I can't wait to get snow tires on this year, cause I definitely paranoid. I just hate, I hate snow, but I do like cross country skiing. So that's a conundrum. [00:04:02] Frank: Yeah, and I mean, it, it was all, I didn't want to take risks or anything. That's why I decided to come down the hill because, uh, the day, uh, two days after this, when I actually did drive out in the mountains, there were just accidents left and right. So it actually is pretty dangerous, but, uh, take your time. Go slow. And take an extra day in a hotel like I did when the snow gets really bad. [00:04:28] James: Well, I am glad that you were safe and sound and back home. And while you are away, Frank, I actually started playing heavily with Donna at six and C-sharp 10 features. And the other one I want to talk about today now, I don't want to just go feature by feature. I'm actually going to really narrow in on a few here because what I've been doing. Is, uh, my team works with a few other teams here at Microsoft and we work on the Microsoft alert. Content for.net and Microsoft learn is like free self guided learning for basically anything.net. There's there. Xamarin there's there's blazer there's asp.net. There's basic C-sharp dot net stuff. And I'm an updating a few modules and I've been updated them to die. Six and those ones there's really like asp.net I've been doing, um, like just simple file, new council line ones where we're teaching dependencies or debugging, or just different, different things like that. And I've been really digging, doing file new, exploring these templates. And I do think that even though C-sharp 10. According to the docs page, doesn't have that many lists of features when you sort of combine it with some of the new stuff and features and.net itself, it kind of blows my mind a little bit. [00:05:53] Frank: Okay, so.net C sharp 10 episode. That's funny because just today, um, when we're recording earlier today on Twitch, I was doing my own keeping up with dotnet six because I don't want to fall behind and I haven't built anything actually kind of big and.net six user. I just kind of install it. Uh, file new console because as he said, go keep track of the templates. James. That's impossible. There's like 8,000 templates. Now, if you do.net new dash dash list and whew, that is quite a list on there. Um, I try to keep up though. I read through the list. So today I wrote, um, a little blazer app and had a lot of fun using honestly, like even just C-sharp sharp nine features and. Uh, not too much 10 stuff, but definitely just getting up to date on all that kind of new stuff, because I do love my F sharp, but it's, it's kind of amazing how C sharp has grown. And I know it's gotten a bit of graph. I want to address both sides. Some people said that language has gotten a little complicated, but I kind of disagree. I really love all the new features of C sharp, but. Whatever, let's just deep dive. So w what, what were you thinking about? [00:07:11] James: All right. The first thing I want to talk about is. File scoped namespace declarations, Frank. [00:07:20] Frank: Okay. Okay. This, this is cool. This is cool. This is decreasing the amount of code or decreasing the amount of curly braces code. I am always about removing curly braces and indentation and furnaces. [00:07:33] James: That one, that one. That's the one. That's the one. I, it actually only removes one. Character of code because previously you'd say namespace, mine, namespace, new line, squiggly, indent, all your code D and D anchor D indent. Now they're squiggly. Right? So now you can just do on any, any, any, you know, file and UCS file. You just do at the top of it, namespace my namespace semi-colon and you're done. And that basically scopes the entire file to. Namespace. Right? So the indentation is the cool part where now you don't got to end it. It's one less indentation, which, you know what Frank indentation inside of code editors, you want all, like, you don't want that indentation. Like, you know what I mean? Like I want to see more of my actual code that matters because a tab of nothing for no reason doesn't make any sense. [00:08:36] Frank: It's it's true. I, I kind of used to think of it more as a Java thing, because I don't know why anytime I want to make fun of C sharp. I, I tend to call it a Java feature or something like that, but the amount of indentation needed. Okay. I'm going to do my best, not to say it, but I just have to, it's a great feature from F sharp that they've taken because it's so liberating getting rid of all that indented lines and everything. Oh yeah. Especially those people that use, uh, eight space tabs. Oh boy. It's just gonna make all documents easier to read. Uh, there are a few caveats. I, you said it right. It's um, this goes at the top of the file and it makes the whole file that one namespace, which is fine. Technically, if you use the curly braces, you can put multiple namespaces into one file, but no one ever does that. So this is just a good feature to, you know, save a few bites across the world, at least, you know, for one to four, one to eight bytes per line of code. That's good. That's an environmental [00:09:42] James: thing. Yes. Yeah. So they don't really allow you to do, once you go all in on this, you're not allowed to do the mixing and matching of namespaces in that file. Right. You can have another file that has normal namespaces with the curly brace with multiple in there. But again, I'm with you. I never do that ever. And I never have nested namespaces that seems crazy to me. I try to even avoid NASA classes. That doesn't seem good to me. I mean, I think the thing that is really cool is that you can have namespace and then class interface struck either. And you're just all of them down the line in the file. And it's just right there immediately. And I dunno to me, those pixels matter, like you said, they're important pixels that I want to have back and now I have them back. [00:10:31] Frank: That's funny. Yep. Yep. Uh, this is all going along. Um, I don't know why I blamed the asp.net team. They're trying to get their single file web server project. And so I think a lot of these things along those lines where basically you're trying to make a C sharp look a little more Python, Annie, or like one of the. Languages specifically where you just start at the top of the file, interpret, interpret, interpret, interpret, and get down to the end. It's not how C sharp works at all. It's not how.net works at all, but it's kind of neat that you can do programming language tricks to make it act like [00:11:08] James: that. And to exactly, yes. It's [00:11:12] Frank: not active. [00:11:12] James: Look, look. Hello? Yes, sir. Well, and to that point, uh, the next feature that in this vein, I think really is about. Getting to what you just said, which is how can we get an entire app or a web server in a single file and make it readable and pretty is global using directives. And this is your anything at the top of your file, you have using system using system collections and all this other stuff. Now, Frank, how many times have you gone into a file and had to use an add to add manually using system dot? [00:11:51] Frank: It's the worst, James. It's absolutely the worst. It's probably one of the worst parts of the feature of the, sorry, the language. It's not just that it's a system collections, generic, uh, system collections, concurrent. Uh, all the system collections. Yes. Thank you. System system system. So I don't know if I'm going to have the guts to use this on a, uh, existing code code base. And I'm just scared. I'm scared of, uh namespaces and all that kind of stuff, but our new code a hundred percent, I'm all in. And if we haven't been clear, what you do is you just put the keyword global in front of, uh, any of your usings that are normally at the top of your file. And all of a sudden that gets applied project-wide that is they should call it like super global or like, are you sure what you're doing? It's right here, global, but it's just called a global and oh boy, it's going to affect every file on your project. [00:12:52] James: Amazing. Yes, you can do. Yeah. And so what a lot of people have been doing is they'll create a, just to give an assembly info dot CS. A lot of people have been doing global usings dot CS and they'll put all of their global usings there and you can have not only global using, um, system dot math, you could also have a global using static system dot math to. [00:13:15] Frank: Yeah. And okay, so that one's pretty cool. I like that. The one that has me, like the most excited though, do you know, uh, type deaths from. And C plus plus. Yeah. Yeah. You know, gate give a name to a type, sometimes types get long, especially when you're using those generic things. And so you've been able to use aliases, uh, for a while to create like, uh, shorter names for types, or if you have a type of conflict to kind of rename a type so that you have. Type name conflict. That happens a lot, you know, with the point in the color classes out there. Thank you everyone for not prefixing your class names anyway. Uh, so put that global in front of it. And all of a sudden you have, you know, Maui color, Xamarin forms, color, UI color, you know, you can actually keep them all separate from each other. That'd be amazing. And I really need to start using that. [00:14:11] James: So now you said you were scared Frank to start to. Do this in your apps, I've done this on a large scale application that we're building for the dinette comp keynote. And let me tell you how freeing this is, because you just literally go into your file. And what do you see at the top? Namespace, my app dot view models and like, that's it. And like, it just, it just is a beautiful thing in your code. You scroll to the top and you're at the top of your code that you care about. Cause nobody cares about usings. They're so stupid, but so important at the same time, we just want to see our code, you know, because you can build up this huge thing of all this stuff. And you said, no, give out all of them. I don't want them put them all in there and boom, they're gone. And it's amazing. Frank is literally the best thing ever do it at all of your apps right now is the most amazing thing ever. And it's just, it is just literally so freeing because you open a file. You don't have to scroll. You don't have to scroll, frame the code. [00:15:19] Frank: I can't follow that up. Um, I can't be that passionate about no, it's it's. I, I have faith that I can put this in and use a tersely. I feel bad for the compiler, honestly. Oh gosh. It's symbol table is going to be so big. I feel bad for the IntelliSense engine. Oh my God. It's going to have 8 billion symbols, but you know, the. Right side is I've been using, um, uh, co-pilot a lot lately. And so that, that kinda cuts through it all. You know, it can, it can live with 8 million symbols and the global space that used to be the whole reason why we didn't pull everything into namespaces and. It's always kind of bothered me that people that put like, you know, two classes and a namespace and have a hundred namespaces I never thought that that was actually very well organized code. So it's nice to know that if I ever run into a library like that, I can just put a bunch of levels. All their names faces to make the thing actually usable. I wonder if they'll ever, oh, whatever. I, you know, now that we have global, I kind of want a local, I want to be able to specify which files can see it, but you know, that's getting too complicated. I'm going to take this for what it is. I'm going to enjoy your pure scripting language world and get all my code to look like [00:16:40] James: that. Okay. There's a few things here that I want to mention on too, is, is that I am not. Putting everything in a global using that is not my thing. What I'm doing is I've opened the app and I said, let me open just a few files and what is some commonalities between all of them. And it's all that stuff, right? It's the system system tax system, um, um, link system dot collections, all that stuff. And you're like, you know what? This is shenanigans. And I just get rid of this now, other things. I know, especially with, with, with, uh, Maui or Xamarin forms. Right. How many times do you add using Xamarin forms? Oh, guess what? It's in every single file, of course, your li Xamarin forms that bring in the namespace. So you might as well do that or Xamarin essentials, bring it in. Never have to type that again. But the more important thing is that. Things that I'm not bringing as, like I'm not bringing in like certain data cache libraries that I'm using or jason.net or, or just things that I use in one or two files. I don't need to do that. I'll just, just, you know, put them over there. But the bigger thing that I think is really important is that some of these, um, using statements like link, for example, their extension methods. On things and you don't see the extension methods, unless you have the using and same with like ASP dot nets, dependency, injection. There's a lot of extension methods. And unless you have the using statement, you don't see them. So to me, these global usings actually help unwrap and unveil a lot of features that you may not know about. And that's a key win to me. [00:18:20] Frank: Oh, yeah. You just struck me straight through the heart right there. I've been doing a bit of that. Uh, gosh, I don't even know which library. I think I was playing around with Maui, but from the tricky side of trying to implement a new backend for it. So granted. I think I'm working on, it's kind of ridiculous, but at the same time, oh yeah, everything's an extension method. Now people have really adopted the interfaces and then extension methods on top of interface kind of world. And in that world, you better have the usings in there. So you got me. Okay. That's a good selling point. You should [00:18:58] James: be in marketing. All right. I'm going to blow your mind one more time. But before I do, let's take a break and thank our amazing sponsor this week. St fusion. That's right. Sync fusion. They've been here for the last 18 years with us hanging around, making awesome things for you so you can make your apps even more awesome. They have literally the world's best UI component suite for building powerful web apps, desktop apps, and mobile applications, including. Donna Maui. That's right. Boom. That is released or done at Mallee preview packed full of charts, graphs, and all the things, you know, and love from their Xamarin, um, component library. But they got all sorts of things. You know, they got the charts, they got the graphs, they got the Excel PDF or word PowerPoint. They got all these extensions that you just need in your application. They are carousel views, expanders lists, fears, parallel vacs views. Pop-up views, avatar views, a whole calculation engine image, editor, a PDF view or picker, or they've got a whole freaking combine board. Come on now. Now they do this for anything. You got web, you have the blazer, you got the asp.net. You got the JavaScript, you got the angular, you got the view. You got dotnet Maoris. You've got the Xamarin. It's got the flutters. You've got the ear WPS. You got the, the WPS, the win for us. I mean all the out, all everything. They got the whole kitten caboodle. Now, where do you go to learn more simple sing fusion.com/merge. That's it sync, fusion.com/merge conflict. There are links in the show notes below there's this infusion for a sponsor, right? That's what I used. Ah, God, [00:20:27] Frank: thanks seeing fusion. Wow, that was amazing. James I'm I'm I'm ready to go get all the same fusion now. Got [00:20:34] James: to get it. Um, implicit usings do you know about this? [00:20:41] Frank: Uh, oh, I think you got me wait a minute. Implicit using let's think that through what could that possibly mean? Well, we have two uses of using the one we were just talking about when you want to import libraries or open up statics or create a type alias for something the other using is when you want to use the dispose pattern, I'm going to lean towards. [00:21:08] James: You don't know don't guess don't even guess. Okay. I give up, what is it? Okay. This is actually the, I tricked you. That's why this is not a C-sharp feature. It's a framework and.net project sees our project feature. [00:21:26] Frank: Oh, it's a project thing. This is even scarier. So like Ms. Built kind of thing. [00:21:32] James: Okay. Here's what happens when you create a brand new. Blazer app asp.net app, a council application. You will now see a tag in the CS proj called implicit. Usings set to enabled. Now here's, what's really cool about. Is [00:21:51] Frank: that so scared? I'm so scared. I'm jumping ahead of you. And I'm just, I just want to be on record so scared right now. So [00:21:59] James: the framework creators ESPN on that blazer Donnette council, they've created a list of using statements for namespaces that pretty much everybody uses in their projects and they are brought in implicitly for you. So what this means is. In asp.net. You'll never have to bring in ASP or using microsoft@asp.net dot dependency injection because it's implicitly brought in for you automatically. [00:22:33] Frank: C namespaces were a bad idea. We should just throw them all out and have implicit usings on everything. This is fantastic. I am here for this, especially for that asp.net, because they do have a lot of namespaces on that team. Um, okay. Wow. This can be heavy handed. I really hope, you know, like. Newton soft. Jason doesn't do this necessarily, but for framework key things, it makes a little bit of sense. It's still a little strange. I'm glad that it's at the project level. So if you find it icky, you can probably just turn it off real easily. Um, and it sounds like it's. In not opt out. So it's off by default. So that's the safe part. The good part is yes. Fewer asp.net. Yeah. [00:23:23] James: That's good. Yeah. So it is, so it's going to be opt in and just like NOLA, NOLA bowls and things like that. But for file new, those things have been turned on, which makes a lot of sense, especially if you're creating a brand new project, you probably want the new hotness. So for example was really cool about this is there's an example. I think of. Um, of what asp.net brings you in. And it's it's system system collections, generic system IO system link, Nat HTTP, threading, threading tasks system that HTTP Jason, then, you know, a bunch of the asp.net stuff. But what they did is they said, Hey, when you do file new project, look at all these using statements that are brought in. Let's just automatically bring those in to this project. To clean it up and make it look pretty. I mean, that's what I think they did. I don't know what exactly what they did, but to me it makes so much sense. And what's happening here is that it is generating them. So you can go into your OBJ bin directory and you can like look at, you know, all the files there, all the using statements that are being generated for you automatically. And, uh, like a global using CS file basis. [00:24:32] Frank: Oh, that's funny. The, so they actually leave the artifact around in the OBJ directory. That's funny. Yeah. I, I steer away from that directory ever since that, uh, crazy, um, new get Jason file was put there with all the version information. It's just like every project has this wonderful a hundred kilobyte file that lists every new gift package on the planet and how they're all related to each other. Uh, that's good that you can actually see a little bit behind the curtain there. It's not all just happening in memory. Yeah. Um, okay. So, so what we've concluded on this episode is namespaces were a bad idea and we're all just going to come up with distinct long names for classes, for everything, right. [00:25:18] James: Um, Yes. That's correct? Yes. Okay. Now, Frank, here's where things get magical. I don't know if you remember, there was a feature of C-sharp nine called top level statements. Do you mean. See, [00:25:37] Frank: I get confused on which language version had this, but because I haven't been using them enough and I am actually really here for these, they use a fun part of IUL code where you actually just get put into a module where you might not even have a namespace. And all namespaces, but, um, what's interesting is that you can actually put data that are two fields and things like that. So I am familiar from that point of view. What, what are you doing with that? Now that's going to make me [00:26:12] James: squeamish. Well, one top level statements are the most amazing thing to teach a C sharp and Donna features because you do file new and there's not all this junk in it. And there's literally now a single line of code because previously let's say you wanted to do counsel right line. You would need a using statement, said using system then council right line go. [00:26:37] Frank: Right. Are you, are you going to tell me I'm just, I don't want to get my hopes up. James, are you telling me that Rightline is finally a global method available in a file new project? He has [00:26:49] James: just, I think it is still counseled dot right line. Okay. [00:26:52] Frank: Fail cakes. It needs to be just right line. [00:26:55] James: Um, well, I should probably actually, um, see what happens here. If I do, uh, let me see. Let me, Ella. I mean your CB desktop, um, uh, I got to go to D colon CD users slash James, uh, [00:27:14] Frank: real time code in here, demo, [00:27:18] James: uh, make better tasks [00:27:21] Frank: task the task 22. [00:27:23] James: Um, um, okay then I gotta do.net and council and then, uh, code dot. Yeah. Okay. And then open up vs code and, okay. So what shows up here? Council's outright line and that's it. There's one line of code and that's all there is because there's no using statements anymore because there is implicit usings in there now. Now I agree with you. I kind of think maybe there should be a, you know, using static system. I don't, I dunno. I dunno. I dunno if I agree with that just yet, but I want to say, I just did done a new council and it gives me one file that says council. And that's it. That's all you get and you just write code. It just does it. You put classes in there. You put anything you want in there. It's all with no indentation. It's amazing. There's no, namespaces no main method. There's no anything. It just is all there. Nobel Nobles on implicit music, all on by default, down and down Essex. And this. It's if it's not on by default, it might as well be off. You know what I mean? And now it's on and it's amazing. Default template, top level statements. You can always not use top level statements. That's fine. Right, right, right. The thing in there, that's fine. You can write the class and the static. That's fine too, but it's beautiful and I love it. And I'm all about it. [00:28:55] Frank: Uh, you, you really won me over with the, uh, is Nobel really on by default. [00:29:01] James: Yes, I've read. That's so [00:29:02] Frank: good. Yeah. No, well, I, I had so many NOL reference exceptions today while I was coding in C-sharp and I just felt like novel had, has to be on by default. So that's good. That's funny. I thought I had a dotnet six project, but I was still putting notable enabled. But I agree with you, James. You know what? I'm even going to retract my, I want white line to be global because C sharp is an object oriented language and people should get used to the it's always target dot method or target.property. That is why all data access looks like in the language. So it's, it's fine. If you have to teach the concept of, uh, methods always exist on something. It might be an object or a class, then find that is one concept. Do you have to teach someone? I always try to minimize the concepts, but fine console dot right. Line enough for an object oriented language. [00:29:56] James: Yes. And then also done a new blazer WebAssembly or blazer nullable enabled and plusing implicit usings enabled and the startup class is gone. Literally a blazer application is 11 lines. Okay. [00:30:15] Frank: Hopefully it will be bigger by the time you ship, but that's, that's a good starting point. Yes. I love that. Everyone's back to the aesthetic that I've always wanted. So good job everyone. I don't know. This is, um, you get, you just get tired of the craft, right? Like we were talking about just indentation and how we're tired of that one line of indentation. While how about 8 billion using systems out there? It's it's just craft. It doesn't need to be there. And it's good to see all the tooling being upgraded handle it. I'm still a bit afraid of the Ms. Belt throwing a bunch of new things into my code. But as long as it's just the asp.net people mostly doing it, I'll be okay. Yeah. Probably, [00:31:00] James: probably everybody [00:31:01] Frank: eventually RX people that will do it. I know they'll do it. They're just going to jump in. They [00:31:06] James: will, you know, and I think here's the cool part about it is sort of these top level statements. They're really kind of introduced at least as a council type of thing. Like, why would you do that? But now we're starting to see it on with all these other features in C-sharp 10. It makes a lot of sense because, Hey, what if your, your entry point of your application is just some code, right? It's just like, here's some stuff and then run it and go and run whatever's in this file. And then it'll figure out from there. That's exactly what, you know, the asp.net web API is, are doing the blazer applications. And it's like, why do we have a startup and a program? And like the, the startup just calls the program. Why is it that just a single file? Oh, because the legacy, well, no, now, now it's all just there. Right? So that's, what's really, really nice about it is to me, it all makes so much sense and yeah, I just, so I just pulled up. Here's all the global, that it didn't format properly in my Zen master, but you can get something there. So what happens is, is it'll do, uh, in your generated code, it does project name.global usings dot G dot CS. So that's generated for you automatic. [00:32:16] Frank: And w we neglected to mention the other giant using out there. I mean, system for sure. system.link, for sure. What's the other huge one system dot threading dot tasks. I still find it so insulting that like a native language feature async methods require this three word using at the top of every file. So that's. That's getting put in there now that's for console apps, any word on what Maui is getting or will like a Maui app get most of the stuff or like a ios.net, six apps, something like that. Uh, [00:32:50] James: I don't know yet the dinette Maui sends it's so preview and an elongated preview. I know they haven't adopted these features yet, but I know that they I'm assuming that they will, you know, and I'm sure, just because it would be kind of weird if it did another question. Update like the, the S the Xamarin, the iOS and Android ones. Cause it would be nice for Andrew. There's a bunch of Android namespaces and a bunch of iOS ones too. I don't know if I want it to meet that called you include UI kit. You know what I mean, foundation, [00:33:21] Frank: foundation foundation in I'm so tired of foundation. Probably not. K. I don't know, and things are definitely converging on UI kit, but that feels a little premature, but yeah, I would, I would put foundation in there in a heartbeat. I think I'm going to have to update all this stuff. So when will Xamarin support C-sharp that's to be announced what timeline, [00:33:45] James: you know, they, they taught, you know, the, the iOS and Android for D. Six, which is basically Xamarin support for Danette secretary. Just the Xamarin name goes away, and this becomes iOS and Android for Donna at six. Um, those will ship with Donna Maui. So when Donna Maui ships basically like they're, they're all in the same timeline at this point, but. You can, you can upgrade them to, to Don at six today. You know what I mean? I'm trying to try them out on. [00:34:10] Frank: I'm just trying to short circuit because, uh, since current Xamarin right now uses, um, um, Rosalyn. Yep. You can always get yourself some C sharp. Love there just might not get all these fancy, uh, project included global usings everywhere, but, uh, you should be able to get, uh, the rest of the C-sharp 10 features. And I'm pretty confident saying that because I've already included like the C sharp 10 Roslyn compiler into continuous. Uh, actually update it. I need to get it out onto the app store, but, uh, they've been pretty good about doing, um, pretty live, uh, new get packages of all the betas of the compiler and everything. So while it is a headline, dotnet six feature sharp 10 is technically separate from all that stuff. And so you can play around with it. [00:35:02] James: Got it. Got it. Yeah. So what else do I have for you, Frank? Um, I'm looking at what else has been done in you? Uh, on a new, there is a new, uh, a few things. So we've talked about blazer. We talked about, you know, done new what's going on there. The thing that I think it's really fascinating is web. And ESPN on a court in general, in this new model and this new thing called minimal API, you know, by minimally. [00:35:41] Frank: Um, I've seen a bunch of tweets where they've they, uh, is this the trick of like every page on the web servers? Like one line of code, that's the kind of minimum I'm thinking of? What kind of minimum are you talking about? [00:35:56] James: I mean kind of, but if I look at minimum minimal API, um, if I'll find that there's a, there's a page out there, that'll kind of give you this. Uh, have you ever used like express. [00:36:08] Frank: And, uh, yeah. Yeah. Okay. So that's exactly what I was thinking. Yeah. So you can write like, um, yeah. Uh, all your little credit operations, you know, you don't need all that scaffolding around them. They can be two or three lines of code to create an API end point. That makes absolutely perfect sense. I feel like you've been able to get some of that. It was never perfect before because, um, asp.net has had a really good routing system forever, and it was pretty easy to just basically inject your own, um, either complete handler for a URL or create the middleware. The chaining I always found was a little bit complicated, uh, setting up the middleware chain and all that stuff, but, uh, It's subscribing to a routes pretty easy, but from what I've seen, at least on Twitter, they've gotten it down to yeah. Few lines of code to create a route, a URL and point and to actually process it. Is that right? [00:37:12] James: Yeah, pretty much. Yeah, you can, you can go in and you can do it on a new web and that'll be like a blank ESPN on that core app that uses it by default and shows you how to SIM simply map like slash hello to say hello world, but you can also do Nannette Donna, new web API. And then space dash minimal, and that will show you how to do a minimal API one. So the thought on and the Don a new web API by default, however you can add it. And the biggest thing is that you create, you know, you, you, you build up your, your services, you add your end points, you can mix and match these rights. So you can, you can add a minimal API into your existing web app. Right. And, and it's really nice because. You could just say, you know, app dot map, get map, post map, delete you, give it a routing endpoint, and then you give it a function. You say, run this code and it just runs the code. And I think about so many of my, um, my sample applications and test applications that I've, I've used an over the time, which is like getting monkeys and setting monkeys and. Ceremony with the different files. Like I have like a different class for monkey and I have a different monkey service. And then I have all my controllers and I have to link them all together now to build that applications. It's a single line of. That is literally, you know, a single line or sorry, a single file with like 50 lines of code, because guess what? I don't need a whole class for my monkeys. It's a single line. It's called a record. You know what I mean? And I can generate random monkeys in that exact, you know, class I can, I can create all of them automatically in array. And then I can say APTA map get, and I returned that list and I, you know, it's all just right there for me. It's just such a beautiful. Beautiful way of building. Cause I'm not a, not a web person. Right. So to me, this is really cool. I don't need to go figure out, oh, okay. I need to add this routing thing and I need to do this tag and I need this HTTP, you know, all this stuff, right. Say map, get and understand verbs and understand that this works. And that to me is really cool. I guess map has many of them I want, and I don't have to magically like, oh, what is the end point going to be right now? Well, it's a slash monkeys because I wrote slash monkeys. You know, I think that to me is someone that's not an asp.net developer. That's not a web developer. I feel like I really could come in and, and start to build some stuff. And then if I needed to grow and learn a lot more. [00:39:46] Frank: Yeah. Absolutely. Um, and this style web app is actually becoming kind of common. I don't want to take anything away from the team because this is awesome stuff. But at the same time, like if you open an Arduino project and you want to write out web server for the Arduino project, They basically say like here's a web app and here's a route and here's the code to execute for the route now where this is much better than all that stuff is how it actually, like you said, handles Jason and the return types for you automatically. I always thought it was one of the most clever features of asp.net. Even back in the MVC days with the controllers that the methods on the controllers didn't have to return. They could actually return any old object and asp.net would find a way to serialize that object and return it as a response. And I feel like this is, um, that feature, uh, turned up to 11 where they're just like, look, we've got this thing down. We know how to build web servers really well. We're going to give you a very simple API. Give us the route. And give us something, something in return and we'll, I'll put it. And that's why I think that they say it's especially good for API APIs where you're just really dealing with objects. You're just constantly sterilizing objects in and out. This is going to work really well for that. Where. You know, and I, I was about to say it would fall down a little bit for when you're building like a proper website where you want a templating language, but there are a lot of good.net templating languages out there where you can just say templates. I'll put string and return it from one of these. So this would be pretty easy for integrating your own template engine. [00:41:35] James: Yeah, I think so. I think so. Guess I'm just, I just wanted it, you know, there's a bunch of other features and Donna six and C-sharp 10, all these new APS, but I wanted to take just a few of them and cascade them down. Right. See how they all sort of built. I created this narration and you didn't know it, Frank, but they all sort of built on top of each other. Well, I'm a web developer now, and I understand how to write 40 lines of code that I now understand to do that. But the, the, the grace and elegance of that I think is really, really cool. And like you said, it is a little, some people may want all the squiggles, they want all this stuff, they can do that too. That's totally fine. You know, I think that's why, whatever you want, but I really think, especially for new developers coming in or just really big projects and. And indeed for me as an independent developer in my spare time, I want access to some productivity, things like all those extension methods with my global usings. I don't want, I don't want to, I want to save my keystrokes. [00:42:34] Frank: Yeah, well, it's, it's not just a code golf thing, either. It maintainability is all about, I keep saying removing craft, but what does that actually mean? It means about seeing the important parts of the code and being able to ignore the unimportant parts of the code when I'm writing a web app. It's really nice. If I can put all the routes, all the URLs together, because then I can see what my. Actually does. And it's okay. If the Lambda function actually just calls out to something called like, you know, add monkey, delete monkey or something like that. What's nice is in a really short clean file. I can see all the routes and what they roughly do at least what function they call. And so it's, I, I. Uh, I even, I was doing it earlier in the episode, I was making fun of like, do we really have to save all these characters? Because your productivity as a coder, it's not necessarily how many characters you have to type into the code editor. I spend most of my time, just, you know, with my head sideways. Kasane huh? Hmm, huh. And you know, that's how I spend the most of my time. All these cold shortening features give you is clarity, not efficiency. And that's where I'm happy [00:43:50] James: about it. Yeah. I, I, I think they, you know, had hit the nail on the head. There is that when I build for forever and my day build like a data access layer. Well, what do I like about that data access layer is that I can see everything in one file, how I'm going to interact 100% with this data. And like use that. It's the same thing with my web API previously, I had all these different things, doing a whole bunch of stuff, but now I get to see everything all in one place. I don't have to open 20 files, open a single file. And then if I need to, I could peek into the method that's being called. And that to me, I think is a real game changer of what this is bringing to the. [00:44:34] Frank: But I still love me. My MVC. We'll see. I'm just kidding. I've been doing razor pages for everything, so I, I don't even need this. I just put a, uh, app page at the top and I let the router figure it out for me, but this is still really cute for, um, definitely for API APIs. Yeah. Yeah. [00:44:52] James: Yeah. We'll see how it evolves. I am stoked about everything that's coming now that I get to use it. I think that's the thing. It is sometimes I don't get to play with the new stuff too early. And this time I actually did this last week. And, um, yeah, that's only just some of the features that I'm literally blown away by. So there you go. [00:45:12] Frank: Yeah. And it's been, I was making fun of the dotnet six preview because there has been a lot of previews and I get, I get worried about how many versions I have installed on my computer, but it's actually kind of fun. You can just create a global Jason if, uh, you're messing around and say exactly which runs. To use. So that part of the.net has been working out really well for me. So it's been pretty safe, uh, keeping up with the dotnet six, but I still feel like there's still a lot left for me. I haven't even gotten into the platform support part of it. So still a lot to discuss in the future. [00:45:46] James: Yeah. There is one, I'll put this blog into the show notes, but a few weeks ago, uh, who was it? Uh, David Fowler and, you know, David. Hmm. [00:45:59] Frank: I see them on the Twitter. Yes, Twitter. [00:46:02] James: He wrote a blog post that was called that new Don at six API is driven by the developer community in talking about all these brand new features and done it. Six of new API APIs. And we were talking about C sharp language features. Um, we will have to talk about some of this later. I don't want to go into it now because I got to have this podcast and I got to go bed Frank, but, uh, this is a great blog posts. It just honestly just goes through and talks about all of this new hotness that is available, um, for developers to use. So I will put that in the show notes note, if you want to kind of spoiler alert yourself for a future episode that we'll talk about. Definitely give that a look, but Frank, thank you for letting me talk about this stuff. Climbing. [00:46:48] Frank: Oh, absolutely my pleasure and very apropos because I was just doing it today. So it's even on my mind. [00:46:56] James: Awesome. There you go. Well, if you have a favorite feature in C-sharp 10 or dotnet six, let us know by writing in, by going to emerge conflict.fm. When you go there, you're gonna find a bunch of links at the top of the page. You're going to find things like. Um, the discord channel, how to contact us. Um, you can do things like, you know, subscribe to the podcast. You can share it with your friends and you can do a whole bunch of stuff. It's pretty awesome. There's a Patrion button on there. You get the exclusive behind the scenes acts. To the show. We just did a really cool one, uh, for all of our Patrion listeners. We'll give that a look. Um, but yeah, we also appreciate if you left a review on wherever you're listening now, or just tell a friend we'd love that, but that's gonna do it for this week's merge conflict. So until next time, I'm James Monson mag now, [00:47:41] Frank: and I'm Frank Krueger. Thanks for listening. Peace.