Speaker 1 (00:02): Welcome back everyone to the Xamarin podcast, keeping you up to date with the latest and greatest and mobile development for Xamarin developers covering the world, the xamarin.net Azure and more. I met soak up Speaker 2 (00:15): and I'm James Monto. Magno. How's that toilet paper supply, Matt? Speaker 1 (00:18): You know what? My wife and I went and stocked up at the beginning of March just because, you know, one it was toilet paper time and two it was, well the beginnings of bad things coming down the pipe, you kind of knew it so we kind of a little bit extra and so we're good. How about you James? A witness? How are things? Speaker 2 (00:37): Well, you know, I, I like to ask this question all my friends because sometimes you know, some people have some extra so I can always send you a, send you a, you know, roll in the mail and, and then that's like a great gift. Um, I worked good though. We, we luckily had gone, we do Costco runs about, I don't know, every three months or so. So we went to Costco and like January before anything. And if you go to Costco, those Costco rolls, they last you forever. There's only two people in our house like, like you two then. So the toilet paper lasts quite a long time. Um, but we, we, we recently were able to find some, some sitting around so it's, it's not too bad. We're, we're good. We're, we're restocked upward. Good for good for another few months. So we should be good to go. But we're not hoarding at all. We just, we're just like, Oh I'll just take one cause you can't really hoard anymore cause you can just only buy one anyways, which is all that we would have ever bought anyways. So we're just trying to do Speaker 1 (01:26): what we would normally do. That's what we're trying. Right, right. And he really can hard when you live in the city in Seattle because the places just aren't big enough to put any toilet paper more than you can handle anyway. That's true. True. Speaker 2 (01:39): It's like this all day. We got four rolls to Anatolia. You, I'll tell you next for customers. That's all you again. So yup. Oh my goodness. Oh, we got a lot of news. We just updated the list. Got a new, some new releases. You want to happen a new releases first. Speaker 1 (01:51): Yeah, you bet. Um, one release that you always got to look forward to when visual studio comes out in the stable channels and both on Mac and windows, there is new releases out there. Mac is eight, that five and BS windows is 16. Dot. Five. Unfortunately they kind of went out of cadence. They're not exactly double numbers anymore, but still kinda, you still know what's going on. Um, big w updates for windows is, I'm hot. Restart now is out for good. It's production beta or production beta. It is production and um, high restarts always something that I used to get confused with. Hot reload. Uh, probably cause it shares the name. Hot and hot restart though is its own really, really cool things. It's, it's a little bit, at least it took me a little bit more to understand what it's doing and hot restart. Speaker 1 (02:42): It publishes the bundle directly without having to restart. And so it makes like the deploy times and everything when you're, when you're debugging faster and that's a boon to the debug cycle. And it also makes, did able to, once you deploy your iOS app, you can do it from windows. You can then debug without having a Mac on your iOS device. Um, neat, right? Supernate and a super cool. It's like, um, it's like, so you don't have to go through the full compilation styles, you don't have to go through the whole shenanigans. It just really tightens up the loop. So it's like that special technology that inherently in that technology of making builds faster, enables this other piece of technology, you know, to, to just kind of plug in your iPhone, which is really cool. Right. And um, I guess that's where the hot comes from. Speaker 1 (03:36): It's quicker, hotter, Elva, faster debugging. At least that's what I think of it. So, and there's another thing that's kind of Lisa, when I think of, it's kind of sorta like the hot restart is the Android apply changes. And what that's doing is you make a change to your bundles of Android or your resources. I should say, and it then automatically applies those changes. So that's over on the Android platform side. If you're developing forms that's on the Android head and that's actually kind of also really is going help your development cycle, that you can make some changes over near resources and you don't have to stop, redeploy and in order to see them. So there's a lot of productivity enhancements just with those two. And another one that's going to help out with the, Oh, he mentioned that I think last time is the multi target XAML hot reload or in other words, have your iOS device or iOS simulator, your Android emulator, make a change in XAML. Speaker 1 (04:40): See them both at the same time. Multi targeting. That's pretty cool. Um, it's going to help with the look and feel. I mean hot reload, super. It's hot. And uh, just to be able to see it in both devices at the same time. I mean, that's, that's, it's these little things that are magical. It sounds, I'm not sure who says that all the time, but it's magical. It's delightful. Um, so, and the entry team, those band really hitting it faster. Android startups. And we'll talk a little bit about what those are in a bit, what, how that can happen. And um, there is XAML document outlines, at least some visual studio windows is, um, so the document outline is kinda gonna be like, what would she say that's in the gutter where you see that James, is that in the, in the side pad? Cypad all right, that's it. Speaker 1 (05:31): That's the head, that's a terminology for it. And what it does is just gives you the outline of all the elements so you can kind of give a quick, quick feel of where things are. So it's like a hierarchy of the elements. You can see all your children and all their parents and siblings of the main XAML elements right together and the side pad of the editor. And then something that I don't know this should be celebrated or not, is that you can get a little preview or opt out. So that way it loads up your XAML files quicker. And a lot of people just go right to the editor. They don't go to the previewer at all and you can cannot opt out of that. So those are pretty big changes over on a windows side. And uh, with Mackler somewhere, um, X Coda, 11 dot four is now, um, supported. You have a new version control which brings it to the same one that visual studio is using. And then everybody, everybody likes the themes, right? And you have new light and dark editors to match visual studio windows going to make both Mac and windows look exactly the same. That's, that's the target. That is what we are working towards at Microsoft. The exact same look. Speaker 2 (06:51): Yeah. And you know, a lot of, like you said, a lot of these changes are on both IDs when they ship new new features across. But then there's always stuff, you know, that's specific to Mac, like the X code support the ships there, the different editor updates and we only mentioned a few of them and there's tons more. So please go read the documentation and there's some great blog posts that peers put out. But then also the release notes are just full of goodies because like we didn't even mention the crazy enhancements for Azure functions for asp.net for like everything else that's in visual studio format, right? There's so much in there, which is crazy. And you know, they keep going, you know, you have not only the current releases but the new previews come out and Matt because why not? And then you got visual studio 16 dot six preview. Speaker 2 (07:34): And I'm also eat us six preview. So now how this works, and we've mentioned it before, is that the first preview is shipped like the same day and it's basically the same exact version of whatever the current stable is. And that just gave us like a week to sort of just, you know, get ready for the next one is how the teams work. So, um, then when preview two comes out, that's when the new stuff comes out. And that's when a lot of the new features land and you're going to continue to see a lot more cool stuff come out already. Um, especially on Mac, there's some new thing. Look a new P list editor, which is really cool for iOS development, but there's also my new favorite features, a new integrated terminal. So if you're doing Azure function work or just want to drop that on a terminal at any time, especially forget stuff, it's right there. Speaker 2 (08:20): This is just a pad, it's just like it boom terminal. There's a bunch of other cool stuff coming out to now. Windows has had a few more releases and the preview branches and there's a whole bunch of stuff for Xamarin developers. It's all building really on top of what you just said, Matt. The first thing is, you know, we have that document outline and now there's a brand new live visual tree. And this is really cool because a live visual tree when you're doing XAML hot reloading enables you to see the document outline and then tap on an element and go straight to the code. So it'll show you what's live on the page. So it's like a live version of the document outline, which is really cool. Um, there's also some new hot reload options, um, inside of the preview. Um, there's a, Manny was talking about this on our.net community stand up and what she was saying is at right now, a few features are enabled but even more will be lit up. Speaker 2 (09:16): So right now, how's ammo hot reload works is it reloads your whole page. But when you flip on the new preview version of it, you can toggle it on, it will do incremental changes. So it will only diff just like the single line of code and it'll be even faster, which is really, really cool. There's a bunch of optimizations there and that also lights up the live visual tree, um, beyond, um, Xamarin forms stuff with the hot reloading. There's new environmental settings, um, which is really cool when you're working with the iOS remoted simulator. It allows you to toggle accessibility features, light mode, dark mode directly from the IDE, so you don't have to go into the, the IDE settings and adjust things. It's all built right into the IDE, which is cool. And then also for Android developers, uh, you mentioned that there was a bunch of new, you know, faster reloading and there's a worked on tons of new and tell a sense. I did a video with Jeremy recently on all the new features. They have a new Android XML linting configurations. So if you're an Android developer and your use of their linting, you can do custom configurations, which is really cool. So all sorts of stuff. And we're only in the first two previous of this thing, we got a few more to go. So it was really cool to see this work. Vietnam. Speaker 1 (10:27): Yeah, I loved the, I loved all the tooling that's, that's coming. And obviously we're talking about visual studio for both these, both of these, and that's going to be tooling, but it's exciting that all these tooling is really making you as a developer more productive. And it's big steps as far as I'm concerned. Even even, um, PLS editing. Uh, I was talking with somebody yesterday about PLS being a little bit difficult to edit. I mean it's just, uh, let me say it's a little bit unintuitive to edit and the new POS editor is going to make things easier. So it's just these little tweaks that make life easier and it helps you out as, as a, as a developer. And I also wanted to mention get, cause this kind of gets overlooked, especially we're talking about mobile development here, but developing web applications and V S Mac is surprising, especially if you haven't tried it before. Speaker 1 (11:18): Um, when I say surprising it works great. Um, it's just something that you really don't think of trying to do. Um, the other day I was trying to, uh, put together a blazer web application or blazer pages. It's called and it, or razor pages and not boys or I'm sorry. And it was great. It's, it works just like you would expect over from visual studio windows and if that's the word you come from and seeing it work on a Mac, just like it should school stuff. So yeah, give that all, gave it all that, give it all a spin. So Speaker 2 (11:53): yeah, I'm, I'm excited. I've been working on a new app recently. Started, started up on, I know it already has an Azure function back and it's going to have an asp.net backend. It's going to have a bunch of stuff in there. So I'm excited to, I've been doing it all on a Mac recently, so my set is a little bit funky right now as we're moving around and sharing a lot of the offices and stuff. So I've been streaming a lot from my Mac and going all in on it. So I'm pretty, I'm pretty excited about it. So it's been, it's been going very well. I'm very excited to see all the great new enhancements with it. So it's very cool. Speaker 1 (12:20): Yeah. And w while you're moving around and using everything on a Mac, you know, what could be even better for you, James? What's that? Is if startup was faster on any Android applications you're creating, I bet you that would really, really make you make your day. And uh, so a while ago we had startup tracing on Android and so like now we have the next iteration of this as an app. You can do custom profiles with startup tracing on Android and what that's going to do, it's going to give you even faster application startup for it. And so you can get differences. I mean, some of the differences we, uh, John Douglas did a blog post about this and just doing it gives you a smaller APK size but super, super faster startup. But we're talking a factor of two roughly with, um, between just your regular release startup with no startup tracing at all on that's almost a factor of four. Speaker 1 (13:25): And, uh, between startup tracing default and startup tracing, uh, custom, you get a factor of two, um, same APK file size. I mean, it shrinks it a little bit and it's super great. And what it does, it's on, when I, when I first saw those numbers and I thought about custom Android, it's going to be impossible to implement. I mean, it's, that's not, not possible, but it's not that hard. Um, right now it's a little bit of command line work where you're gonna have to build it with a ms bill with a switch. But John, he runs through it in a blog post and how to do all of this and it's not hard at all. You then you edit a edit, you're a CS proj file and that's pretty much it. Um, so what it does the first time when it builds it, it kind of looks through and it, it's intelligent enough to figure out what the best way to build this is with a profile. And then once you have it till um, visual studio ms build that you want to use it going forward and then that's it. You're done. Super. Not super easy. First time you have to do it by hand. You have to know it's there. I just want to miss things. You have to know what's there now. Once you have it done, there you go, you're done. Speaker 2 (14:35): Yeah. It's nice to seeing this progress and like hopefully it even gets even easier. Maybe there's just some buttons when you're debugging your app or something. But honestly, if you're thinking, Hey, I'm getting ready to debug and shit, my application, like it was done too hard to suspend an extra five minutes and it's going to up to 60% make your application faster. Right. So I'm kind of crazy. So kind of crazy. I definitely need to do that when I'm getting closer to ship. I'm still a ways away, but I'm actually about to use a brand new feature. I'm very excited about it. I'm of Xamarin essentials. We talked last month that version one. Dot five came out. We had a bunch of new features in it and the one that I was really excited for was the web authenticator. Now this is sort of drop dead simple authentication to a backend. Speaker 2 (15:20): And um, John Dick, uh, who implemented this, he wrote a great blog post on how to basically log in with Microsoft, Facebook, Google and Apple sign in accounts. Um, we using this new feature of Xamarin essentials and an asp.net core backend. Um, so asp.net core is great because it can handle like a mobile authentication controller. It can talk to the mobile auth provider and once they log in it can come back to your application. So this is sort of like the defacto way of doing it. And I know that in my application I'm about to add some authentication in there and I'll have to support Apple because it's in, you know, new requirements. So I might as well do, you know, um, a few different login providers, um, to get that going. And it's, there's quite exciting. It's very, very easy to do. There's new documentation on it, but you just add a few little lines of code into your iOS, Android and windows projects because you have to handle custom URL callbacks. Speaker 2 (16:21): But that takes about one minute to put into your, to put into your code, um, and into your info P list of course. And then he walks through, um, sort of how you would call it. And it's really easy. There's a web authenticator and there's also an Apple sign in authenticators. There's actually two API APIs in there. And um, as, because they go through different flows cause Apple is special and, and then it's really easy. He shows you how to automatically add web authentication to your asp.net core backend. You just add a few little bits of code. Here is a full sample. You parse the back end and literally you could have orthodon and configured and probably, I dunno, 15 minutes maybe in your app. Some would be pretty good. That'd be pretty good. So that's was pretty, pretty cool. Yeah, this is actually a really, really impressive piece of work. Speaker 2 (17:08): Um, authentication is hard to set up usually, and this, this takes the difficultness pretty much out of it. I mean, authentication is one thing you definitely want to get right to. And um, this was a great job. This really is nice and it's not gonna replace like, you know, M Sal, if you're using that, which is going to be super turnkey, can handle all the things, all of your ads are add all that stuff or refreshing tokens. Also, this doesn't refresh your tokens. This doesn't do anything. In fact, everything is out of your app. Like all this thing is doing is handling the login flow for integrating with existing back ends. Right? So that's why you're in your application. You're not putting your keys there, your keys exist on the server. We're trying to, in this one, you know we have Xamarin auth, which sort of is the flip side of it, which is like there's no server just like put everything in your app, which is, you know, not the best necessarily and don't do it, you know, don't do that. And MCL like does everything it could possibly do, especially for Azure, a D and you know, Azure EDB to see and like all these different flows. But sometimes Speaker 1 (18:16): you know, you just need Speaker 2 (18:18): something like this and then you're good to go and this is what I need. So the app that I need, I literally don't even need refresh tokens. I just need a sign in once I need to get a token, I need to get a unique identifier for a user so they could log in again in the future. And that's all I will ever need. Like, I don't even, I'm not even going to call the API of Twitter or Facebook or Microsoft, like I just need, you know, I just need like something basically to log in and then I can pass like a valid token around or something like that. So, um, this is kinda like what I'll, what I'll need basically, which I'm pretty excited for him. Like, and if I need to refresh tokens, I do that on the server. Right. And I would put that into my server and not my, my mobile application. Speaker 1 (18:57): Right. And what this reminded me of when I, when I, when I was reading through it in is that it reminded me of easy auth that we have in on the Azure side of things like an app service where it's kind of a plug and play type deal and it's aimed both at the, at the backend service side and a on, on the, on the mobile side. It's real, it's easy to use. And um, but it takes, it's not quite, it's not MSL where you're handling everything and as real, it's meant for a full full authentication flow. This really, it gets you an ID back, like you said, an I an object ID that you can associate it with a user and it works with your backend. And what I like about this though, it kinda, it takes you away from app service where you're not locked into that and um, yeah, then you can, you can roll with it. And so yeah, it's, it's nice and people should check it out. Speaker 1 (19:53): So the other thing that I don't know if this is a recurring theme is intentional or an app, but um, there is a, a post-doctor that we just did this month about relative sources for binding. And um, so reason why I say that is if it's a recurring thing, cause this has been out there for a little bit and um, so last month you did one James about about, um, finals layouts and by Nobel layouts have been out there for a bit. And I said, I wish I would have known about these sooner. And relative sources have been out there a bit. And as I just think like, well we should tell people about them because they're super, super handy and it's like we should have a repeating, repeating a series. Like here are some things about Xamarin forms that people should know about that we should get it out there. Speaker 1 (20:44): So it makes people more productive cause relative definitely are something that can do that and what a relative source can do. And I guess the easiest way to explain it is you have your view model, right? And then you have to bind to a list from that. Well your list is kind of binding off of uh, off of list, often a numerable within that view model. But a lot of times that list, you might actually have to perform an action up at the view model, like delete something from there. And so you're not going to want to put a lot of commands within that list. That's why you don't want to do that. So what the relative source does is going to say, all right, for this particular object or this particular item, bind it up for this particular command, find it up to the view model. Speaker 1 (21:30): So it's saying, all right, relatively pop me up a level and then you can do that. So I mean that's the easiest way to think about it, can do more like that. You can have like a self bind it to the self and so on. So it's, we go through it and just kind of explain what it is and it's been there for a while, but it's nice to have like a little refresher to remind people that this is out there, you can use it. And it solves a really a common problem that people have. Speaker 2 (21:57): Yeah, it's super duper nice. And I'm, I'm really glad though, the, the, the team was ever able to come together. I kind of put a call out to the, the forms team and I was like, Hey, you know, they got a bunch of cool features. Anyone want to blog about them? And they said, yeah, of course, you know, and um, Gerald and Javier, they did a bunch of great blog posts on their personal sites and I was like, Hey, bring him over here because you know, he was great to talk about him over here too. Um, so this was like the first one there and, and, and I've, I literally was writing my app and I was like, I'm going to go to this blog post. I know that there's great docs on it too, but it's sort of bringing those docs to the forefront. Speaker 2 (22:29): Right? I think David does a great recap every release of all the new features and then he links to docs, but it's like, Hey, let's do a deep dive on a feature just a little bit more and then make sure that you bring that to your awareness that gets social out and things like that. And then it links back to the documentation. Another one I'm also, that was super duper rad that I literally just used again is the brand new simplified, custom embedded fonts. Oh my goodness. Gerald did this blog post. Um, and it is awesome. It's really, really simple. Like so previously what you'd have to do to get a custom font is you'd have to go and take your TTF font and you need to put it in your iOS, Android, your windows project. And then each of them like may have a different syntax, might be a little bit different here and there, all this stuff. Speaker 2 (23:21): And I believe that James Clancy did a lot of the hard work in the beginning of the PR. Maybe he did all of it. I didn't need to go look back at it. But what he ended up doing is I'm simplifying the entire process to one assembly export. And the blog post is a great cause. It does a bunch of stuff that I didn't even know that it could do. So, um, you just go in and let's say you go into your.net a standard and then you just put in a, your, your fonts anywhere. Like I put them in resources and then fonts and then kind of keep them organized. And um, you put in the TTF and maybe it's called like, um, cheese curds dot TTF. Right? And then, yeah, cause like M right, that it is very tasty. It's all, it's very, you know, squeaky. Um, and uh, if they're done right at room temperature and uh, so what you would do then is you put in an assembly export, so this is similar to like a custom render or something, but you say assembly, export font, you put the name of it and you're done and you can as a reference it, which is super cool now. Speaker 2 (24:21): But on top of that though, you don't need to edit your info. PLS, you don't need to change anything. It does it all for you. It's all done for you, is all done. Um, which is super cool. Um, but on top of that you can also give it an alias. So sometimes font names and like font files have like the, the, the name of it, cheese Cruzar TTF is like the name of the file, but the like the, the actual font name might be squeaky super duper squeak cheese. Right? And you don't want to write that every time. So you can put an alias in this export. So you could just say cheese and then, and then you could just reference it as cheese, as your font family. So it lets you like override the default name, which is super cool. I've been using this a bunch. ZBT were good. Definitely go check it out. Speaker 1 (25:07): Yeah, it's really nice. And, and what else is nice about it is that you do not have to use it. If you're using the previous way of using custom fonts. Still valid. Still can keep on going with it. So you don't have to move over to this new way. But if you're developing something new or you're getting ad fonts now go ahead and use this cause it's, it's easier to use. And uh, yeah. And so James, uh, back at the end of March, um, you put on a big event, I helped out a little bit with it. And um, dot. NETCONF focus on Xamarin. I don't know if you remember it or not, cause you worked all day at, at, you might be so exhausted he don't remember it. So let me wrap it up for you. So what we did, it was a full event starting at what time did we start like eight in the morning when all the way to like five 30 at night. Speaker 1 (25:58): There's a specific time and we had tons of people come in. We had, we started off with the keynote with Amanda silver and David had Maddie and David even had the pants cam going on to show that he was actually fully dressed for the, for the event. And then at one on with um, roughly every half hour we had a new speaker come in at covering a different aspect of Xamarin development. And it was, it was great. And in that it was a lot of community member focus and it covered what the community members expertise was. So we had people talk about how to create beautiful apps. We have people talk about how to market beautiful apps or like how to, or their experience of where they came from and they created a great app. It was really that the talks were super, super interesting and it was just one of these great events and we have the slides available for people to go out and, and check out. Speaker 1 (26:57): Um, the videos are rolling on a channel. I know. I don't know if they're all out there. I know a lot of them are out there right now that people can go and, and, and take a peek at. So it was a really good event. I had a lot of fun helping out with it. I know just checking out Twitter during it. A lot of people had a lot of fun out. Uh, the social distancing was happening at the time. So what people did, did they kind of treat it as a little work party where they got together online with their coworkers and watched it together separately and a w it was a really great event. Speaker 2 (27:28): Yeah, it was awesome. I mean, it was definitely a team effort. I appreciate you saying that. I did a lot. I just stood there and looked pretty for a little bit, but I had an amazing team of people helping out throughout the entire day. I mean, we had, you know, 14, 15 speakers throughout the day, all from around the world, all sorts of different time zones from, from Italy to London to Brazil to all the different time zones in the U S um, to, to all over the place, which was super awesome. Um, it was like you said, 50%, um, uh, team members from the engineering team and the PM team and then 50% community members, um, which was super awesome. And yeah, all the videos are available now. They're all on the.net YouTube. And also on channel nine, we'll put links into the show notes. Um, the live stream was super crazy active. Speaker 2 (28:12): That's on the Zammarin developer, YouTube and the.net YouTube too. We stripped at both places. Um, this was definitely one of our most successful, I would say, live streams. I mean, we just had people all throughout the day was, it was excellent. And, uh, in the studio with me, uh, Olia was there from the, from the Donna team. She was helping me host to going back and forth asking questions besides the, the behind the scenes. Um, Cameron was, was back there was Ryan helping like switch and do all the audio equipment than online. You were online helping out with all of the tag board and Twitter stuff. You did a presentation? I did a presentation. Um, and then we had yeah, bath and Javier was everyone, you know what would happen is, this is the first time that it was nearly completely 100% virtual. I was the only in-person session of the entire thing. Speaker 2 (29:05): Um, where is the blazer comp, which was in January. The blazer.net focus was more virtual only because I get dumped a bunch of snow in Seattle right before it happened. So not everyone could get in. So that was different circumstance, but that was like a good prep. And Javier, what he would do is he would call in, um, and get all the speakers prepped and ready, make sure the auto audio was all good. So as sorta was like this, you know, there's people all day behind the scenes making this happen. But um, yeah, there's, you know, now there's like, you know, 14 sessions out there, you can go, all the slides are available. I'm all in this get hub page. So when you go to this.net presentation, all the.net comps are there. So if you can go to any of the years, there's PDFs in line there. But then also there's a link to a one drive, which with all the PowerPoints themselves and then you can look at all of the notes. We put these together so you can look at the code samples, links to YouTube, channel nine to the speakers, YouTube, any relevant links that are there. I'm super, super cool. So definitely, um, definitely check it out. I, I was super rad. It gets me excited for, uh, gets me excited for a build coming up. So we'll see how that goes. Speaker 1 (30:17): So, yeah, bill, that people don't know about, it's going to be all virtual this year and it's going to be a new experience for everybody yet. But yeah, I'm super excited about it too. Cause we do now have like this experience and when I say experience like the knowhow now and um, so it'll be interesting to see how that turns up, but I'm, I'm looking forward to it and to the everybody's first or second most favorite part of the pod, cloud news and the Azure service of the month. And I'm going to roll them together because a lot of times when I start talking about cloud news, it kind of like, Oh, whatever I talked about the cloud news is magically my Azure service of the month. And um, so this month I wanted to talk about something that's, it's actually pretty amazing and it's, I guess I'm going to call low code to know code. Speaker 1 (31:13): And I really usually am super, super resistant to this cause I'm a very, I'm a very old curmudgeonly man and I don't like change. And I'd rather use my semi-colons and my currently brackets and I don't want to change. I, I think these no-code things are, I don't want it to use it. And then all of a sudden I start using it. I'm like, I'm seeing the light. It's like Whoa, maybe this, this, there's something to it here. And so that's a very, very long introduction to Azure logic apps. Have you ever used these James before? Speaker 2 (31:48): So logic apps, I'm pretty sure I'm using them wrong. Um, but I, I do have some, so for my Hanselman app, I do a few things, uh, with them specifically. I should do a lot more with them. But what I do right now with them is I have logic apps that are listening to, um, RSS feeds and to Twitter. So right now I have a bunch of Azure functions at like sort of gather a bunch of information from sources. And the thing that I was struggling with is figuring out like, well when do I trigger updates? Right? Cause it's, I'm integrating into other backends, um, different RSS reads, Twitter feeds and things like that. So I could probably programmatically somehow hook that up in a function. But I went into Azure logic apps and it's sort of a, if this happens, a do this, but then you can insert logic. Speaker 2 (32:37): So like if this thing happens and this is this way, go this way else, go this way and do this other thing. So what I have is on a bunch of RSS feeds, whenever they change call an Azure function or when somebody tweets and does a thing then called the Azure function and according to that one so it can kind of go down this round. And what's cool is you can also like pass variables into it. So like I have a single Azure function that parses a bunch of different RSS feeds, but it takes in an ID. So what I do is in the Azure and the Azure logic app is whenever an RSS read feed changes, it also passes in the ID with it as well. So it's kind of cool when you can pass additional logic down into the things that you're calling into. That's what I've used it for. But again, very simplistic probably. Speaker 1 (33:24): Right? No. And I mean that's exactly what it's for is that it kind of gives an, it's a like a, a visual drag to where you can bring out these, they're called connectors, you can bring them out. And so what logic apps does is a lot like functions in that they react to events. So function reacts to certain events that happen, like a blob Speaker 2 (33:44): storage update or even at HTTP requests. And you can write a logic app to do exactly the same and they have these connectors like you said, over to like Twitter. And the connection is really, really easy. It takes care of all the plumbing for you, like how to talk to the API. You just have to enter your key essentially to make it work. Speaker 1 (34:05): And then you have a fully connected Twitter and you can do things more than just listen to it. You could also write tweets as well. So for one example of what I'm doing with logic apps is that I am, um, I have a office forms where I'm taking in a bunch of information about that. And then through the forums I'm cycling in, um, around it. And once when somebody submits it, I can get at each individual field in that form. And then for a field that has multiple responses to it, I can read through that response, like an a, a for each loop. And then I can then create a team's message, enter a work item in dev ops and then even shoot out an email to myself. So I have all these integrations or um, connectors to these various different services and it's all drag and drop. Speaker 1 (34:58): And you could do a bunch of, if then else is, you can work with variables, you can work with a raise and it's all, it's visual. And even behind the scenes what it is, it's a, it's adjacent file so you can actually plug it into your source control and you can put it through dev ops and, and whatnot. So it's, it's not all visual, but that's the way it looks. And the connectors are very powerful cause you mentioned Twitter, but you can connect it up to Dropbox and things like that. So not only Microsoft specific properties but also third party and getting to the newest portion of all this is that, uh, my good friend Jeremy likeness and a Hanselman did a on Friday, on Friday we said Azure Friday episode on this where Jeremy actually goes through and makes it really, really simple on how to understand a use these because initially when you see it with all the connectors and all the ways you can do things, it might be a little bit overwhelming, but he makes it really easy to understand. And yeah, it's one of these things where once you see it and once you realize the power behind it, you, you don't have to use functions and write all the code yourself. You could do it if you want it to, but logic apps gives you a way to kind of abstract it away and frankly it makes you a little bit more productive than having to do all that typing. Speaker 2 (36:21): Yeah, it's super nice when, when you, you could do all the logic, like you could put it all into a Azure function or figure out everything, but some of this stuff has just sorta boilerplate. So might as well just let it pick up the hard work, which is cool. Speaker 1 (36:34): So boom. Yup. So now we're onto it. Everybody's first or second favorite part of the pod. They get to decide. Speaker 2 (36:46): You get to decide that ticket the time. What's your favorite? Nobody knows. All right. Mine, um, is, uh, I may have mentioned it already in the podcast, but luckily@the.net com I gave a session called spectacular components for your Xamarin applications. And it was a presentation that I had to do no work because I asked everybody else to do work for me and I just combined everything. It's one of my favorite sessions I've ever given and it's amazing to see like just all the amazing libraries and component vendors and all this cool stuff. Go check it out for sure. And, uh, John Murray, um, Mr. Sharp NATO himself, uh, gave a great presentation on sharp NATO, which is actually a few different packages, but it's sort of his umbrella of a bunch of different custom controls and tabs and all this stuff. But he wrote a great blog post just to this week, um, on, um, his sharp Neato package going acrylic and acrylic is sort of the, um, Microsoft design, you know, Speaker 2 (37:44): card view thingies. I don't know. It looks really cool. Basically. Um, it's like material for Microsoft, is that our version of material? Okay. Yeah, correct. There's like, there's the, the acrylic and the fabrics, I think they're all the same. They're all like the same thing, but it's, it's very much like material for it. And he breaks out a good blog post, which highlights some other blog posts and tweets about what acrylic looks like and drop shadows and stuff. And if I do, you're seeing them in windows when you, when you start to see new icons for office or your alarm, uh, or your calendar. Like those are all new acrylic icons basically. From my understanding, I could be wrong, but maybe the acrylic team will be mad at me, but those are new icons, you know, that are coming up into it. And um, he implemented a new, um, acrylic mode for his frame. Speaker 2 (38:31): So he has this material frame, which is a material card view basically, but he added a new property called acrylic, which is cool and you can control the um, elevation and the different colors and things like that. But if you set it to acrylic, it sort of just does it automatically. And what's nice about that is I started using in one of my apps and now I have like three ways to do cards. Um, based on what I want to have the built in frame, which the built in frame is great as a card view. It's just straight card view and you can materialize it. You have pancake view. Pancake view is like the Uber like does everything because it does all a bunch of different run rounded corners on every corner. It can do, um, dotted outlines, it can do gradients, it can kind of do a bunch of stuff. Speaker 2 (39:18): It's very flexible. Um, and then you have, um, the material frame par part of the sharp NATO package. And this is cool cause I started using the acrylic stuff in my app that I'm building and I think it looks really good. It looks very different and I think that's what I like about it is that it looks different. I gas, um, and yeah, you just like put it on there and it totally works. Um, which I think is really cool. So I'm, I'm, I'm digging it quite a bit and I'm been giving it a go I guess. And uh, I've been, I've been enjoying it thus far and, and yeah, and it's very dynamic and I said definitely check it out. I'm going to be using his, um, in this package, not only the material frame, I'm going to be using his, um, tabs too. Speaker 2 (40:00): If you ever wanted custom tabs. Um, eventually the, they're there inspect for, for Xamarin forms, but this, his, uh, his tabs are really cool. He has, you know, um, the bottom tabs, he has custom tabs that you can do animation scrollable tabs. You can put anywhere on the screen so they don't have to be just on the top or just on the bottom. They can be anywhere. Um, so you can do really cool things and he has like a tab button so you can make that thing, which is a, you know, a big button in the, in the center one compared to everything else. And it's very customizable. So it's pretty Neato I'm, I'm pretty, I'm a pretty Intuit. I just love sorta combining a bunch of these packages that I just learned about. And you know, I've known about some of them for awhile, but then some of them I didn't, so I was like, okay, I'm just going to give them a go. Speaker 2 (40:44): And I'm pretty into it. So definitely give it a look. Yeah, it feels to me that right now we're kinda like in the golden age of Xamarin forms, UI controls and development from a third party folks of the community. It doesn't feel that way to you, James. Like there's just tons of stuff out there. Yeah. So, and speaking of, I believe you mentioned this in and also your session, and this has been out there for a little bit. Um, it's from some, uh, our, our good friends, Dylan and chase, it's called HTTP tracer. And this has nothing to do with UIs at all, but it's a great, it's a great way to debug your HTTP calls. So what you're going to do is you just plug this in to, um, to your, uh, uh, your HTTP. You build it up, plug it into your client, and then in the output Speaker 1 (41:34): window you're going to see exactly what the client, what the HTTP requests did. So you can actually see everything now what it went through, what the response was, success, failures, see the response content come back. Essentially, you're going to get this huge, um, debug trace of what happened. And it's just a great way to, to help debug it. So you're not going to actually have to hit the debugs or hit a break point, you know, put your cursor over and see all the properties come through. You doesn't see it all in the deep in the debug output window. So, and what I like to think about this, it's not a simple package, but it's a simple package to understand. And so what a lot of times those are the great things. You know, you put those in there and all of a sudden you understand what it's doing. You see all the headers that were passed, you see the, uh, the response and the content that came back. So check it out. HTTP tracer. Speaker 2 (42:32): Very cool. I like it. I just love all these, Oh, these things. Ah, I like it. Very cool. Very cool. Well, we did it and we made it through what I thought was not going to be a lot of different code, but now there is quite a lot of cool updates and things like that. So that's pretty rad. Very, very cool. Very cool. Love to talk. And we do love to talk. Well, definitely go check out all of the dot. Netcom focus on Xamarin events. There's hours upon hours of good stuff. And I'll also mention that I'm on top of that. There's one more blog that I put out, um, this month, um, which is about virtual events and user groups. So kind of call to action here at the very end cause I sort of forgot about it, is that there are a bunch of different user groups that are doing virtual events and that means anybody can join because they're virtual. Speaker 2 (43:18): So if you know your local user groups aren't running them, check them out. Um, this is really cool cause I recap the event, um, the dinette comp event in it, but I also talk about some upcoming events throughout the month. I'm all over the globe. Um, I also talk about, Hey, are you a user group organizer? Like check out some ongoing conversations of what equipment to use. Um, John and John Galloway and I, we recorded a full tutorial on how to use Microsoft teams. New live event feature. There's tons of content. So if you're a speaker or thinking about giving a session, take a look at some of the recent dotnet coms or the visual studio for Mac refresh event and go remix one and make it your own. Um, of course we have Donna community live standups that you can listen to all throughout the week, every single week. Speaker 2 (44:09): And we just did one on Xamarin. It was a good one. Definitely go check it out. Um, it was really, really fun. Talked about all the new tooling updates there. So you're there. Yeah. And if you are a user group leader and you're looking for a speaker, there's even a link to a user group, speaker request form and we'll try to match people with a community member or from the team. So definitely check that out. We want to keep the community going these times that were stuck inside. So there you go. Great idea. Yeah. All right. Thanks buddy. We'll have a good one. Stay safe. Wash your hands, you know, hold onto that toilet paper and I'll see you next month. All right. You too, James. Be safe.