00:00:10 Matt
Welcome back everyone to the Xamarin podcast, keeping you up to date with the latest and greatest in mobile development. For Xamarin developers, covering the world of xamarin.net Azure and more. I'm Matt Soucoup
00:00:23 James
And now I'm James montemagno.
00:00:25 David
And I'm David Ortinau
00:00:27 Matt
Ah, we have our regular new recurring guest David Art, now Back and David, I'm so glad you joined us again because you know what?
00:00:35 Matt
There is a brand new Dot Net 6 preview dropping.
00:00:38 Matt
So fill us in what's all new with?
00:00:40 David
That that's right, Preview 3 is going out.
00:00:44 David
The door is out the door, so let's talk a little bit about what's in there.
00:00:48 David
For net Maui. First off, we have a little utility that one of our team members, Jonathan **** has put together called Maui. Check itsa.net tool you can install.
00:01:00 David
Call and it will go ahead and check your whole environment and say do you have all the things you need for Android, iOS, Mac Catalyst and it's being updated soon to be able to support Windows as well which is in Preview 3 so Project Reunion 0.5 just shipped and that includes Win UI 3 support so.
00:01:08 Speaker 4
Yeah.
00:01:21 David
Uh, we have worked with the team to enable that for.
00:01:24 David
Net 6 and that is included in net Maui now.
00:01:27 David
Uhm, you will want to use Visual Studio 1610 latest preview to use that and follow all the instructions for setting up project reunion, but we're excited to finally have that 4th, 4th platform in the in the can. I'm not. I'm calling it a can now, but it's a can, so there it is.
00:01:41 Speaker 4
Yes.
00:01:47 David
Ah, let's see what else is in here.
00:01:49 David
So a couple updates to the application.
00:01:53 David
Arcot.
00:01:53 David
Picture in Preview 2 if you did a net new and looked at the code for that, you would have seen that the app was a Maui app.
00:02:02 David
It was called Maui app.
00:02:04 David
Now it's actually just called application, but we've kind of combined a couple of concepts in there, but this is still the class that instantiates your your window.
00:02:13 David
For the multi windowed applications or single.
00:02:16 David
But it also now will bring in any app XAML resources that you might have.
00:02:22 David
So for those who have experience with Xamarin forms, that will look very familiar to you.
00:02:30 David
One of the most exciting things that's in this release is new extensions for the host builder to do native lifecycle event hooks.
00:02:39 David
So if you have native things you need to do on Android, iOS, Mac or Windows, you can easily tap into them with a configure lifecycle events.
00:02:50 David
Method it's an extension method.
00:02:53 David
And you can do simple things like hey I wanna be able to do something when when the user clicks the back button or taps the back button on an Android device.
00:03:02 David
But more Interestingly this is something that we are using for the essentials APIs that are now baked into Xamarin.
00:03:09 David
I just said separate that baked into.
00:03:13 David
Maui.
00:03:14 David
Uh, but but this is something that other libraries, like Shiny prism, UM, sharp NATO.
00:03:21 David
You know what have you?
00:03:22 David
FF image all the great things that are out there in the ecosystem.
00:03:26 David
You can use this same method now to initialize any of your platform specific stuff.
00:03:33 David
So whereas in the past you would have to run around to the main activity.
00:03:37 David
In the app XAML and your Windows stuff or your app delegates on the Apple platforms and you'd have to do special incantations of initialization.
00:03:47 David
You can now do this in a single crossplatform, much simplified way using this new host builder method so native lifecycle events makes all of that possible, and we have a blog post that will be up on the Dot net blog if it's not already.
00:04:04 David
That covers all of this in detail with code samples.
00:04:07 David
So you can see all of this in how you can take advantage of it, or at least give you an expectation of of how you'll be using some of your favorite libraries in the future.
00:04:17 David
And then last but not least is the ongoing work to bring all the controls and light them up in.net Maui and bring all the latest layout work that we've been working towards. And we actually have quite a few community contributors that have engaged with us and are starting to submit PR's for these.
00:04:36 David
Controls so we call them handlers. It's a it's a new architecturein.net Maui that's much more performant, much easier to extend.
00:04:45 David
And we've got a handful of I think, 678 different pull requests from the Community, so thank you to everybody who's begun engaging. Probably the most exciting thing for me is hearing them. Report to us that this is this is really fun to contribute to, and it's much easier to do than Xamarin forms was the code.
00:05:04 David
Is easier to navigate and understand and the pull requests or bite size, so that's.
00:05:09 David
Really cool couple of the updates to layouts.
00:05:12 David
We've now added the layout options for alignment, horizontal layout, alignment, vertical layout alignment that's available on within a stack layout, and the grid and the grid now also auto sizes for the content as well as you can add absolute sizing.
00:05:30 David
So yet to come, is that wonderful star Asterisk that will, you know, fill the content?
00:05:37 David
Fill the space?
00:05:39 David
But that'll be coming up very soon.
00:05:40 David
The cool thing about grid is it's being rewritten to be Maui first, optimized for performance.
00:05:47 David
We now have layout managers that are, you know, the one Stop shop place to manage all of your layout.
00:05:53 David
Much easier to debug, much easier to optimize for performance, so that's a pretty cool advancement.
00:05:59 David
Not something that everybody sees, but you will definitely see the benefits of it.
00:06:03 David
So all of that, and probably plenty more under the hood, is now in Preview 3.
00:06:09 David
We have templates that are baked in and if you use that Maui Check tool that I talked about at the beginning, you will actually get the templates as part of that process and you can dot net new Maui.
00:06:21 David
Right from there we also have updated samples in the dot net mobile samples.
00:06:27 David
We probably need to rename that 'cause it's got desktop.
00:06:29 David
In there too, but we have that repository with updated samples that also include some project reunion samples.
00:06:37 David
So definitely check that out.
00:06:39 David
I think that's that that pretty much covers the highlights.
00:06:42 James
Very cool, one question for you really quick.
00:06:45 James
I know that in the.
00:06:46 James
That the preview twoof.net six, which included the first preview of Dynamic Maui I remember I was making a video. It's kind of hard for me to name it. I was like I called it the first preview of Mao instead of preview two was because it was the first preview. But anyways, I digress. Now we're all the same run Preview 3 and it. It's happening and.
00:06:54 David
Spit all that out, yeah?
00:07:05 James
The first previews of the most recent one that show with.
00:07:08 James
P2 I've done at 6. That was, for all intents and purposes very command line. First for building deploying there was a little bit of you know VS code experimentation in there, and the IDs were waiting. Is there any update on the IDE support or we still waiting on that and we're still command line heavy and this current preview David.
00:07:28 David
Right?
00:07:28 David
So nothing has changed there for this preview. We're looking towards Visual Studio 1610 like Preview 2.
00:07:36 David
Which hopefully will coincide around the time preview fourdropsof.net six, so at that point we ought to have some good idea.
00:07:48 David
Do you support, at least on the Windows Side?
00:07:50 David
Mac will be coming after that so but but your experience on the Windows Side will be good and that should include hot reload that instant include hot restart for those who want to do direct to iOS device development as well as remote iOS simulator and remote build host for the Max so.
00:08:09 David
Definitely looking forward to that.
00:08:11 David
'cause I I do enjoy some command line.
00:08:13 David
I think we all enjoy it.
00:08:14 David
It makes us feel like we're in the matrix, but good old Visual Studio is hard to beat.
00:08:20 Matt
I do have one question for you, David. We ask it over and over again. Is there any reason why I should hold off on Dot net Maui or hold off on Dot net or.net Xamarin forms right now? Like should I just wait for.net my way to come out?
00:08:35 David
I, I think, absolutely at this time, unreservedly. I would say start your projects in Xamarin forms because the migration to dot net Maui when that time comes will be smooth. Whether you do the migration in the midst you know of previews and you actually landon.net Maui when we go GA at dot net.
00:08:55 David
Counts later this year.
00:08:57 David
Or you actually continue on with some reforms for a little bit longer and transition when you see things to your liking, so no reason not to use Xamarin forms. The migration will be good now. You may evaluate.net Maui, you know, Midsummer, you know middle of the year. I shouldn't say summer because it's not summer everywhere in the middle of the year.
00:09:16 David
Uhm, you may look at it and say, you know what, we've got everything we need here.
00:09:20 David
And I bet Maui is is good to go and you may jump on the bandwagon there and you skip some reforms altogether.
00:09:27 David
But you really can't go wrong either way.
00:09:29 David
The compatibility is going to be good.
00:09:31 David
The migration story is going to be good.
00:09:33 David
We've got a new upgrade utility that we've seen used already to bring people to Dot net six, so all signs point to you can't go wrong.
00:09:43 James
Very cool now I did do a video recently just to answer that question.
00:09:48 James
The map proposal, which was should you learn Xamarin forms now or wait for down a mountain?
00:09:52 James
I came basically the same conclusion right?
00:09:54 James
Which is if you are looking to get into mobile develop.
00:09:57 James
Meant and you are looking for a place to start. You should start now because everything that you learn is going to apply. There's gonna be new stuff and new enhancements that'll make your life a little bit easier. But at this point, like all the layouts, all the view models, the business logic is fantastic, but I did get a lot of questions, David, so we figured we'd do a little dot net Maui Q&A with Dave and.
00:10:20 James
And then I'm going to start it off over here and Matt and I are going to go back and forth and rapid fire.
00:10:20 Speaker 4
I don't.
00:10:25 James
I picked some of my top.
00:10:27 James
5800 on here for you. So the first one is from Tanveer. Can you talk about app performance and how it will improve in net Maui over Xamarin forms?
00:10:38 David
Absolutely.
00:10:39 David
So you know, we've got 7 years of history with Xamarin forms, so it's not like we don't know where the performance is.
00:10:46 David
Great, first of all, it comes from the the wrapping of views, especially on Android, is very impactful and so we introduced a while back fast renderers which help with that, and that reduced that overhead of the wrapped view.
00:10:53 Speaker 4
And so.
00:10:53 Speaker 4
00:11:00 David
But then we've also got a strong dependence on bindable object and the notification and the communication.
00:11:06 David
Between the plat, native platform and the in the middle layer, your xamarin forms layer introduces a little bit of performance there as well.
00:11:15 David
Or, you know slow now.
00:11:17 David
So with the architecture of the handlers, as you compare that to renderers.
00:11:21 David
First of all, you reduce that needed wrapping, and then we also have removed the dependence on bindable object.
00:11:29 David
There are additional performance things that are introduced.
00:11:32 David
I mentioned just a little bit ago about the layout updates that we are making.
00:11:36 David
So we're reducing the number of iterations you do over the hierarchy of your view.
00:11:42 David
Free so that we make less passes and we can more directly lay things out on the screen, so that will be a huge benefit, especially as it comes to Android, which is where we see the majority of those performance hits, so it's a pretty well known domain problem.
00:12:01 David
You know, it's not like we're.
00:12:03 David
Needing to learn too much here, we just now have the opportunity to actually implement these things in a pretty safe.
00:12:09 David
Not going to break your world way.
00:12:11 David
I'm so looking forward to that.
00:12:13 David
Early indications from some very early tests show about a three times performance boost, which is awesome, and we'll see if that that trend continues.
00:12:25 David
We're able to maintain that overtime.
00:12:28 Matt
So the next question, David comes to us from Tellus and he asks.
00:12:32 Matt
So with Blazer support, I guess you're meaning that you're planning to add mobile Blazer bindings Tamale.
00:12:41 Matt
But what about the opposite?
00:12:42 Matt
Will there be a new get or something similar to run Maui apps on the web?
00:12:48 David
That's a good question, so I'm going to take the first part first, so it's not exactly mobile Blazer bindings to Maui in terms of what we're shipping in.
00:12:56 David
Net six, the Blazer experience there is going to be a hybrid experience.
00:13:02 David
The one piece from the mobile blazer bindings that we are elevating is.
00:13:07 David
The Blazor web view.
00:13:08 David
Umm, so essentially, if you have blazer investment in a web app, or are you prefer to build razor templates and use the blazor component model but you want to be able to deliver it as a desktop application, then you can host that Blazer web app inside of a blazor web view inside of a native application.
00:13:29 David
And that native application is delivered by Maui.
00:13:32 David
The cool thing here is if you've ever done any kind of hybrid work with anything else in the past, you typically have a JavaScript bridge or some other barrier that you have to go through in order to interact between your web JavaScript content and your native content.
00:13:50 David
Our native application.
00:13:51 David
That's not the case.
00:13:52 David
Here you have really a seamless experience for the majority of anything that you would need to do, so you know from a razor template you could be directly accessing native platform stuff, whether it's file system permissions.
00:14:07 David
It's GPS, you know all the things that essentials provides.
00:14:12 David
You don't have to go outside that context, so that's really, really cool.
00:14:16 David
Now there may be additional things in the mobile blazer bindings that will introduce overtime, but that really depends on you know the feedback that we hear.
00:14:25 David
We're definitely continuing that experiment.
00:14:27 David
To see where it takes us, but for now the blazor experience in net six is going to be this hybrid experience and then you can add additional views, add add controls from the Maui toolkit where you need the native things, whether it's a new native window, etc.
00:14:43 David
Modal windows, that sort of thing.
00:14:46 David
Come on the other part of the question here about running Maui apps on the web that is not in scope for net six. That is certainly something that we have heard many requests for, so I would say it's seriously being considered for. Net seven. While we haven't done formal planningfor.net 7.
00:15:06 David
Linux and Web certainly lead the category of things that people are most interested to see.
00:15:12 David
So tell us, would love to know more about what your specific needs and interests are in taking a Maui app to the web.
00:15:19 David
Uhm, so that we can properly plan things on our side, we're certainly having that conversation with a lot of customers as the topic comes up to find out when you say that, what do you really mean?
00:15:20 Speaker 4
Yeah.
00:15:30 David
What does that look like to you?
00:15:32 David
What are the requirements from a performance standpoint, ET cetera?
00:15:36 David
So it's definitely an interesting thing, and we look forward to tackling that. It's just not going to be partof.net 6.
00:15:43 James
Gotta start somewhere.
00:15:44 James
I say can't have it.
00:15:45 James
Can't have everything all at once.
00:15:46 James
Gotta build overtime based on that customer demand only.
00:15:47 David
Gotta keep me wanting gotta keep him wanting that's right.
00:15:50 James
Yeah, that's right. Or you know you wanna come out with a, you know set of things that you can really fully support full 100% and build on top of that.
00:15:58 James
Uh, next question here.
00:16:00 James
This is a good one.
00:16:00 James
I like this because it kind of goes into this.
00:16:02 James
You got the blazer stuff you got people talking about other platforms that you know.
00:16:07 James
Acoep says in this comment on my YouTube says what're this experimental things I keep seeing when people talk about down in Maui?
00:16:14 James
They they they say, there's envy you and then there is the blazer blazer stuff that.
00:16:18 James
Early on and release, both talked about this is experimental stuff and there's first for you view UI.
00:16:25 James
What does that actually mean for release?
00:16:27 James
Is it going to be included as a not included?
00:16:29 James
What is kind of that.
00:16:31 James
Some promise versus reality type of situation for the experimental because I'm assuming there's experimental for some reason on there.
00:16:39 David
Yeah, so experimentale really means we're not making a strong commitment to it, and it's not going to be shipping in the box, but it's interesting enough that we think that we can learn some things from it, and one of the biggest things that we want to learn from it is what the customer demand is.
00:16:56 David
What is the usefulness of this?
00:16:58 David
Uhm, so envy you Model view update. It's a. It's a pattern you see in products like fabulous with F#. You see it used in one way or another in flutter, react native and so it's different than than MVVM, which is the dominant pattern in a lot of dot net products which is model view.
00:17:18 David
View Model, which relies heavily on data binding.
00:17:21 David
Imbue, however, does more of a a messaging loop where it you message your changes up to the application, which then makes an update to your shadow Dom if you will, and then quickly rapidly diffs and and updates the UI.
00:17:37 David
Uhm, it's some really cool stuff and you know, one of the learnings we have from our common experiment was the architecture of the handler. So going back to the first question about performance, we decided upon the the approach that we would take to improving the performance of xamarinformsin.net Maui, because.
00:17:58 David
And what we learned from Comet from doing that experiment, and we'll continue that experiment to see how far we can take things.
00:18:05 David
And in the same way that we learned from the Blazer experiment, the mobile blazer bindings.
00:18:10 David
So certainly we're we're being very careful to not say this is going to become a fully supported product in and of itself, and we're also not saying that we're never going to take the the awesome bits that we've learned from it and bring it into our existing applications that we do ship and that we productize.
00:18:29 David
And we we have support.
00:18:31 David
You know agreements around those sorts of things.
00:18:33 David
So in terms of whether Mvu becomes a fully supported product, as comment or otherwise, and whether or not you know Blazer with the mobile bindings becomes a fully supported feature of a product that really depends on on the customer demand and interest.
00:18:49 David
So if you are interested in those things and you want to be using them at least.
00:18:54 David
Register your interest.
00:18:55 David
You know by starring and forking and liking and and any other mechanism you can think of to get our attention, reach out to us.
00:19:02 David
Share your business needs in your story with us, you know, we'd love to engage you to to better understand that, but until we have that.
00:19:10 David
Understanding of the real business demand and we know that it's worth us investing and and and backing it with Microsoft support.
00:19:18 David
We're not going to bring it out of the experimental phase, so not every experiment is going to become a product.
00:19:25 David
But we'll we'll cross those bridges as as the value obviously dictates.
00:19:31 David
Uhm, yeah.
00:19:32 David
So I think that kind of answers pretty much all of that.
00:19:36 David
If something is fully supported then it's not going to say experimental.
00:19:40 David
I think that's that's pretty good rule, right?
00:19:42 James
There that makes sense.
00:19:45 Matt
So the key of it is if he wants something bug David for it to take the experimental label.
00:19:50 David
Off of it, that's right, right?
00:19:52 David
That's at least that's at least one place to start, yeah?
00:19:52 Speaker 4
Net.
00:19:55 Matt
And actually, that's one of the great things I learned ever since I'm starting here at Microsoft.
00:19:59 Matt
Is that how much the product teams are listening all the time?
00:20:02 Matt
So our next one is next questions from Siro?
00:20:05 Matt
And we kind of touched on this a little bit before, but he brings up another good point here.
00:20:09 Matt
So one, when will the previews a net model be available?
00:20:13 Matt
And we've kind of.
00:20:13 Matt
We did touch on that before, but when should I really start testing?
00:20:18 Matt
When should I put my way through its paces?
00:20:19 Speaker 4
Hey sis.
00:20:21 David
So we are shipping every month a new.net 6 preview and they will all include bumps to net Maui in terms of when you should start testing if you're if you're looking for evaluating Maui as a platform to build apps with, which I'm going to make that assumption, then I would wait until May.
00:20:41 David
Hey uhm as as the best opportunity for you to do that.
00:20:46 David
Enough of the pieces will be there for you to get a pretty good sense of the development experience and what your dev inner loop.
00:20:53 David
You know how how productive you feel building apps at that time because you'll have Visual Studio support in some fashion.
00:21:01 David
And then you'll have the majority of both plat of all four platforms there.
00:21:06 David
And if you are patient, you could wait even a bit longer and let things stabilize a bit more.
00:21:13 David
I would say if if the primary interest in testing is more on the performance side of things.
00:21:19 David
Then I would wait even longer.
00:21:21 David
Because although the pieces will be there in May, the the all the controls ported will not necessarily be complete.
00:21:31 David
I would imagine that it that they won't, and So what that means is you'll get the performance benefits on some controls, but not all, and the not all really falls.
00:21:41 David
Under the category of what we run with compatibility.
00:21:44 David
Shims, because that is one of the nice things that we have been able to do here with the net.
00:21:49 David
Maui architecture is still maintain strong compatibility with Xamarin forms because we know there are hundreds and hundreds of thousands of applications out there in daily use and we don't want to leave you behind.
00:22:03 David
We want to bring you to the future.
00:22:05 James
The future all.
00:22:05 Speaker 4
Yeah.
00:22:07 James
Right talking about the future, Prashant Ear asks is it safe to assume that XAML will still be used for UI design?
00:22:16 James
Will there be changes to control names or properties?
00:22:19 James
Will it overall still be XAML or are there other kind of ways to build UI?
00:22:24 David
That's a great question, so XAML is still the leading way to make your UI.
00:22:30 David
You have always had the option to use C sharp, and there is a great set of extension methods in the Xamarin Community Toolkit which will also be available in.
00:22:40 David
Net Maui that that makes it nicer for you to be able to do C sharp.
00:22:45 David
Only UI in net Maui, which again you can do that today in Xamarin forms and and and you know little history fact.
00:22:53 David
But Xamarin forms was originally created C sharp only.
00:22:56 David
XAML was not added until just before.
00:22:59 David
I think version one.
00:23:00 David
Well, uhm.
00:23:02 David
So it is still XAML in terms of control names and changes.
00:23:07 David
The control names are not changing.
00:23:09 David
Layout names are not changing we we evaluated that very closely and we talked to a lot of customers and developers.
00:23:17 David
And while there is some interest in seeing naming that is more aligned with WPF.
00:23:17 Speaker 4
Yes.
00:23:23 David
Or you WP slash win UI.
00:23:27 David
There just wasn't strong enough evidence that it was valuable enough.
00:23:31 David
You know we didn't win anything from it, didn't really gain us like, you know, another couple million developers or anything like that.
00:23:40 David
So the the majority of what we heard was, you know what we're really comfortable with the with the the names that we have and and it wasn't hard to learn and in some cases people preferred it over other names and patterns.
00:23:55 David
So so we're sticking with it and it will be the same XAML.
00:23:59 David
There will be a couple of interesting.
00:24:01 David
It's probably the one that gets referenced.
00:24:03 David
A lot is width, request height, request and then minimum width minimum Heights.
00:24:06 David
And then.
00:24:06 David
00:24:08 David
You know maximum all those.
00:24:11 David
The request really throws some folks, so we are actually dropping that and we are re.
00:24:19 David
Considering we're not reconsidering, we are rewriting that logic so that it is more of a contract, so it's going to be width and height, min, width, midnight Max, etc.
00:24:30 David
So that is one change.
00:24:31 David
There may be a couple of other changes we did today just to have a conversation about colors.
00:24:38 David
And so if you ever use the named colors in C sharp, it's on the color class, which actually makes the color class quite cumbersome and we are going to be taking a dependency and may may have been done by the time this comes out on the Maui Graphics Library, which has its own implementation where all of your named.
00:24:59 David
Colors are on a colors plural class and then your color methods are on the color.
00:25:05 David
US and and your your actual color object.
00:25:09 David
So it makes more sense.
00:25:11 David
It's a better design.
00:25:13 David
We just had a conversation with some library maintainers about it and nobody threw up in a huge red flags, so there may be a little bit of a change there, but that really actually doesn't impact XAML.
00:25:25 David
If it, unless you're doing like converters.
00:25:27 David
But that's not even XAML either, so.
00:25:29 David
More of a C sharp thing, but that's kind of where we're at with that.
00:25:32 David
We're not ripping XAML out, or any of those kinds of crazy things in.
00:25:37 David
At 6:00, but we are looking at, you know, Comet and Blazer.
00:25:41 David
And there are other options out there, so our modern trends going a different direction, you know?
00:25:47 David
You know, but SAML SAML is here to stay.
00:25:50 David
People love XAML.
00:25:51 David
I love XAML.
00:25:52 David
It's good to go.
00:25:55 Matt
I love XAML.
00:25:56 Matt
Two, it's not going anywhere.
00:25:57 Matt
You heard it here?
00:25:58 Matt
Thank you David.
00:26:00 David
Yeah, there tends to be.
00:26:00 David
There tends to be fear around these things.
00:26:02 David
You know, I, I remember speaking at a user group in Toronto back when we were allowed to try.
00:26:06 David
Double and the question came up when I showed comment.
00:26:10 David
Hey, I just learned all this XAML stuff.
00:26:14 David
Did I make a bad choice for my career?
00:26:16 David
Absolutely not.
00:26:17 David
You know, we are not in the game of ripping out your livelihoods.
00:26:21 David
Uhm, we've you know.
00:26:22 David
Lessons have been learned.
00:26:24 David
Decisions have been made.
00:26:25 David
So now XAML samples.
00:26:27 David
Good to go, even if even if you know some trend changed things, XAML will still be an option for you.
00:26:35 Matt
That's good to hear, and so this next question kind of dovetails with that one about things being there or not being there, and it's from Kevin and he says, what if my main platform is desktop and not mobile? Does it make sense to start already with that and or two? I mean, is.net now we're going to support desktop.
00:26:56 David
Yep, definitely supports desktop and all the same. You know productivity stuff that you get with Visual Studio. Once that is is out and shipping in that 1610 Preview 2 around that.
00:27:08 David
Time, then you're gonna you're going to have a really productive experience no matter which way you go.
00:27:14 David
I would say that and, and we've heard this from Xamarin forms developers desktop is actually a really productive way to go even if you're targeting mobile.
00:27:22 David
So you know, being able to stand up a Windows Desktop application and use Hot Reload.
00:27:29 David
With that and iterate on that, and then when when the time comes, bundle it and ship it to Android and iOS can be a really good way to go 'cause dealing with emulators and simulators is an additional complexity that can be a hassle at.
00:27:44 David
Times and whereas desktop you know your your start times are faster, your deploy times are faster, your hot reloads typically faster, so it's a great way to go now.
00:27:55 David
You know?
00:27:55 David
00:27:55 David
You know we just introduced Win UI three with Project Reunion.
00:27:59 David
Uhm, I would say you know looking towards preview four I would.
00:28:03 David
I would definitely recommend that as you're jumping in point to to start with desktop and but you know again, you know even if you started with mobile right now and you you're just doing iOS and Android stuff.
00:28:13 David
You're just doing it.
00:28:13 David
00:28:15 David
As soon as that desktop stuff lights up for you.
00:28:19 David
You don't have to rewrite anything, it's it's all the same code, so you're pretty much good to go again.
00:28:24 David
I feel like this is one of those you can't really go wrong questions, answers.
00:28:28 James
Alright, so another good one here.
00:28:30 James
You mentioned this a little bit when it comes to performance and how a lot of the base layouts are being rewritten, but Branimir asks and this is a good question.
00:28:39 James
I don't actually know the answer to this.
00:28:41 James
Does dawn at Maui include measurement and layout management for Android like a new implementation, or does it let Android do its own measurement and layout management?
00:28:51 James
You know, and which one is more performant?
00:28:54 James
I think that's what Brandon Moore was asking is like in the past, Xamarin forms the layout system.
00:29:00 James
You
00:29:00 Speaker 4
Yeah.
00:29:00 James
You know, in general, anything could maybe have performance issues.
00:29:04 James
I never really had any, but you know, could and or you're just going to allow the underlying system do layout systems.
00:29:11 David
Yeah, so I'm I'm going to guess that Branimir probably knows that Android layout management is where the.
00:29:18 David
The the bulk of Android performance issues lie natively so that that is a that is a good question.
00:29:27 David
The way that.
00:29:28 David
Net Maui does layout measurement.
00:29:30 David
You know the whole life cycle of that is is really a combination of cross platform and.
00:29:34 Speaker 4
Yeah.
00:29:38 David
The native platform.
00:29:39 David
So we we need to know certain things from the native platform about what it what sizing it's expecting to give us.
00:29:46 David
And then we can do the things on our part.
00:29:48 David
As I mentioned previously, we are refactoring the way in which we do layout measurement in in the way that we're doing.
00:29:56 David
That is, bringing a lot of that logic up into a cross platform layout manager and then optimizing our interactions with the native platform.
00:30:06 David
So to go any deeper beyond that, I would be speaking out of the you know.
00:30:11 Speaker 4
No.
00:30:12 David
Not the smartest part, so I would definitely refer you to the GitHub to learn more in detail about that and easy heart is a an engineer on the team who probably is the best one to ask questions about that too.
00:30:28 David
You know, we have discussions open on our GitHub that would be a good one too.
00:30:32 David
To open a discussion on and and see what kinds of responses you get from the engineering team.
00:30:37 James
Yeah, I would love to see them Deep dive blog posts.
00:30:39 James
Or uh, leading up to the release talking about like a lot of these under the hood changes and enhancements and tweaks back and forth.
00:30:46 James
Thing that be really fun.
00:30:47 David
Yeah, we actually we have some planned and and then we're just starting them, but the the first ones will probably be around the application and the handlers and then as we as the layout stuff gets more fully baked.
00:31:02 David
I think we'll we'll be able to do it then.
00:31:04 David
It's still, it's still baking.
00:31:07 David
It's still.
00:31:07 David
It's still gooey in the middle nice.
00:31:10 Matt
So this next question, David comes from Douglas and this could be actually the $60,000 question. Depending on how crazy you want to get butwith.net Bowie, will you be able to develop for iOS without needing a Mac computer?
00:31:27 David
So yes, you can develop that iOS application without needing a Mac computer connected where you will need to introduce the Mac as is this still the case today with Xamarin forms is when you need to do your full code signing and publishing.
00:31:46 David
For distribution.
00:31:48 David
There are also perhaps a few other platform specific caveats where you're going to need a Mac to get involved, but by and large your day-to-day development when using net Maui you with your Windows machine and your trusty iOS device can happily go on your way developing.
00:32:08 David
All the functionality of your application, so that is still the case in Dot Net, Maui, and.
00:32:14 David
Up
00:32:15 David
Yeah, well, I think that's one of the most exciting things and really no matter how many times we say it, it's almost like nobody believes it and so we keep getting the question.
00:32:24 David
It's like I've heard this rumor.
00:32:24 James
It's true.
00:32:24 James
True.
00:32:27 David
I'm not sure if it's true is kind of how it sounds.
00:32:30 David
It's true you can develop an iOS application with your Windows machine.
00:32:36 David
In an iOS device.
00:32:38 James
I I agree with you, it does seem like over and over again I'm telling people.
00:32:43 James
This and proving it to them and showing it to them and and that's one of the cool parts I think about down and now you're getting all those Productivity Tools and enhancements that Xamarin forms has today so you don't have to wait to do this offline as a Gore right next one. This was a little bit more involved. I think it goes to your earlier question, which is, you know, theres.net Mountain. There's also something called Blazer.
00:33:04 James
Desktop, can you talk about maybe the differences between these two pieces of technology?
00:33:11 David
Sure, so I I think it'll become pretty solid and everybody minds once you actually see this stuff shipping in previews.
00:33:19 David
And it's it's actually all one in the same.
00:33:24 David
There's really there's no difference.
00:33:26 David
The only difference is in how you use the technology.
00:33:30 David
So amaui application.
00:33:32 David
If you just add a blazor web view control to the screen in C sharp or XAML, you now have a Blazer desktop application.
00:33:42 David
If you have a, if you start a new Blazor desktop application and you just ignore the blazor web view and you go about creating buttons and and edit entries, and you know all the different controls that Maui has, well, that's mauisoitsjust.netitsall.net.
00:33:59 Speaker 4
So.
00:33:59 Speaker 4
00:34:02 David
And it all works together.
00:34:03 David
I know it's a it.
00:34:05 David
It seems like they're two different things, but they have a whole lot more in common than you would imagine.
00:34:10 David
And because we're using the same technology investments to deliver both experiences, really this this question is more of a what kind of developer are you?
00:34:18 David
Are you more comfortable doing native platform things in the net Maui style?
00:34:23 David
Or are you more comfortable with HTML and CSS and you want to be able to have a hybrid experience and dabble in the native platform controls where you need to?
00:34:33 David
Then Blazor desktop is your is your starting point, but that same solution that same file, new experience.
00:34:39 David
Can go absolutely either.
00:34:41 David
Away and you don't have to make that decision before you start your application.
00:34:45 David
You can just file new whichever one you think makes the most sense for for your app, and you could get into it and say you know what I'm going to go the other direction, and I'm going to spend more time in the in the native controls or I'm going to spend more time in the HTML and you don't have to rewrite your application.
00:35:02 David
You don't have to regenerate the templates or anything.
00:35:05 David
It's really it's really that simple, so it's pretty cool and I think like I said, I think that'll be more solid in peoples minds.
00:35:11 David
Once you actually have some some bits and some templates to pull down and start looking at.
00:35:17 James
All right, one last one here for you from esico this one probably, uh, just something that people don't really know too much about because.
00:35:26 James
'cause if you're building let's say an iOS application in Swift or objective C, obviously Apple have no problem accepting your applications or the App Store.
00:35:35 James
Can you talk a little bit about?
00:35:37 James
You know how Xamarin and Donna Maui or compiled that you abide by the App Store regulations like the other frameworks out there too?
00:35:45 David
Yeah, I mean we say all the time that Xamarin forms is is nativeand.net. Maui is native and sometimes people kind of you know, further brow a test and they're like, oh really, no, really it is. It's a matter of fact. In the current survey, I asked the question.
00:36:02 David
And do you ever hear from your customers or your users or other developers certain things and one of those questions was that Xamarin is not native and it comes up which is is is just baffling because it is true.
00:36:15 David
It is native and where it applies to this particular topic is underneath the hood.
00:36:20 David
We are using the same compilers.
00:36:23 David
Yes, we do have a net compiler that's involved and we compile the.
00:36:26 David
Net code and we ahead of time compile and we do have the mono runtime in there, But then you know to deliver the actual bytecode and whatnot to Apple when submission.
00:36:39 David
Committing, it's going through the same compilers that you would be using if you're using Swift and objective C, So you know all the same security checks and and all the goodness that you get, and you expect it's all there and and so you know there's I I I don't know in terms of like security.
00:36:59 David
Updates in particular problems.
00:37:02 David
I've never heard of an issue.
00:37:04 David
I've never seen an issue reported from a customer that was ever you know.
00:37:09 David
Like hey, we got rejected for this reason or that reason and we worked very closely with Apple too.
00:37:15 David
So we have relationship and we we worked through some some bumps from an update today themselves posted last year.
00:37:22 David
And we're able to resolve for customers.
00:37:25 David
Uhm, it. It's a good relationship. We've never had any concerns that.net apps would be rejected censored in any way. All indications are that it's it's still a good relationship and we can have confidence knowing that when you build an application with net, it's going to continue to get accepted into the Apple Store.
00:37:45 David
Under the same regulations as any other application, no matter how it's built, I mean, and if you were to decompile and inspect and and IPA application, the code, the bytecode and whatnot would look just like a app built in Objective C and SWIFT.
00:37:50 Speaker 4
Built.
00:37:50 Speaker 4
00:38:02 Speaker 4
But
00:38:03 James
Yeah, I think that's the other thing too. There's many, many a cross platform frameworks out there, so they're all doing similar things. Everything is natively compiled and into bytecode like you're saying, and I've been chipping out for 10 years and you haven't had no issues ever. And I also remember that the app model, right? I think it's sometimes you come from a traditional.net
00:38:23 James
Background, you understand how net is deployed on Windows, but that is extremely different from evenhow.net core is is is released and of course how Xamarin applications are done in Maui. Applications with net are compiled and bundled right and and mobile applications them so.
00:38:39 James
Loves are sandboxed in a way that are are very different. Deployment from other things so you're not like sharing a runtime or.net with other applications. It's all bundled natively into your application, so it's a thing to sort of remember there too is is is. It's a very different app model than you're used to.
00:38:59 James
And it's all compiled up like David sent.
00:39:02 James
Yep, there you go.
00:39:03 James
Wow Q&A done crushed it.
00:39:07 David
Good you should.
00:39:07 David
You should do more youtubing I don't know.
00:39:09 David
Are you into the youtubing thing I'm.
00:39:11 James
I'm I'm all about those, YouTube's gotta I've been. I've been dabbling in the youtubes. I've been trying to do more. You know. Longer form xamarin. 101 videos and Xamarin forms 101 videos.
00:39:22 James
Kind of walk through some things and I will link to some of the down in Maui videos I've done.
00:39:27 James
I'm I'm excited because you talked about the Maui check.
00:39:30 James
I was, uh, early beta to internal beta tester, for for John **** is like run this random thing on your computer.
00:39:35 James
OK, oh OK, sure.
00:39:36 James
OK, and then it's all Red John, I don't.
00:39:39 James
I don't know if this sounds bad.
00:39:40 James
I was like OK, I'll try to try this one.
00:39:42 James
I was like OK, so that was fun.
00:39:43 James
But yeah, yeah, so yeah, we'll put a few links to the.
00:39:47 James
YouTube's in the uh, notes, but you know, if you're also looking maybe brand new, you're just randomly tuning in this podcast 'cause the title was interesting. We have an upcoming events called Let's learn.net Csharp. We've been doing these, let's learn.net events Jamie Singleton from my team runs. These have different guests. The first one was on Web API, other one was on microservices.
00:40:08 James
This month it is on C sharp at the end of the month, the last Friday in the month or so.
00:40:12 James
It's going to be 2 hour event live stream completely free.
00:40:16 James
Everything you need to know what tools you need, how to learn in the browser, stepping you through getting started with C sharp.
00:40:22 James
That's going to be absolutely delightful, so we'll put a link to that.
00:40:25 James
In this show notes as well and beyond the dot net.
00:40:29 James
Maui News Matt we just got.
00:40:32 James
One little article that I wrote about a little update to my app that I did.
00:40:37 James
You'll find you Devi, you're talking about all the you know features and down in Maui and there.
00:40:41 James
How Xamarin forms has all these great things I've been obviously loving Xamarin forms 5 and we talked about it heavily on the podcast, but I I rewrote.
00:40:51 James
One of my settings screens and I was heavily inspired by one of your applications.
00:40:56 James
It's funny if you look at this blog post, there's like an evolution of David.
00:40:59 James
Dave
00:40:59 James
00:40:59 James
Did a David did a sample and he had these really cool radio button things for the theme and I stole it.
00:41:10 Speaker 4
Millimeter.
00:41:11 James
I turned that into a blog post about radio buttons and how item templates are awesome.
00:41:15 James
And then I took that work and I created a brand new setting screen for my Cadence application.
00:41:23 James
I started with a table view.
00:41:24 James
Which.
00:41:25 James
Tried and true table view.
00:41:26 James
Everyone loves a table view in their life and I talked about like the downfalls of how I wanted to create a very beautiful UI and I want it to be exactly the same between iOS and Android and I use this card view UI with your theming and these radio buttons and I dove through like an example of what you may do.
00:41:46 James
You can't just copy and paste this code because it's my.
00:41:48 James
It's literally my application with my styles, but sort of a here's what it looks like, and I put a little video in there that I think is just real elegant of dynamically changing.
00:41:59 James
The system themes are manually changing them, so if you're looking for some inspiration on your setting screen, here it is and I do believe rewriting my setting screen has increased the in app purchase.
00:42:10 Speaker 4
Yeah.
00:42:14 James
Uhm, conversion much, much better.
00:42:17 James
It's much more clear what you're getting, how to do it.
00:42:20 James
Things like that, so it's very delightful.
00:42:22 Speaker 4
Well.
00:42:23 David
Yeah, that dumb that settings that radio button templating was inspired by the Fluent UI design that is on.
00:42:33 David
There's a website where you can go basically generate a whole theme using the Fluent UI design system.
00:42:38 David
And but they also show different controls and how they expect them to be used and what they expect them to look like.
00:42:45 David
And that was basically at one of the radio button templates, but then applied to theme switching.
00:42:52 David
So I was pretty pleased with it.
00:42:53 David
It looks cool and it shows how easy it is to really kind of implement fluent UI design patterns yourself.
00:43:00 Speaker 4
Off
00:43:01 James
Yeah, I agree, I love it.
00:43:02 James
I love it.
00:43:03 James
Well I mean really excited for the upcoming blog posts and if we do get any, we'll put them into the show now so I'm super excited and the DOT Net 6 Preview 3 stuff 2 super excited for that.
00:43:12 James
But that's going to do it for the net, Maui and Xamarin and C sharp updates now move on to our cloud news.
00:43:19 James
Matt, what do you got for?
00:43:20 James
Us Oh yeah.
00:43:21 Matt
Since everybody loves some Docker and some Kubernetes.
00:43:24 Matt
Do you even know what that is? I don't, but we had a whole you mentioned. Let's learn.net C sharp in April. Well, March was. Let's learn.net and microservices. And so we did a whole of Jamie and Shane. Jamie Singleton and Shane Boyer did a whole show where they actually walked through a learning module and answered a bunch of questions about what microservices?
00:43:25 James
No.
00:43:45 Matt
And are and.
00:43:46 Matt
The funny thing is, is that when we were talking about containers and Docker and Cooper.
00:43:50 Matt
That is, the big ship happened to be stuck in a Suez Canal and nobody asked Shane about it.
00:43:57 Speaker 4
Ask.
00:43:58 Matt
True, how could you not?
00:43:59 Matt
But it doesn't matter.
00:44:00 Matt
So I mean, we still have the show.
00:44:02 Matt
It's of course it's on Channel 9 and I would highly encourage everyone to go check it out.
00:44:06 Matt
'cause it's a nice intro to what microservices are and how you can come.
00:44:10 Matt
Use those in containers and.
00:44:13 Matt
Yeah, it's totally worth checking out and the other thing I wanted to point out is our good friend Misha Neal, who I think he's on your team.
00:44:22 Matt
James put together this amazing document about going and learning all about like how to build cloud native apps, which has a lot to do with Microsoft.
00:44:33 Matt
Versus and I'm putting together a serverless apps on like links out to all these ebooks, and all these resources on how to go out and do all this stuff, so it's like this 101 for net developers to learn all things cloud. I'm going to say Cloud native and all cloud native means is that you're thinking about developing for the cloud.
00:44:53 Matt
1st.
00:44:55 Matt
And yet there's like, well, I don't know 20 different books out here that you can go download and learn.
00:45:00 Matt
Not 20, but there's a lot.
00:45:02 Matt
And it, yeah, it's totally cool and something you should check it.
00:45:05 Speaker 4
Wow.
00:45:06 James
Yeah, and actually he's about to have another blog post and tomorrow I think you know, before the podcast comes out.
00:45:12 James
But after we record which is answering your top questions from that, let's learn event so there's tons of questions came in and niche.
00:45:19 James
Of course, he's he's over in India, so it was different time zone for him on the Friday so you didn't get to attend live.
00:45:25 James
But he went through all the chat log.
00:45:27 James
Top five themed questions and answered all of them with resources.
00:45:31 James
Many of these are in the books too, and then we're putting the video in there too.
00:45:34 James
So we'll link to that too.
00:45:35 James
And Additionally, to cap it off because it was all microservices niche came on a lot of niche 'cause he's he's really on my team.
00:45:44 James
Him, he's cloud native microservices.
00:45:47 James
You know what I mean and what's great is that he has a Xamarin background.
00:45:50 James
So I asked him to come on the Xamarin show and do an introduction to microservices for mobile developers and creating your first microservice for your mobile application.
00:46:01 James
And what you can do with it.
00:46:02 James
So there's two videos.
00:46:04 James
On the xamarin shell.
00:46:05 James
Where he just talks about terminology.
00:46:07 James
What is a container?
00:46:09 James
What is a microservices?
00:46:10 James
What is an orchestrator?
00:46:11 James
What is a docker?
00:46:12 James
What are the files?
00:46:13 James
All these things walks relevant.
00:46:15 James
Why?
00:46:15 James
Why should you care about microservices?
00:46:17 James
What's involved in?
00:46:18 James
It's really elegant.
00:46:18 James
Great we link to that.
00:46:20 James
But then the second video is building your first one locally, testing it, and what he does.
00:46:25 James
He uses Kubernetes and what he's able to do is have his mobile application speak to one endpoint. So let's say it's mysite.azurewebsites.net/APIpizza.
00:46:37 James
But because of how Kubernetes can do routing, he can change between a V1 or V2A dev or a prod for an endpoint and his mobile application doesn't have to change anything. So you can upgrade your back end and your endpoints easily across your mobile applications by using this micro service.
00:46:56 James
Technology to sort of open a gate if you will to to change the Lane sound like a train changes tracks.
00:47:02 James
You can easily do that so it's good videos.
00:47:04 James
Definitely check it.
00:47:05 James
Now lots of micro service stuff, but that's going to bring it up to our service of the month.
00:47:10 James
Matt, what you got?
00:47:11 Matt
For us, I was looking around on Azure for Azure documentation like what can we pick for the Azure service of the Month and find out I had no idea this even existed is that we have an Azure health bot.
00:47:23 Speaker 4
Huh?
00:47:24 Matt
Yeah, I sat there, so yeah.
00:47:25 Matt
So.
00:47:25 Matt
00:47:26 Matt
Exactly what does that do?
00:47:28 Matt
And So what this this health pot does?
00:47:30 Matt
It's great for like you can go in and like if you have like it's screening for questions like do you have a fever today?
00:47:36 Matt
You know I have you been around so many like the last 14 days so like this like a telemedicine.
00:47:41 Matt
Then or going into health insurance stuff like that.
00:47:45 Matt
And there's an API for it, so you get this prebuilt like starter Kit and then you can kind of customize it for what you need.
00:47:53 Matt
And so yeah, it's pretty neat.
00:47:54 Matt
You have a bot and then you'd custom industry built for healthcare and you kind of tweak it a little bit for exactly what you need with your API and you can.
00:48:02 Matt
Hand it off to teams and all that other other good stuff that we have built in.
00:48:06 Matt
And yeah, or even like a live agent.
00:48:10 Matt
Pretty cool stuff.
00:48:11 James
Nice, I like that actually went to the dentist recently, which is very scary.
00:48:15 James
And also I love the dentist but they had that type of thing but it was a piece of paper so this would have been a lot better.
00:48:20 James
Actually I like that I'm going to check that out and that's going to bring us to our final.
00:48:25 James
Segment our pick of the.
00:48:27 James
Pod if David still around David, do you gotta pick up the pot?
00:48:31 James
Do you even know about the pick of the pond?
00:48:32 James
Did you do a pick up last night?
00:48:33 James
Pick the file.
00:48:33 David
Pick of the pod.
00:48:34 David
I feel like I did just my favorite thing from the podcast.
00:48:39 James
No favorite, you know.
00:48:40 James
And it's like any OK if you're brand new to the podcast, 'cause David is obviously.
00:48:45 James
This is a library, a service, a GitHub project, tape or anything, anything pic of the pod that is excited. I'm going to give you time to think about it, 'cause my pick of the pod is Visual Studio 2019 sixteen .9 XAML code generation for MBI. Also did a YouTube video on this.
00:49:05 James
And a blog post which will put in there.
00:49:07 James
But this is the most amazing thing in the world.
00:49:11 James
Let's say that you have a, you know, databinding.
00:49:15 James
You're creating a UI in XAML for WPF, WP, or Xamarin form.
00:49:18 James
And soon down Amaui and imagine you're like tax label and you're like text equals binding first name, But the first name doesn't exist in your viewmodel.
00:49:27 James
What're you gonna do?
00:49:28 James
Well, all you gotta do is hit that little light bulb and it will automatically generate the property for you and implement.
00:49:34 James
I notify property or the command for you automatically.
00:49:38 James
It is mind boggling amazing oh I talked to the engineering team on this today and very excited for what they're doing and what they have planned.
00:49:47 James
But it is spectacular, and if you're interested in this, it's in the current release 1609 of Visual Studio 2019. It is amazing and I can't wait for everybody use this feature because it blows my mind and it's my pick of the pod pick of the pod.
00:49:52 Speaker 4
Yeah.
00:50:03 David
All right, I got one.
00:50:04 David
OK, so I would normally say and this is my little excuse to be able to say two things.
00:50:11 David
I would normally say the Xamarin forms Community toolkit 'cause I noticed they added shadow support, but since this is one that I don't think many people know about, I mentioned earlier the comet experiment.
00:50:24 David
In order to support that James Clancy, the author of the experiment, has shipped his experimental Comet extension for Visual Studio Code.
00:50:35 Speaker 4
Me.
00:50:35 David
Now what's interesting about this is that because comma is based on Maui and.
00:50:41 David
Net six things, it also works for other.
00:50:45 David
Net 6 scenarios such as net mowie.
00:50:49 David
So don't look now, but if you want to go enjoy some experimental VS. Code.net six things, check out the common extension and use that in combination with a. Net new Maui project in Preview 3 and you can debug. You can edit, you don't get great XAML.
00:51:09 David
Tell us sense, but it's pretty sweet to see some of these things lighting up from the Community if you will in Visual Studio code.
00:51:18 James
Nice.
00:51:19 James
Cool, how about you?
00:51:20 Matt
Yeah, alright, so I'm going to talk about we hit on this a little bit last time, but I really am digging the learn live modules outcome that work that we've been doing lately.
00:51:31 Matt
So what it is is that you're going over an actual Microsoft learn module with the experts to help you out through it.
00:51:39 Matt
So you're actually sitting there.
00:51:40 Matt
It's like going to a workshop at a conference and you're being able to ask questions as you walk through a wired module, and I want to see what's coming up so I can.
00:51:49 Matt
Help people understand.
00:51:51 Matt
So like one of them that we did recently was like oh, we did a ton of Azure SQL Fundamentals, so you can actually sit down, learn live and actually ask like the product team, you know what's going on.
00:52:01 Matt
How do I use Azure SQL and sit down, learn, live with the experts and it's like a full workshop.
00:52:10 Matt
At your fingertips at your convenience.
00:52:14 James
Very cool, I like it.
00:52:16 James
Well there you go that is another Xamarin podcast in the bucket if you will.
00:52:21 James
In the bin.
00:52:22 James
We appreciate everyone being here and of course will let us know what your questions are.
00:52:26 James
You can go ahead and leave comments on that page or tweet us, so I'll put all the links in the show notes or anything you want and we will be following up on next month.
00:52:34 James
On another Xamarin podcast.
00:52:36 James
Thanks for listening.
Transcript source: Provided by creator in RSS feed: download file
