Latest / DevQuestions with Tim Corey / 159 What’s New with .NET MAUI featuring Maddy Montaquila
Transcript
- 0:00SPEAKER_01: Welcome to the Dev Questions Podcast with Tim Corey.
- 0:03SPEAKER_01: Join us each episode as we tackle the questions you are asking about a career in software development, understanding the industry, and new technology.
- 0:12SPEAKER_01: If you're just starting out or you want to grow stronger as a developer, this is the place to get your questions answered.
- 0:19SPEAKER_01: Now, here's your host, expert developer and online educator, Tim Corey.
- 0:25SPEAKER_03: Alright, welcome to a special episode of DevQuestions here at Microsoft Build.
- 0:30SPEAKER_03: With me today I have a special guest, uh Maddie Montequilla.
- 0:34SPEAKER_03: Welcome, Maddie.
- 0:35SPEAKER_03: And you are on the PM and the.NET Maui team, correct?
- 0:38SPEAKER_03: I am, yep.
- 0:39SPEAKER_02: Product program manager, whatever you want to call it, PM.
- 0:42SPEAKER_03: So what does that mean?
- 0:43SPEAKER_02: So we basically, if you drew a Venn diagram and you had customers and you had the business and you had the engineering team, we are the little sliver of the overlap.
- 0:53SPEAKER_02: We're trying to make all those three pieces talk to each other.
- 0:55SPEAKER_03: Okay.
- 0:56SPEAKER_02: So depending on the day, my job is completely different.
- 0:58SPEAKER_02: But I was a computer engineer, which is how I ended up on the.NET team.
- 1:02SPEAKER_02: I wrote software, and then I was like, I could I I like this, but not enough to do it all the time.
- 1:08SPEAKER_02: And that's how I ended up in DevTools.
- 1:10SPEAKER_02: It was kind of wild.
- 1:12SPEAKER_03: Okay.
- 1:12SPEAKER_03: Yeah.
- 1:12SPEAKER_03: I'd like to hear more about that.
- 1:13SPEAKER_03: Like, where to get started in this whole process?
- 1:15SPEAKER_03: Did you go to school for this?
- 1:17SPEAKER_03: Did you go to school and decide to change careers?
- 1:20SPEAKER_03: What do you what'd you do?
- 1:21SPEAKER_02: Yeah, well, let's see.
- 1:22SPEAKER_02: It all started um probably in the 90s when I installed Barbie Fashion Show on my computer.
- 1:27SPEAKER_03: Excellent.
- 1:27SPEAKER_02: And I thought I was the coolest person in the entire world because I clicked some buttons and all of a sudden I could design Barbie's outfits, which was pretty great.
- 1:34SPEAKER_02: I don't know if that was actually the 90s.
- 1:36SPEAKER_02: I have no idea what year that came out, but probably around then.
- 1:39SPEAKER_02: Um and I didn't realize there were people who built these things.
- 1:43SPEAKER_02: And so when I was looking into college, I was like, you know, computers are a thing.
- 1:48SPEAKER_02: I should I should do that.
- 1:50SPEAKER_02: But I really thought I would go work on chips.
- 1:52SPEAKER_02: Like, you know, I was like, hardware.
- 1:55SPEAKER_02: And so I started with electrical engineering, almost failed calc 3, and was like, you know, I don't know if this is for me.
- 2:03SPEAKER_02: Um and so I I started it, you know, moving more in software, and I thought I was gonna do robots or embedded stuff, and I played around with that, and then I started doing some like GPU research and doing like big data, because that was all the buzz when I was in college.
- 2:17SPEAKER_02: It was like the beginning of the big data thing.
- 2:19SPEAKER_02: And um, I did an internship in Microsoft as a software engineer, and I was like, hmm, I don't I don't know.
- 2:29SPEAKER_02: I like it, but there are so many things that bother me, and I don't like writing tests, and I don't like JavaScript, and I'm getting really angry because all of the decisions we've made on this product are just totally wrong.
- 2:41SPEAKER_02: Like, why are we doing this like this?
- 2:43SPEAKER_02: Uh, and I was fortunate to have a really, really good uh manager and mentor who was kind of like, you know, you could work on influencing the product.
- 2:52SPEAKER_02: You need to be technical for some for some products.
- 2:55SPEAKER_02: And I was like, no, that's fake.
- 2:56SPEAKER_02: That means I quit engineering.
- 2:57SPEAKER_02: Like, I'll figure it out.
- 2:59SPEAKER_02: I did not figure it out, so I ended up uh going back to school, doing another software engineering internship, and being like, this PM thing, you know what?
- 3:07SPEAKER_02: I'll give it a try.
- 3:09SPEAKER_02: So that is kind of how I fell into this.
- 3:11SPEAKER_02: It was a lot of luck and like not doing well at things, so that was good.
- 3:15SPEAKER_03: Excellent.
- 3:16SPEAKER_02: Yeah, but it it's uh really fun.
- 3:18SPEAKER_02: And and so when I was an intern as a PM um at Microsoft, they acquired Xamarin, which was a startup at the time.
- 3:24SPEAKER_02: And I'm in the Boston area, they were a Boston-based startup, and my boss at the time was like, Whoa, we just acquired Xamarin.
- 3:30SPEAKER_02: And I was like, What is that?
- 3:32SPEAKER_02: That sounds horrible.
- 3:33SPEAKER_02: That's the worst product name I've ever heard in my entire life.
- 3:36SPEAKER_02: And they moved into the same office I was interning in, so I got to know some of the people on the team.
- 3:40SPEAKER_02: So when I graduated, they were like, Do you want to come work on.NET developer tooling?
- 3:44SPEAKER_02: And I was like, no, but I'll take the job.
- 3:46SPEAKER_02: And sure enough, here I am, almost five years later.
- 3:50SPEAKER_02: So it is a wild ride to get here.
- 3:53SPEAKER_02: Yeah.
- 3:54SPEAKER_03: I have a similar experience.
- 3:55SPEAKER_03: I was actually an electrical engineer.
- 3:56SPEAKER_03: Okay, cool.
- 3:57SPEAKER_03: Um one year.
- 3:58SPEAKER_03: Yep.
- 3:58SPEAKER_03: I made it one year.
- 3:59SPEAKER_03: Yep.
- 3:59SPEAKER_03: Um I made it through, I didn't make it through calculus one.
- 4:02SPEAKER_03: Oh.
- 4:02SPEAKER_03: So I was earlier.
- 4:03SPEAKER_03: Okay.
- 4:03SPEAKER_03: Now I went back and got calculus one and two and said, this is really not for me.
- 4:07SPEAKER_03: Um so I was again hardware.
- 4:10SPEAKER_03: I loved hardware.
- 4:11SPEAKER_03: I love playing with you know circuits and gates and all the rest.
- 4:14SPEAKER_03: And but the really my my love was software.
- 4:17SPEAKER_03: It was the making stuff work and and writing software.
- 4:20SPEAKER_03: And so yeah, I can understand that.
- 4:22SPEAKER_03: You I would I didn't want to give up my career.
- 4:24SPEAKER_03: I thought I'm a failure if I quit electrical engineering.
- 4:27SPEAKER_03: But the reality is you're not, you're just finding the right spot for you.
- 4:30SPEAKER_03: Excellent.
- 4:31SPEAKER_03: So do you write code now or do you just influence code now?
- 4:36SPEAKER_02: Both.
- 4:37SPEAKER_02: I do not write, I have written very little code that ships to customers.
- 4:42SPEAKER_02: There are many reasons for that.
- 4:44SPEAKER_02: Not uh not to forget how bad my code usually is, but I write a lot of Maui apps.
- 4:50SPEAKER_02: So, or I, you know, I don't think I've actually published anything in recent memory, but I write a lot of Maui code, and then I'm like, wow, this is hard, so I should fix this.
- 4:59SPEAKER_02: Um I did ship one string change in Visual Studio in the manifest of something, and apparently I did not do the order of things right, and the error was very vague, and it broke our entire build, and nobody could figure out why, like, oh the PM string change broke a build, ha ha, but actually we don't know why.
- 5:17SPEAKER_02: So that was one of the only lines of code I shipped.
- 5:20SPEAKER_03: That's a badge of honor, though.
- 5:22SPEAKER_03: Yeah, everyone has to break something.
- 5:23SPEAKER_03: Exactly.
- 5:24SPEAKER_02: Once I did it, and I like texted all my friends, I was like, I broke a build with a string change.
- 5:28SPEAKER_02: This is great.
- 5:31SPEAKER_03: Good.
- 5:31SPEAKER_03: So um what is new and interesting about Microsoft in.NET Maui specifically right now?
- 5:37SPEAKER_03: I mean, yes, it's a whole list, but is there a favorite thing or two that that you're working through or bringing out recently?
- 5:44SPEAKER_02: Yeah, uh so.NET Maui, for those of the uninitiated, we shipped last year at Build.
- 5:49SPEAKER_02: Very exciting.
- 5:50SPEAKER_02: Um and it is cross-platform.NET, iOS, Android, Mac, Windows.
- 5:55SPEAKER_02: Um, and and you can use Visual Studio, you can use Visual Studio for Mac.
- 6:00SPEAKER_02: You can do whatever you want.
- 6:01SPEAKER_02: We have people building games.
- 6:03SPEAKER_02: We had someone build like a Doom version rebuilt in Maui.
- 6:07SPEAKER_03: Doom goes everywhere.
- 6:08SPEAKER_02: Yep, I was like, okay, cool.
- 6:09SPEAKER_03: Yeah.
- 6:09SPEAKER_02: But lots of like business apps, airlines use it for like the pilot to check off that the plane is ready to go.
- 6:16SPEAKER_02: I don't know.
- 6:17SPEAKER_02: People use Maui everywhere.
- 6:19SPEAKER_02: It's very cool.
- 6:19SPEAKER_02: Um, I'm more on the tooling side of things.
- 6:22SPEAKER_02: So once you actually open up the IDE and you start typing the code, like what's that experience like?
- 6:27SPEAKER_02: Which is fun because that was the thing I probably hated the most as a developer.
- 6:30SPEAKER_02: I had to use like um oh my gosh, what was it called?
- 6:34SPEAKER_02: The the predecessor to Android Studio.
- 6:37SPEAKER_02: That was just awful.
- 6:39SPEAKER_02: But Eclipse.
- 6:40SPEAKER_02: Okay.
- 6:41SPEAKER_03: Yeah.
- 6:41SPEAKER_02: Yep.
- 6:41SPEAKER_02: And the debug button was just a little bug, and I was like, this is weird.
- 6:45SPEAKER_02: Um my favorite thing that we have done probably in the past like year or so is we've started unifying all the different ways to change your app while it's running.
- 6:56SPEAKER_02: So a couple years ago, it was more like you made a change, you had to rebuild your app, and we call that hot reload, or we called the fix of that hot reload, where you would make a change while your app was running and it would deploy that change without you having to stop and restart the app and wait for a build and whatever it is.
- 7:11SPEAKER_02: But everyone was having this idea at the same time.
- 7:13SPEAKER_02: So we did it, and then another team did it, and then another team did it, and then there became like eight different hot reloads, and we were like, all of these are very similar.
- 7:22SPEAKER_03: What if we could all simplify and all bring them together?
- 7:24SPEAKER_03: Yeah.
- 7:24SPEAKER_02: But they're all slightly different, and a lot of people have very strong opinions, and some of these things were built on technologies from 10 years ago that they brought up, and and this one uses this button, and this one goes on file save.
- 7:37SPEAKER_02: So it's been a really fun project the past year just trying to find all those pieces and like make the matrix and then start to slowly pick the best way forward without angering anybody and um negotiating how to get all those things merged into one experience.
- 7:52SPEAKER_02: So we're we're pretty close now.
- 7:54SPEAKER_02: I think almost everything you hot reload now goes through one kind of hot reload, the.NET hot reload mechanism.
- 8:00SPEAKER_02: Um, which is fun because I actually got to step outside of Maui and outside of mobile land, and the people in the web told me a lot of things about web that I did not know.
- 8:07SPEAKER_02: And they were like, you know, we have to hot reload CSS, and I was like, oh no.
- 8:12SPEAKER_02: But that's been a really fun project.
- 8:14SPEAKER_02: Um, it's come a really long way.
- 8:17SPEAKER_02: So all of that, like make your life easier without having to restart your app is good.
- 8:22SPEAKER_02: Um, and of course, AI, this build, everything is about, you know, AI this, AI that.
- 8:27SPEAKER_02: So we've started to look at how you can take co-pilot for Visual Studio or Chat GPT or whatever the AI flavor of choice is and help that with you like getting started with your apps.
- 8:38SPEAKER_02: If I say like I want an app that looks like this or does this, can we make that a really good experience for people who are new to Maui to get up and running and bootstrapped without getting thrown into an app that they have no idea what it does, but without having to learn a lot of the painful parts of any programming language?
- 8:54SPEAKER_03: Yeah, that's that's a big deal.
- 8:55SPEAKER_03: I mean, that the idea that we switch back and forth so much and we have to jump into this and jump into that and learn all these different systems and processes is difficult.
- 9:04SPEAKER_03: Yep.
- 9:04SPEAKER_03: Um so that streamlined process is great.
- 9:07SPEAKER_03: Um, staying inside of Visual Studio is great, not having to jump around.
- 9:11SPEAKER_03: Um hot reload's been wonderful.
- 9:12SPEAKER_03: Oh, good, I'm glad I love it personally.
- 9:15SPEAKER_03: But it's been wonderful because it's it makes that process easier.
- 9:18SPEAKER_03: I'm not I'm not the best at the first iteration being perfect.
- 9:22SPEAKER_03: Oh.
- 9:23SPEAKER_03: So I put the first iteration in and look at it and go, that's not right.
- 9:26SPEAKER_03: You know, it's horrible.
- 9:28SPEAKER_03: Um let's fix this one little bit at a time until it's right.
- 9:30SPEAKER_03: And so just being able to do that more quickly and and um more efficiently has been awesome.
- 9:35SPEAKER_02: So yeah.
- 9:36SPEAKER_02: I remember one customer when we were early in the hot reload days being like, I just couldn't get my label to be where I wanted it.
- 9:43SPEAKER_02: And every time I moved it like two pixels, I had to wait 45 seconds for the build to deploy.
- 9:49SPEAKER_02: And I was like, oh my goodness.
- 9:51SPEAKER_03: That's a tough experience.
- 9:52SPEAKER_02: Yeah, that is rough.
- 9:53SPEAKER_02: So that's better now.
- 9:55SPEAKER_03: Good, excellent.
- 9:56SPEAKER_03: We appreciate it.
- 9:58SPEAKER_03: So when we talk about, you know, chat GPT, AI, co-pilot, all the rest, um, you're talking about like UI changes potentially being in there so we can actually maybe not have to know Xamarin or XAML quas deeply.
- 10:12SPEAKER_02: Yeah, that's a really big thing we're looking at.
- 10:15SPEAKER_02: So the copilot, for those of you who are in the private preview, um, it is not great at XAML.
- 10:21SPEAKER_02: It has a very hard time.
- 10:22SPEAKER_03: Neither way.
- 10:23SPEAKER_02: I was gonna say fortunately same.
- 10:25SPEAKER_02: Um I've actually asked it for pages in XAML and it's given me C sharp before, and I'm like, hmm.
- 10:31SPEAKER_02: Hmm, nice to know that I will not be replaced by this.
- 10:34SPEAKER_02: So that's good.
- 10:35SPEAKER_02: But we've been looking at how we can A, you know, like train models to be more XAML friendly or you know, XAML literate, if you will, but also the the parts of UI development that need kind of that helping hand.
- 10:49SPEAKER_02: And so getting started is a really big one.
- 10:51SPEAKER_02: Just saying, like, this is I want something that'll look like a login page, right?
- 10:54SPEAKER_02: It needs to have a profile or an icon and two text boxes and a button, right?
- 10:59SPEAKER_02: You should just be able to say, like, give me a basic login page.
- 11:01SPEAKER_02: Okay, and then the next thing that's been really fun is how do you make the AI iterate on itself, and being like, all right, this is cool, center those text boxes, or okay, make my label or my icon up top, make it a circle and pull it from this file, and just start to get it to you know work with you almost like pair programming, right?
- 11:20SPEAKER_03: Right.
- 11:20SPEAKER_02: So it's obviously still very early, as all of the AI stuff is, but that's one of the main things we're looking at.
- 11:26SPEAKER_02: The other, for those of you who are um not current Windows or Maui or XAML developers, MVVM, model view view model as an architecture can be really hard to just wrap your head around.
- 11:39SPEAKER_02: That was probably my biggest barrier to entry when I started on the team.
- 11:42SPEAKER_02: So just being able to say, like, hey, give me a view model that does what I need it to do to populate this page.
- 11:49SPEAKER_02: Like Excellent.
- 11:50SPEAKER_02: This is yeah, this is a list view, and I need this data set.
- 11:54SPEAKER_02: Do the middle.
- 11:55SPEAKER_02: So we've been looking at things that could potentially make that easier.
- 11:59SPEAKER_02: AI is hard, and I don't really get it, but it's very cool, and when it works well, it works great.
- 12:05SPEAKER_03: So well, that's been kind of the theme for everyone listening, I think, to this build is that was great, it looks complicated.
- 12:11SPEAKER_02: Yeah.
- 12:12SPEAKER_03: So yeah, it's I'm sure it's an uphill battle trying to figure out how to get it to work right and work well.
- 12:17SPEAKER_02: Yeah.
- 12:18SPEAKER_03: Um but but yeah, the idea that we can we can take a tool like that and make our jobs even faster.
- 12:24SPEAKER_03: Yeah.
- 12:26SPEAKER_03: Learning XAML is a little bit tricky, especially for people who haven't been in that space before.
- 12:31SPEAKER_03: Um so um now the XAML for.NET Maui is different than say UWP, WPF, or um Win UI, correct?
- 12:43SPEAKER_02: Yes.
- 12:44SPEAKER_02: So pefor the XAML people get very upset with me, the Z XAML itself is just markup language.
- 12:52SPEAKER_02: The namespaces, the API, the control surface is what's different.
- 12:56SPEAKER_03: Gotcha.
- 12:57SPEAKER_02: So the XAML itself isn't like a different syntax, but the flavor I call it the flavor, right?
- 13:01SPEAKER_02: The flavor of XAML is different.
- 13:03SPEAKER_02: So what you would call um a button with content in UWP is going to be a button with text in in Maui.
- 13:10SPEAKER_02: So that can be complicated, but the general feeling of like this is XAML, that that stays the same, fortunately.
- 13:20SPEAKER_03: Is there any I any thought to kind of bring those together, or is that kind of a difficult proposition without much value?
- 13:27SPEAKER_02: It's probably the latter.
- 13:28SPEAKER_02: We have had a lot of attempts over the years to unify them, like XAML standard was a thing, XAML Islands, all these different things.
- 13:36SPEAKER_02: Um the fact is both of them have their pros and cons and are better for the use case.
- 13:42SPEAKER_02: So WPF XAML is awesome for desktop.
- 13:45SPEAKER_02: Like WPF XAML we think of as like the golden standard, right?
- 13:48SPEAKER_02: It just works.
- 13:49SPEAKER_02: Um, but it didn't translate well to mobile, which is why Xamarin and now Maui was different in the first place.
- 13:56SPEAKER_02: And so for us to go and contribute that back or to come up with something shared, we're sacrificing on both sides.
- 14:01SPEAKER_02: So we've kind of at this point in time, and things change all the time, so who knows?
- 14:05SPEAKER_02: At this point in time, we've kind of pocketed that idea, and we're letting people, you know, use WPF XAML if that's what they want, UWP XAML if what they that's what they want.
- 14:14SPEAKER_02: What we are working on is kind of more migration stuff.
- 14:17SPEAKER_02: So the migration assistant now will take your or the Visual Studio Upgrade Assistant.
- 14:21SPEAKER_02: Yeah, it's an extension you can get.
- 14:23SPEAKER_02: And it will now take your UWP projects and migrate them to WinUI for you.
- 14:26SPEAKER_02: So it does a lot of XAML transforms for that.
- 14:29SPEAKER_02: So we're looking at what kind of possibilities there are to extend those to WPF to Maui or UWP to Maui or Maui to something else.
- 14:37SPEAKER_02: Like there's a lot of options there.
- 14:40SPEAKER_03: Excellent.
- 14:40SPEAKER_02: Yeah.
- 14:41SPEAKER_03: So now Maui is cross-platform.
- 14:43SPEAKER_03: Yep.
- 14:43SPEAKER_03: So we're talking Mac and Windows desktops as well as iOS and Android.
- 14:49SPEAKER_03: So is there any thought to Linux desktops?
- 14:52SPEAKER_02: Yeah, we ha hear this a lot.
- 14:55SPEAKER_02: So we want, we would love, if we could click a button and make Maui work on Linux, we would.
- 15:01SPEAKER_02: And.NET runs on Linux now, right?
- 15:03SPEAKER_02: So it's not so far away.
- 15:05SPEAKER_02: Um frankly, the only reason we haven't is just we have other priorities right now.
- 15:11SPEAKER_02: And a lot of it is, you know, quality has been our big push for.NET 8, kind of refining the desktop story in general, doing things for keyboard listeners.
- 15:18SPEAKER_02: So if you want to make custom hotkeys, and there's a lot of that stuff that we've been tidying up.
- 15:23SPEAKER_02: The the Linux problem, speaking candidly, is that there's no good UI toolkit.
- 15:28SPEAKER_02: So for Maui to pick one means that Microsoft is now making an opinion on the best Linux UI toolkit.
- 15:35SPEAKER_02: And we don't want to be the people to make that decision because we get ourselves in enough trouble, like it's probably not a good idea.
- 15:41SPEAKER_03: Bad old Microsoft again.
- 15:42SPEAKER_03: Yep.
- 15:42SPEAKER_02: Yes, exactly.
- 15:43SPEAKER_02: So what I would like to see is for us to make it easy to swap out like your own either drawn controls or UI toolkits, and it's already much easier with Maui than it was in the past, but I would really like to see someone in the community with like a good drawn UI toolkit make that able to run in a Linux container.
- 16:00SPEAKER_02: Um and we can start leveraging that and maybe go that direction.
- 16:06SPEAKER_02: I don't know if that will happen.
- 16:08SPEAKER_02: Uh the other thing that we're looking at is if we can bring like just a couple controls in the Blazor Web View over to Linux.
- 16:14SPEAKER_02: So it would be nice if you had a Blazor hybrid app, which is a big part of Maui now, where you just take your Blazor app or components and shove them into Maui and they run locally.
- 16:23SPEAKER_02: Um maybe all people need on Linux is just a Maui app with the title and a couple buttons and their Blazor Web View.
- 16:29SPEAKER_02: But we're not sure.
- 16:30SPEAKER_02: We're still in the early days of kind of doing that research.
- 16:33SPEAKER_02: A lot of what we see people wanting Linux for is embedded.
- 16:36SPEAKER_02: So um they would need a command line interface for Maui, which is a whole thing we haven't even thought about.
- 16:45SPEAKER_02: Bigger fish to fry right now.
- 16:47SPEAKER_02: Sure.
- 16:47SPEAKER_02: Yeah.
- 16:48SPEAKER_03: Yeah.
- 16:48SPEAKER_03: Um, so how do you do that research?
- 16:50SPEAKER_03: How do you find out what is best?
- 16:53SPEAKER_02: Good question.
- 16:54SPEAKER_02: Oh my goodness.
- 16:56SPEAKER_02: Um well, we come to events like this.
- 16:58SPEAKER_02: That's a big part.
- 16:59SPEAKER_02: Uh we have a whole lot of ways on the PM team and and at Microsoft in general.
- 17:03SPEAKER_02: And and my Maui and.NET are part of the developer division.
- 17:07SPEAKER_02: So we have a whole like guidance for the developer division on how we should do customer research.
- 17:10SPEAKER_02: We have an amazing user experience team that will set up like quick pulses so people can come in and just see something, or we ask them like a set of questions really quickly, and then bam, bam, bam, and that's data.
- 17:21SPEAKER_02: And we do we do these like hands-on concept value tests, we call them.
- 17:25SPEAKER_02: So we'll click you through like a PowerPoint, or you can see uh demos of something we're building, or you can go and use it, and then you rank kind of like the benefits of it, the limitations of it, and we can use that data.
- 17:37SPEAKER_02: We have um a couple like interrogation rooms, I call them.
- 17:41SPEAKER_02: That's not what they're actually called.
- 17:42SPEAKER_02: Uh, they are literally like one-way glass, like you're in an episode of SVU Law and Order, and you sit there and we watch the customers on the other side of the one-way glass use the product, and we can see the screen share.
- 17:53SPEAKER_02: This was the first time I did this, it was the first time I realized like nobody knows how MVVM works because the poor customer kept trying to like edit the view model to make a button show up on the page, and I was like, oh my god, it's not just me.
- 18:05SPEAKER_02: This is great.
- 18:06SPEAKER_02: So that's the thing.
- 18:08SPEAKER_02: And then, of course, surveys, we run a lot of surveys both in Visual Studio, like those gold bars up top, but also sometimes we'll tweet them.
- 18:14SPEAKER_02: We do a lot of community events and we just talk to customers and learn about their apps.
- 18:18SPEAKER_02: Microsoft is, you know, very we have really good relationships with enterprise customers.
- 18:22SPEAKER_02: So folks who are on Azure who are looking for a mobile solution, the Azure customer specialist will come to us and be like, hey, this person's looking for blah blah blah.
- 18:29SPEAKER_02: Like, can you do that?
- 18:31SPEAKER_02: And we kind of take all of that feedback in all its different ways and try and holistically put it together.
- 18:37SPEAKER_02: A lot of what we do is not necessarily like validating things, but prioritizing among the things we have validated.
- 18:43SPEAKER_02: So, and we have data, you know.
- 18:45SPEAKER_02: Microsoft is very good about data.
- 18:47SPEAKER_02: I cannot see anyone's personal information no matter how hard I've tried.
- 18:50SPEAKER_02: Sometimes I just want to email the person who is triggering this one bug over and over, and I just can't, and it's very frustrating.
- 18:57SPEAKER_02: I cannot see your source code as much as I want to, so that's reassuring.
- 19:01SPEAKER_02: But uh we'll look at that, we'll, you know, look at dashboards and we'll for hot reload, for example, like we wanted um the amount of time of a hot reload session to go up.
- 19:10SPEAKER_02: So we wanted to support more times of more edits so that you had to stop less.
- 19:14SPEAKER_02: And so we watched that number pretty closely for a while while we were working on that.
- 19:18SPEAKER_03: Excellent.
- 19:18SPEAKER_02: Yeah.
- 19:19SPEAKER_03: So yeah, it's it's important then to give good feedback.
- 19:22SPEAKER_02: Yes.
- 19:22SPEAKER_03: So you hear what's most important.
- 19:24SPEAKER_02: Yes.
- 19:25SPEAKER_03: Because as you said, there's there's so many things you could do.
- 19:27SPEAKER_03: So what what's most important?
- 19:29SPEAKER_03: Excellent.
- 19:30SPEAKER_03: I want to circle back to something you mentioned earlier, which is Blazor Hybrid.
- 19:33SPEAKER_02: Yeah.
- 19:33SPEAKER_03: Um, can you talk more about that experience compared to just Railer.NET Maui?
- 19:38SPEAKER_02: Yeah.
- 19:38SPEAKER_02: So Blazor Hybrid was kind of born out of this feedback actually that the Blazor team was getting a lot, where they wanted customers using Blazor really needed a desktop app or an offline scenario or just a lightweight way to have the Blazor app working when the computer all of a sudden is in the truck for the field agent and they don't have their hotspot anymore, right?
- 20:01SPEAKER_02: Um, and so we were like, well, you know, we could put peanut butter and some jelly together and we can make them hmm, interesting.
- 20:08SPEAKER_02: And so that's kind of where it started.
- 20:10SPEAKER_02: It also works for mobile, which is great.
- 20:13SPEAKER_02: But really, what Blazor Hybrid does is it just takes the folks who want who are web developers who are Blazor developers, who have Blazor and Razor files, it makes it really easy for you to translate those experiences to a client app.
- 20:30SPEAKER_02: So we say like mobile or desktop is client platforms.
- 20:34SPEAKER_02: Um it makes it easy for you to do that without having to learn something new.
- 20:38SPEAKER_02: It also makes it really easy the way that we've seen it used a lot, is for people to build component libraries used across both their web and their mobile apps, so that your developer team is using the same stuff.
- 20:49SPEAKER_02: So your branding is the same, or if you have a web portal that's different than your mobile app, but you know, uses a lot of the same bits and pieces, you can just take those little Blazor components over.
- 20:58SPEAKER_02: And so it's caught on really well.
- 21:00SPEAKER_02: Um, we kind of threw it out there, like, we don't know if this will land, but you know, we can do it, we want to do something like it.
- 21:06SPEAKER_02: And it really took off.
- 21:08SPEAKER_02: So it's been cool to watch.
- 21:10SPEAKER_02: Um, I get the question a lot: will Maui target the web at some point?
- 21:14SPEAKER_02: I don't know.
- 21:15SPEAKER_02: Again, it's one of those things that sure, like one day, if I have all the resources in the world and they let me do whatever I want, absolutely.
- 21:22SPEAKER_02: Um, I'm not sure when we would get around to that kind of thing, but the Blazor to desktop translated really well, Blazor to Maui.
- 21:30SPEAKER_02: And so we definitely have our eye on if the other way would be useful.
- 21:34SPEAKER_02: Um there's all sorts of challenges with all that stuff though.
- 21:37SPEAKER_02: So we'll see.
- 21:38SPEAKER_02: Yeah.
- 21:38SPEAKER_03: Now just to be clear here, when you're using a Blazor hybrid app, you have access to everything Maui does, correct?
- 21:45SPEAKER_03: Yes.
- 21:45SPEAKER_03: Okay.
- 21:46SPEAKER_02: Yeah.
- 21:46SPEAKER_02: So it's literally just another Maui control, is the Blazor WebView.
- 21:50SPEAKER_02: And you can reference your library or component or your page or whatever, your Razor file.
- 21:55SPEAKER_02: And it just kind of loads up in your XAML or your C sharp.
- 21:57SPEAKER_02: Um, you can also, you know, pass data, but Between the two very seamlessly.
- 22:01SPEAKER_02: You don't have to pass anything, it just has all the data.
- 22:04SPEAKER_02: So if you have things in your Blazor component, like you're iterating a counter, and then you also have that counter in like the taskbar on Windows, that will stay updated, right?
- 22:13SPEAKER_02: That just works.
- 22:14SPEAKER_02: So yeah.
- 22:15SPEAKER_03: Excellent.
- 22:15SPEAKER_02: Yeah, it's really cool.
- 22:17SPEAKER_03: So is there any kind of advice you would give for a newer Maui developer just getting started, or things they should find, resources they should go to that you provide or that they should know about?
- 22:29SPEAKER_02: Yeah, learn.microsoft.com is a good starting point for pretty much everything.
- 22:34SPEAKER_02: We have different types of walkthroughs.
- 22:35SPEAKER_02: We have like self-guided ones, we have video series, we have a click-through kind of learn as you go like course type thing with different modules.
- 22:45SPEAKER_02: We also have an amazing community.
- 22:48SPEAKER_02: So I have seen a lot of um our customers and people who build like packages that ship in our community and people who write a lot of blogs.
- 22:56SPEAKER_02: Like they're very accessible on the internet.
- 22:58SPEAKER_02: You can reach out to people and ask them questions, and they're generally really nice about responding.
- 23:03SPEAKER_02: We have uh a community stand-up the first Thursday of every month where we'll go through some of the more popular blogs from that month, some of the more popular like PRs and libraries that people have shipped out.
- 23:13SPEAKER_02: So that's a good way just to get exposure to who's in the community and what's going on.
- 23:17SPEAKER_02: And that's really fun.
- 23:18SPEAKER_02: We also usually have like a demo or something random on there.
- 23:20SPEAKER_03: Um that's on YouTube?
- 23:22SPEAKER_02: Yes, Sunday.
- 23:22SPEAKER_02: It's on YouTube and the Visual Studio Twitch.
- 23:25SPEAKER_03: Okay.
- 23:25SPEAKER_02: So if you follow the dot net Twitter, you will see the link to it.
- 23:27SPEAKER_02: I think live dot dot net.
- 23:30SPEAKER_02: Live period.peri.net.
- 23:32SPEAKER_03: Excellent.
- 23:33SPEAKER_02: Is your your website for all that.
- 23:35SPEAKER_02: Um but there's a lot of different ways.
- 23:36SPEAKER_02: It really depends what you like.
- 23:38SPEAKER_02: We have a lot of people who make great YouTube videos now.
- 23:41SPEAKER_02: Um we are working on some kind of like in IDE.
- 23:45SPEAKER_02: Like, can we give you a walkthrough that just pops right up?
- 23:48SPEAKER_02: That would be nice.
- 23:48SPEAKER_02: I don't know.
- 23:49SPEAKER_03: That'd be great.
- 23:50SPEAKER_02: Maybe one day, yeah.
- 23:51SPEAKER_02: Um, but it's it's pretty easy to get started.
- 23:54SPEAKER_02: Just download Visual Studio, it's free for students and for community.
- 23:57SPEAKER_02: And if your company makes under a certain amount of money, yeah, a million dollars.
- 24:00SPEAKER_02: Yeah, and free for personal use too.
- 24:02SPEAKER_02: So you can just check it off and we install everything for you.
- 24:06SPEAKER_03: That's great.
- 24:07SPEAKER_03: So I got a question for you now.
- 24:09SPEAKER_03: This is more broad, not just Maui.
- 24:11SPEAKER_03: Um, but think of a person who's kind of starting out in development.
- 24:16SPEAKER_03: What advice would you have loved to have had back when you were starting out that you would love to give someone else?
- 24:22SPEAKER_02: Oh my goodness.
- 24:23SPEAKER_02: Uh that nobody knows things off the top of their heads.
- 24:27SPEAKER_02: Like, it is okay to look things up on the internet.
- 24:29SPEAKER_02: You're so conditioned when you come out of college to not Google things or bing things, or now in this AI world, oh my gosh.
- 24:35SPEAKER_02: That's like a whole other spin I didn't even think of when I started this answer.
- 24:38SPEAKER_02: But like, I I look things up all the time.
- 24:41SPEAKER_02: The developers I work with look things up all the time.
- 24:44SPEAKER_02: It is totally okay to be like, how to iterate over a string.
- 24:48SPEAKER_02: Like, that's normal.
- 24:49SPEAKER_02: That's what people do.
- 24:50SPEAKER_02: Don't feel like an idiot because you do that.
- 24:52SPEAKER_02: And as all of my friends who had gotten to software started to realize this at the same time, we were like, Do you do this?
- 24:58SPEAKER_02: Do you do this?
- 24:59SPEAKER_02: Oh my god, you do oh my god, I'm not an idiot.
- 25:01SPEAKER_02: I'm not an idiot.
- 25:02SPEAKER_02: Like, you just have this horrible imposter syndrome where you're like, these people just know things.
- 25:06SPEAKER_02: They don't, they have the internet, like use it.
- 25:09SPEAKER_02: That's what it's for.
- 25:11SPEAKER_02: Um, that and like if coding's your hobby, cool.
- 25:16SPEAKER_02: There's a lot of people who love to code in their free time.
- 25:19SPEAKER_02: If that's not you, that's also fine.
- 25:20SPEAKER_02: Especially on the.NET team where we have all these amazing people who have like been around in the community forever.
- 25:25SPEAKER_02: I was like, I don't have a library with three million downloads.
- 25:28SPEAKER_02: Like, what am I doing wrong with my life?
- 25:30SPEAKER_02: And at a certain point I realized, like, if everybody on the team was like that, none of us would be able to relate to people who aren't like that.
- 25:38SPEAKER_02: And it's good to it's good to not do the same thing everyone else is doing.
- 25:42SPEAKER_02: It's fine.
- 25:43SPEAKER_02: But man, now that people have AI, this is great.
- 25:46SPEAKER_03: It's wonderful.
- 25:48SPEAKER_03: It's wonderful.
- 25:49SPEAKER_03: I I appreciate that.
- 25:50SPEAKER_03: I I think that that's uh that's a big deal, is yeah, knowing that you know there's other people like you.
- 25:55SPEAKER_03: Yes.
- 25:56SPEAKER_03: Not just, you know, you're not alone, you're not um an idiot.
- 25:59SPEAKER_02: Yeah, exactly.
- 26:00SPEAKER_02: We're all idiots.
- 26:01SPEAKER_02: Yeah, no, I mean it's it's okay to look things up.
- 26:04SPEAKER_02: Nobody's gonna slap you on the wrist.
- 26:05SPEAKER_02: Don't copy things that don't have an open source license.
- 26:08SPEAKER_02: That's a bad idea.
- 26:09SPEAKER_02: Like follow the law, but you don't have to memorize how C sharp looks.
- 26:13SPEAKER_02: That's crazy.
- 26:14SPEAKER_02: Use that brain space for other things.
- 26:16SPEAKER_03: Absolutely.
- 26:17SPEAKER_02: Yeah.
- 26:18SPEAKER_03: So I I appreciate you being here.
- 26:19SPEAKER_03: Thanks for jumping in.
- 26:21SPEAKER_03: Thanks for being on Dev Question Podcast.
- 26:23SPEAKER_03: I appreciate your um contribution to the community and helping us make things better.
- 26:27SPEAKER_03: Awesome.
- 26:28SPEAKER_02: Thank you for the time and happy build.
- 26:30SPEAKER_02: Enjoy the rest of it.
- 26:30SPEAKER_03: Yes, thank you.
- 26:31SPEAKER_03: And thank you for tuning in.
- 26:33SPEAKER_03: Um, thanks for coming to the special episode of Dev Questions.
- 26:37SPEAKER_03: And as always, I am Tim Corey.
- 26:39SPEAKER_00: Thank you for joining us for this episode of Dev Questions.
- 26:42SPEAKER_00: Tim is committed to making it easier for you to become a developer.
- 26:45SPEAKER_00: If you would like to help make more content like this possible, please like, subscribe, rate, and share Dev Questions.
- 26:53SPEAKER_00: You can also send your questions to questions at IamTimcore.com.
- 26:58SPEAKER_00: Until next time, remember, you are too smart and your time too valuable to waste it making all the mistakes Tim did.
- 27:05SPEAKER_00: When you're ready to learn to think and code like a professional developer, head over to Iam Timcorey.com and enroll in a course.