00:00:10 Matt Welcome, everyone to the .NET Maui podcast. We're here to keep you up to date with the latest and greatest in 00:00:21 Matt Net client development. We'll talk about some Azure, some Visual Studio, some blazer, and ofcourse.net Maui. I'm matsouka 00:00:29 James I'm James montemagno. 00:00:31 David And I'm David Ortinau 00:00:33 David How's it going, everybody? 00:00:34 James Yeah, it's good. It's basically 2023 already, right? It's like it's February is basically over. Yeah yeah yeah. 00:00:43 David Yeah, that time starts to fly. 00:00:44 David Yeah, yeah, well you know you get to work in you start missing holidays, but eventually we catch up and we had a holiday coming up here but. 00:00:53 David It's go time. 00:00:54 David Let's ship some things. 00:00:56 James That's exciting times. I mean honestly.net 20th anniversary. I mean, this is crazy, it's, you know, I've been at it for, I guess. 00:01:03 James 15 years at this point. 15 ish years so you know I started with net 20 I missed the 11 era. 00:01:11 James But you know, my first Visual Studio, Visual Studio 6 and I've been riding it, loving it ever since, and I'm super excited for all the stuff that's coming. 00:01:20 James And I love the the artwork, I know. 00:01:23 James We're going to talk about it later because there was a blog post I did a Dev 2 one and I know Beth did one on the main one, but as it's great anniversary event, we'll put links so you can watch all of that. 00:01:32 James The.net website is just beautiful and stunning. There's all this great artwork I have, like a cool little badge. You know I I'm not any. I am an email person but. 00:01:40 James I'm not a let me put a bunch of logos and icons in the bottom of my email. 00:01:44 James I'm just not that type of guy, but I did for the down at 20th anniversary 'cause the artwork and the graphics and the Wallpapers. 00:01:46 David Right? 00:01:50 James Are just stunning. 00:01:53 David Yeah I updated my wallpaper and got that rocking and I actually used it in my blog posts for the new Maui release. 00:01:59 David So I thought that was a. 00:02:01 David Good dovetail for the 20th anniversary. I myself started I, I believe at the 10 release. I mean my memory might be fine. 00:02:10 David Telling me, but I had an ASP product, all VB script and I ported it right away to vb.net and then within months decided.net wasn't where I wanted to be. 00:02:21 David I'm going C sharp 'cause all the samples were in C sharp, so I'm like oh clearly I I need to just skip over this thing. 00:02:30 David But that was, yeah, that was years and years ago. 00:02:32 David Back I I posted a picture on Twitter back when I had a CRT monitor and. 00:02:37 David Green silicone cover for my iPod and you know the good old days. 00:02:43 Matt Man, I don't remember VB sixwasbefore.net right and so I can't remember if I still had to use VB six before I could translate like win.net 10 was out even 20 years ago. Everything was easy. You know that's a long time. 00:02:55 David Let's see. 00:02:58 David Yes it was and I have now children that are older. 00:03:02 David On that yeah I I was working at a company that was doing VB 6 and so the transition to dot net was quite disruptive to the company, but I I was given free reign to to do what I needed to do and so thankfully somebody paid me to learn. 00:03:21 James Still a lot of VB six out there. 00:03:22 James I know my wife got to jump into some VB 6 from time to time so it happens it's out there. 00:03:29 James I mean we were. 00:03:30 James I was even talking. 00:03:31 James I was just had a new video. 00:03:33 James With one of the maintainers on core WCF and some of the comments were like, well, you know, like there's so many new things out there like GRPC and you know. 00:03:43 James Obviously like just no grass and we need soap services and people say, you know, there's a lot of dot NET Framework stuff out there and people looking to migrate and move you don't want. 00:03:53 James To rewrite your entire. 00:03:54 James You're you know layer of communication, right? 00:03:57 James So like there's these upgrade pass when you think about it, there is this really beautiful story of you know you could have been developing winforms applications. 00:04:05 James 20 years ago, I don't know if Winforms is 20 years old. 00:04:07 James I guess maybe it's 20 years old. 00:04:08 Matt Here's all, go ahead. 00:04:09 James Yeah, and then you can be running that on. 00:04:11 James Down at 6. 00:04:12 James Like right now like that's cool. 00:04:15 James I don't know that that's amazing. 00:04:17 James I, I've told the story always like I did projects in winforms like back in college. 00:04:24 James So you know seven 1716 years ago, you know, and I've found the zip folders like with the the source code and the axes. 00:04:33 James Well, and they just opened. 00:04:34 James They worked and now it's just amazing. 00:04:37 James That's amazing. 00:04:38 David February 13th, 2002. So that is the the official anniversary date and the introduction of winforms. So there. 00:04:47 James You go boom. 00:04:47 James Wow that's amazing. 00:04:51 James I love it. 00:04:51 David And and you know, you know shipping new things while maintaining some backwards compatibility and allowing you to, you know, reuse and leverage all that code that you've written and proved in the market is a core value prop of what we're doing with. 00:05:07 David Net Maui. 00:05:07 David So with that, I'll segue into our new release. 00:05:12 David We shipped Preview 13 of dot net Maui. It comes in Visual Studio 17.2 preview one and we are dangerously, dangerously close to being feature complete so I'm very excited it's going to be kind of a moment by moment, release by release. 00:05:31 David A decision here as to when we call it a release. 00:05:33 David And it, but we're that close, so a couple highlights from this blog and from the release. 00:05:40 David More importantly is that we've implemented the label formatted text. 00:05:44 David Now, this is a really cool feature of the label that is perhaps more important for mobile. 00:05:53 David Because it allows you to really do a lot of pretty advanced formatting all within one label control, and when you're on a mobile platform, you're really trying to keep your view hierarchy your number of. 00:06:05 David Controls to a minimum and with the label formatted text you can do just that, so you'll see in the blog post. 00:06:11 David I kind of mimicked the Font preview manager from Windows showing the lazy brown fox, whatever jumping over the thing text. 00:06:21 James Well, I think it's the the monkey runs. 00:06:24 James Through the forest up a. 00:06:25 James Tree to eat a banana. 00:06:25 David Missed opportunity. 00:06:26 James You never stop doing it. 00:06:30 David It's so editable. 00:06:31 David We can just go back and fix. 00:06:32 David That, oh man. 00:06:33 James How does it you you know? 00:06:35 James See this, here's what happened. 00:06:37 James You're 2, you're on, you know we're on the island, life, you know monkeys are on the islands as well. 00:06:44 James There's some legacy. 00:06:45 James There's some upgrading. 00:06:46 James Maybe like the the monkey is now snuggling the the fan. 00:06:50 James You know what I? 00:06:50 James Mean there's like. 00:06:51 James There's lots of party and everyone excited. 00:06:53 James They're actually having a celebration. 00:06:54 James You could have done. 00:06:55 James So many things with it, I'm there's not even image in it I I'm I'm highly disappointed David. 00:06:56 I know. 00:07:01 David I well, you know hey, I'll just say I'm I'm saving it for the big blogs. 00:07:05 James OK. 00:07:05 David You know I'm saying the GA blog, the RC blog out that's that's my story and I'm sticking to it. 00:07:11 James Right? 00:07:13 David Also, in this release quite a few controls have really have reached a feature complete implementation LISTVIEW radio button, swipe, view, Flyout, tab page, web view. 00:07:26 David So we've been chipping away at the implementation of different properties, events and such, and so those are there now. 00:07:33 David Certainly we're going to once we get to RC, turn our heavy focus to bug fixing and polishing, but you know you can at least go break some things with those controls now. 00:07:43 David And super excited. 00:07:45 David That documentation continues to roll out just about every week. 00:07:49 David We we hear a lot of feedback in our surveys talking to customers. 00:07:53 David We're currently doing customer reviews right now that are very focused and documentation comes up over and over and over again because because and this is pretty awesome. 00:08:03 David So many people that are buying into.net Maui are brand new to the platform. They are not coming from Xamarin's. I mean we certainly have lots of people with salmon experience that are looking to modernize and migrate their apps forward. But we've got. We've got folks converting from WPF and even wind. 00:08:22 David So that's pretty exciting and the documentation is super important there. 00:08:26 David And the Blazer team has put out a set of hybrid docs. 00:08:31 David So if you're using the Blazer web view within Maui or Winforms or WPF, you now have some documentation you can go refer to to help you. 00:08:39 David Get started. 00:08:41 David And the last thing that I'll call attention to here is performance, so we have. 00:08:47 David Team engineers across many teams within net looking at our performance characteristics, especially on Android. 00:08:55 David That's really where we see the most room for improvement. 00:08:59 David And so in this release, Eric Erhardt did some work on the Microsoft extensions Builder pattern that we're using which folks love and I cover in a bit more detail in this blog post, and he identified that, hey, you know what? 00:09:15 David This host property we're not actually using it, and it's very specific to the Web store. 00:09:20 David This stuff, in addition to that, you don't really need logging to be turned on when you are doing a release build and if we remove both of those things by default, then you're going to get a 13% performance boost when your app starts, so that was a no brainer. 00:09:37 David And the good news is, if you actually do find that you need those things, you can bring them back. 00:09:41 David Again, logging is on in debug, but it's just now it's it's sensibly turned off. 00:09:46 David When you do a release build so. 00:09:48 David Love to see those kinds of things. 00:09:49 David Continue to find their way into the product. 00:09:52 David I know that there's other performance improvements that are further upstream. 00:09:56 David From us and once they they land in our repo, we'll get a chance to refresh our benchmarks and see where we stand on those things that will also impact our app sizes and our build time performance as well. 00:10:10 David So lots of awesome stuff happening there. 00:10:13 David This was a chock full release and and. 00:10:17 David Something I'm super excited about. Like I said, we're doing these focused customer reviews so far. Hearing that folks are not having any problem upgrading from 17-1 previews to 17 two previews, which is great because we know that that was an issue. 00:10:31 David Previously, and we did quite a bit of investigation and work to address that. 00:10:36 David So if you are having issues, please reach out through the send feedback feature. 00:10:42 David Let us know so that we can continue to improve that process. 00:10:46 David So close to to an RC. 00:10:48 David You guys I can almost taste it. 00:10:51 James And now I think one thing that's really neat that you mentioned in. 00:10:54 James This blog post. 00:10:56 James And you know John, **** and I. 00:10:57 James We had a lot of discussion over this is a lot of that app builder startup stuff, but specifically I like that you outline. 00:11:05 James There's already some things in the documentation that what you can do, like your configure fonts right in the file, new template, you will see it. 00:11:12 James Use Maui app and configure fonts and if you're doing blazer then. 00:11:16 James Blazer, Maui, you're going to see the hybrid scaffolding setup to what I love about your blog is that you outline all the other things that you can do that people may not know. 00:11:25 James Like for example, now you can configure essentials and this was really inspirational because. 00:11:30 James Team built the sample app and they sort of specked out what people would have to do in a real world scenario by testing all of the essential API's. So now you can say it configure essentials, which I believe by default all this stuff is now all the boilerplate essentials code is removed because inherently amaui app. 00:11:50 James Uses essentials, so it's all initialized for you automatically, but if you say configure essentials and you pass in a little delegate into that puppy, you can do things now for example. 00:12:02 James Like configure map tokens, you configure app actions and all. 00:12:08 James Those other little. 00:12:09 James Quirky things that you may want to add up on top of essentials that are in there. 00:12:15 James But now if you go into your main activity, I mean it's like 0 lines of code. 00:12:19 James Basically you know what I mean like there's. 00:12:20 David Which is which is what you want, right? 00:12:22 David I mean you really want to be able to do all this stuff in one spot in your in your app, not in the other platforms. 00:12:28 James Yeah, it's super nice and then you also you know you say that you can configure image sources, your handlers, your effects and of course the blazer magic Web app. 00:12:37 James Now the nice thing about that that host builder thing. 00:12:41 James In general that that many people don't know about, like what that thing is doing is that actually exposes ways for other people to kind of like loop in to stuff in general, 'cause it it returns this Maui app builder thing, but that actually isn't is a is an interface behind the scenes which is. 00:13:01 James It has like a service collection and an I logger and it has all these other things so you can get these containers and do die and all these other things under the hood so it kind of loops into a lot of this bigger picture stuff which is quite exciting and. 00:13:14 James Then I like. 00:13:14 James That the that the Community has been figure out how to optimize it like you were talking about David and and tweak and tune. 00:13:22 James And just this past. 00:13:25 James A week I've been working with Jonathan Peppers all the jonathans in my life and I made this big proposal that I believe that we should go all in on an on shell as the main the default, the way of doing things of teaching and doing all this stuff. 00:13:38 James I had this big proposal that wasn't really that big, but I I specked out. 00:13:42 James Uhm, I specced out a PR and I did a little repo of like what it would look like and all this. 00:13:49 James Stuff and and of course you know it's just a page inside of shell, so it's not like adding a bunch of stuff, but it is adding some nice default things to the file. 00:13:57 James New template, there's only one template that that's how you get a role, but I worked with Mr Peppers to do some profiling of the application and there's some amazing tools that that team has been putting together. 00:14:10 James To run it, and you know in a little bit of time I was running a few commands with some global tools and I was profiling startup time to see the tweaks and the tunes here and there. 00:14:23 James And what's really nice is there's a lot of little bits that are hidden from you too. 00:14:28 James When you release your app into into a release mode like all the defaults are actually the defaults you'd want, so it has all of the default startup tracing and all the special AOT flags that you would want. 00:14:42 James And we were comparing back. 00:14:44 James And forth a shell versus a non shell type. 00:14:46 James And there's some optimizations there to do because we want everything to be the absolute fastest, like you're talking about when you do file new, you put it in release and. 00:14:56 James And I have it. I had it on my Pixel two XL. So this is a very old device at this point and it's running Android 10 and I think the startup time was 550 milliseconds perfect. 00:15:09 David Yeah, it's very nice. 00:15:10 James Yeah, it's fast. Shell was like 700 milliseconds, so not quite there yet to flip the bit, but there was no optimizations there. 00:15:16 James So we're with Jonathan Peppers, and I've been talking. 00:15:18 James About that, so you're behind the. 00:15:20 James Means this is something teams thinking about you know, and I think that's kind of cool. 00:15:23 James You know you don't. 00:15:24 James You don't read that in a blog post, but you you. 00:15:26 James Do that when you listen to us on this podcast. 00:15:30 David And so many people are thinking about it across, you know, I mentioned earlier so many different teams within net and Visual Studio. 00:15:38 David Uhm, it's got me super excited. 00:15:40 David I've been doing this for five years now inside Microsoft and the teamwork the collaboration happening right now is super exciting and I think you know, in terms of that builder pattern, we are seeing other libraries. 00:15:53 David I I featured the Maui graphics controls prod. 00:15:56 David In fact, I know that the major component vendors for Xamarin Maui are also looking at ways to utilize that same builder pattern, and I would definitely recommend folks go look at the dot net podcast sample app for how that kind of cleans up the whole Maui program file and uses the extensions. 00:16:16 David Pattern to, you know, just put things in very nice clean buckets. 00:16:22 David I thought that was really nice how you did that. 00:16:25 James Yeah, and that one uses all of those new dependency injection IOC stuff. 00:16:30 James All that fanciness as well that was brought in with the last. 00:16:33 James View which is also there right now. 00:16:36 James So still there, yeah. 00:16:36 James Still there. 00:16:38 James Yeah, that was really cool. 00:16:39 James And yeah, I thought that was neat. 00:16:41 James The team did that and then adding on and doing the dependency injection and registering your singletons and transients and things like that. 00:16:48 James I think a lot of those concepts will be new. 00:16:50 James I've been love looking at Twitter as the previews of role, and I think there's a lot of new knowledge because a lot of these new concepts that came from. 00:16:57 James Web are applying here to like what what should I use? 00:17:01 James I use a Singleton or transient like what should I do? 00:17:03 David Right? 00:17:04 James Blah blah blah you know. 00:17:05 James And and there's there's going to be some best practices and guidelines. 00:17:09 James And like you said, as the documentation rolls out, I think everyone will be able to to jam on it. 00:17:14 James But I was in there too. 00:17:15 James I was registering. 00:17:15 James All my view models and I was like well. 00:17:17 James You know, is it a Singleton? 00:17:18 James Is it transient? 00:17:19 James But you know what is it and just seeing it through it and? 00:17:21 James And it was quite fun, so. 00:17:23 David Yeah, and I have a I have a blog draft for Maui Essentials to introduce that more in your face on the. 00:17:32 David Net blog. 00:17:32 David So I'm going to run that by you and. 00:17:34 David And we can Co authored a bit together because, well, you know I hear some feedback. 00:17:38 David Like I mentioned, some people are coming fresh and they don't know what essentials is and they come looking for something like a file picker which is a UI control on Windows and there is no direct equivalent within the Maui toolkit. 00:17:52 David But it exists in essentials. 00:17:55 David It's just you pick whatever input control you want, whether it's an entry or a button, whatever the user gesture needs to be, and then you use the essentials file Picker API. 00:18:05 David Right, and it's super powerful like I was reading through the docs and I'm like, Oh yeah. 00:18:10 David This is. 00:18:11 David But folks don't know about it, especially if they're looking for a UI control and it's not there. 00:18:18 David So I think this is going to be a really useful blog post. 00:18:21 David That was one example and I can't remember exactly what the other example was somebody was looking for something and said it's not there. 00:18:26 David Why isn't it there? 00:18:27 David It's like oh wait, a second, it's in essentials. 00:18:29 James Well, yeah, and the best part is that you know working with David Bridge on the documentation team. 00:18:34 James The whole idea is we're going to lift and shift all of the. 00:18:39 James All of the essentials documentation and it's not going to be called. 00:18:42 James We're not going to put it in a folder called Essentials. 00:18:44 James It's going to go under platform integration. That's the goal is. Here's accessing platform API specifically, like. Here is how you invoke platform code, but here's all of these built in API's into Maui, right? It's it's in the essentials. 00:18:59 James Namespace, but here's the cool part is with the implicit global usings. 00:19:03 James It's all it's. 00:19:04 James All built in. 00:19:04 James I did a I did a demo at the net front end day on Donald. 00:19:09 James Blazer and and I just had file new and I was like here. 00:19:12 James Let me show you how to access. 00:19:13 James Uh, Native API connectivity, network access, and people like what? 00:19:17 James What does this built in? 00:19:18 James It's like, yeah. 00:19:18 James It's built in. 00:19:19 David That's the. 00:19:19 James It's just there, right? 00:19:20 James So I think that'll hopefully I think that's a. 00:19:23 James Super compelling demo is. 00:19:25 James Like it's all in the box, it's all there. 00:19:29 David Yeah yeah, and I'm I'm hearing feedback from folksthathavebeendoing.net for decade plus. 00:19:35 David Saying that the new C Sharp 10 global usings and other niceties have really improved their code readability and clean things up. 00:19:43 David They're really liking it, and I'm super glad that for Xamarin, developers who've kind of been stuck in the C sharp8landswith.net framework that now they get to enjoy the same. You know, evolution of the language. 00:19:55 David As it happens so. 00:19:59 David Matt, are you? 00:19:59 Matt Awake, oh, I'm still here you know what guys, I'm still I was going to I'm going to say something a little bit embarrassing. 00:20:06 Matt When I first saw the whole builder pattern, I was intimidated by it. 00:20:10 Matt Especially, you know, it kind of comes from the web world where yeah, I don't have a ton of experience lately, but as we get used to it, it's so nice. 00:20:18 Matt To have I mean. 00:20:20 Matt And yeah, and even in the blog post, you just have outdoor David. 00:20:23 Matt How you can actually put your platform lifecycle events if you have to use that. 00:20:28 Matt Put that right in there too, it can just it just comes right in in your multi platform code. 00:20:30 David Yeah, exactly. 00:20:34 Matt You don't have to dip down into like Windows or Android if you. 00:20:37 David Yeah, and you learn it. For Maui, you can use it on asp.net if you learned it in asp.net and those skills translate. So it's pretty awesome. 00:20:37 David Have to do. 00:20:45 Matt Itslikeone.net imagine that. 00:20:47 David Oh my. 00:20:48 David Yeah, and we're getting there. 00:20:49 It's yellow. 00:20:50 Matt Yep, so Speaking of new releases, I've Visual Studio 17.1 just came out this past week and there's a couple of new features in there. 00:21:00 Matt In addition to all. 00:21:01 Matt The bug bug fixes that I've come along with releases now. 00:21:04 Matt Actually, and one that I found really interesting in there is being able to finding text and files is going to work really fast. 00:21:14 Matt Now is because now just by default when you launch Visual Studio, a separate executable gets launched along with that and that executable. 00:21:24 Matt Start scraping all of your files that you have in your solution and it like indexes AM. It's like this little data code so I can build this little database and that way when you have to search for files because Visual Studio is now you know 64 bit and you can have a million different projects in there. It finds them really fast. 00:21:45 Matt So it's like this index, like your files are now indexed, so you have this index fine. 00:21:50 Matt And it's turned down by default. You can turn it off if you if you want, but yeah, there's this little separate executable that runs along with Visual Studio now and 17.1, which I don't know. 00:22:01 Matt I found it really neat and we talked about this last time when when the last preview came out is a Visual Studio now automatically saves. 00:22:10 Matt All your files in the background. 00:22:12 Matt So it's you don't have to worry about. 00:22:14 Matt Just thing you know losing things when you change around and there's some git changes in there and I don't know what this is and maybe James or David. 00:22:24 Matt You can tell me what this means when I write about it. 00:22:27 Matt It has enhanced detached head support. 00:22:32 Matt For your git repo's. 00:22:34 Matt I have no idea what. 00:22:35 James That is, Oh yeah, so when you're in git, there's there's this instance. 00:22:40 James It kind of has to do a lot with like merging and fetching upstream all the time. 00:22:46 James And sometimes what can happen is your your. 00:22:51 James Like it kind of gets lost a little bit. 00:22:53 James I'm not, uh, get expert so people can totally correct me in the comments or reach out to. 00:22:57 James Me on Twitter. 00:22:58 James But basically sometimes like when when you're merging and you're fetching things from upstream the there's some issues that can happen. 00:23:05 James It kind of it's it literally will say like detached from head. 00:23:07 James Which the the the the head. 00:23:10 James Of the rebuild, I can't. 00:23:11 James Find the origin basically. 00:23:12 James So I'm assuming they put in a bunch of you. 00:23:14 James Know nice little helpers 'cause git is. 00:23:16 James Sometimes so yeah. 00:23:18 Matt It sure is, and we'll get. 00:23:20 Matt We'll get to that. 00:23:20 Matt How we can make get less complicated, but just a second and also another neat thing that they put in there. 00:23:27 Matt Just a little helper is that you can filter your projects and a solution. 00:23:31 Matt That way you don't have to load up everything that you have like, so if you have some projects you're not using for your current debugging session, don't load it. 00:23:38 Matt But sometimes you have that set and remembers. 00:23:42 Matt Over and over from Visual Studio launches. 00:23:45 Matt But let's say a new project was added. 00:23:49 Matt You pull down everything from git. 00:23:52 Matt It's a dependency on one project that you had filtered out. 00:23:57 Matt And then it doesn't build right you a dependent project doesn't load because you had it filtered in your solution filter. 00:24:06 Matt Visual Studio now detects that and you can load it in automatically, so it's like your solution. 00:24:12 Matt Filters now gets smart and you can bring in project dependencies when needed. 00:24:17 Matt So yeah, that's pretty cool. 00:24:20 Matt And yeah, so another thing I know James. Your team helps run this out is we have a let's learn.net series and this month in February it's all about Git and GitHub. 00:24:34 James Yeah, Jamie Singleton from the team. She every single month puts on this. Let's learn.net series and there are over a dozen of the 14 of them or so and every single month. It is focused specifically on one of those different events and they're all available on. 00:24:51 James The.net YouTube and on docs.microsoft.com in a nice little playlist and also you can just go to live.net. 00:24:58 James That's where you find everything and it's right there. There's a. There's a let's learn.net button and boom, you're right there so yeah this would be a cool and because it's going to be kind of broken down into 5050 of like introducing like what is get why you need get why get is? 00:25:11 James Important and then also integrations into GitHub like GitHub actions for your. 00:25:17 James Net applications. 00:25:18 James So definitely take a look at. 00:25:19 James That last month, was.net application modernization across desktop web framework to to five and. 00:25:27 James There's machine learning IoT razor pages F# Blazer, accessibility C sharp microservices Web API. There's so many of them it's awesome. 00:25:35 James So definitely check out that series and they are live and interactive. 00:25:38 James There are two hour series where you can. 00:25:40 James You can do stuff with the presenters like there is a follow along module learning experience. 00:25:48 James And of course plenty of time to ask great questions. So definitely check out that series and all the live streams@live.netlive.net live dot dot dot. 00:25:57 Matt Yeah, dot dot dot net dot live lives. 00:26:03 David It's not. 00:26:03 Matt Next, no, those are totally worth it. 00:26:05 Matt And yeah, like you said, there's a whole. 00:26:07 Matt Archive of them. 00:26:08 Matt There too, so you can get into. 00:26:09 Matt Everything and there's new ones every month, GitHub. 00:26:12 Matt This month so and another thing I wanted to talk about and this is going to go for my pick of the pod. 00:26:18 Matt This is my Azure news, this is my Azure service of the month. 00:26:22 Matt I'm rolling them all together. 00:26:24 Matt Brevity is King, it's queen, it's pure royalty today. 00:26:29 Matt It's Visual Studio connected services. 00:26:33 Matt Now this is something that's been in Visual Studio for a while, and much like the builder pattern, I was by seeing it I didn't understand. 00:26:43 Matt And it so I was like I'm not going to use it. 00:26:46 Matt I don't know what it is. 00:26:47 Matt I took the time to learn it and I love it. 00:26:49 Matt And so it does exactly what you would think, something called Connected Services would do it. 00:26:54 Matt It manages all your Azure services that you've added to a project. 00:26:59 Matt So let's say I wanna add, let's say, Azure Key vault. 00:27:04 Matt To a project. 00:27:05 Matt And So what it's going to do is, I'm going to go out and it'll either say I'll add key vault and then it's going to download the appropriate new gets for me it's going to scaffold out some code for me if I need to. 00:27:20 Matt It'll even provision key vault for me in. 00:27:23 Matt In Azure, and it'll keep an arm file in the solution for me if I ever need to re provision that like it disappears or if I need to put it somewhere else, like in a different resource group. 00:27:37 Matt And yeah, and so there's a bunch of different ones out there too. 00:27:41 Matt There's like Azure storage, which. 00:27:44 Matt Runs into an emulator if I want to run it locally instead of in Azure. 00:27:49 Matt So it'll pop. 00:27:50 Matt Up on Azure right container for me and run it all there again. 00:27:53 Matt It does the code, it does the new gits, it does everything for me so it connects and manages my Azure services and there's new and the reason I bring this up is that there's new ones. 00:28:04 Matt Being added all the time like so they're going to bring one out for our cosmos DB that runs in a container locally so you don't have to push that out. 00:28:14 Matt Obviously you need Docker installed, but. 00:28:18 Matt Easy enough and I'll leave it. 00:28:19 Matt Download Docker and install that for you too, so it takes care of everything, all right. 00:28:25 Matt Here's where it gets even better, and this is where I first seen. 00:28:28 Matt It is like during the right click deploy which you're not supposed to do, but we could pass that in. 00:28:34 Matt A second is like when you publish to Azure. 00:28:38 Matt They're there too, and so you have everything set up locally. 00:28:41 Matt But let's say you want to move to deployment and publish to different Azure services, so you have your storage. 00:28:51 Matt Local running in a container and now you want to. 00:28:54 Matt Actually use Azure storage for. 00:28:56 Matt It and you have key Vault also running. 00:28:59 Matt It'll once you say I'm going to configure this Azure storage account in Azure. 00:29:04 Matt It's going to and you have your connection string. 00:29:06 Matt It's going to create the connection strength for you and key vault provision. 00:29:10 Matt Azure storage for you in Azure and keep everything. 00:29:16 Matt In the pub XML file, the publish XML file for you. 00:29:21 Matt So it and it would download any new gates if you needed them as well. 00:29:24 Matt So taking care of everything like it's automatically doing all the hard work so you don't have to remember anything. 00:29:31 Matt Now, here's the coolest part. Now this was added back I think in 20 in Visual Studio 2019, but again, I didn't know about it till now. 00:29:42 Matt GitHub actions is actually a deployment target as well, so now you can actually instead of automatically deploying the Azure right click publish. 00:29:50 Matt You can create a GitHub action yml file. 00:29:54 Matt And then push that up to GitHub and then every time you do that, the GitHub action will get run and then things get published for you. 00:30:05 Matt So now you have this whole CI CD pipeline. 00:30:07 Matt That it gets. 00:30:07 Matt Created and managed all within Visual Studio. 00:30:11 Matt Amazing, it's beautiful. 00:30:13 Matt I never knew it was there and it just it really does just work and there's new. 00:30:18 Matt Service is being plugged out all the time with every release, so yeah, check it out. 00:30:25 James Nice, I'm used to that menu too, 'cause it also that's where you can. 00:30:28 James Configure like restful. 00:30:29 James Backends with Swagger and GRPC and WCF and other things. 00:30:34 James Open API and all those other things in there too. 00:30:36 James So super nifty if you are are doing some stuff in there that's for sure. 00:30:40 Matt Yeah, and one more thing I'm not done. 00:30:42 Matt With it, it'll be. 00:30:43 James Oh my gosh. 00:30:44 Matt It'll even see like let's say you have the cosmos DB, SD or NU gets downloaded, right? 00:30:48 Matt It'll even say, hey, do you want to make this a connected service? 00:30:52 Matt Do you want to bring this in? 00:30:53 Matt And it's like. 00:30:54 Matt And that's where I suddenly like. 00:30:55 Matt No, I don't. 00:30:56 Matt Trust you, why are you why? 00:30:57 David Never mind. 00:30:58 Matt Are you recommending this? 00:31:00 Matt But now I do. 00:31:00 Matt I let it take care of. 00:31:01 Matt Everything for me. 00:31:02 Matt So yeah, check it out. 00:31:05 James Beautiful, beautiful, well that is going to do it for this podcast, but that brings us to the pick of the pod 'cause the news is done. 00:31:11 James We gotta pick up out and I'll go first because I'm the only one that has anything written down. 00:31:15 James Because I have been on a rant recently, not only on merge conflict, another podcast from me that you can listen to you right now on your podcast app. 00:31:24 James You just type in merge conflict like you know, like when you are merging code and there's a conflict. It's it's now the podcast to merge conflicts. Here we did there. It's cool developer episode 292. 00:31:35 James Nearly 300 of these puppies have been out 292 is the developer guide to in app subscriptions and I've been on a journey of. 00:31:42 James Updating modernizing in bringing my in app billing plug in to not only the latest and greatest features that iOS and Android expose, but also a Mac. 00:31:56 James Also too in Windows and two dot net, six with Don and Maui as well. 00:32:03 James So one thing in this blog post that I outline is subscriptions are quite complicated in general compared to a single time purchase. 00:32:11 James But I outline in my blog. 00:32:13 James Post everything you need. 00:32:15 James To know what? 00:32:16 James The setup is how you can do subscriptions without a back end. 00:32:20 James Of course, you should probably have a back end to do receipt validation. 00:32:23 James But if you don't want to do receipt validation, that's totally up to you. 00:32:27 James And that's a decision you have to make in life, but you should totally do it. 00:32:32 James There is my in a billing plugin that I updated to give you all sorts of new information about those subscriptions. 00:32:39 James The length introductory offers discounts that you may give and I just rolled out a brand new version. 00:32:46 James Of 6.0 and 5.06 point oh builds against net six 5.0 builds like the legacy branch against VS 2019 and the new ones VS 2022. 00:32:58 James So based on if you're you know, in in the Xamarin forms world or not, and you still got that compatibility in there and it's all updated. 00:33:06 James And it's all in Azure Dev OPS pipeline. 00:33:10 James And I build and deploy those both at the same time, so as I'm adding new features, the code's backwards compatible and I just recently cleared out basically every single issue in that repo. 00:33:23 James Most of them are questions, and since I took some time this holiday to actually investigate subscriptions for the longest. 00:33:29 James The time I wrote an entire blog post on it about to do it video did a whole podcast on it. 00:33:34 James All the things basically, and it's a fun journey. 00:33:38 James So definitely check it out if you are interested in it because. 00:33:42 James Obviously there's many ways to monetize applications, but a good way of doing it is subscriptions and the core API. 00:33:50 James 's are there for you to use and I've abstracted it into a pretty nice library. 00:33:54 James I think I I use it I I ship I ship apps with it so it's out there. 00:33:59 David Nice well, while you were telling us about. 00:34:02 David That I did go pick a pick, a pick of the pod. 00:34:05 David However, before I mentioned that I was searching to see OK, no results found. 00:34:09 David So if I were to ever launch a podcast, now that I'm going to say it's my listening to it, you have merge conflict. 00:34:16 David I think maybe I'll go with detached head. 00:34:20 David I think I think that could be pretty interesting. 00:34:23 David Who knows what we would talk about. 00:34:26 David So my pick of the pod Vijay Anand publishes Maui templates. 00:34:31 David So in the box and we were just talking about moving our default templates to shell, totally going to. 00:34:37 David But Vijay has several different options for you and you can just install this directly on the command line. 00:34:44 David They will show up in Visual Studio as well and he may actually publish them as a Visual Studio extension. 00:34:51 David If you look at the extension store, but we'll link here to the nu get and you can just install it on the command line. 00:34:57 David He has templates for just a plain blank one screen hierarchical, which is navigation kind of a drill down. 00:35:04 David A navigation pattern tabs shell and hybrid hybrid is using blazor web view and of course we do have our own Maui blazor templates as well. 00:35:16 David But you know, it's great to see all these other options out there because will maintain the. 00:35:22 David You know the default templates kind of demonstrating what we think is a best practice, but best practice doesn't mean it's right for you and you may have a different need and you want to go poke around at some of these other options so he also has some item templates. 00:35:36 David Which are like, hey, I just need a page and we we have that as well in a mounted class library. 00:35:41 David So anyway, definitely check that out. 00:35:43 David Always good to see the community pitching in and filling in the gaps where we might not publish something. 00:35:49 David And now you have options. 00:35:52 James Anything from you, Matt you? 00:35:52 James Got a pic of the pod. 00:35:54 Matt Visual Studio connected to. 00:35:56 James OK yeah, I got it. 00:35:57 David Don't pull it all together. 00:35:58 Matt I know. 00:35:58 David He he triple dipped on that thing and. 00:36:01 David A quadruple dipped or something. 00:36:01 James Yeah, well I'll do mats. 00:36:04 James Pic of the pod which is a figma community file from our good friend Vaclav. 00:36:04 Matt Thank you James. 00:36:09 James I was recently this weekend updating my Mac App which runs Amar form. 00:36:14 James And I wanted to get those new Big Sur icons. 00:36:16 James I got the rounded corners. 00:36:17 James I got a bunch of buffer and I don't know what. 00:36:19 James I'm doing. 00:36:20 James You know, as far as like how much space needs to be there. 00:36:23 James Vaclav has one just sitting on there and I went duplicate. 00:36:29 James I added my you know my one that I got made off of fiber and I. 00:36:33 James Resized it and I exported it and boom I have all my beautiful Mac OS icons. 00:36:39 James Uhm, just ready to go because I did an entire blog and video on easyappicon.com which is a great website for doing iOS and Android applications. 00:36:50 James You know there now, of course everything gets easier with Don Amaui, right? 00:36:54 James But if you're still living in the James World over here of of Xamarin forms, you need some icons and you're going on Mac, you're doing other things. 00:37:04 James I mean, there's a. 00:37:05 James There's a treasure trove of stuff going on, and it's also fun. 00:37:08 James You can like, see, like remixes and people like. 00:37:10 James Creating different stuff. 00:37:12 James But anyways I needed it and it existed and it was great. 00:37:15 James So pick the pod. 00:37:16 Matt I had no idea if Figma had a community. 00:37:19 James Yeah, like so cool it's crazy. 00:37:20 David Oh yeah, yeah. 00:37:22 James I just discovered that as well so and you can just click on and then clone duplicate and then you're done. 00:37:27 James You can remix it so so cool. 00:37:29 James That's it. 00:37:30 James We did it podcast over. 00:37:31 James Thanks everyone for tuning into the net. 00:37:33 James Maui Podcast of course, don't forget to reach out to us all the time on Twitter or on the website or anywhere. 00:37:40 James Just email David directly and tell him how excited you are for all the new features. 00:37:44 James If you have a pic of the pod, send it in. 00:37:46 James We want to hear from you. 00:37:47 James What are your picks of the pods that you love? 00:37:50 James Like tell us about the stuff go and tweeted us, tell us, do all the things but that is. 00:37:54 James Going to do it for this month. 00:37:57 James Dot net my podcast. 00:37:58 James Make sure you subscribe because Matt over there is doing a whole bunch of awesome interviews with developers. 00:38:03 James Around the globe. 00:38:04 James And if you're a .NET Maui developer, reach out to him as well. 00:38:07 James So until next time there's been your .NET MAUI podcast.