Innovating with .NET Core and Blazor Across Platforms with Jeff Fritz - NET 214
In this exciting episode of Top End Devs, we dive into the world of .NET development with none other than Jeff Fritz, a recognized community manager at Microsoft. Hosted by Sean Clabo and co-hosted by Caleb Wells and Wailu, this episode explores Jeff's impressive journey from working in the finance and pharmaceutical industries to becoming a pivotal figure in the tech community. Jeff shares his insights on ASP.NET MVC, his experiences with Telerik, and his current role in promoting .NET and Visual Studio at Microsoft.
Hosted by:
Shawn Clabough
Show Notes
In this exciting episode of Top End Devs, we dive into the world of .NET development with none other than Jeff Fritz, a recognized community manager at Microsoft. Hosted by Sean Clabo and co-hosted by Caleb Wells and Wailu, this episode explores Jeff's impressive journey from working in the finance and pharmaceutical industries to becoming a pivotal figure in the tech community. Jeff shares his insights on ASP.NET MVC, his experiences with Telerik, and his current role in promoting .NET and Visual Studio at Microsoft. We also explore the revolutionary world of Blazor and its applications, discuss the growing popularity of live coding on platforms like Twitch, and examine how .NET Core is expanding the boundaries of development across multiple platforms. Whether you're a seasoned developer or just getting started, this episode is packed with valuable insights and practical advice to elevate your development skills. Tune in, and get ready for a deep dive into the cutting-edge world of .NET with Jeff Fritz!
Transcript
Shawn Clabo [00:00:06]:
Hello, and welcome to another episode of adventuresin.net. I'm Sean Clabo, your host. And with me today are your cohost, Caleb Wells. Hey, Caleb.
Caleb Wells [00:00:14]:
Hey, yo. Hey. How's it going?
Shawn Clabo [00:00:16]:
Good. How's it in New Orleans?
Caleb Wells [00:00:18]:
No comment. No. Right? We have the COVID, we have, protests, and we have a tropical storm, about to hit.
Shawn Clabo [00:00:31]:
Okay. Okay. Yep. That's enough. We're good with that. Hey, Anne. We also have Wailu from Australia.
Wailu [00:00:38]:
How you doing?
Jeff Fritz [00:00:38]:
How are
Caleb Wells [00:00:39]:
you doing?
Shawn Clabo [00:00:39]:
Hey. How's it down there? Winter's coming. Right?
Wailu [00:00:42]:
Oh, yeah. It's cold right now. It's it's early morning and it's it's cold. So
Shawn Clabo [00:00:49]:
Nice. Nice. Nice. So today on the show, we have somebody, I think a lot of people know and probably love them. I think you love them. Yep. His name is Jeff Fritz. Hey, Jeff.
Shawn Clabo [00:01:00]:
How are you doing?
Jeff Fritz [00:01:00]:
Hey. Thanks so much for having me, guys. It's great to be here.
Caleb Wells [00:01:03]:
Oh, great for joining.
Shawn Clabo [00:01:04]:
Great to have you. You know what? I watched a lot of the shows that you're on and know somewhat about you, but I don't know how it really started with you. Give us kind of the intro of who is Jeff Ritz, how he got started, and where he's at now.
Jeff Fritz [00:01:18]:
Oh my gosh. So, hi. My name is Jeff. I'm a Virgo. I like long walks on the beach. I'm about 20 years into my development career here. And, I I'm in the Philadelphia area. I I spent some time with finance company, pharmaceutical companies.
Jeff Fritz [00:01:34]:
I went to TechEd for a few years. I went to work for a couple startups and while I was at TechEd, I was very interested in this ASP Net MVC technology that they were talking about and trying to get folks excited about. And, I got interested in speaking at my local user group and teaching other folks about it as ASP dot NET MVC was becoming a thing. And I I very much at that point started my speaking journey, my local user group, and and a couple of the ones in the region. I I went to TechEd again, and there was this speaker idol thing. Right? That pop idol take off. Right? American Idol, pop idol. And I was I I said, hey, I can I can do that? I reached out to the organizers, and I I got a spot speaking.
Jeff Fritz [00:02:17]:
And I I didn't win, but I was noticed and I got picked up by Telerik, and I was a developer advocate for them talking about ASP dot NET for a few years when I was showing up at all the same events that the ASP dot NET team was at. And they kept saying, you're talking about our product better than us. Why don't you come do that for us? And I got picked up by Microsoft, and now I'm a community manager for Microsoft specializing in dotnet, Visual Studio, getting folks interested and excited about about all of the Visual Studio family. Very interested in dotnet, dotnetcore, Blazor, getting folks onto Azure, if that's where they're looking to go, and and doing that outreach to place folks at events and and engage with the live video community. I think there's really something happening with live video particularly right now. I mean, Caleb, you mentioned about the pandemic. Everybody's at home. How do we Right.
Jeff Fritz [00:03:13]:
How do we have a conference? How do we have learning opportunities? And where I was getting involved with live video on Twitch back in 2017, I was really excited. I I love the the platform. I love being able to to communicate and talk directly to an audience, and and it's worked out very well for me. I'm I spend a lot of time on Twitch and meeting with developers, talking, and and sharing common experiences because it is a social media platform. So we've been doing a number of virtual events over there, whether it's dotnetconf. We we ran a section a segment of Microsoft build on Twitch, in May May 2020. That was a tremendous experiment for that event, and, we're looking forward to more experiments bringing more great Microsoft content to that interactive platform.
Shawn Clabo [00:04:01]:
Yeah. It seems like more and more of our, guests that we've had on recently have been live coders. So, like, Mark Miller. Mark Miller, we had him on. He's doing it all the time.
Jeff Fritz [00:04:10]:
Oh, yeah.
Shawn Clabo [00:04:10]:
So it really, really is taking off.
Caleb Wells [00:04:13]:
The LiveCoders team, you guys have, like, a 100 people on Twitch, right, that are part of that or more. It's a large community.
Jeff Fritz [00:04:20]:
It is. It's a very large community. The LiveCoders team is a 150 folks that that write code, that work with hardware, do some 3 d printing, different technologies that they're sharing on Twitch and openly discussing with their audience. How can how can we learn more about things together, work on a project together, dig into some IoT or or in my case, .net web applications and answer those questions that folks have. When you go on to a Stack Overflow, right, you you have a question for you throw out there, hey, I don't know how to get people to log in to my website. How do you do this? You're inevitably gonna get those first couple of comments that come through. Didn't you search already for this question? You know, what you know, I need more details. And it almost feels rude on some of these boards.
Jeff Fritz [00:05:06]:
And Stack Overflow had a bit of a politeness problem for a while there, and they're working on it. They've cleaned it up a bit. But when you can go on Twitch or or YouTube, right, but I particularly like Twitch because anybody can go in there, anybody can tune in and see somebody broadcasting it. When you see that smiling face, that's happy to answer your question and work around and show some of the cool things they're doing in a very almost like pair programming environment. It's a great experience for everybody, and folks walk away happy from those types of developer radio experiences.
Wailu [00:05:44]:
You you mentioned that, you know, you mentioned about the pandemic. I was just wondering, like, how things have changed. So have you seen your user base increase and things like that? Because everyone's working from home.
Jeff Fritz [00:05:54]:
Absolutely. We've seen the user base the viewer base improve significantly. Across the board, Twitch has seen an increase between 30 40 percent of viewership in the past 3 months. So for me as a broadcaster, I love seeing that. I love hearing that. I'm I'm seeing my viewership on an uptick. When you can host a show and and you go on, you start broadcasting, and you can see a couple thousand people watch over the duration of of a few hours that you're talking to folks and working on a project. It's almost like hosting your own conference at that point,
Wailu [00:06:27]:
which Yeah.
Jeff Fritz [00:06:29]:
Is encouraging for for me as a broadcaster because now I know I'm reaching folks. I know that I'm able to hear from them and get that important feedback whether it's for the Visual Studio team or dot net team, and and seeing, well, maybe we're missing some documentation or there's a feature that doesn't behave quite right or we need better samples to demonstrate some of these things. That interaction is just huge to help shape the story for where those products are going to go.
Caleb Wells [00:06:58]:
I was, recently watching one of your Twitch streams. You were trying to spin up a a new project doing it through Visual Studio, and it wasn't working like you expected. And I think, actually, one of your people in chat was like, oh, you have to go do that to the command line interface. And you're like, well, that's not right. You're like, okay. We're gonna have to put put, put a ticket in on this because, you know, we need to have it both ways and be consistent. I guess it's similar to to what Mark is doing. Right? You're you're dogfooding your own software and applications and, improving them as as you go.
Jeff Fritz [00:07:32]:
Absolutely. It it's extremely powerful to to be able to go back and say, yeah. We ran the preview version of so and so framework or application, and here's the gaps that we ran into. Oh, and here's a video time stamp of when we ran into those and the feedback that we saw from chat from some of our folks that are commonly interacting here. When the team has that level of evidence around a feature gap or a bug, it really makes it easy for them to justify, oh, yeah. We need to fix this. We need to change how this behaves, improve when they can see it and they can see the feedback immediately.
Caleb Wells [00:08:12]:
So the last few months, I believe you've been spending a a good deal of time on dotnetcoreandblazer and how you can use them anywhere. Right? Oh my gosh. Can you speak to that a little bit?
Jeff Fritz [00:08:26]:
I I've really latched on to this idea of theme months. There's another streamer who goes by the name Eleface who runs with this idea of theme months throughout the year on Twitch, and and she's got different game theme months. But I I said to myself, well, how can we do that with technology? And and, you know, take her learnings and and put my spin on it, and and still pay homage to what she does. And and I said, well, let's do minimal. Right? What folks look at dot net that aren't that aren't paying attention, that aren't paying attention is the wrong phrase. That that haven't been exposed to dot net Core yet. And they're used to well, it's dotnetframework, you need Visual Studio, you need to be on Windows. And if you don't have Microsoft things x, y, and z, well, you can't be a dotnet developer.
Jeff Fritz [00:09:16]:
And and there were some particular threads on on Twitter in February that that really struck me as these folks don't know what we can do now with dot NET Core. They don't know you don't have to be on Visual Studio or on Windows. You can go anywhere. So I said, well let's let's do this all in Linux and we'll call it and we'll do it all in the command line. We use vi, we'll call it minimal March. So bare minimum, we're going to take everything down to just the command line and and and VI. Maybe we'll drop in Visual Studio Code when we get in in Linux just to show that, hey, you can still use that here. But the idea being minimal install, just the SDK, what can we do? And we built some some Blazor features and not some features for a framework based on Blazor throughout the month.
Jeff Fritz [00:10:08]:
Now, that's one thing to bring up a Linux VM and have it running on on our workstation and And like many developers, I've got a nice powerful workstation with 32 giga RAM and I7 Processor, and it works great. But that's not minimal. You know what I mean, guys? Let's face it. The kids in the schools, right? If you're a kid in high school here in the States, they get minimal. If they get a kid, they get a machine. Right? So Caleb, I took it home myself one night. I said I'm gonna drive out to Walmart, and I went out to my local Walmart and I said I'm gonna give myself a budget of $200, and I'm gonna pick up a Chromebook. And whatever Chromebook they have because that's minimal.
Jeff Fritz [00:10:45]:
Right? That's what the typical somebody who's not a developer and just needs to get to web browsing, check some emails, doesn't want a tablet, wants wants a little more, I picked up a Chromebook. So I picked up an HP Chromebook and I figured this is minimal because it doesn't even have the SDK on it. It doesn't even have development software on it. Right? Nothing like that. It's literally just a browser OS. Right, guys?
Caleb Wells [00:11:11]:
Right. I'm like, how are you gonna go about that? Yeah. I'm curious.
Jeff Fritz [00:11:14]:
Right. So it does have a Linux terminal on it because it's running inside of a container. So I I grabbed the SDK, the dotnet SDK, put it down on the machine, and I was able to spin up my my code and I was able to continue working. Now, I mean, it's got 2 gig of RAM. It's running on an I3. So it wasn't screaming fast, but we were able to do it. We were able to build Blazor and ASP NET Core applications on a Chromebook. Fantastic.
Jeff Fritz [00:11:43]:
Right? We we've kind of shown that you can go any computing device and really do that. Really. Right? If the device has a keyboard and a screen, we can do these things. And and I really like working with Blazor on stream. It's it really has a good feel for me. Right? So I in in May, May I've I've been doing traditional, I've called it May is for Macs and showing look we can do all this on a Mac. So I've got Visual Studio for Mac, Visual Studio Code that I can use there, and we continue building and doing things with Blazor. And and it's a lot of fun to to be able to show that we really can do dot net anywhere.
Jeff Fritz [00:12:19]:
But can I share with you guys an idea that I'm thinking about coming off of some of the build announcements? I wanna get your feet can I get your feedback on this?
Caleb Wells [00:12:27]:
Absolutely.
Jeff Fritz [00:12:28]:
It's one thing to say, look, I can build with something that looks like a laptop. Alright. It's underpowered. It's the Chromebook. Or I've got a MacBook Air. Right? Of course, I've got a Lenovo, whatever, Surface Book, so and so. Because we have Codespaces now, what if we got an in, a Kindle Fire tablet? Because that has a browser on it. Caleb knows where we're going.
Caleb Wells [00:12:50]:
Look at that over there.
Jeff Fritz [00:12:52]:
What if we got a Kindle Fire tablet and set up the streaming rig out on the cloud somewhere in Azure and I live outside Philadelphia. Take phone take a Bluetooth keyboard just so I have a keyboard and park on the steps to the Philadelphia Art Museum and stream from there with only a Kindle Fire as my computing device and show that I can still do .netdevelopment just from anywhere literally with nothing? My broadcast gear, but just a Kindle Fire. What do you think?
Caleb Wells [00:13:26]:
That would be a monumentous feat. Right? This is like Monumental feat. Yeah. Yeah. That's that would be cool.
Jeff Fritz [00:13:37]:
There's something about access when I say accessibility, the access that folks have to the technology. It's one thing to say, well, we wanna make sure that that folks who don't don't have right? They they have some vision challenge. They have some some auditory challenges. They might not be able to compute the same way as folks that have all of their senses. But those that don't have access to the the type of gear that that developers here in the States, Australia, the first world countries have access to, those when you only have a Kindle Fire and you're somewhere where that doesn't have great network connection, what can you do? And to to the best of my capabilities and go somewhere that's scenic like the like a museum of art, my my city, I think that might be a little bit interesting, a little bit of a challenge to do and and stream for an hour or 2 to show that you can do it.
Shawn Clabo [00:14:31]:
Other than performance, do you think there's any other limitations that you would have? Do you have something like that?
Jeff Fritz [00:14:36]:
That's a that's a great question, Sean. I well, of course, screen size. Right? When we think about the little Kindle Fire tablet, right? It's it's not the the 11 inch of of an iPad, right? It's like 8 inches or something like that?
Shawn Clabo [00:14:49]:
It's a model. Yeah. 7, 10, 11. Yeah.
Jeff Fritz [00:14:53]:
Yeah. So I think I think screen size is gonna be a big one to start with. It doesn't have a keyboard. Right? So I could either be right with the the touchscreen, but I've got a couple of Bluetooth keyboards that I think would work with it. I I don't even have the device yet. I'm I'm kind of feeling it out. I'm gonna go order the device and figure out how I can make this work. But the idea of dot net anywhere, anybody can do it Mhmm.
Jeff Fritz [00:15:19]:
In in my mind is very powerful for our community. It it it says it's an open door. It it's right? When I think back 10 years ago to where dot net was in 2010, you needed to buy Visual Studio 2010 if you wanted to do dot net development. There was no express edition community edition. They were just starting to open those doors and talk about it. But to be able to take and get .net development anywhere, any device, literally anywhere in in regardless of your network connection or or how much money you have to buy, it it removes a bit of gatekeeping that was actually in place when you think about it from 10 years ago. And and that access to the technology is such a powerful thing to be able to give to everybody who wants to to be a developer.
Shawn Clabo [00:16:11]:
They also have it where with Samsung phones, you can hook up a Bluetooth keyboard and an external monitor. Yeah. There you go. Get bigger resolution. And I think a lot of more a lot more people might have that's sticking in their pocket that they could actually do that anywhere.
Caleb Wells [00:16:29]:
Alright. And and if if you root it, you've you've got access to Linux right there.
Jeff Fritz [00:16:35]:
Oh, yeah. Well, what about the
Wailu [00:16:36]:
fact that, you're running on an ARM processor? Have you found that kind of, because I know that the Visual Studio and stuff, that that that doesn't actually work on on ARM processors.
Jeff Fritz [00:16:46]:
You're right. Visual Studio won't run on ARM, but you can run the SDK on ARM. There are there is a flavor of it that does run on an ARM processor. It will give you the the framework dependent. Right? Framework dependent? Runtime dependent versions of your x, your binaries when you generate. So when you take those and copy it over to your Mac, copy it over to Linux, as long as the the runtime for those machines is available, it should still work. Right?
Wailu [00:17:14]:
Okay. And the and the like all the COIs and what stuff should run on
Jeff Fritz [00:17:18]:
on our Yeah. Yeah. It should run. Let's see if it works.
Wailu [00:17:22]:
Yeah. It would be interesting. Right?
Jeff Fritz [00:17:24]:
But right. The the the interesting thing about running as strong was suggesting on a, on on a phone or running on Kindle Fire is if if you use Visual Studio Codespaces, well, now you're actually in the cloud. You're just using the browser at that point. Yeah. Right. So you'd be able to get away with both. I'm not compiling locally. It's compiling somewhere else.
Caleb Wells [00:17:46]:
You know, we had, Daniel Roth on last year, and and we talked a lot about Blazor. A lot has happened, since then with Blazor, and it seems like that, for you, that that's a key component to what you're doing right now. Right? You're you're saying, yes. I can show you the dot net core runs anywhere, but but Blazor really runs anywhere these days.
Jeff Fritz [00:18:09]:
The Blazor as a as the next generation user interface framework that was right, first RTM with dotnetcore3 back in September during dotnetconf2019. Tremendous framework that gave us back that concept of components that we can embed in pages, that we can embed inside of other components, and and compose our user interfaces again. MVC, Razor Pages took us back to write all your code, write all of your, markup in order to drive your web user interface. And for some folks, they really like that. For other folks who are a little bit more, a little bit, wanna do a little bit more rapid application development, having that component driven framework like web forms had back in the day is extremely valuable. And this is some of the desire that folks have to use things like Angular and Vue and React where you do have components that you can reuse. Somebody else wrote a component for a progress bar or a grid that you can consume and reuse inside of your application. Well, that's great, but for some folks, they don't wanna have to go and relearn JavaScript to go use all of these different frameworks and and certainly keep up with the pace of change in some of those frameworks.
Jeff Fritz [00:19:27]:
So when we when we think about Blazor when it was just server side, to have those components that you could drop in and use and get that that very small footprint for delivering content across the network using signal or channels, that's pretty good with just, Blazor Server. But now now we're 3 weeks removed from build. And here, build 2020, we had the RTM, the release to manufacturers or RTW, release to web, I guess we would call it now, for for Blazor WebAssembly. So that was stamped version 3.2, and it's a current release. That means that as updates are delivered for it, minor version updates, you're kind of required to do the update in order to maintain support. But you've got support. You have support for Blazor running with WebAssembly in the browser, and it runs this exact same component model as you have with Blazor Server. So what we really like about that now is you've got you've got components that run and compile with whether it's dot net core on the server or it's mono inside the browser.
Jeff Fritz [00:20:39]:
The same code runs wherever you need it to. So I can deliver that Internet facing application that has very small network footprint that runs primarily on the server. Maybe I've got some, proprietary business logic that I want to run on the server, be isolated and protected, and have it run-in a validated system. Fantastic. You can do that and it'll deliver those very small bursts of content out to the out to the browser and the folks that are using your application. Or if you wanna have a great progressive web app, right, the PWA that'll run on somebody's mobile device. When they're on high speed network, they can download that Blazor WebAssembly app, have it all compiled and run and cached locally. So they don't need to be connected.
Jeff Fritz [00:21:29]:
They can have a very small connection back to the network because they've already installed the big application, the DLLs and things are running in the browser and local to the device. That to me feels like a much better much better delivery and management experience for a mobile application than having to go through the process of deploying to somebody's app store, waiting for validation, and then it gets updated and a notification to get to somebody's device, waiting, making sure it's installed and they're on the network and all the things. Oh, forget it. It's a progressive web app. You click the button. It verified it's the right version when it was on the network. You've got the latest bits. Next time you're back on the network, we're going to sync the data.
Jeff Fritz [00:22:12]:
It's all good. So we've got a couple of different models that we can go forward with with Blazor, and that's absolutely tremendous for us as dot NET developers to have. And now we're even seeing experiments where folks are saying, well, what if we took that Blazor concept and applied it to some of our Xamarin tools so that we can use Blazor to build mobile apps? And that's what we see with what they call the mobile blinding mobile there we go. I can't even say it right myself. The Mobile Bindings for Blazor. That's a mouthful. Folks were saying it's MBB. Those are that's the acronym.
Jeff Fritz [00:22:45]:
MBB. Okay. But it's the Mobile Bindings for Blazor, and it's an experiment just like Blazor initially was. What do people think of this? Does it make sense? Is it a a good technology to explore? And there's more that we can do there to to tinker and and get some feedback. It's not it's not supported yet. It's and and this is kind of the advantage that we have with open source technologies. We can throw an experiment out there and say, well, what do you think? And it's something we're trying out and here's the engineers iterating on it. There's 1 or 2 people that are investigating and exploring.
Jeff Fritz [00:23:18]:
And those people that are enthusiasts, that are excited about that type of technology can engage and see exactly the code that is changing. See the roadmap going forward for the experiment, offer feedback, and at some point, make a proper decision. Does this work? Is this something that makes sense? When I say work, that's probably the wrong choice. Is this a a a good product for us to consider using further into the future? Or is it pretty much an experiment that has run its course and you know what, it it's not gonna solve problems in a way that makes us more productive, more effective. Let's let's park it and we'll move on and try something else. And that that sense of experimentation is something that I think a lot of us as developers can really sink our teeth into and tinker. Try things out, experiment. Right? Everybody likes to try something new.
Jeff Fritz [00:24:08]:
And if you can experiment with something and you find that it is successful for you, let's encourage that, let's keep growing. And I think that's something that that we've tried and learned from the the Blazor experiment over the last 3 years and and we can come away now and say, yeah, that worked out pretty good. Let's let's see where we go from here. And looking forward, we're gonna see a version of Blazor that gets shipped with dot net 5 in the fall. Okay. Let's let's see the updates and the improvements that come with that version, and there's gonna be a version that ships with dot net 6 next year. Fantastic. Let's see where the team goes with this because the the more feedback, the more applications that we see built by developers using the technology will help shape that direction in the growth pattern for for the technology, for the product.
Shawn Clabo [00:24:54]:
I've been really excited about Blazor ever since it's first come out because, you know, I've been a long time web forms developer. So it seemed very, very comfortable for me, using that model of development and with the components. And that's kinda why I also do some Angular development because everything's based upon components. The one downside I had on the server side was always the if you make a change to the server, then you lose the state for all the connected users. So I'm even more excited about, you know, web assembly versions.
Jeff Fritz [00:25:24]:
So what we found is that, right, just like we did with with web forms, there are ways to persist state outside of the the in memory process. So if you aren't just relying on the in memory storage and persistence of some of your class scope variables, if you do kick them over to a database store or somewhere else that it is out of process from the web server. Now actually things get you a little bit more interesting, Sean. Just like just like when you throw your your session and your app state management for a web forms application over into a database, Now round robin capabilities for load balancing become available to you because it doesn't matter what server you connect to. You're gonna fetch some of that state data from database server or something and do those interactions, which okay. That's you know what? That's terrific to have that as a backup. Access the stuff in memory first if it's there. And if you lose it, try and go get it from the database, in the background.
Shawn Clabo [00:26:26]:
So When it has to differ do a diff on the on the views, it can do that outside of the process.
Jeff Fritz [00:26:33]:
You won't necessarily get the diff of the views, but you'll get this you'll be able to get the state back, repaint the screen, and reinitialize it.
Shawn Clabo [00:26:41]:
Okay. Perfect. Send a complete new view down the pipe. Okay.
Jeff Fritz [00:26:45]:
Yeah. Which is better than, oops, sorry. We lost your connection. We forgot where you are. You're done.
Shawn Clabo [00:26:50]:
Right. Exactly. Yeah.
Wailu [00:26:52]:
I was gonna say, what about I think WebAssembly is actually what I'm really excited about. So what's the browser compatibility on that? Like, is it basically supported in all major browsers these days, like, even IE?
Jeff Fritz [00:27:01]:
Blazor WebAssembly runs on top of that WebAssembly technology that that is part of the HTML 5 spec. And thanks to our friends Spectre and Meltdown, everybody remembers those processor flaws how many years ago now.
Caleb Wells [00:27:14]:
Right.
Jeff Fritz [00:27:15]:
They they forced everybody to up update your operating system, update your browser, and consequently, everybody got a new version that supports HTML 5. Now if you are still running a patched version of IE, WebAssembly doesn't run on on IE. They just never built support for it. But Blazor Server will run on IE. So this is where you if you do need to support an out of support browser, you can technically do it by using Blazor Server technology, which then comes back to kind of like Sean was saying, I can build components that target either. Right? Because they're they're just razor components.
Caleb Wells [00:28:00]:
Mhmm.
Jeff Fritz [00:28:00]:
And I can have a server shell version that that runs and do alternate rendering between that Blazor server and Blazor WebAssembly and route appropriately if folks don't have capability. Well, we're gonna just like we used to do back in the day. Right? You'd go to m.mywebsite.com. Right? If you had a modem. You could do something similar. Well, I need you to send you over to the server version because you you don't have enough network bandwidth. You don't have support for web assembly. You could do that level of interaction.
Jeff Fritz [00:28:31]:
Right? And the code would be the
Wailu [00:28:32]:
same as that, wouldn't it really?
Jeff Fritz [00:28:34]:
Exactly. Exactly. So this is, right, this is kind of that benefit. Build 1 shared component library and and just build those 2 shim frameworks, shim applications. One that is the web assembly, one that is the Blazor server, and you could put effectively write a check, a browser capabilities check, upfront and determine whether to let them in or to web assembly or ship over to a Blazor server. It's a very interesting and compelling architecture. I'm I'm looking for somebody that has a good write up of using this. I've I've done it a little bit myself, and it's it's not bad because you end up with 2 projects that actually reference and include the exact same content.
Jeff Fritz [00:29:18]:
And if you if you do it right because of how we can take our csproj or project files, you can actually point them at the same content on disk. The intel will share this content even though you're compiling up into this model or that model and still reference that same razor components library in both places. And it it does compile and run identically in both environments. Great. But, I would love to see somebody write up a couple blog posts about how they may have done something like this for their application. Do you think at
Wailu [00:29:51]:
a certain percentage of the people that would be interested in in Blaze, there would be people upgrading their their web forms app? And I guess a lot of them might their web forms app is very legacy. It might only run-in an old browser, you know? So
Jeff Fritz [00:30:02]:
Yeah. And, right, these are folks who haven't seen they haven't seen developing on a Mac. They haven't seen working with Linux containers. So this is where I kind of stepped into things back at what was it Ignite in 2019. I had a talk with Dan Roth. We were on stage, and we're talking about Blazor for web forms developers because, like like Sean was saying, it's very comfortable for folks who are web forms developers used to that component based environment to look at Blazor and say, this makes sense for me to go to not MVC or Razor Pages. So what's that mean? What how do we do that conversion? And Dan and I talked through that on at that event, and there's things that you end up refactoring.netstandard plays a really good role in this because I can take my business logic out of the web forms app, throw it into dotnetstandard, and it as a dotnetstandardclasslibrary. Continue to use it in web forms while I'm building that Blazor app around it.
Jeff Fritz [00:31:01]:
But what if what if we had components in Blazor that had the same same effect, the same name, the same capabilities as those stock controls that we got from ASP Net Web Forms. That's
Caleb Wells [00:31:15]:
right? Woo hoo. Right?
Shawn Clabo [00:31:19]:
I was at that talk that you guys that you and Daniel were given at at Ignite. So I just wanna let people know if they do have a chance, if they're at a conference online or in person, whenever that starts up again, do check out you or Daniel talking about Blazor. It's awesome.
Jeff Fritz [00:31:33]:
Yeah. I'm a huge fan of this. So, Sean, we took the next steps with that. We said, well, we know what the tags look like from ASP NET web controls. Let's just recreate them in Blazor and have them generate the exact same markup. So we we started this open source project called Blazor Web Forms Components, and the idea is they do the same thing. You you have to change your you have to change your markup slightly because you're you're going from that web forms flavor of markup. Right? The ASPX files, the ASCX files, and you have to get them now into razor, but I can still have tags that look pretty much the same.
Jeff Fritz [00:32:15]:
Right? I mean, if I've got an ASP repeater control, it's ASP colon repeater, and I've got a bunch of attributes there. Well, you can't really do the namespaces. But if I can just drop the ASP colon repeater and all the ASP colon in the repeater tag, and all of my code renders the same way that's inside of that. That's pretty compelling. That gets me like 90 some percent code reuse and we're almost done the first revision of these components that gives you that capability. So that you could lift an ASPX page, change it, rename it to a dot razor and change your markup so that it's it's razor flavor. And right, maybe we can get some text text manipulation tools to help with that actual conversion process. And I think I found a couple tools that will help with that.
Jeff Fritz [00:33:07]:
I'm I'm working on just a few more tweaks on those, and maybe in the next month, we'll have some demos that show a way that you can do this conversion real easy. We're we're really excited about what that means for for folks who want to do that upgrade. How do you do that migration? Because my gosh, some of these apps have been around since 2,001, 2,002. Mhmm. Like, they're older than my kids. These apps have been going to college. You know?
Shawn Clabo [00:33:37]:
It's like Yep. I've got some of those.
Jeff Fritz [00:33:39]:
Yeah. So So how how do we how do we give them new life? Extend the support life cycle on those. You still got support web for web forms. Without question, there's support for at least another 10 years if you've upgraded to dot net 4 8. Fantastic. But if you wanna take that web forms application, put it into a Docker container, start talking about Kubernetes, get into orchestration, maybe you want to use microservices. You you want to start taking advantage of the modern web, the modern things that are available. If we can give you that on ramp that gets you there, maybe you have to rewrite a small amount of code.
Jeff Fritz [00:34:16]:
You're gonna have to rewrite some code. But if we can minimize that amount of code you need to rewrite by making it portable and and get it into dotnetstandardlibrary, I think everybody wins.
Shawn Clabo [00:34:27]:
Okay. So I was thinking about the applications that I have there in in web forms and really deciding how do I get to the future. And, you know, I really wanted to go the the blazer route because of signal r and real time updates, things like that. The other option that I was gonna have was like a dot VVM.
Jeff Fritz [00:34:44]:
Oh, yeah.
Shawn Clabo [00:34:45]:
But but, in in they have a lot of components that are kind of a a swap out as well.
Jeff Fritz [00:34:50]:
Oh, yeah.
Shawn Clabo [00:34:51]:
But it doesn't really give you that that real time interaction of like Blazor does. So I was hoping for this really excites me about Blazor. So if this works, I'm I'm I'm all on board.
Jeff Fritz [00:35:02]:
It's a completely open source project. We've taken a number of great contributions from folks in the community. We have some some Microsoft engineers that are gonna put in some some work, adding a little bit of polish. We're we're adding documentation all the time to this. And and signal r is something that that is available for dot net framework also. Being able to use that with Blazor is a huge benefit whether it's running client side or server side in in WebAssembly or on your ASP NET server, and these components work in both places also. So if you do get your Web Forms application migrated, you could run it completely inside the browser as WebAssembly. So there's there's even some options there that folks haven't seen yet.
Jeff Fritz [00:35:44]:
They have it right. You're you're not exposed. You haven't even considered. Oh my gosh, this could this could all run-in the browser. And and when we think about some of the experiments and direction that they want to go with Blazor, experimenting with making desktop apps, making native apps using using Blazor, right? If you think about some of those those long time web forms apps, whether it's the accounting app, the inventory management app that that it seems like so many of us built back in the day and they're they're in and and running very well at different enterprises around the world. To be able to run that as a desktop app and have that immediate deployment from a server, the the update with data and being able to maintain the content very well is is very very exciting to be able to consider. And we're we're just at the beginning of this technology. So to hear the the consideration of folks who who've been maintaining an ASPX and a web forms application for years years years saying, okay, I wanna consider this and and be able to show this exciting direction where these many different technologies we can take that is, I I think, even more empowering for those folks to say, okay, I'm making the right choice because there's a lot of growth opportunities here that that mean we can do cool things with this application 4, 5, 10 years to come.
Shawn Clabo [00:37:07]:
I see one of the challenges is probably gonna be that since this is core only and my web forms is full framework, for me to do a bit you know, page by page migration, I'm gonna have to create multiple application pools, one core, one full framework, and then set up shared authentication between the 2. But it's all possible.
Jeff Fritz [00:37:29]:
It's so it's possible. I would also encourage you to take a look at taking taking the business logic behind your behind your web forms. Right? Let's make our web forms. Let's make our ASPX pages as dumb as possible. Right? Views should not have business logic in it. Right? Those ASPX pages, we were lulled into a false sense of security of putting inside that page load Right. Method. You know what I'm talking about.
Jeff Fritz [00:37:54]:
I see Caleb there
Caleb Wells [00:37:55]:
digging up in
Jeff Fritz [00:37:56]:
that page load handler. If not page on post back, then make a decision on this. If switch case and make the label green. Right? There's something in there. But if we can move that business logic into a class library, still reuse, still refer to it, still reuse it, and make that class library dot net standard, well now Sean, now your application your web forms application is just a user interface. It's it's not making decisions. It's doing a for loop over content to present or it's data binding back to a class that's being populated out of a dot net standard library, which if it was any other class library in dot net framework, you'd be like, oh yeah, this makes sense. But when it's dot net standard, now it's compatible with when you take it over to Blazor.
Jeff Fritz [00:38:43]:
And, yeah, you're right. You might have some shared authentication challenges as you start to bring up application pools that were that that are Blazor only. But if my goal is to have have a tool to get you migrated all in one shot over to Blazor once you do that initial refactoring of your application code. If we can get you 80 to 90% migrated, thinking about a a million lines of code in an application, that means you still have to rewrite 2 200,000 lines of code. Dear Lord. But if we can get it migrated, get it to a point of reuse, it's a heck of a lot better than trying to figure out re architect and move a 1,000,000 lines of code.
Caleb Wells [00:39:21]:
I've looked at your GitHub repo, which we'll add in the show notes, but your documentation is really good. Right? Thank you.
Jeff Fritz [00:39:28]:
I I always feel like when somebody says, I've been looking at your Git repo, it's like it's like that you're looking in my dirty bedroom. What the
Caleb Wells [00:39:34]:
heck is right there?
Jeff Fritz [00:39:36]:
But don't get
Caleb Wells [00:39:37]:
No. It's, right, that you you go through the steps. You even say up front. Hey. You know, we want this to be as applicable to Webform zaps as possible. Jurors may not be up front. You may have to make certain steps to get up there. But you're very thorough, and they're and I really I appreciate what what y'all are doing.
Caleb Wells [00:39:57]:
I don't I'm not managing a web forms app these days, thankfully.
Jeff Fritz [00:40:02]:
Congratulations. Well, Sean's jealous. I can see it right there in his face.
Caleb Wells [00:40:07]:
I I I am sort of managing a classic ASP one, but only when I absolutely have to.
Jeff Fritz [00:40:13]:
I I swallowed a toothpick. I'm sorry. What?
Caleb Wells [00:40:17]:
Our, our boss built his company on classic ASP
Jeff Fritz [00:40:22]:
Okay.
Caleb Wells [00:40:22]:
15 years ago. And he brought developers onboard a few a few years back, and we're basically, rebuilding it in current technology. Several once in a while, we have to dig in.
Wailu [00:40:33]:
Yeah. Even 15 years ago, that's still pretty late to be building a Oh, yeah. Like, late stage.
Shawn Clabo [00:40:39]:
Yeah. 20?
Caleb Wells [00:40:41]:
Okay. Well, you know, it's he's, he's not a developer.
Wailu [00:40:45]:
He's old school.
Caleb Wells [00:40:46]:
Really have a background in computer science. He just figured it out as he went, and it worked. Oh. So yeah.
Jeff Fritz [00:40:53]:
That says something about about a development framework that you're able to discover and just add the features that you need to. And Mhmm. Classic ASP was so flexible and able to do those things.
Caleb Wells [00:41:03]:
Oh, yeah. May maybe a little too much, but
Jeff Fritz [00:41:07]:
We're all friends here. We're all friends. There's no judgment. Holy crow. What did you get away with? Exactly.
Caleb Wells [00:41:16]:
But but it works, and it's servicing a 1,000 clients.
Jeff Fritz [00:41:20]:
Oh, that's terrific.
Caleb Wells [00:41:21]:
Okay. Hundreds of thousands of people on a daily basis. You know, it's still still the backbone of the company. But yeah. Very cool. So, anyway, we I got ourself on a tangent. But for those who are who are curious, definitely look at the the repo. It's it's well thought out.
Jeff Fritz [00:41:41]:
Thank you. We have some goals. I wanna I wanna build some migration samples there that show if you have a page that's structured like this, here's strategies. Almost a recipe for here's how you're going to move forward and get into Blazor when you have that type of approach. Whether it's you're using master pages, or you wrote your own base page, or, you have your own user controls. What does that look like? How do you get that migrated? Because they're slightly different technologies when we land in Blazor and in dot net core. So it's it's not just how do I migrate, but along the way, it's also a little bit of training so that folks can be exposed to these technologies and feel comfortable. Right? It's one thing to get to to say I'm gonna migrate the app to the new version of x y z technology.
Jeff Fritz [00:42:30]:
If you're not comfortable with version x y z, I don't care that you migrated it if you don't wanna if you don't know how to support it.
Caleb Wells [00:42:37]:
As far as Blazor is concerned, I think I think, right, you're you probably know know it as well as anybody, especially the amount of time you've you've been developing with it. If a team were starting a new project, you know, Greenfield, and they have experience, of course, in c sharp and dot net core and maybe even Angular, would you suggest using Blazor, you know, for, an app that's probably 2 or 3 years out, go ahead and start developing with it today.
Jeff Fritz [00:43:07]:
If if they're building an app and they're very comfortable, they dotnetcsharp is their preferred language, I would absolutely suggest that they they try Blazor. They they give it a shot. Get into that MVP, go through a sprint or 2 and see if it gets you where you want to be as quickly as as you'd like to. Right? Make sure you have some velocity there because the technology is gonna feel very familiar to people who are who are seasoned WPF or WinForms developers, or who have been doing, web forms for a long time. Data binding, two way bindings, interacting with parameters, building components for reuse, These are all skills and technologies and architectures that we're familiar with, very familiar with as dot NET developers. If your if your team has more experience in working with JavaScript for a front end, then you know what, Build with Angular, build with Vue, build with React if that's what makes you happy. The the the goal here isn't to to supplant, to replace a JavaScript framework, but to give you an an alternative. Right? For those folks that say, well, I wanna go use a JavaScript framework which means now I need to use Node on the server because I wanna be the same platform front to back, top to bottom.
Jeff Fritz [00:44:24]:
And all I have to do is rely on JavaScript. I don't have to think about how I integrate with PHP or Ruby or Python or dot net or Java. It's all JavaScript. JavaScript, all the things. Then then we only have one skill set to hire for. Well, you can do the same thing now with dotnet. Your great c sharp developers that you already have can now continue to grow and use all of the cool things that are in the Blazor environment and bring those dotnet skills all the way to the front end and and be very very effective and be very very happy. One customer that I've been working with, their team took some of their technology.
Jeff Fritz [00:45:02]:
They're building some really intense machine learning and compute. So much so they they've built a distributed compute farm that they're they're doing massive calculations on and they report that all back to a central server. Well, okay, that that server that's distributing the load out to to the compute farm, they need to process and display a dashboard, give some some feedback, some input points so that people can load up jobs to be consumed and also to consume the the the output of that, see status of those jobs as they're being processed. Well, because they they built their distributed compute in each one of the compute nodes using csharpand.net, it was very comfortable for them to say, I've got an ASP Net server that communicates to those distributed nodes, and I'm gonna build an a Blazor front end that can run anywhere with WebAssembly because we're on a very fast network. It's inside of our our compute, firewall, and we can be very efficient in how we present dashboards and graphs and information about about the jobs that are being processed. And when you think about that type of architecture where if you when you come out of those compute farms and and you wanna start analyzing and presenting the data, you've almost got, like like like processor overflow in your own mind. Like, oh my gosh. Look at all the c sharp I wrote.
Jeff Fritz [00:46:29]:
Do you really wanna go and shift technologies and start having to paint things with a lot of CSS and JavaScript? You can. But if you can stay in that same c sharp environment and and dot net technologies that you're familiar and comfortable with, that just makes it a little bit easier on everybody.
Wailu [00:46:44]:
What about the, the Blazor ecosystem? Like, would it would because I mean, one of the advantages of using Angular and React and JavaScript in general is just is NPM. You know, that's that whole ecosystem where you can just bring in anything really.
Jeff Fritz [00:46:56]:
Oh, yeah.
Wailu [00:46:56]:
Does Blazor have something similar or can you use NPM?
Jeff Fritz [00:46:59]:
So you you can use NPM to bring in some of those technologies if if you if you wanna bring in JavaScript frameworks, CSS frameworks, less SaaS, you wanna bring in any of those technologies, Blazor will integrate with them. There is a JavaScript interop bridge that you can use to dip into some of those other technologies. You wanna work with a Bootstrap CSS framework? Fantastic. You can reach in and use all of that CSS. You wanna interact with with underscore or some other JavaScript framework, you can do that. You can reach through. I've I've used, Moment JS with Blazor very, very well-to-do some better formatting of dates and management of some of that information on the user interface. And I I can also go the other way.
Jeff Fritz [00:47:42]:
And from those frameworks using Blazor, I can call from JavaScript back into dotnet as well. So you've got a nice two way street there if you want to continue working with NPM. If that's if that's where you have some libraries and technologies that that you feel comfortable using, you can do that. Other folks feel really comfortable using technologies using dotnets package manager, NuGet, and you can reach into NuGet and if something supports dotnetstandard2.0, you can use it with any of the Blazor technologies, whether it's Blazor Server or Blazor WebAssembly. Dotnetstandard2 means it'll just work pretty much everywhere. All of the modern frameworks, Visual Studio, I'm sorry, dotnetframework4.8, dotnetcore2.0 and later, Blazor, Xamarin, it'll work in all of those places. So what you're seeing is folks taking those existing technologies, a Newtonsoft JSON framework, and you can continue using it on Blazor. C s l a, that enterprise friendly framework, you can use that with Blazor.
Jeff Fritz [00:48:50]:
You you wanna go and use some other technologies around around managing presentation, scaling and doing different architectures. As long as they support dot NET standard, they they work. And because of how we package up Blazor components, razor components inside of a package just the same way as a NuGet package that that might contain some of those features and capabilities, you can actually deploy Blazor components as a NuGet package on NuGet for folks to consume in their applications. So now just like you can with NPM where you might have, right, Angular directives that you might want to install and and all kinds of different components for these other frameworks, You can do the same thing with Blazor bringing in components and styling capabilities that work with your application whether it's WebAssembly or Server. Really, really flexible series of choices that you have in front of you. And and I think that's something that is is understated is the amount of choice that folks have when they choose a technology that they want to adopt. When you adopt. Adopt.
Jeff Fritz [00:49:55]:
That's a good word. When you adopt a technology, we'll use that. That's a good word. We're gonna someone write that down. When you adopt a technology like Blazer and you move forward and you you start working with it to be able to pull in from all those different sources, these choices of how you want to grow. Fantastic. My gosh. I see people using the actor framework inside of a WebAssembly app.
Jeff Fritz [00:50:17]:
Right? Actor framework helps you do distributed computing and and really simplify some of your some of your processing by building those little actor based classes. And to be able to do that inside of WebAssembly, well, that's that's pretty powerful for me as an enterprise architect to have that choice available to me.
Shawn Clabo [00:50:37]:
Our guest last week was all about actor, actor, and things like that. So good timing. Yeah.
Jeff Fritz [00:50:41]:
I was gonna say, Akka is a great choice for that. Yes.
Shawn Clabo [00:50:44]:
So are there any questions that we haven't asked about Blazor that you think people should know about?
Caleb Wells [00:50:49]:
Where did the name come from? I understand. Yeah. It's Right. It's a combination of, browser and Razer, and the l just kinda got added somewhere.
Jeff Fritz [00:51:00]:
There you go. That and we've all got some fantastic looking sport coats. You gotta see them. The purple c
Caleb Wells [00:51:07]:
Very are to die for.
Shawn Clabo [00:51:08]:
Very sparkly.
Jeff Fritz [00:51:09]:
Oh, yeah. The the bigger things that I that I hear folks ask are is it production ready? Can can I really use this? Am I actually going to get support? Yes, yes, and yes. It is production ready. Is it is it gonna run natively as faster or faster than JavaScript in the browser? Not yet. It's pretty close because it's running natively. It's gonna take a little bit of time to get WebAssembly started because it has to go through that process of bootstrapping WebAssembly, right? It's not like the v eight engine with JavaScript that is able to just start up and start interpreting code as soon as it arrives. So there is a little bit of a step there that happens, but we're just at the beginning of this technology and exploring WebAssembly. It's I mean, right? We've got 20, 25 years of JavaScript running on browsers at this point.
Jeff Fritz [00:52:03]:
We know how to run JavaScript on browsers and we're maybe 2 or 3 years into WebAssembly as a technology and we're in the 1st year of Blazor as a production ready technology. Let's see where this goes. It can only go up. It's not gonna it's not gonna get slower. You know what I'm saying? So those are those are the big questions that I get is, yeah, where are we gonna take this? Is it is it a real deal? Is this the next Silverlight? No. No. Silverlight got bit by Steve Jobs and his infamous Flash memo that that was shared. No plugins on mobile devices.
Jeff Fritz [00:52:37]:
This isn't a plugin. It runs standard in every browser. When the first time that you show somebody on their on their iPhone, on their Samsung Galaxy phone, their Blazer application running on top of WebAssembly on their phone without a plugin, kind of shocks them that that it does work and works so well there where they might be expecting a silver light runtime or a flash runtime or something. No. None of that happens and it just works. I think that's that's all that any of us as software developers really ask for from our tools.
Caleb Wells [00:53:10]:
Well, that's why Zoom is so popular right now because it just works. You don't have to do anything. You just someone sends you a link, you click the link, and it's like, oh, here you are. Right?
Jeff Fritz [00:53:19]:
Downloads, installs all the things, and off
Caleb Wells [00:53:21]:
it runs. Yep. The simpler, the better. Mhmm. So cool.
Jeff Fritz [00:53:24]:
I still like Skype, though.
Shawn Clabo [00:53:29]:
Teams. Don't forget Teams. Yep. Right?
Jeff Fritz [00:53:32]:
Oh, I'm sorry. I forgot Teams.
Caleb Wells [00:53:34]:
And then you have Slack and that other one, Discord. Right?
Jeff Fritz [00:53:39]:
So Discord, I'm a huge fan of. Discord really has done a nice job of of making communities available in an extensible platform that that is really easy to build bots and build integrations for and to integrate with communities so seamlessly. I'm really excited to see where they go with that technology because it's it's the quiet one that I don't think Slacker teams fully understands is coming for them.
Caleb Wells [00:54:09]:
Right. Because it's a bit more gamer focused. Right?
Jeff Fritz [00:54:14]:
It is a bit more, focused towards the gaming communities. You'll see people on Twitch and Mixer and YouTube have Discord integrations, have Discord communities that correspond to their channels, and and that that's okay. You know, that's that's great to be able to have that offline sync from the the broadcast, from the YouTube discussions to continue going on. We all like that whether it's team Slack, Discord to have that interaction. But to have the extensible model that that Discord is pitching and they make available is something that that is going to create a little bit of a differentiator for them as they grow and figure out how they can make that different better than than Slack. Teams is hitched on to Office and SharePoint, and, my gosh, they're integrated with anything Microsoft right now. It's really impressive what the Teams team that's it doesn't sound weird what the Teams team what the Teams product team is able to connect to and make available as as part of that collaboration. Really neat stuff.
Caleb Wells [00:55:23]:
You could say something like the team's team counts their team integration with Office teams.
Shawn Clabo [00:55:32]:
Showing up his head. There you go, Caleb. Alright. Right? Yeah. You're going off the rails. Deep end.
Jeff Fritz [00:55:39]:
It is.
Shawn Clabo [00:55:40]:
Alright. Well, I don't know about you guys, but I gotta get going. I've got a web forms app to upgrade to Blazer.
Caleb Wells [00:55:45]:
Yeah. Okay. Alright. Let let let us know how how it goes. Yeah. I'm I'm all in. I'm I'm I'm got your back, Sean.
Shawn Clabo [00:55:54]:
At least it's not classic ASP.
Caleb Wells [00:55:55]:
Right. Yeah.
Jeff Fritz [00:55:58]:
Yeah. Alright.
Shawn Clabo [00:56:00]:
I think, what we'll do is we'll do our our last, bit of the show, and that's where we do picks. And what we do is we like to let our listeners know anything that we're interested in lately. It could be a book, a movie, games, technology, whatever. It seems like we got a lot of switch games that get picked over and over again.
Caleb Wells [00:56:19]:
Yeah. Guilty. Guilty.
Jeff Fritz [00:56:23]:
I'm sorry. I I I was just picking up turnips in Animal Crossing and and missed that conversation. Wait a minute. Wait a minute.
Caleb Wells [00:56:32]:
That that was last week.
Jeff Fritz [00:56:33]:
Oh my goodness.
Caleb Wells [00:56:35]:
My wife is not
Shawn Clabo [00:56:37]:
I'm missing out, I guess. I don't have one
Caleb Wells [00:56:39]:
of those.
Jeff Fritz [00:56:41]:
That's that's absolutely a thing, and, a a number of my friends are very much hooked on the the the turnip stock market Mhmm. Each week.
Caleb Wells [00:56:51]:
There there's actually a website called turnip profit where you can track your your daily pricing, and it will actually give you a, like, a 90% good estimate of, what your turnips will what the high point will be that week. It's serious. I'm Tell
Shawn Clabo [00:57:07]:
them about that site, I guess.
Jeff Fritz [00:57:10]:
Okay. Alright.
Caleb Wells [00:57:11]:
Yep. Yep. Alright. I just we we just made, a million and a half, bells this this week off of turnips.
Jeff Fritz [00:57:20]:
So I'm not I haven't been spending my my days in Animal Crossing, but I watch a lot of Twitch. I'm I'm really hooked on the platform. I love everything that it offers. It's such a great tapestry of personalities, content. There's so much to learn. And and as a as a kid of the of the late seventies, early eighties, I was hooked on PBS on the weekends as a kid. I would watch whether it was Bob Vila, building things with this old house, climbing under a sink and showing how he was replacing plumbing, doing some carpentry in the kitchen to build a new counter, whatever it might be, or seeing Bob Ross with the joy of painting. I am I am a huge fan of the, the makers and creators category of content on Twitch.
Jeff Fritz [00:58:09]:
I have a number of of friends that I've made in this area, broadcasters that that do all kinds of really cool really cool, making. Right? Whether I have a friend that does woodworking and she's based out of Seattle and and has a very, kid friendly approach to her show. And and friends that are that are on the West Coast of a friend who makes chain mail jewelry, another that that does paintings, and and somebody else who's doing a couple of of ladies that that make that make handbags that are that are just it's really cool to see the process. I never thought I'd get into watching sewing, but when you see how they explain it and they pull together stuff that that looks pretty cool and they end up delivering a product at the end. I I think it's it's a compelling thing to watch. And because watching on Twitch is a very active chat community, it's a very open discussion, and folks are trying to have a good time when they're broadcasting. Nobody's serious about this. We we wanna we wanna talk, have a good time about as as if we were sitting in a room together and we were all working on the same projects together.
Jeff Fritz [00:59:19]:
It's such a fun and and interesting community to be a part of, and and I hang out occasionally in the the Twitch Makers and Crafters community there.
Shawn Clabo [00:59:29]:
You gotta have a regular dose of happy trees, you know.
Caleb Wells [00:59:32]:
Yes. Oh, yeah. Yes. Happy little trees. I love them.
Jeff Fritz [00:59:36]:
They actually
Wailu [00:59:36]:
love like, are they doing this live? Like Yeah. Knitting in the live? Yeah. So that that would be the difference between Twitch and YouTube. Right?
Jeff Fritz [00:59:43]:
Yep. It's
Wailu [00:59:44]:
not the last package. It's just When
Jeff Fritz [00:59:46]:
they mess up, they you get to watch them go back and say, oh, rats. I gotta go fix that and do whatever it is that that they have to undo. But to exactly your point, Caleb, about happy little trees and and Tron, How do well, Bob Ross is actually live 247 on Twitch. All of his repeats are right there, and they're going all the time nonstop around the clock. So if you miss Bob Ross, he's back and so is the Afro. It's just as bold as ever.
Shawn Clabo [01:00:16]:
I I saw a lot of his, costumes in for Halloween last year, so
Jeff Fritz [01:00:20]:
he's
Shawn Clabo [01:00:21]:
still he's still going on.
Jeff Fritz [01:00:23]:
Yeah.
Shawn Clabo [01:00:23]:
Alright. So, Caleb, what's your pick for this week?
Caleb Wells [01:00:25]:
It is not a Switch game. I was I was considering it, but it's not. It's actually probably like the the the internal opposite. It's Westworld season 3. I just finished it, and my goodness is our world going to hell in a handbasket. You gotta watch it. It's, it's very it's dark, but Really dark. Good.
Caleb Wells [01:00:47]:
It's Yep.
Jeff Fritz [01:00:48]:
I I saw that as well, and it was it was something it it felt like they pivoted from being very western in Mhmm. Right? Very western atmosphere in seasons 1 and 2. Season 3, they got very dystopian future in the tone. Mhmm. And
Caleb Wells [01:01:04]:
But but the thing is, right, they pulled stuff from today or things we're already dealing with and just extrapolate it. Right? Yeah. It's it's definitely very dystopian future.
Shawn Clabo [01:01:16]:
I still flash back to
Caleb Wells [01:01:17]:
guns in west world. It's it's it's not west anymore.
Jeff Fritz [01:01:21]:
You know?
Shawn Clabo [01:01:22]:
Yeah. I still flash back to the original, you know, with Rick and Rick. So Yep. I remember watching that.
Jeff Fritz [01:01:27]:
Oh my gosh. Yes. So they they they've done a nice job with the series.
Shawn Clabo [01:01:31]:
Yeah. Yep. Why what do you have first?
Wailu [01:01:33]:
So I actually got a new phone the other day. My my other phone broke. So this is the Oppo Reno 5 g, and, yeah, I'm just loving it. So I haven't had a new phone in a couple years. So, like, it's got this weird, like, 60 time zoom thing where you can, like, you can literally zoom in. It's like a binocular kind of thing. So, and it's basically in Australia, they're they're practically just giving it away right now, like, dropping up online for, like, $600 Australian, which is probably about $400 US, and it's basically a flagship model. It's got, like, 8 gigs of RAM.
Wailu [01:02:06]:
It's got, like, 256 gigs of SSD. And, yes, and I'm just really enjoying it right now. So I
Caleb Wells [01:02:12]:
have one question for you. Did you intentionally break your old phone
Jeff Fritz [01:02:16]:
so you could get No.
Wailu [01:02:17]:
No. My wife kept asking me that actually. But I was, like, I was jogging and it just it literally just fell out of my pocket. I swear. Like
Caleb Wells [01:02:29]:
There's no 5 g.
Shawn Clabo [01:02:30]:
Is there much 5 g in Australia?
Wailu [01:02:32]:
I haven't actually used the 5 g capacity yet. But I I I think not really. I think unless if you stand right next to the tower, you get 5 g. But no. The 4 g is still pretty good. But, you know, to to be honest, because of this pandemic, I haven't really been out much. So I don't know what the, actual mobile ness of the mobile phone is. But
Shawn Clabo [01:02:53]:
I heard if you also stand next to the tower, you catch, COVID 19?
Wailu [01:02:57]:
Yeah. That's right.
Caleb Wells [01:03:00]:
Yeah. And and radiation damage?
Shawn Clabo [01:03:02]:
Yeah. No. That's the windmills.
Caleb Wells [01:03:05]:
Oh, oh, okay. Well, that's fine. Yeah. Alright. Alright.
Shawn Clabo [01:03:09]:
Windmills cause cancer. Okay. Okay. Okay. So I'm actually gonna pick Microsoft Power Toys, the new version of Power Toys. And, they had some new additions to it recently. So there's a Power Toys run where you can just, you know, alt space and just start typing and you can search or launch apps or anything like that. There's also, like, 6 other toys in there.
Shawn Clabo [01:03:35]:
There's a keyboard manager, image resizer. There's another one that's that's called, fancy zones. So if you like to specify your your layouts for your windows, that's a really handy one too. So if you wanna do things like that, check out Microsoft Power Toys.
Caleb Wells [01:03:50]:
Sean, we we need to get you a switch.
Jeff Fritz [01:03:56]:
I feel like fancy zones are are really effective when you have a a just gigantic screen, 4 k, ultra wide. Now you're you're in a place where, yeah, you wanna position your windows in specific locations and fancy zones really helps enable that that snap into those locations that you are comfortable seeing windows at.
Shawn Clabo [01:04:18]:
Yeah. I have a 32 inch 4 k so it does help me out. Yeah. That's so I gotta at
Wailu [01:04:23]:
those stages to Windows 10?
Shawn Clabo [01:04:25]:
And and vertical tabs in in Visual Studio, and I'm happy. It's
Jeff Fritz [01:04:28]:
a good one.
Shawn Clabo [01:04:29]:
Alright. Jeff, what do you wanna let people know about?
Jeff Fritz [01:04:32]:
Oh, yeah. The the makers in crafting.
Shawn Clabo [01:04:34]:
Oh, that's oh, that was your pick? Makerson Crafting?
Jeff Fritz [01:04:37]:
I'm watching Twitch. Hang up. Sorry.
Caleb Wells [01:04:39]:
It's on the He's here. It was already
Jeff Fritz [01:04:43]:
Right here. I'm gonna put that link. I'm I'm already there watching. Things are going by. This guy's building a birdhouse.
Caleb Wells [01:04:51]:
I just got into Twitch, and it right. It starts immediately, and and it's esports for charity. They're they're playing a FIFA game. That that that's not Makers and Crafts. But, No. That that's what they're
Jeff Fritz [01:05:04]:
pushing. Twitch is really known first for watching people play play video games on it. Right?
Caleb Wells [01:05:09]:
Right.
Jeff Fritz [01:05:10]:
Gosh. When kids, you used to go over to their house. Hey. Watch how I beat Super Mario Brothers. This is really cool. And you you sit down and watch, and and you make fun of them because they'd always miss that one jump in world 31. Right? I mean that was kind of a thing, you know, when you were a kid to to hang out like that. But when you can broadcast and share that online and see some of these people who are really good at playing the first person shooters.
Jeff Fritz [01:05:36]:
The the Fortnite players, the PUBG players, and and they're able to do these these amazing feats of skill with how they control their weapons and and navigate around the maps. It's amazing. So
Shawn Clabo [01:05:50]:
it's Talking talking about games, did you see recently where NVIDIA made Pac Man through AI?
Jeff Fritz [01:05:58]:
Yeah. I didn't quite understand what it how they made Pac Man.
Shawn Clabo [01:06:02]:
It watched 100 of 1000 of frames of the game and learned it and then recreated its
Wailu [01:06:09]:
I killed it.
Shawn Clabo [01:06:10]:
I'll I'll put the the the article from NVIDIA in the in the show notes in the chat here so you can you can look at it, but I was like, oh my god.
Caleb Wells [01:06:20]:
The the AI create recreated the game Right. By itself. Oh, wow.
Shawn Clabo [01:06:24]:
By itself.
Caleb Wells [01:06:25]:
Wow. That's scary. Yeah. And it and
Shawn Clabo [01:06:29]:
it's for the anniversary of of of Pac Man.
Caleb Wells [01:06:32]:
Oh, gotcha.
Shawn Clabo [01:06:32]:
Yep. Let's say, 50,000 Pac Man episodes produced a fully functional version of the game.
Caleb Wells [01:06:39]:
The the world is definitely going to hell in a handbasket. Watch watch Westworld.
Jeff Fritz [01:06:43]:
There was so there was a competition. There was a programming competition for the month of May on online where people were building AIs to win a multiplayer game of Pac Man. And they put right. You would control your your little Pac Man character and move them around the board with whatever your algorithm was that you wrote, and they pit you against 3 other 3 other bots. And you had to chase down the ghosts and capture the most pellets and score the highest on the board. And and that was an AI competition in May. I forget the name of it, but it was it was kind of exciting to see how people were writing these. So
Wailu [01:07:20]:
I think I was watching something about, someone doing that for Super Mario. Like, it would it would just have this computer just constantly play Super Mario, and the first time it would just run straight and then fall off. And then the second time, it would probably do the same thing. But you would just do it millions and millions of times and eventually you would just be able to pass the the level, you know, which is pretty scary when you think about it. So
Jeff Fritz [01:07:41]:
Yeah. Just learning the board. Really good.
Shawn Clabo [01:07:44]:
Alright. So, Jeff, if our listeners have questions and wanna reach out to you, how can they get in touch?
Jeff Fritz [01:07:49]:
You can the best way to reach me is on, Twitter. I am csharpfritz on Twitter. I broadcast 3 days a week right now on Twitch. Tuesday Thursday mornings, I start at 9 AM EST. That's 6 AM Pacific. In summertime here during daylight savings, that's, 1300 UTC. And I broadcast on Sunday mornings at 10 AM Eastern, 7 AM Pacific, 1400 UTC on twitch.tv/csharpfritz. My blog is at jeffreyfritz.com.
Jeff Fritz [01:08:20]:
And, I'm on GitHub. GitHub.com/csharpfritz.
Shawn Clabo [01:08:24]:
Awesome. And if our listeners wanna reach out for the show, they wanna get in touch with me or have suggestions or comments on the show, they can get me on Twitter. I am at.netsuperhero.
Caleb Wells [01:08:35]:
Good. Thanks, Jeff. Good.
Shawn Clabo [01:08:36]:
Thanks, Jeff. That was awesome. Alright. Glad you could come and and be on the show.
Jeff Fritz [01:08:41]:
Cool. Thank you. It was a lot of fun.
Shawn Clabo [01:08:43]:
Alright. And we'll catch
Jeff Fritz [01:08:45]:
I'm looking for that AI Pac Man game now. Like, I wanted to make sure you have a link to this.
Shawn Clabo [01:08:51]:
Yeah. Yeah. Put it in the in the notes in the comments there. So alright. Cool. Anybody, you know, like I say, reach out or we'll catch you all in the next episode of adventures in dot net.
Wailu [01:09:04]:
Yeah.
Shawn Clabo [01:09:04]:
Alright, everybody. Goodbye.
Hello, and welcome to another episode of adventuresin.net. I'm Sean Clabo, your host. And with me today are your cohost, Caleb Wells. Hey, Caleb.
Caleb Wells [00:00:14]:
Hey, yo. Hey. How's it going?
Shawn Clabo [00:00:16]:
Good. How's it in New Orleans?
Caleb Wells [00:00:18]:
No comment. No. Right? We have the COVID, we have, protests, and we have a tropical storm, about to hit.
Shawn Clabo [00:00:31]:
Okay. Okay. Yep. That's enough. We're good with that. Hey, Anne. We also have Wailu from Australia.
Wailu [00:00:38]:
How you doing?
Jeff Fritz [00:00:38]:
How are
Caleb Wells [00:00:39]:
you doing?
Shawn Clabo [00:00:39]:
Hey. How's it down there? Winter's coming. Right?
Wailu [00:00:42]:
Oh, yeah. It's cold right now. It's it's early morning and it's it's cold. So
Shawn Clabo [00:00:49]:
Nice. Nice. Nice. So today on the show, we have somebody, I think a lot of people know and probably love them. I think you love them. Yep. His name is Jeff Fritz. Hey, Jeff.
Shawn Clabo [00:01:00]:
How are you doing?
Jeff Fritz [00:01:00]:
Hey. Thanks so much for having me, guys. It's great to be here.
Caleb Wells [00:01:03]:
Oh, great for joining.
Shawn Clabo [00:01:04]:
Great to have you. You know what? I watched a lot of the shows that you're on and know somewhat about you, but I don't know how it really started with you. Give us kind of the intro of who is Jeff Ritz, how he got started, and where he's at now.
Jeff Fritz [00:01:18]:
Oh my gosh. So, hi. My name is Jeff. I'm a Virgo. I like long walks on the beach. I'm about 20 years into my development career here. And, I I'm in the Philadelphia area. I I spent some time with finance company, pharmaceutical companies.
Jeff Fritz [00:01:34]:
I went to TechEd for a few years. I went to work for a couple startups and while I was at TechEd, I was very interested in this ASP Net MVC technology that they were talking about and trying to get folks excited about. And, I got interested in speaking at my local user group and teaching other folks about it as ASP dot NET MVC was becoming a thing. And I I very much at that point started my speaking journey, my local user group, and and a couple of the ones in the region. I I went to TechEd again, and there was this speaker idol thing. Right? That pop idol take off. Right? American Idol, pop idol. And I was I I said, hey, I can I can do that? I reached out to the organizers, and I I got a spot speaking.
Jeff Fritz [00:02:17]:
And I I didn't win, but I was noticed and I got picked up by Telerik, and I was a developer advocate for them talking about ASP dot NET for a few years when I was showing up at all the same events that the ASP dot NET team was at. And they kept saying, you're talking about our product better than us. Why don't you come do that for us? And I got picked up by Microsoft, and now I'm a community manager for Microsoft specializing in dotnet, Visual Studio, getting folks interested and excited about about all of the Visual Studio family. Very interested in dotnet, dotnetcore, Blazor, getting folks onto Azure, if that's where they're looking to go, and and doing that outreach to place folks at events and and engage with the live video community. I think there's really something happening with live video particularly right now. I mean, Caleb, you mentioned about the pandemic. Everybody's at home. How do we Right.
Jeff Fritz [00:03:13]:
How do we have a conference? How do we have learning opportunities? And where I was getting involved with live video on Twitch back in 2017, I was really excited. I I love the the platform. I love being able to to communicate and talk directly to an audience, and and it's worked out very well for me. I'm I spend a lot of time on Twitch and meeting with developers, talking, and and sharing common experiences because it is a social media platform. So we've been doing a number of virtual events over there, whether it's dotnetconf. We we ran a section a segment of Microsoft build on Twitch, in May May 2020. That was a tremendous experiment for that event, and, we're looking forward to more experiments bringing more great Microsoft content to that interactive platform.
Shawn Clabo [00:04:01]:
Yeah. It seems like more and more of our, guests that we've had on recently have been live coders. So, like, Mark Miller. Mark Miller, we had him on. He's doing it all the time.
Jeff Fritz [00:04:10]:
Oh, yeah.
Shawn Clabo [00:04:10]:
So it really, really is taking off.
Caleb Wells [00:04:13]:
The LiveCoders team, you guys have, like, a 100 people on Twitch, right, that are part of that or more. It's a large community.
Jeff Fritz [00:04:20]:
It is. It's a very large community. The LiveCoders team is a 150 folks that that write code, that work with hardware, do some 3 d printing, different technologies that they're sharing on Twitch and openly discussing with their audience. How can how can we learn more about things together, work on a project together, dig into some IoT or or in my case, .net web applications and answer those questions that folks have. When you go on to a Stack Overflow, right, you you have a question for you throw out there, hey, I don't know how to get people to log in to my website. How do you do this? You're inevitably gonna get those first couple of comments that come through. Didn't you search already for this question? You know, what you know, I need more details. And it almost feels rude on some of these boards.
Jeff Fritz [00:05:06]:
And Stack Overflow had a bit of a politeness problem for a while there, and they're working on it. They've cleaned it up a bit. But when you can go on Twitch or or YouTube, right, but I particularly like Twitch because anybody can go in there, anybody can tune in and see somebody broadcasting it. When you see that smiling face, that's happy to answer your question and work around and show some of the cool things they're doing in a very almost like pair programming environment. It's a great experience for everybody, and folks walk away happy from those types of developer radio experiences.
Wailu [00:05:44]:
You you mentioned that, you know, you mentioned about the pandemic. I was just wondering, like, how things have changed. So have you seen your user base increase and things like that? Because everyone's working from home.
Jeff Fritz [00:05:54]:
Absolutely. We've seen the user base the viewer base improve significantly. Across the board, Twitch has seen an increase between 30 40 percent of viewership in the past 3 months. So for me as a broadcaster, I love seeing that. I love hearing that. I'm I'm seeing my viewership on an uptick. When you can host a show and and you go on, you start broadcasting, and you can see a couple thousand people watch over the duration of of a few hours that you're talking to folks and working on a project. It's almost like hosting your own conference at that point,
Wailu [00:06:27]:
which Yeah.
Jeff Fritz [00:06:29]:
Is encouraging for for me as a broadcaster because now I know I'm reaching folks. I know that I'm able to hear from them and get that important feedback whether it's for the Visual Studio team or dot net team, and and seeing, well, maybe we're missing some documentation or there's a feature that doesn't behave quite right or we need better samples to demonstrate some of these things. That interaction is just huge to help shape the story for where those products are going to go.
Caleb Wells [00:06:58]:
I was, recently watching one of your Twitch streams. You were trying to spin up a a new project doing it through Visual Studio, and it wasn't working like you expected. And I think, actually, one of your people in chat was like, oh, you have to go do that to the command line interface. And you're like, well, that's not right. You're like, okay. We're gonna have to put put, put a ticket in on this because, you know, we need to have it both ways and be consistent. I guess it's similar to to what Mark is doing. Right? You're you're dogfooding your own software and applications and, improving them as as you go.
Jeff Fritz [00:07:32]:
Absolutely. It it's extremely powerful to to be able to go back and say, yeah. We ran the preview version of so and so framework or application, and here's the gaps that we ran into. Oh, and here's a video time stamp of when we ran into those and the feedback that we saw from chat from some of our folks that are commonly interacting here. When the team has that level of evidence around a feature gap or a bug, it really makes it easy for them to justify, oh, yeah. We need to fix this. We need to change how this behaves, improve when they can see it and they can see the feedback immediately.
Caleb Wells [00:08:12]:
So the last few months, I believe you've been spending a a good deal of time on dotnetcoreandblazer and how you can use them anywhere. Right? Oh my gosh. Can you speak to that a little bit?
Jeff Fritz [00:08:26]:
I I've really latched on to this idea of theme months. There's another streamer who goes by the name Eleface who runs with this idea of theme months throughout the year on Twitch, and and she's got different game theme months. But I I said to myself, well, how can we do that with technology? And and, you know, take her learnings and and put my spin on it, and and still pay homage to what she does. And and I said, well, let's do minimal. Right? What folks look at dot net that aren't that aren't paying attention, that aren't paying attention is the wrong phrase. That that haven't been exposed to dot net Core yet. And they're used to well, it's dotnetframework, you need Visual Studio, you need to be on Windows. And if you don't have Microsoft things x, y, and z, well, you can't be a dotnet developer.
Jeff Fritz [00:09:16]:
And and there were some particular threads on on Twitter in February that that really struck me as these folks don't know what we can do now with dot NET Core. They don't know you don't have to be on Visual Studio or on Windows. You can go anywhere. So I said, well let's let's do this all in Linux and we'll call it and we'll do it all in the command line. We use vi, we'll call it minimal March. So bare minimum, we're going to take everything down to just the command line and and and VI. Maybe we'll drop in Visual Studio Code when we get in in Linux just to show that, hey, you can still use that here. But the idea being minimal install, just the SDK, what can we do? And we built some some Blazor features and not some features for a framework based on Blazor throughout the month.
Jeff Fritz [00:10:08]:
Now, that's one thing to bring up a Linux VM and have it running on on our workstation and And like many developers, I've got a nice powerful workstation with 32 giga RAM and I7 Processor, and it works great. But that's not minimal. You know what I mean, guys? Let's face it. The kids in the schools, right? If you're a kid in high school here in the States, they get minimal. If they get a kid, they get a machine. Right? So Caleb, I took it home myself one night. I said I'm gonna drive out to Walmart, and I went out to my local Walmart and I said I'm gonna give myself a budget of $200, and I'm gonna pick up a Chromebook. And whatever Chromebook they have because that's minimal.
Jeff Fritz [00:10:45]:
Right? That's what the typical somebody who's not a developer and just needs to get to web browsing, check some emails, doesn't want a tablet, wants wants a little more, I picked up a Chromebook. So I picked up an HP Chromebook and I figured this is minimal because it doesn't even have the SDK on it. It doesn't even have development software on it. Right? Nothing like that. It's literally just a browser OS. Right, guys?
Caleb Wells [00:11:11]:
Right. I'm like, how are you gonna go about that? Yeah. I'm curious.
Jeff Fritz [00:11:14]:
Right. So it does have a Linux terminal on it because it's running inside of a container. So I I grabbed the SDK, the dotnet SDK, put it down on the machine, and I was able to spin up my my code and I was able to continue working. Now, I mean, it's got 2 gig of RAM. It's running on an I3. So it wasn't screaming fast, but we were able to do it. We were able to build Blazor and ASP NET Core applications on a Chromebook. Fantastic.
Jeff Fritz [00:11:43]:
Right? We we've kind of shown that you can go any computing device and really do that. Really. Right? If the device has a keyboard and a screen, we can do these things. And and I really like working with Blazor on stream. It's it really has a good feel for me. Right? So I in in May, May I've I've been doing traditional, I've called it May is for Macs and showing look we can do all this on a Mac. So I've got Visual Studio for Mac, Visual Studio Code that I can use there, and we continue building and doing things with Blazor. And and it's a lot of fun to to be able to show that we really can do dot net anywhere.
Jeff Fritz [00:12:19]:
But can I share with you guys an idea that I'm thinking about coming off of some of the build announcements? I wanna get your feet can I get your feedback on this?
Caleb Wells [00:12:27]:
Absolutely.
Jeff Fritz [00:12:28]:
It's one thing to say, look, I can build with something that looks like a laptop. Alright. It's underpowered. It's the Chromebook. Or I've got a MacBook Air. Right? Of course, I've got a Lenovo, whatever, Surface Book, so and so. Because we have Codespaces now, what if we got an in, a Kindle Fire tablet? Because that has a browser on it. Caleb knows where we're going.
Caleb Wells [00:12:50]:
Look at that over there.
Jeff Fritz [00:12:52]:
What if we got a Kindle Fire tablet and set up the streaming rig out on the cloud somewhere in Azure and I live outside Philadelphia. Take phone take a Bluetooth keyboard just so I have a keyboard and park on the steps to the Philadelphia Art Museum and stream from there with only a Kindle Fire as my computing device and show that I can still do .netdevelopment just from anywhere literally with nothing? My broadcast gear, but just a Kindle Fire. What do you think?
Caleb Wells [00:13:26]:
That would be a monumentous feat. Right? This is like Monumental feat. Yeah. Yeah. That's that would be cool.
Jeff Fritz [00:13:37]:
There's something about access when I say accessibility, the access that folks have to the technology. It's one thing to say, well, we wanna make sure that that folks who don't don't have right? They they have some vision challenge. They have some some auditory challenges. They might not be able to compute the same way as folks that have all of their senses. But those that don't have access to the the type of gear that that developers here in the States, Australia, the first world countries have access to, those when you only have a Kindle Fire and you're somewhere where that doesn't have great network connection, what can you do? And to to the best of my capabilities and go somewhere that's scenic like the like a museum of art, my my city, I think that might be a little bit interesting, a little bit of a challenge to do and and stream for an hour or 2 to show that you can do it.
Shawn Clabo [00:14:31]:
Other than performance, do you think there's any other limitations that you would have? Do you have something like that?
Jeff Fritz [00:14:36]:
That's a that's a great question, Sean. I well, of course, screen size. Right? When we think about the little Kindle Fire tablet, right? It's it's not the the 11 inch of of an iPad, right? It's like 8 inches or something like that?
Shawn Clabo [00:14:49]:
It's a model. Yeah. 7, 10, 11. Yeah.
Jeff Fritz [00:14:53]:
Yeah. So I think I think screen size is gonna be a big one to start with. It doesn't have a keyboard. Right? So I could either be right with the the touchscreen, but I've got a couple of Bluetooth keyboards that I think would work with it. I I don't even have the device yet. I'm I'm kind of feeling it out. I'm gonna go order the device and figure out how I can make this work. But the idea of dot net anywhere, anybody can do it Mhmm.
Jeff Fritz [00:15:19]:
In in my mind is very powerful for our community. It it it says it's an open door. It it's right? When I think back 10 years ago to where dot net was in 2010, you needed to buy Visual Studio 2010 if you wanted to do dot net development. There was no express edition community edition. They were just starting to open those doors and talk about it. But to be able to take and get .net development anywhere, any device, literally anywhere in in regardless of your network connection or or how much money you have to buy, it it removes a bit of gatekeeping that was actually in place when you think about it from 10 years ago. And and that access to the technology is such a powerful thing to be able to give to everybody who wants to to be a developer.
Shawn Clabo [00:16:11]:
They also have it where with Samsung phones, you can hook up a Bluetooth keyboard and an external monitor. Yeah. There you go. Get bigger resolution. And I think a lot of more a lot more people might have that's sticking in their pocket that they could actually do that anywhere.
Caleb Wells [00:16:29]:
Alright. And and if if you root it, you've you've got access to Linux right there.
Jeff Fritz [00:16:35]:
Oh, yeah. Well, what about the
Wailu [00:16:36]:
fact that, you're running on an ARM processor? Have you found that kind of, because I know that the Visual Studio and stuff, that that that doesn't actually work on on ARM processors.
Jeff Fritz [00:16:46]:
You're right. Visual Studio won't run on ARM, but you can run the SDK on ARM. There are there is a flavor of it that does run on an ARM processor. It will give you the the framework dependent. Right? Framework dependent? Runtime dependent versions of your x, your binaries when you generate. So when you take those and copy it over to your Mac, copy it over to Linux, as long as the the runtime for those machines is available, it should still work. Right?
Wailu [00:17:14]:
Okay. And the and the like all the COIs and what stuff should run on
Jeff Fritz [00:17:18]:
on our Yeah. Yeah. It should run. Let's see if it works.
Wailu [00:17:22]:
Yeah. It would be interesting. Right?
Jeff Fritz [00:17:24]:
But right. The the the interesting thing about running as strong was suggesting on a, on on a phone or running on Kindle Fire is if if you use Visual Studio Codespaces, well, now you're actually in the cloud. You're just using the browser at that point. Yeah. Right. So you'd be able to get away with both. I'm not compiling locally. It's compiling somewhere else.
Caleb Wells [00:17:46]:
You know, we had, Daniel Roth on last year, and and we talked a lot about Blazor. A lot has happened, since then with Blazor, and it seems like that, for you, that that's a key component to what you're doing right now. Right? You're you're saying, yes. I can show you the dot net core runs anywhere, but but Blazor really runs anywhere these days.
Jeff Fritz [00:18:09]:
The Blazor as a as the next generation user interface framework that was right, first RTM with dotnetcore3 back in September during dotnetconf2019. Tremendous framework that gave us back that concept of components that we can embed in pages, that we can embed inside of other components, and and compose our user interfaces again. MVC, Razor Pages took us back to write all your code, write all of your, markup in order to drive your web user interface. And for some folks, they really like that. For other folks who are a little bit more, a little bit, wanna do a little bit more rapid application development, having that component driven framework like web forms had back in the day is extremely valuable. And this is some of the desire that folks have to use things like Angular and Vue and React where you do have components that you can reuse. Somebody else wrote a component for a progress bar or a grid that you can consume and reuse inside of your application. Well, that's great, but for some folks, they don't wanna have to go and relearn JavaScript to go use all of these different frameworks and and certainly keep up with the pace of change in some of those frameworks.
Jeff Fritz [00:19:27]:
So when we when we think about Blazor when it was just server side, to have those components that you could drop in and use and get that that very small footprint for delivering content across the network using signal or channels, that's pretty good with just, Blazor Server. But now now we're 3 weeks removed from build. And here, build 2020, we had the RTM, the release to manufacturers or RTW, release to web, I guess we would call it now, for for Blazor WebAssembly. So that was stamped version 3.2, and it's a current release. That means that as updates are delivered for it, minor version updates, you're kind of required to do the update in order to maintain support. But you've got support. You have support for Blazor running with WebAssembly in the browser, and it runs this exact same component model as you have with Blazor Server. So what we really like about that now is you've got you've got components that run and compile with whether it's dot net core on the server or it's mono inside the browser.
Jeff Fritz [00:20:39]:
The same code runs wherever you need it to. So I can deliver that Internet facing application that has very small network footprint that runs primarily on the server. Maybe I've got some, proprietary business logic that I want to run on the server, be isolated and protected, and have it run-in a validated system. Fantastic. You can do that and it'll deliver those very small bursts of content out to the out to the browser and the folks that are using your application. Or if you wanna have a great progressive web app, right, the PWA that'll run on somebody's mobile device. When they're on high speed network, they can download that Blazor WebAssembly app, have it all compiled and run and cached locally. So they don't need to be connected.
Jeff Fritz [00:21:29]:
They can have a very small connection back to the network because they've already installed the big application, the DLLs and things are running in the browser and local to the device. That to me feels like a much better much better delivery and management experience for a mobile application than having to go through the process of deploying to somebody's app store, waiting for validation, and then it gets updated and a notification to get to somebody's device, waiting, making sure it's installed and they're on the network and all the things. Oh, forget it. It's a progressive web app. You click the button. It verified it's the right version when it was on the network. You've got the latest bits. Next time you're back on the network, we're going to sync the data.
Jeff Fritz [00:22:12]:
It's all good. So we've got a couple of different models that we can go forward with with Blazor, and that's absolutely tremendous for us as dot NET developers to have. And now we're even seeing experiments where folks are saying, well, what if we took that Blazor concept and applied it to some of our Xamarin tools so that we can use Blazor to build mobile apps? And that's what we see with what they call the mobile blinding mobile there we go. I can't even say it right myself. The Mobile Bindings for Blazor. That's a mouthful. Folks were saying it's MBB. Those are that's the acronym.
Jeff Fritz [00:22:45]:
MBB. Okay. But it's the Mobile Bindings for Blazor, and it's an experiment just like Blazor initially was. What do people think of this? Does it make sense? Is it a a good technology to explore? And there's more that we can do there to to tinker and and get some feedback. It's not it's not supported yet. It's and and this is kind of the advantage that we have with open source technologies. We can throw an experiment out there and say, well, what do you think? And it's something we're trying out and here's the engineers iterating on it. There's 1 or 2 people that are investigating and exploring.
Jeff Fritz [00:23:18]:
And those people that are enthusiasts, that are excited about that type of technology can engage and see exactly the code that is changing. See the roadmap going forward for the experiment, offer feedback, and at some point, make a proper decision. Does this work? Is this something that makes sense? When I say work, that's probably the wrong choice. Is this a a a good product for us to consider using further into the future? Or is it pretty much an experiment that has run its course and you know what, it it's not gonna solve problems in a way that makes us more productive, more effective. Let's let's park it and we'll move on and try something else. And that that sense of experimentation is something that I think a lot of us as developers can really sink our teeth into and tinker. Try things out, experiment. Right? Everybody likes to try something new.
Jeff Fritz [00:24:08]:
And if you can experiment with something and you find that it is successful for you, let's encourage that, let's keep growing. And I think that's something that that we've tried and learned from the the Blazor experiment over the last 3 years and and we can come away now and say, yeah, that worked out pretty good. Let's let's see where we go from here. And looking forward, we're gonna see a version of Blazor that gets shipped with dot net 5 in the fall. Okay. Let's let's see the updates and the improvements that come with that version, and there's gonna be a version that ships with dot net 6 next year. Fantastic. Let's see where the team goes with this because the the more feedback, the more applications that we see built by developers using the technology will help shape that direction in the growth pattern for for the technology, for the product.
Shawn Clabo [00:24:54]:
I've been really excited about Blazor ever since it's first come out because, you know, I've been a long time web forms developer. So it seemed very, very comfortable for me, using that model of development and with the components. And that's kinda why I also do some Angular development because everything's based upon components. The one downside I had on the server side was always the if you make a change to the server, then you lose the state for all the connected users. So I'm even more excited about, you know, web assembly versions.
Jeff Fritz [00:25:24]:
So what we found is that, right, just like we did with with web forms, there are ways to persist state outside of the the in memory process. So if you aren't just relying on the in memory storage and persistence of some of your class scope variables, if you do kick them over to a database store or somewhere else that it is out of process from the web server. Now actually things get you a little bit more interesting, Sean. Just like just like when you throw your your session and your app state management for a web forms application over into a database, Now round robin capabilities for load balancing become available to you because it doesn't matter what server you connect to. You're gonna fetch some of that state data from database server or something and do those interactions, which okay. That's you know what? That's terrific to have that as a backup. Access the stuff in memory first if it's there. And if you lose it, try and go get it from the database, in the background.
Shawn Clabo [00:26:26]:
So When it has to differ do a diff on the on the views, it can do that outside of the process.
Jeff Fritz [00:26:33]:
You won't necessarily get the diff of the views, but you'll get this you'll be able to get the state back, repaint the screen, and reinitialize it.
Shawn Clabo [00:26:41]:
Okay. Perfect. Send a complete new view down the pipe. Okay.
Jeff Fritz [00:26:45]:
Yeah. Which is better than, oops, sorry. We lost your connection. We forgot where you are. You're done.
Shawn Clabo [00:26:50]:
Right. Exactly. Yeah.
Wailu [00:26:52]:
I was gonna say, what about I think WebAssembly is actually what I'm really excited about. So what's the browser compatibility on that? Like, is it basically supported in all major browsers these days, like, even IE?
Jeff Fritz [00:27:01]:
Blazor WebAssembly runs on top of that WebAssembly technology that that is part of the HTML 5 spec. And thanks to our friends Spectre and Meltdown, everybody remembers those processor flaws how many years ago now.
Caleb Wells [00:27:14]:
Right.
Jeff Fritz [00:27:15]:
They they forced everybody to up update your operating system, update your browser, and consequently, everybody got a new version that supports HTML 5. Now if you are still running a patched version of IE, WebAssembly doesn't run on on IE. They just never built support for it. But Blazor Server will run on IE. So this is where you if you do need to support an out of support browser, you can technically do it by using Blazor Server technology, which then comes back to kind of like Sean was saying, I can build components that target either. Right? Because they're they're just razor components.
Caleb Wells [00:28:00]:
Mhmm.
Jeff Fritz [00:28:00]:
And I can have a server shell version that that runs and do alternate rendering between that Blazor server and Blazor WebAssembly and route appropriately if folks don't have capability. Well, we're gonna just like we used to do back in the day. Right? You'd go to m.mywebsite.com. Right? If you had a modem. You could do something similar. Well, I need you to send you over to the server version because you you don't have enough network bandwidth. You don't have support for web assembly. You could do that level of interaction.
Jeff Fritz [00:28:31]:
Right? And the code would be the
Wailu [00:28:32]:
same as that, wouldn't it really?
Jeff Fritz [00:28:34]:
Exactly. Exactly. So this is, right, this is kind of that benefit. Build 1 shared component library and and just build those 2 shim frameworks, shim applications. One that is the web assembly, one that is the Blazor server, and you could put effectively write a check, a browser capabilities check, upfront and determine whether to let them in or to web assembly or ship over to a Blazor server. It's a very interesting and compelling architecture. I'm I'm looking for somebody that has a good write up of using this. I've I've done it a little bit myself, and it's it's not bad because you end up with 2 projects that actually reference and include the exact same content.
Jeff Fritz [00:29:18]:
And if you if you do it right because of how we can take our csproj or project files, you can actually point them at the same content on disk. The intel will share this content even though you're compiling up into this model or that model and still reference that same razor components library in both places. And it it does compile and run identically in both environments. Great. But, I would love to see somebody write up a couple blog posts about how they may have done something like this for their application. Do you think at
Wailu [00:29:51]:
a certain percentage of the people that would be interested in in Blaze, there would be people upgrading their their web forms app? And I guess a lot of them might their web forms app is very legacy. It might only run-in an old browser, you know? So
Jeff Fritz [00:30:02]:
Yeah. And, right, these are folks who haven't seen they haven't seen developing on a Mac. They haven't seen working with Linux containers. So this is where I kind of stepped into things back at what was it Ignite in 2019. I had a talk with Dan Roth. We were on stage, and we're talking about Blazor for web forms developers because, like like Sean was saying, it's very comfortable for folks who are web forms developers used to that component based environment to look at Blazor and say, this makes sense for me to go to not MVC or Razor Pages. So what's that mean? What how do we do that conversion? And Dan and I talked through that on at that event, and there's things that you end up refactoring.netstandard plays a really good role in this because I can take my business logic out of the web forms app, throw it into dotnetstandard, and it as a dotnetstandardclasslibrary. Continue to use it in web forms while I'm building that Blazor app around it.
Jeff Fritz [00:31:01]:
But what if what if we had components in Blazor that had the same same effect, the same name, the same capabilities as those stock controls that we got from ASP Net Web Forms. That's
Caleb Wells [00:31:15]:
right? Woo hoo. Right?
Shawn Clabo [00:31:19]:
I was at that talk that you guys that you and Daniel were given at at Ignite. So I just wanna let people know if they do have a chance, if they're at a conference online or in person, whenever that starts up again, do check out you or Daniel talking about Blazor. It's awesome.
Jeff Fritz [00:31:33]:
Yeah. I'm a huge fan of this. So, Sean, we took the next steps with that. We said, well, we know what the tags look like from ASP NET web controls. Let's just recreate them in Blazor and have them generate the exact same markup. So we we started this open source project called Blazor Web Forms Components, and the idea is they do the same thing. You you have to change your you have to change your markup slightly because you're you're going from that web forms flavor of markup. Right? The ASPX files, the ASCX files, and you have to get them now into razor, but I can still have tags that look pretty much the same.
Jeff Fritz [00:32:15]:
Right? I mean, if I've got an ASP repeater control, it's ASP colon repeater, and I've got a bunch of attributes there. Well, you can't really do the namespaces. But if I can just drop the ASP colon repeater and all the ASP colon in the repeater tag, and all of my code renders the same way that's inside of that. That's pretty compelling. That gets me like 90 some percent code reuse and we're almost done the first revision of these components that gives you that capability. So that you could lift an ASPX page, change it, rename it to a dot razor and change your markup so that it's it's razor flavor. And right, maybe we can get some text text manipulation tools to help with that actual conversion process. And I think I found a couple tools that will help with that.
Jeff Fritz [00:33:07]:
I'm I'm working on just a few more tweaks on those, and maybe in the next month, we'll have some demos that show a way that you can do this conversion real easy. We're we're really excited about what that means for for folks who want to do that upgrade. How do you do that migration? Because my gosh, some of these apps have been around since 2,001, 2,002. Mhmm. Like, they're older than my kids. These apps have been going to college. You know?
Shawn Clabo [00:33:37]:
It's like Yep. I've got some of those.
Jeff Fritz [00:33:39]:
Yeah. So So how how do we how do we give them new life? Extend the support life cycle on those. You still got support web for web forms. Without question, there's support for at least another 10 years if you've upgraded to dot net 4 8. Fantastic. But if you wanna take that web forms application, put it into a Docker container, start talking about Kubernetes, get into orchestration, maybe you want to use microservices. You you want to start taking advantage of the modern web, the modern things that are available. If we can give you that on ramp that gets you there, maybe you have to rewrite a small amount of code.
Jeff Fritz [00:34:16]:
You're gonna have to rewrite some code. But if we can minimize that amount of code you need to rewrite by making it portable and and get it into dotnetstandardlibrary, I think everybody wins.
Shawn Clabo [00:34:27]:
Okay. So I was thinking about the applications that I have there in in web forms and really deciding how do I get to the future. And, you know, I really wanted to go the the blazer route because of signal r and real time updates, things like that. The other option that I was gonna have was like a dot VVM.
Jeff Fritz [00:34:44]:
Oh, yeah.
Shawn Clabo [00:34:45]:
But but, in in they have a lot of components that are kind of a a swap out as well.
Jeff Fritz [00:34:50]:
Oh, yeah.
Shawn Clabo [00:34:51]:
But it doesn't really give you that that real time interaction of like Blazor does. So I was hoping for this really excites me about Blazor. So if this works, I'm I'm I'm all on board.
Jeff Fritz [00:35:02]:
It's a completely open source project. We've taken a number of great contributions from folks in the community. We have some some Microsoft engineers that are gonna put in some some work, adding a little bit of polish. We're we're adding documentation all the time to this. And and signal r is something that that is available for dot net framework also. Being able to use that with Blazor is a huge benefit whether it's running client side or server side in in WebAssembly or on your ASP NET server, and these components work in both places also. So if you do get your Web Forms application migrated, you could run it completely inside the browser as WebAssembly. So there's there's even some options there that folks haven't seen yet.
Jeff Fritz [00:35:44]:
They have it right. You're you're not exposed. You haven't even considered. Oh my gosh, this could this could all run-in the browser. And and when we think about some of the experiments and direction that they want to go with Blazor, experimenting with making desktop apps, making native apps using using Blazor, right? If you think about some of those those long time web forms apps, whether it's the accounting app, the inventory management app that that it seems like so many of us built back in the day and they're they're in and and running very well at different enterprises around the world. To be able to run that as a desktop app and have that immediate deployment from a server, the the update with data and being able to maintain the content very well is is very very exciting to be able to consider. And we're we're just at the beginning of this technology. So to hear the the consideration of folks who who've been maintaining an ASPX and a web forms application for years years years saying, okay, I wanna consider this and and be able to show this exciting direction where these many different technologies we can take that is, I I think, even more empowering for those folks to say, okay, I'm making the right choice because there's a lot of growth opportunities here that that mean we can do cool things with this application 4, 5, 10 years to come.
Shawn Clabo [00:37:07]:
I see one of the challenges is probably gonna be that since this is core only and my web forms is full framework, for me to do a bit you know, page by page migration, I'm gonna have to create multiple application pools, one core, one full framework, and then set up shared authentication between the 2. But it's all possible.
Jeff Fritz [00:37:29]:
It's so it's possible. I would also encourage you to take a look at taking taking the business logic behind your behind your web forms. Right? Let's make our web forms. Let's make our ASPX pages as dumb as possible. Right? Views should not have business logic in it. Right? Those ASPX pages, we were lulled into a false sense of security of putting inside that page load Right. Method. You know what I'm talking about.
Jeff Fritz [00:37:54]:
I see Caleb there
Caleb Wells [00:37:55]:
digging up in
Jeff Fritz [00:37:56]:
that page load handler. If not page on post back, then make a decision on this. If switch case and make the label green. Right? There's something in there. But if we can move that business logic into a class library, still reuse, still refer to it, still reuse it, and make that class library dot net standard, well now Sean, now your application your web forms application is just a user interface. It's it's not making decisions. It's doing a for loop over content to present or it's data binding back to a class that's being populated out of a dot net standard library, which if it was any other class library in dot net framework, you'd be like, oh yeah, this makes sense. But when it's dot net standard, now it's compatible with when you take it over to Blazor.
Jeff Fritz [00:38:43]:
And, yeah, you're right. You might have some shared authentication challenges as you start to bring up application pools that were that that are Blazor only. But if my goal is to have have a tool to get you migrated all in one shot over to Blazor once you do that initial refactoring of your application code. If we can get you 80 to 90% migrated, thinking about a a million lines of code in an application, that means you still have to rewrite 2 200,000 lines of code. Dear Lord. But if we can get it migrated, get it to a point of reuse, it's a heck of a lot better than trying to figure out re architect and move a 1,000,000 lines of code.
Caleb Wells [00:39:21]:
I've looked at your GitHub repo, which we'll add in the show notes, but your documentation is really good. Right? Thank you.
Jeff Fritz [00:39:28]:
I I always feel like when somebody says, I've been looking at your Git repo, it's like it's like that you're looking in my dirty bedroom. What the
Caleb Wells [00:39:34]:
heck is right there?
Jeff Fritz [00:39:36]:
But don't get
Caleb Wells [00:39:37]:
No. It's, right, that you you go through the steps. You even say up front. Hey. You know, we want this to be as applicable to Webform zaps as possible. Jurors may not be up front. You may have to make certain steps to get up there. But you're very thorough, and they're and I really I appreciate what what y'all are doing.
Caleb Wells [00:39:57]:
I don't I'm not managing a web forms app these days, thankfully.
Jeff Fritz [00:40:02]:
Congratulations. Well, Sean's jealous. I can see it right there in his face.
Caleb Wells [00:40:07]:
I I I am sort of managing a classic ASP one, but only when I absolutely have to.
Jeff Fritz [00:40:13]:
I I swallowed a toothpick. I'm sorry. What?
Caleb Wells [00:40:17]:
Our, our boss built his company on classic ASP
Jeff Fritz [00:40:22]:
Okay.
Caleb Wells [00:40:22]:
15 years ago. And he brought developers onboard a few a few years back, and we're basically, rebuilding it in current technology. Several once in a while, we have to dig in.
Wailu [00:40:33]:
Yeah. Even 15 years ago, that's still pretty late to be building a Oh, yeah. Like, late stage.
Shawn Clabo [00:40:39]:
Yeah. 20?
Caleb Wells [00:40:41]:
Okay. Well, you know, it's he's, he's not a developer.
Wailu [00:40:45]:
He's old school.
Caleb Wells [00:40:46]:
Really have a background in computer science. He just figured it out as he went, and it worked. Oh. So yeah.
Jeff Fritz [00:40:53]:
That says something about about a development framework that you're able to discover and just add the features that you need to. And Mhmm. Classic ASP was so flexible and able to do those things.
Caleb Wells [00:41:03]:
Oh, yeah. May maybe a little too much, but
Jeff Fritz [00:41:07]:
We're all friends here. We're all friends. There's no judgment. Holy crow. What did you get away with? Exactly.
Caleb Wells [00:41:16]:
But but it works, and it's servicing a 1,000 clients.
Jeff Fritz [00:41:20]:
Oh, that's terrific.
Caleb Wells [00:41:21]:
Okay. Hundreds of thousands of people on a daily basis. You know, it's still still the backbone of the company. But yeah. Very cool. So, anyway, we I got ourself on a tangent. But for those who are who are curious, definitely look at the the repo. It's it's well thought out.
Jeff Fritz [00:41:41]:
Thank you. We have some goals. I wanna I wanna build some migration samples there that show if you have a page that's structured like this, here's strategies. Almost a recipe for here's how you're going to move forward and get into Blazor when you have that type of approach. Whether it's you're using master pages, or you wrote your own base page, or, you have your own user controls. What does that look like? How do you get that migrated? Because they're slightly different technologies when we land in Blazor and in dot net core. So it's it's not just how do I migrate, but along the way, it's also a little bit of training so that folks can be exposed to these technologies and feel comfortable. Right? It's one thing to get to to say I'm gonna migrate the app to the new version of x y z technology.
Jeff Fritz [00:42:30]:
If you're not comfortable with version x y z, I don't care that you migrated it if you don't wanna if you don't know how to support it.
Caleb Wells [00:42:37]:
As far as Blazor is concerned, I think I think, right, you're you probably know know it as well as anybody, especially the amount of time you've you've been developing with it. If a team were starting a new project, you know, Greenfield, and they have experience, of course, in c sharp and dot net core and maybe even Angular, would you suggest using Blazor, you know, for, an app that's probably 2 or 3 years out, go ahead and start developing with it today.
Jeff Fritz [00:43:07]:
If if they're building an app and they're very comfortable, they dotnetcsharp is their preferred language, I would absolutely suggest that they they try Blazor. They they give it a shot. Get into that MVP, go through a sprint or 2 and see if it gets you where you want to be as quickly as as you'd like to. Right? Make sure you have some velocity there because the technology is gonna feel very familiar to people who are who are seasoned WPF or WinForms developers, or who have been doing, web forms for a long time. Data binding, two way bindings, interacting with parameters, building components for reuse, These are all skills and technologies and architectures that we're familiar with, very familiar with as dot NET developers. If your if your team has more experience in working with JavaScript for a front end, then you know what, Build with Angular, build with Vue, build with React if that's what makes you happy. The the the goal here isn't to to supplant, to replace a JavaScript framework, but to give you an an alternative. Right? For those folks that say, well, I wanna go use a JavaScript framework which means now I need to use Node on the server because I wanna be the same platform front to back, top to bottom.
Jeff Fritz [00:44:24]:
And all I have to do is rely on JavaScript. I don't have to think about how I integrate with PHP or Ruby or Python or dot net or Java. It's all JavaScript. JavaScript, all the things. Then then we only have one skill set to hire for. Well, you can do the same thing now with dotnet. Your great c sharp developers that you already have can now continue to grow and use all of the cool things that are in the Blazor environment and bring those dotnet skills all the way to the front end and and be very very effective and be very very happy. One customer that I've been working with, their team took some of their technology.
Jeff Fritz [00:45:02]:
They're building some really intense machine learning and compute. So much so they they've built a distributed compute farm that they're they're doing massive calculations on and they report that all back to a central server. Well, okay, that that server that's distributing the load out to to the compute farm, they need to process and display a dashboard, give some some feedback, some input points so that people can load up jobs to be consumed and also to consume the the the output of that, see status of those jobs as they're being processed. Well, because they they built their distributed compute in each one of the compute nodes using csharpand.net, it was very comfortable for them to say, I've got an ASP Net server that communicates to those distributed nodes, and I'm gonna build an a Blazor front end that can run anywhere with WebAssembly because we're on a very fast network. It's inside of our our compute, firewall, and we can be very efficient in how we present dashboards and graphs and information about about the jobs that are being processed. And when you think about that type of architecture where if you when you come out of those compute farms and and you wanna start analyzing and presenting the data, you've almost got, like like like processor overflow in your own mind. Like, oh my gosh. Look at all the c sharp I wrote.
Jeff Fritz [00:46:29]:
Do you really wanna go and shift technologies and start having to paint things with a lot of CSS and JavaScript? You can. But if you can stay in that same c sharp environment and and dot net technologies that you're familiar and comfortable with, that just makes it a little bit easier on everybody.
Wailu [00:46:44]:
What about the, the Blazor ecosystem? Like, would it would because I mean, one of the advantages of using Angular and React and JavaScript in general is just is NPM. You know, that's that whole ecosystem where you can just bring in anything really.
Jeff Fritz [00:46:56]:
Oh, yeah.
Wailu [00:46:56]:
Does Blazor have something similar or can you use NPM?
Jeff Fritz [00:46:59]:
So you you can use NPM to bring in some of those technologies if if you if you wanna bring in JavaScript frameworks, CSS frameworks, less SaaS, you wanna bring in any of those technologies, Blazor will integrate with them. There is a JavaScript interop bridge that you can use to dip into some of those other technologies. You wanna work with a Bootstrap CSS framework? Fantastic. You can reach in and use all of that CSS. You wanna interact with with underscore or some other JavaScript framework, you can do that. You can reach through. I've I've used, Moment JS with Blazor very, very well-to-do some better formatting of dates and management of some of that information on the user interface. And I I can also go the other way.
Jeff Fritz [00:47:42]:
And from those frameworks using Blazor, I can call from JavaScript back into dotnet as well. So you've got a nice two way street there if you want to continue working with NPM. If that's if that's where you have some libraries and technologies that that you feel comfortable using, you can do that. Other folks feel really comfortable using technologies using dotnets package manager, NuGet, and you can reach into NuGet and if something supports dotnetstandard2.0, you can use it with any of the Blazor technologies, whether it's Blazor Server or Blazor WebAssembly. Dotnetstandard2 means it'll just work pretty much everywhere. All of the modern frameworks, Visual Studio, I'm sorry, dotnetframework4.8, dotnetcore2.0 and later, Blazor, Xamarin, it'll work in all of those places. So what you're seeing is folks taking those existing technologies, a Newtonsoft JSON framework, and you can continue using it on Blazor. C s l a, that enterprise friendly framework, you can use that with Blazor.
Jeff Fritz [00:48:50]:
You you wanna go and use some other technologies around around managing presentation, scaling and doing different architectures. As long as they support dot NET standard, they they work. And because of how we package up Blazor components, razor components inside of a package just the same way as a NuGet package that that might contain some of those features and capabilities, you can actually deploy Blazor components as a NuGet package on NuGet for folks to consume in their applications. So now just like you can with NPM where you might have, right, Angular directives that you might want to install and and all kinds of different components for these other frameworks, You can do the same thing with Blazor bringing in components and styling capabilities that work with your application whether it's WebAssembly or Server. Really, really flexible series of choices that you have in front of you. And and I think that's something that is is understated is the amount of choice that folks have when they choose a technology that they want to adopt. When you adopt. Adopt.
Jeff Fritz [00:49:55]:
That's a good word. When you adopt a technology, we'll use that. That's a good word. We're gonna someone write that down. When you adopt a technology like Blazer and you move forward and you you start working with it to be able to pull in from all those different sources, these choices of how you want to grow. Fantastic. My gosh. I see people using the actor framework inside of a WebAssembly app.
Jeff Fritz [00:50:17]:
Right? Actor framework helps you do distributed computing and and really simplify some of your some of your processing by building those little actor based classes. And to be able to do that inside of WebAssembly, well, that's that's pretty powerful for me as an enterprise architect to have that choice available to me.
Shawn Clabo [00:50:37]:
Our guest last week was all about actor, actor, and things like that. So good timing. Yeah.
Jeff Fritz [00:50:41]:
I was gonna say, Akka is a great choice for that. Yes.
Shawn Clabo [00:50:44]:
So are there any questions that we haven't asked about Blazor that you think people should know about?
Caleb Wells [00:50:49]:
Where did the name come from? I understand. Yeah. It's Right. It's a combination of, browser and Razer, and the l just kinda got added somewhere.
Jeff Fritz [00:51:00]:
There you go. That and we've all got some fantastic looking sport coats. You gotta see them. The purple c
Caleb Wells [00:51:07]:
Very are to die for.
Shawn Clabo [00:51:08]:
Very sparkly.
Jeff Fritz [00:51:09]:
Oh, yeah. The the bigger things that I that I hear folks ask are is it production ready? Can can I really use this? Am I actually going to get support? Yes, yes, and yes. It is production ready. Is it is it gonna run natively as faster or faster than JavaScript in the browser? Not yet. It's pretty close because it's running natively. It's gonna take a little bit of time to get WebAssembly started because it has to go through that process of bootstrapping WebAssembly, right? It's not like the v eight engine with JavaScript that is able to just start up and start interpreting code as soon as it arrives. So there is a little bit of a step there that happens, but we're just at the beginning of this technology and exploring WebAssembly. It's I mean, right? We've got 20, 25 years of JavaScript running on browsers at this point.
Jeff Fritz [00:52:03]:
We know how to run JavaScript on browsers and we're maybe 2 or 3 years into WebAssembly as a technology and we're in the 1st year of Blazor as a production ready technology. Let's see where this goes. It can only go up. It's not gonna it's not gonna get slower. You know what I'm saying? So those are those are the big questions that I get is, yeah, where are we gonna take this? Is it is it a real deal? Is this the next Silverlight? No. No. Silverlight got bit by Steve Jobs and his infamous Flash memo that that was shared. No plugins on mobile devices.
Jeff Fritz [00:52:37]:
This isn't a plugin. It runs standard in every browser. When the first time that you show somebody on their on their iPhone, on their Samsung Galaxy phone, their Blazer application running on top of WebAssembly on their phone without a plugin, kind of shocks them that that it does work and works so well there where they might be expecting a silver light runtime or a flash runtime or something. No. None of that happens and it just works. I think that's that's all that any of us as software developers really ask for from our tools.
Caleb Wells [00:53:10]:
Well, that's why Zoom is so popular right now because it just works. You don't have to do anything. You just someone sends you a link, you click the link, and it's like, oh, here you are. Right?
Jeff Fritz [00:53:19]:
Downloads, installs all the things, and off
Caleb Wells [00:53:21]:
it runs. Yep. The simpler, the better. Mhmm. So cool.
Jeff Fritz [00:53:24]:
I still like Skype, though.
Shawn Clabo [00:53:29]:
Teams. Don't forget Teams. Yep. Right?
Jeff Fritz [00:53:32]:
Oh, I'm sorry. I forgot Teams.
Caleb Wells [00:53:34]:
And then you have Slack and that other one, Discord. Right?
Jeff Fritz [00:53:39]:
So Discord, I'm a huge fan of. Discord really has done a nice job of of making communities available in an extensible platform that that is really easy to build bots and build integrations for and to integrate with communities so seamlessly. I'm really excited to see where they go with that technology because it's it's the quiet one that I don't think Slacker teams fully understands is coming for them.
Caleb Wells [00:54:09]:
Right. Because it's a bit more gamer focused. Right?
Jeff Fritz [00:54:14]:
It is a bit more, focused towards the gaming communities. You'll see people on Twitch and Mixer and YouTube have Discord integrations, have Discord communities that correspond to their channels, and and that that's okay. You know, that's that's great to be able to have that offline sync from the the broadcast, from the YouTube discussions to continue going on. We all like that whether it's team Slack, Discord to have that interaction. But to have the extensible model that that Discord is pitching and they make available is something that that is going to create a little bit of a differentiator for them as they grow and figure out how they can make that different better than than Slack. Teams is hitched on to Office and SharePoint, and, my gosh, they're integrated with anything Microsoft right now. It's really impressive what the Teams team that's it doesn't sound weird what the Teams team what the Teams product team is able to connect to and make available as as part of that collaboration. Really neat stuff.
Caleb Wells [00:55:23]:
You could say something like the team's team counts their team integration with Office teams.
Shawn Clabo [00:55:32]:
Showing up his head. There you go, Caleb. Alright. Right? Yeah. You're going off the rails. Deep end.
Jeff Fritz [00:55:39]:
It is.
Shawn Clabo [00:55:40]:
Alright. Well, I don't know about you guys, but I gotta get going. I've got a web forms app to upgrade to Blazer.
Caleb Wells [00:55:45]:
Yeah. Okay. Alright. Let let let us know how how it goes. Yeah. I'm I'm all in. I'm I'm I'm got your back, Sean.
Shawn Clabo [00:55:54]:
At least it's not classic ASP.
Caleb Wells [00:55:55]:
Right. Yeah.
Jeff Fritz [00:55:58]:
Yeah. Alright.
Shawn Clabo [00:56:00]:
I think, what we'll do is we'll do our our last, bit of the show, and that's where we do picks. And what we do is we like to let our listeners know anything that we're interested in lately. It could be a book, a movie, games, technology, whatever. It seems like we got a lot of switch games that get picked over and over again.
Caleb Wells [00:56:19]:
Yeah. Guilty. Guilty.
Jeff Fritz [00:56:23]:
I'm sorry. I I I was just picking up turnips in Animal Crossing and and missed that conversation. Wait a minute. Wait a minute.
Caleb Wells [00:56:32]:
That that was last week.
Jeff Fritz [00:56:33]:
Oh my goodness.
Caleb Wells [00:56:35]:
My wife is not
Shawn Clabo [00:56:37]:
I'm missing out, I guess. I don't have one
Caleb Wells [00:56:39]:
of those.
Jeff Fritz [00:56:41]:
That's that's absolutely a thing, and, a a number of my friends are very much hooked on the the the turnip stock market Mhmm. Each week.
Caleb Wells [00:56:51]:
There there's actually a website called turnip profit where you can track your your daily pricing, and it will actually give you a, like, a 90% good estimate of, what your turnips will what the high point will be that week. It's serious. I'm Tell
Shawn Clabo [00:57:07]:
them about that site, I guess.
Jeff Fritz [00:57:10]:
Okay. Alright.
Caleb Wells [00:57:11]:
Yep. Yep. Alright. I just we we just made, a million and a half, bells this this week off of turnips.
Jeff Fritz [00:57:20]:
So I'm not I haven't been spending my my days in Animal Crossing, but I watch a lot of Twitch. I'm I'm really hooked on the platform. I love everything that it offers. It's such a great tapestry of personalities, content. There's so much to learn. And and as a as a kid of the of the late seventies, early eighties, I was hooked on PBS on the weekends as a kid. I would watch whether it was Bob Vila, building things with this old house, climbing under a sink and showing how he was replacing plumbing, doing some carpentry in the kitchen to build a new counter, whatever it might be, or seeing Bob Ross with the joy of painting. I am I am a huge fan of the, the makers and creators category of content on Twitch.
Jeff Fritz [00:58:09]:
I have a number of of friends that I've made in this area, broadcasters that that do all kinds of really cool really cool, making. Right? Whether I have a friend that does woodworking and she's based out of Seattle and and has a very, kid friendly approach to her show. And and friends that are that are on the West Coast of a friend who makes chain mail jewelry, another that that does paintings, and and somebody else who's doing a couple of of ladies that that make that make handbags that are that are just it's really cool to see the process. I never thought I'd get into watching sewing, but when you see how they explain it and they pull together stuff that that looks pretty cool and they end up delivering a product at the end. I I think it's it's a compelling thing to watch. And because watching on Twitch is a very active chat community, it's a very open discussion, and folks are trying to have a good time when they're broadcasting. Nobody's serious about this. We we wanna we wanna talk, have a good time about as as if we were sitting in a room together and we were all working on the same projects together.
Jeff Fritz [00:59:19]:
It's such a fun and and interesting community to be a part of, and and I hang out occasionally in the the Twitch Makers and Crafters community there.
Shawn Clabo [00:59:29]:
You gotta have a regular dose of happy trees, you know.
Caleb Wells [00:59:32]:
Yes. Oh, yeah. Yes. Happy little trees. I love them.
Jeff Fritz [00:59:36]:
They actually
Wailu [00:59:36]:
love like, are they doing this live? Like Yeah. Knitting in the live? Yeah. So that that would be the difference between Twitch and YouTube. Right?
Jeff Fritz [00:59:43]:
Yep. It's
Wailu [00:59:44]:
not the last package. It's just When
Jeff Fritz [00:59:46]:
they mess up, they you get to watch them go back and say, oh, rats. I gotta go fix that and do whatever it is that that they have to undo. But to exactly your point, Caleb, about happy little trees and and Tron, How do well, Bob Ross is actually live 247 on Twitch. All of his repeats are right there, and they're going all the time nonstop around the clock. So if you miss Bob Ross, he's back and so is the Afro. It's just as bold as ever.
Shawn Clabo [01:00:16]:
I I saw a lot of his, costumes in for Halloween last year, so
Jeff Fritz [01:00:20]:
he's
Shawn Clabo [01:00:21]:
still he's still going on.
Jeff Fritz [01:00:23]:
Yeah.
Shawn Clabo [01:00:23]:
Alright. So, Caleb, what's your pick for this week?
Caleb Wells [01:00:25]:
It is not a Switch game. I was I was considering it, but it's not. It's actually probably like the the the internal opposite. It's Westworld season 3. I just finished it, and my goodness is our world going to hell in a handbasket. You gotta watch it. It's, it's very it's dark, but Really dark. Good.
Caleb Wells [01:00:47]:
It's Yep.
Jeff Fritz [01:00:48]:
I I saw that as well, and it was it was something it it felt like they pivoted from being very western in Mhmm. Right? Very western atmosphere in seasons 1 and 2. Season 3, they got very dystopian future in the tone. Mhmm. And
Caleb Wells [01:01:04]:
But but the thing is, right, they pulled stuff from today or things we're already dealing with and just extrapolate it. Right? Yeah. It's it's definitely very dystopian future.
Shawn Clabo [01:01:16]:
I still flash back to
Caleb Wells [01:01:17]:
guns in west world. It's it's it's not west anymore.
Jeff Fritz [01:01:21]:
You know?
Shawn Clabo [01:01:22]:
Yeah. I still flash back to the original, you know, with Rick and Rick. So Yep. I remember watching that.
Jeff Fritz [01:01:27]:
Oh my gosh. Yes. So they they they've done a nice job with the series.
Shawn Clabo [01:01:31]:
Yeah. Yep. Why what do you have first?
Wailu [01:01:33]:
So I actually got a new phone the other day. My my other phone broke. So this is the Oppo Reno 5 g, and, yeah, I'm just loving it. So I haven't had a new phone in a couple years. So, like, it's got this weird, like, 60 time zoom thing where you can, like, you can literally zoom in. It's like a binocular kind of thing. So, and it's basically in Australia, they're they're practically just giving it away right now, like, dropping up online for, like, $600 Australian, which is probably about $400 US, and it's basically a flagship model. It's got, like, 8 gigs of RAM.
Wailu [01:02:06]:
It's got, like, 256 gigs of SSD. And, yes, and I'm just really enjoying it right now. So I
Caleb Wells [01:02:12]:
have one question for you. Did you intentionally break your old phone
Jeff Fritz [01:02:16]:
so you could get No.
Wailu [01:02:17]:
No. My wife kept asking me that actually. But I was, like, I was jogging and it just it literally just fell out of my pocket. I swear. Like
Caleb Wells [01:02:29]:
There's no 5 g.
Shawn Clabo [01:02:30]:
Is there much 5 g in Australia?
Wailu [01:02:32]:
I haven't actually used the 5 g capacity yet. But I I I think not really. I think unless if you stand right next to the tower, you get 5 g. But no. The 4 g is still pretty good. But, you know, to to be honest, because of this pandemic, I haven't really been out much. So I don't know what the, actual mobile ness of the mobile phone is. But
Shawn Clabo [01:02:53]:
I heard if you also stand next to the tower, you catch, COVID 19?
Wailu [01:02:57]:
Yeah. That's right.
Caleb Wells [01:03:00]:
Yeah. And and radiation damage?
Shawn Clabo [01:03:02]:
Yeah. No. That's the windmills.
Caleb Wells [01:03:05]:
Oh, oh, okay. Well, that's fine. Yeah. Alright. Alright.
Shawn Clabo [01:03:09]:
Windmills cause cancer. Okay. Okay. Okay. So I'm actually gonna pick Microsoft Power Toys, the new version of Power Toys. And, they had some new additions to it recently. So there's a Power Toys run where you can just, you know, alt space and just start typing and you can search or launch apps or anything like that. There's also, like, 6 other toys in there.
Shawn Clabo [01:03:35]:
There's a keyboard manager, image resizer. There's another one that's that's called, fancy zones. So if you like to specify your your layouts for your windows, that's a really handy one too. So if you wanna do things like that, check out Microsoft Power Toys.
Caleb Wells [01:03:50]:
Sean, we we need to get you a switch.
Jeff Fritz [01:03:56]:
I feel like fancy zones are are really effective when you have a a just gigantic screen, 4 k, ultra wide. Now you're you're in a place where, yeah, you wanna position your windows in specific locations and fancy zones really helps enable that that snap into those locations that you are comfortable seeing windows at.
Shawn Clabo [01:04:18]:
Yeah. I have a 32 inch 4 k so it does help me out. Yeah. That's so I gotta at
Wailu [01:04:23]:
those stages to Windows 10?
Shawn Clabo [01:04:25]:
And and vertical tabs in in Visual Studio, and I'm happy. It's
Jeff Fritz [01:04:28]:
a good one.
Shawn Clabo [01:04:29]:
Alright. Jeff, what do you wanna let people know about?
Jeff Fritz [01:04:32]:
Oh, yeah. The the makers in crafting.
Shawn Clabo [01:04:34]:
Oh, that's oh, that was your pick? Makerson Crafting?
Jeff Fritz [01:04:37]:
I'm watching Twitch. Hang up. Sorry.
Caleb Wells [01:04:39]:
It's on the He's here. It was already
Jeff Fritz [01:04:43]:
Right here. I'm gonna put that link. I'm I'm already there watching. Things are going by. This guy's building a birdhouse.
Caleb Wells [01:04:51]:
I just got into Twitch, and it right. It starts immediately, and and it's esports for charity. They're they're playing a FIFA game. That that that's not Makers and Crafts. But, No. That that's what they're
Jeff Fritz [01:05:04]:
pushing. Twitch is really known first for watching people play play video games on it. Right?
Caleb Wells [01:05:09]:
Right.
Jeff Fritz [01:05:10]:
Gosh. When kids, you used to go over to their house. Hey. Watch how I beat Super Mario Brothers. This is really cool. And you you sit down and watch, and and you make fun of them because they'd always miss that one jump in world 31. Right? I mean that was kind of a thing, you know, when you were a kid to to hang out like that. But when you can broadcast and share that online and see some of these people who are really good at playing the first person shooters.
Jeff Fritz [01:05:36]:
The the Fortnite players, the PUBG players, and and they're able to do these these amazing feats of skill with how they control their weapons and and navigate around the maps. It's amazing. So
Shawn Clabo [01:05:50]:
it's Talking talking about games, did you see recently where NVIDIA made Pac Man through AI?
Jeff Fritz [01:05:58]:
Yeah. I didn't quite understand what it how they made Pac Man.
Shawn Clabo [01:06:02]:
It watched 100 of 1000 of frames of the game and learned it and then recreated its
Wailu [01:06:09]:
I killed it.
Shawn Clabo [01:06:10]:
I'll I'll put the the the article from NVIDIA in the in the show notes in the chat here so you can you can look at it, but I was like, oh my god.
Caleb Wells [01:06:20]:
The the AI create recreated the game Right. By itself. Oh, wow.
Shawn Clabo [01:06:24]:
By itself.
Caleb Wells [01:06:25]:
Wow. That's scary. Yeah. And it and
Shawn Clabo [01:06:29]:
it's for the anniversary of of of Pac Man.
Caleb Wells [01:06:32]:
Oh, gotcha.
Shawn Clabo [01:06:32]:
Yep. Let's say, 50,000 Pac Man episodes produced a fully functional version of the game.
Caleb Wells [01:06:39]:
The the world is definitely going to hell in a handbasket. Watch watch Westworld.
Jeff Fritz [01:06:43]:
There was so there was a competition. There was a programming competition for the month of May on online where people were building AIs to win a multiplayer game of Pac Man. And they put right. You would control your your little Pac Man character and move them around the board with whatever your algorithm was that you wrote, and they pit you against 3 other 3 other bots. And you had to chase down the ghosts and capture the most pellets and score the highest on the board. And and that was an AI competition in May. I forget the name of it, but it was it was kind of exciting to see how people were writing these. So
Wailu [01:07:20]:
I think I was watching something about, someone doing that for Super Mario. Like, it would it would just have this computer just constantly play Super Mario, and the first time it would just run straight and then fall off. And then the second time, it would probably do the same thing. But you would just do it millions and millions of times and eventually you would just be able to pass the the level, you know, which is pretty scary when you think about it. So
Jeff Fritz [01:07:41]:
Yeah. Just learning the board. Really good.
Shawn Clabo [01:07:44]:
Alright. So, Jeff, if our listeners have questions and wanna reach out to you, how can they get in touch?
Jeff Fritz [01:07:49]:
You can the best way to reach me is on, Twitter. I am csharpfritz on Twitter. I broadcast 3 days a week right now on Twitch. Tuesday Thursday mornings, I start at 9 AM EST. That's 6 AM Pacific. In summertime here during daylight savings, that's, 1300 UTC. And I broadcast on Sunday mornings at 10 AM Eastern, 7 AM Pacific, 1400 UTC on twitch.tv/csharpfritz. My blog is at jeffreyfritz.com.
Jeff Fritz [01:08:20]:
And, I'm on GitHub. GitHub.com/csharpfritz.
Shawn Clabo [01:08:24]:
Awesome. And if our listeners wanna reach out for the show, they wanna get in touch with me or have suggestions or comments on the show, they can get me on Twitter. I am at.netsuperhero.
Caleb Wells [01:08:35]:
Good. Thanks, Jeff. Good.
Shawn Clabo [01:08:36]:
Thanks, Jeff. That was awesome. Alright. Glad you could come and and be on the show.
Jeff Fritz [01:08:41]:
Cool. Thank you. It was a lot of fun.
Shawn Clabo [01:08:43]:
Alright. And we'll catch
Jeff Fritz [01:08:45]:
I'm looking for that AI Pac Man game now. Like, I wanted to make sure you have a link to this.
Shawn Clabo [01:08:51]:
Yeah. Yeah. Put it in the in the notes in the comments there. So alright. Cool. Anybody, you know, like I say, reach out or we'll catch you all in the next episode of adventures in dot net.
Wailu [01:09:04]:
Yeah.
Shawn Clabo [01:09:04]:
Alright, everybody. Goodbye.
Innovating with .NET Core and Blazor Across Platforms with Jeff Fritz - NET 214
0:00
Playback Speed: