The Modern .NET Show

Episode 67 - Blazor in Action with Chris Sainty

Embedded Player

Episode 67 - Blazor in Action with Chris Sainty
The .NET Core Podcast

Episode 67 - Blazor in Action with Chris Sainty

Supporting The Show

If this episode was interesting or useful to you, please consider supporting the show with one of the above options.

Episode Transcription

Hello everyone and welcome to THE .NET Core podcast - the only podcast which is devoted to:

and not forgetting The .NET Core community, itself.

I am your host, Jamie “GaProgMan” Taylor, and this is Episode 67: Blazor in Action with Chris Sainty. In this episode, I talked with Chris about Blazor, and his new book: Blazor in Action from Manning Publishing. Chris is a Microsoft MVP, speaker, and creator of a whole heap of open source stuff around Blazor - search the #blazored hastag to find them all.

So let’s sit back, open up a terminal, type in dotnet new podcast and let the show begin.

The following is a machine transcription, as such there may be subtle errors. If you would like to help to fix this transcription, please see this GitHub repository

Jamie

So, thank you ever so much, Chris, for spending some more of your time talking dotnet with me, I know that you’ve got I mean, we talked earlier on just earlier, you’ve got so much stuff going on, especially with a new level one. So congratulations on that. And MVP in the book, the rating and all of these hundreds elementi bajillion, I think is the actual number of open source libraries you’ve got going on. So thank you ever so much for taking some time for that. That’s I really appreciate it.

Chris

Oh, it’s my pleasure, Jamie, as always, and thanks for having me on. It’s, yeah, yeah. Love the podcast.

Jamie

Thank you very much. So for the for the new listeners who may not know you have actually been on the show before. Back in I believe it was. Yeah, I wrote it out in July 2019. So there’s a second appearance, I think there’s only one or two people have been on the show twice. So you’re in a very exclusive club right now. So it’s, I mean, it’s not as exclusive as the MVP, but, you know, doesn’t have the benefits of the MVP? Unfortunately, your face is on the website twice. I mean.

Chris

Oh, wow. I feel loaded now. I also feel inspired to somehow get the hat trick.

So yeah, that’s yeah, that’s pretty cool.

Jamie

I mean, we can bring you back and talk about blazer next time if you want.

Chris

Yeah, exactly. Yeah, yeah, yeah. I’ve got this new book on order. I’m not gonna tell you where I found out about it. But I’m hoping to learn some stuff and maybe apply that.

Jamie

Excellent.

So perhaps for some of the folks who weren’t around, weren’t listeners, subscribers, whatever, during the first time that you were on the show. I was wondering, could you give us a quick, brief rundown of who Chris is what he does, and all that kind of stuff.

Chris

Yeah, sure. So yeah. My name is Chris Sainty.

I’m a I’m a developer, Principal developer at a startup in London called diploid, which I’m pretty proud of because they’re a female, lead, female founded startup, tech startup. So I’ve worked with some very clever ladies who Oh, yeah, real joy to work with. So that’s, that’s really good. I am also a Microsoft MVP of two years now, actually, which is quite cool. I’ve got a load of open source libraries I work on, called blazers. So that’s all packages for blazer applications. I’ve got my blog, which is christianity.com. Although I am neglecting that a little bit at the moment. And that’s because of the other thing, which is I’m writing a book for Manning called blazer in action, which is taking up a lot of my time. And then yeah, as you also mentioned, I’ve recently become a father. So I’ve got my little boy, Archie, my wife, so yeah, he’s, he’ll be eight weeks this Thursday. So there’s a few things is a few things going on.

Jamie

Wow. Well, congratulations on all of that. I have to say. It’s always wonderful to hear when when things are going really well for someone and it’s a wonderful terror that Excellent. Thank you very much. So this isn’t. Okay. So there’s there’s a lot to unpack there. And like I said, you were on the show. Before Oh, my goodness, the time. The time when this go, this episode is planned to get go out. Because inside of baseball, we record these a little bit ahead of time. This is going out in January 2021. If everything goes well, so that means that you’re on the show two and a half years ago ish. Yeah, my mask is really bad. But that’ll do.

Chris

Yeah.

Jamie

And and last time, we talked about blazer. And it’s been a long time since we talked about there’s so much new stuff to talk about. But I want I want to attack you with loads of questions specifically about blazer because I want to talk about the book as well. Yeah. So you talked about the book? Can you give us like a brief overview of what the like, is it? Is it for beginners do if I want to get into dotnet? Is it? Is it the way to do it? Or is it just I know some dotnet? I want to figure out how to build something. And blazer, what’s the what’s the elevator pitch? I guess?

Chris

Yeah, cool. So the book is aimed at kind of people who do who do know dotnet they’re familiar with with sort of fundamentals of web development and things. But that’s basically the the base requirement. So as part of doing the book, we kind of define that the reader, the target reader. So the target reader for blasian action is someone who’s, you know, probably a year or year or two of dotnet core experience. They can build websites, they know a bit about, you know, know the basics of CSS, HTML, JavaScript, stuff like that. And they’re just looking to start to build more advanced applications with with dotnet. So that’s kind of the entry level for the book. And then the whole idea behind the book really is to take you from that level, and work you through all of the various features of blazer. And by the end of it, hopefully you kind of come out of it with a well rounded understanding of the framework, what’s possible with it. Hopefully, you know, you’ve been able to learn a few tips and tricks along the way that hopefully will shortcut you from some of the common pitfalls and things like that. For more advanced users, for reader, sorry for people who maybe had a bit of blazer experience, hopefully there should be stuff in there for that level of reader as well. It’ll be a bit more towards the back probably where we talk about, we’ve got a chapter on performance tuning blazer apps, and things like that unit testing as well, because that tends to be something that a lot of people shy away from in spar frameworks and UI level stuff. So we talked a bit about that and stuff. So hopefully, there’ll be a bit of something there for everybody. That’s that’s kind of what I’m hoping. But, yeah, but one thing won’t be is like an Ultra Deep Dive into every little nook and cranny. Because in all honesty, most people you know, while it’s fun to know, that kind of stuff, that’s probably better for blog posts, I think rather than, than books, general purpose books anyway, certainly the level the way Garner.

Jamie

Sure, I mean, I mean, that makes perfect sense, right? What is it there’s, I forget the name of the principle, but there’s a principle of like 80% of is something like 20% of the knowledge is all that you require to do 80% of the work or something like that. Some are

Chris

Yeah, I know, the one you May I know, because, yeah, it’s always the one that you use when you’re trying to work out whether something’s important to do in the next sprint. And it’s like, 80% of the value comes from 20% of the work and the last 20% come takes 80% of the work or something like that, isn’t it?

Jamie

Yeah. I mean, like, the point I’m getting at is that it would be like you said, it’s great to know, if you want to, it’s great to do that deep dive and learn about the lowest level of how everything fits together and how it’s all working. But if you’re making a crud app, and your boss is saying you’ve got two weeks to do it, you got to learn the way to get from no app to some app and do it right. Yeah, learning a lot lower level at the bottom left, bottom rung. All of like how it all fits together is maybe not your target at that point.

Chris

Yeah, definitely. And I think as well being someone who spent, I mean, I’ve spent probably well, since blazer came out, really I’ve been I’ve had my nose in the source code. And the thing is, if you if you if you start talking about line by line implementation details, it goes out of date. So fast, because the moment a refactor happens, the code doesn’t do that anymore. And now, you know, when you’ve got a blog post, you can update a blog post relatively easily. But if you’ve got a printed book, that becomes a bit harder. So I think what we, what we were sort of trying to do in the book is, is give you the, I think, give you that detail of what’s going on under the hood to help you with things like troubleshooting and trying to be creative in your solution. Ising. But without giving you like the granular detail that really doesn’t probably add that much value. and stuff. So I’m getting, I’m getting a lot buried diagrams, flowcharts and, and stuff like that, to sort of describe what the intent of the code, I think is probably the better way to put it. Because I think that’s the thing that’s a bit more timeless. And that’s hopefully something that will then be useful to people for for sort of longer than that particular version of the framework is out. So yes, that’s the that’s the goal. But then there’s always the, you know, the techie really wants to go in and the nitty gritty in my head is very good at pulling me back and going, Oh, that’s too far. Chris.

Jamie

That’s fair enough. There’s always like an element of joy and like, does this really cool thing I found out and I know how it works. Check this out. It’ll blow your mind when you read it. I totally get that. Yeah, I get that. I’m forever doing that with like my brother, or, you know, my other half. I’m like, check this. This is amazing. And they’re always like, I’d see. So what we haven’t been done yet.

Okay. No I totally get that. So, okay. If I if I sort of put my I don’t know anything about blazer hat on. I know that blazer, something something webassembly something something no more JavaScript. Right? Yep. So for the folks who are maybe sort of new to the idea of blazer is, is that what blazer is something but webassembly? Something something no more JavaScript? I mean, I know that we talked about it last time. We said Yeah, what’s great about it is you don’t have to do JavaScript. Is that still the case? Or is it still like what’s what’s what’s the deal?

Chris

Yeah. So there’s so many, there’s so many things that we could talk about, just from that sentence. So I’m going to let’s deal with the JavaScript one first, because I always think that’s a really interesting conversation to have. Because obviously, yeah, one of the one of the selling points that marketing points for blazer is that, you know, you can write apps in C sharp, and that’s, you know, real dotnet code that executes in the browser. And, you know, you don’t don’t need to use JavaScript anymore. And obviously, that’s not a lie because obviously they would be putting that over marketing material. You know, Microsoft’s solicitors are far too good for that. So But I think it’s I sort of talked about a little bit in the book. And it made the point that while you can achieve a lot without JavaScript, there’s some, there’s certain scenarios where you might actually choose to use it, because it’s just the better tool for the job. And, you know, I love C sharp, I love dotnet. But I’ve been, I’ve been a web developer for my, my entire life, I started building websites with a friend of mine from school when we were 16 for like local businesses. And and I kind of, I’ve got to be really controversial now saying this is someone’s in there, but I, I’ve always got a bit of a soft spot for JavaScript and things like that. Because really, it’s it’s kind of the underdog that should have never achieved what it’s achieved. But it has. But I get why people don’t like it, I get why it’s quirky, I’ve pulled my hair out time and time again with it. And you don’t get that with with with C sharp, it, it’s just a very well thought out nice language and, and in my opinion, at least, and for the apps that I write. And again, I know there’s some people who have different opinions. And that’s fine. That’s all good. But just from my point of view, and I think I think it really comes down to the type of app that you want to build. If you’re going to build a bog standard crud, app line of business, maybe internal app, that kind of thing, you could probably, you could probably could write it without any JavaScript whatsoever. And you could probably make it pretty sweet. Like, it will probably be, you know, you could probably make it pretty funky, you could have it doing some cool stuff and look very slick and still not use JavaScript. But when you want to build some really, like some really advanced UI designs with it, there are just times where certain things are just easier to do through JavaScript, there’s certain API’s are only available through JavaScript, and Blaser doesn’t have access to things like the the DOM yet. So, you know, if you if you want to and browser API’s as well. So there’s certain scenarios where you just don’t have a choice, you have to go through those things. But then again, having said that, the more popular place it gets, the more nougat packages there are that wrap those JavaScript API’s. And you can just instal those instead. And it then becomes a rather interesting. It becomes a rather interesting discussion, then and whether you’re using JavaScript or not, if you’re using someone else’s library that uses JavaScript, because I’ve I’ve sort of seen discussions on Twitter where people have been adamant that an application is using JavaScript, even though they don’t write any JavaScript in that application is, but they rely on a nougat package that that does JavaScript interop. So they’re No, I don’t know, I don’t try not to get involved in those discussions, because that’s just not really going to go anywhere. But, you know, that’s, that’s one of the great points, I guess, about blazer is that if you don’t want to do that JavaScript side, then have a look on nougat, because chances are somebody’s probably, you know, already done the work for you. Sure. So project not very long ago, where someone was actually trying to wrap every JavaScript API in C sharp. I don’t know. I don’t know how that’s going or if that ever actually got anywhere. But you know, that there are people trying to do these things to make your life easier. So. So yeah, I’ve gone off on a complete tangent there talking about loads and loads of different stuff. But I think to bring it back to the point of JavaScript, you can achieve a lot in blazer without writing any JavaScript whatsoever. And the longer blazer is out, the more you can achieve without writing JavaScript, I think it’s just when you get more advanced scenarios is where JavaScript does start to come into play a little bit more, and you might need it. And also just sometimes there’s certain things like chart libraries and things like that, for example, that are really battle tested, they work really well, they’re really feature rich. Why do you want to try and recreate that from scratch, you know, when you could, you know, wrap a few API calls. And, you know, then you can deal with it in C sharp from that point forward.

But you can take advantage of all of those years of, you know, millions of users testing it and running it and optimising it and all of that kind of stuff. That’s where I think, you know, you need there needs to be a, I guess, a bit of a sensible decision really about, you know, which way to go. But But yeah, so so I’ve kind of Yeah, I’ve got all over the place of that. But But yeah, so lots, lots lots you can achieve without it. But every now and then you do still need to delve into it. Sure.

Jamie

I mean, I totally get that. That’s that that Angel argument of you pick the tool that works for the situation you find yourself in, right? Yeah. When you That was the little phrase when you have a hammer, when all you have is a hammer, everything looks like a nail. Yes. If all you’re doing is dotnet, then yeah, maybe you might get a little upset. You have to do some JavaScript. When all you’re doing is JavaScript. You may get upset you to do some dotnet. And the same for any any language, right, I don’t want to pick exclusively on JavaScript, Java C, go Dart, I’m trying to get all the SEO by saying the same thing, right? All of those, all of those different tools and techniques are there for us to pick and choose the right one for the job at hand, right? Because otherwise, we’d be doing machine learning in in C or machine learning in dotnet. But for one reason or another, Python seems to be better for it. So let’s do it all in Python. Let’s do it all in our it just makes sense. Right?

Chris

Yeah. Yeah, definitely.

Jamie

Okay. So what about we? I mentioned webassembly. You mentioned webassembly. blazer is a webassembly technology? Do I need to know webassembly to use it is me saying blazer is a webassembly? technology? a misnomer? Am I talking nonsense? what’s what’s that all about?

Chris

I don’t think it’s not, it’s not. So I think I what the way I describe it is webassembly is an aspect of blazer. So blazer has this principle of hosting models. So in blazers, architecture, there’s a separation between, it’s like app model, its component model, and where that model can be run. And those things are called hosting models. So blazer originally shipped with a hosting model called server blazer server. And that meant that basically your blazer application executed on the server, and then a signal, our connection was set up with the client. And it is a bit like a client terminal sort of thin client style thing. So everything gets sent from the browser to the server to process and then UI updates get sent back down to the client and the browser gets updated. And that’s still going that’s still there, that’s going strong and everything. But then in May of this year, we got blazer webassembly. And blazer webassembly is something that I think a lot of people were probably more excited about, which was the fact that you could now run your app, you know, your real dotnet code in the browser natively without having to do any like it wasn’t secretly transpiling to JavaScript, and all this kind of stuff. It was genuine dotnet DLL is being executed in the browser natively, using web standards without any plugins whatsoever. And that web standard that enables that is webassembly. So webassembly, became the fourth language of the web back in either November or December of last year. So the W three c officially, I don’t know ratified it recognise that whatever they do. So it now sits alongside HTML, CSS, JavaScript, as an official thing. So it’s not going anywhere, it’s there to stay. And the way it ties into blazer is there is a dotnet runtime that’s compiled to webassembly. And that’s where blazer web assembly gets its name from. But your code doesn’t get compiled to webassembly. Your compile your code is still compiled to normal dotnet. dll. So it’s ultimately I l there. And they get downloaded to the browser along with this runtime. And then some JavaScript bootstraps that dotnet runtime that web assembly, dotnet runtime, and then that loads library code, and then it loads your code. So that’s how that all fits together. So I think a lot of people often refer to blazer web assembly, when they’re referring to blazer as a whole, because that’s kind of the bit that they’re interested in, and they’re focused on. And I find like talking to a lot of people, everybody kind of has a different way of what they mean and often it It starts with like a problem in your life cable, which hosting model, are you running on the server? Or are you running on the client and, and going and going from there, but but that’s how the webassembly part fits into all of this. But the the kind of, I won’t go too far into this. But obviously, the really exciting thing with blazer is the fact that you can just keep adding these hosting models. So you know, blazer isn’t really just limited to being a web technology either. It’s it’s basically a UI framework for wherever you can build a hosting model for. So we’ve already seen experiments with electron and Steve sandersons web window project. And Elan Lipton has been doing mobile blazer bindings, which is using the blazer programming model on top of Xamarin Forms technology essentially. And we know now from the from Microsoft, that blazer will hopefully be a programming model in Maui. And married on that as well. So yeah, so so when Yeah, when you talk about blazer, it’s really, it’s really, it’s really difficult sometimes to really encapsulate everything that you could potentially achieve with this framework. You know, over the next few years, you know, you could genuinely have a framework here that you could learn and build any kind of UI in which is a quite an exciting prospect. I

Jamie

think. It really is. I mean, even before you throw a blazer in you’ve got that I will I want to say dotnet core because Like we’re recording this, ahead of the dotnet, five, release the dotnet, five release candidate shipped, I think last release going to I think, shipped last week, the week before. So we’re recording this in a pass rate. So what I’m about to say, is probably outdated by the time it gets released. So I’m tempted to get this out, but I will leave it in. You know, when people were saying to me, I think it was, it was, I think it was Jim, Jim Bennett, when he said dotnet core can run on your computer, or on your tablet, on your server, on your phone, on your watch, on your TV, on your fridge. And I’m like, wow, and then we’re saying the same thing, technically as possible with, from what you were saying then technically as possible with blazer, because it can wrap all of these API’s and all this kind of stuff. And I’m just like, there is almost no limit to what we can do. Right? Or is there? I don’t know. Yeah,

Chris

I think it’s getting you know, is I think it’s a really interesting time to be a dotnet developer. Because there are just so many places, you can run dotnet apps now. And, and it’s growing. And, and, and the places that they could run for it’s getting better. And, you know, we already we already know, you know, we’ve known for a long time now already that dotnet core was, you know, a very, very performant runtime. And, you know, dotnet five is, is building on that as well, you know. So yeah, so I think there’s a lot of interesting and exciting possibilities. Obviously, I’ll caveat everything I said, with the mobile stuff, and whatever is technically experimental at the moment. So, you know, there’s no commitment officially, I don’t think for many of this is just kind of they’re looking into it. But I think just the fact that they’re looking at it is, is a really interesting thing. And everybody I seem to interact with who’s who’s used these experimental models seems to be really excited about it, and really enjoy writing apps that way. And I think, really, that’s your key metric, isn’t it? If your developers are excited building apps using that technology, or that programming model, or wherever? That’s, that’s a pretty good endorsement of what you’re building.

Jamie

That’s it once the developers have fallen into that pit of success? Yes, that’s how you know you’ve,

Chris

you’ve made it right. Yeah, definitely. Yeah. I mean, I think that’s why, yeah, that’s why I think so many dotnet developers alike want to, you know, want to build with blazer and, you know, want to get away from JavaScript, because, you know, at the end of the day, how much of a soft spot I’ve got for it, there’s, there are so many quirks of JavaScript that do exactly the opposite of what you just said is, you know, they throw you at the pit of failure, you know, with with a lot of for sometimes, you know, and where’s he don’t tend to get that with dotnet. And you don’t, you know, the the dotnet ecosystem, it does try to just help you along the path. And, you know, there’s a lot of value in that. Because then you can you can focus on building the business value or wherever it happens to be and not fighting the framework or the language or whatever, which is, is always a good thing.

Jamie

Yeah, definitely. I do remember, there was something that you’d said on the previous episode, I’ll encourage listeners to go back and listen to that one, too, when we need said, you know, with it with blazer, what’s great is if I need a new developer, I don’t I’m on a team with dotnet devs, I don’t need to go out and find someone who is very strong with JavaScript, in order to work on the front end, I can if if they are able to do JavaScript stuff. But also, it means that we have this common language between the developers who are working on the entire stack of the system. They’re all using the same tool. And so if someone has a problem, or if there’s a quirk, we can work on it together. And we don’t have to sort of switch context switch language domains, switch technologies constantly, in order to continue on right, which I’m guessing now this is conjecture on my part, that must increase the velocity of the team. Now this again, you may only be able to answer this conjecture, right. No one’s done any studies. But if you’re using the same technologies, everyone around you, surely, the team as a whole would be faster at delivering whatever value they’re delivering, right?

Chris

Yeah, definitely. Yeah. I mean, it’s, um, it’s by no means remotely scientific. But at my, at my old place, the team I was leading there, we rewrote an app that had been written in react. And that taken about four or five months to build, and we we rewrote the basics of it in a week. And then a month, we had the entire thing up and work into the same functionality that was in the other version. Now that by no means is anything derogatory against the team who wrote the React app. But it kind of shows a bit about what you were just saying. They were dotnet developers who had to learn react, and learn the tools around it, and get up to speed and then find that maybe a tool they picked wasn’t right, like the testing library didn’t work very well. So then they swap the testing. library and that meant rewriting stuff and all of this. And then there’s, you know, the quirks of moving from an object orientated language to a functional language. And do you use TypeScript? Or do you not use TypeScript? And then do you? Which part of the, you know, which particular build tool Do you want to use? Do you use Webpack? Or, you know, any of browserify any of the other bits and bobs? Not to mention, you know, even stuff like getting it running locally, and dealing with cores properly, and all these types of things that come up. And, you know, where is I mean, my team likes it. To be completely fair, as you probably expect, my team had had blazer experience. So we already knew about that framework, and, and whatever. But what I do think that that story shows is that you can build stuff very, very rapidly, when you know, when you know that technology already. And I mean, when I when I first introduced my my team to it originally, I didn’t, they none of them had kind of looked at any docs, they hadn’t gone ahead, they weren’t really, you know, they were focused on other stuff, they weren’t really looking at this. And this was very early on when all everything you know, before blazer server was released, it was everything was experimental. And I gave him this task, again, two hours. And I said, right, here you go, here’s this thing, right, try and build this app, and just see a yawn, like get, obviously Google things, whatever say get on. So if you come across a blog called crusade.com, just ignore it, it’s probably rubbish. And all of them built the app. And what was really interesting for me, is that out of the four of them, five of them who built that app, there was like three or four different approaches to it. So I thought that was quite an interesting, you know, it’s quite an interesting thing for me, because I think not only could they get their heads around the framework enough to solve, you know, the problem I’ve given them, which is relatively basic, it was essentially some crud with a little bit of extra in it, but, you know, but not only that, they’ve met the brief, they’ve done all this stuff, they’d also not been limited in any way to the solution that they pick, they’ve been able to, you know, vary and do it in different ways and still achieve the, you know, the result in the time and all this kind of stuff. And that, for me was like a really interesting point with blazer because I was like, well, this, these are a load of people who, you know, they’re not like me, they’re not like, you know, obsessed with it, and, and whatever. They’re just, you know, good developers who are just, you know, there to, you know, write good apps and not really too fussed about what they’re doing it with, they just want to be productive. And, and so the fact they built this stuff, and the way they did it was just I thought, really, and then then for the next week, they’re all like, Oh, my God, that right? When can we start using this? It’s in preview. We won’t start using it yet. But you know. But yeah, so that, I think, was a really interesting point. And the more people I speak to who are getting into blazer, they kind of go and build something with it. And I Oh, my god, that was a lot easier than I thought, like, you know, I want to rent you know, want to list out a list of items. And I just do a for each with an Li and oh, I’ve got a list. Like that’s, that’s how easy it is. I know how to do for each. I’ve been doing them in C sharp for years. So it’s just same thing, except it’s a piece of HTML in the middle, not a nother C sharp expression or call or whatever, you know. So yeah, yeah, it’s, yeah, interesting. Yeah, I

Jamie

think you you’ve, you’ve raised a couple of really important points there about like around tooling. And do we use TypeScript JavaScript? Do we use Webpack? browserify? What do we use? Whereas like, I feel like the C sharp dotnet toolchain is literally one tool chain. Yeah, right. Everything set to the same, and everything sets the same version number, like TypeScript to TypeScript 2.1. It’s actually 1.8. You know, I worked on a project a couple years ago, where we were getting pretty far into it. And then we hit this stumbling block where one of the developers was using the TypeScript compiler version 1.8, and the rest of us or one point, whatever. And the rest of us were two versions or two minor versions ahead. And we had access to stuff they didn’t. And then they were like, Well, how do I get the updated? compiler? You got to go get? Well, I’m not using Visual Studio. So I want to use NPM and get the right version from there. And then do you pin it to that? Do you not pin it to that? And just like, everything goes out of whack? And then, you know, I don’t want to pick on NPM. But left pad, you know, one person removes a package and everything stops working? Yeah, that can totally happen in dotnet. Two, but it doesn’t happen as often. Yeah. And it doesn’t have such disastrous consequences. So you know, I’m picking on on JavaScript now, and I really don’t want to, but I totally agree that you can, if you are a C sharp dotnet, F sharp, whatever developer and you already know the tools. And then somebody just goes hey, you can do this extra thing. Without having to learn on all new tools and instal new tools, and then slow your belt pipeline down and all that kind of stuff, it feels like it would make me faster at something. And I think you’re right about building something when it’s a get your head around some of the the simplicity triviality not trivialities runway, the simplicity of going, Oh, well, here’s the thing. Here’s a component, here’s a block. I remember. It was back in the 0.03, I think days or 0.30 days, I put together a pokey blazer, which is a front end app that just uses this pokes at the Pokemon API, and then takes that JSON and converts it into a dotnet thing. And they just read here’s a Pokemon This is whether it’s shiny or not, here are the attack values it does. Because my brother was like, I want something to do Pokemon with. And I’m like, Okay, I will throw this together. And you can just search for a Pokemon based on his number, and it will pull it back. And it’s really basic, but like, it is a basic app. But I learned a huge amount about blazer just by doing that, like the the the callback tree, the how to do C sharp functions and stuff. I got all of that just it all just sunk in all made sense. And that was a super early version. That’s when everything was not necessarily breaking really quickly. But like, Oh, no, I think that’s you built something, the new version comes out. Nothing works.

Chris

Yeah, that was an interesting time. Yeah. My my editing button on my blog post was on fire during that period. Yeah, that was, yeah, that I think that’s, I mean, it’s probably a good thing. sighs well, but I mean, that’s the other thing about blazer is just the speed at which features are added, you know, you’ve got the, the the interesting, you know, the interesting thing for me is that, what, two and a half years ago, maybe longer, like they’ll maybe get on three now, this framework didn’t exist. Like it will, it was maybe an idea in Steve’s Anderson’s head. And, you know, the fact that it’s gone from that to a production level framework that you can build some, you know, some decent apps with in that period is pretty impressive. And it’s only getting better. I mean, don’t get me wrong, I’m not, I’m not ignoring the limits of the framework. But why I often see is people, you know, sort of trying to tear it down, because they comparing it to something like react or Angular, and saying that it doesn’t have x y Zed or it doesn’t do X, Y, Zed and things like that. And it’s like, well, was Angular seven years? Is it seven years, React must be at least must be a very, must be a similar number. And I’m talking about react, react, sorry, angular two, not Angular JS, and things like that. So you know, it’s not really a fair comparison, considering the lightsaber webassembly version is only been live since May. So less than a year. And, and certain blazer server only be a year old, in in November. So comparing with a seven year old framework is probably a little unfair. But then on the flip side of it, I think the fact that you’re just that people are already comparing it to seven year old frame, where it’s kind of also shows how far it’s come in that time. Because if it, you know, it, there must be something that’s making them compare it to those framework, because why would they otherwise, so? So yeah, it’s really interesting to see how it’s coming on and what’s going on with it. But yeah, yeah, sorry, to have a horrible flashbacks of adding blog posts. Batman is

Jamie

I suppose that happens when you’re at the forefront of any technology. Right?

Chris

Yeah. I mean, if you, you know, I mean, I’m breaking, I’m gonna break myself here. But if you’re silly enough to be writing in depth blog posts about a preview flight framework from version 0.1, then you’ve kind of got to be expecting to be editing your blog post on a fairly regular basis. So So yeah, but I mean, I just thinking back like, did you know when we first started using blades with the first preview, and you think we only had like the unclick directive? And then I think on, on on, change on, there was like three, I think in the in the 01. Preview. You know, it’s this, it’s crazy thing, how far it’s come? It really is.

Jamie

And it just like you said, it just needs maybe at the moment, a new get package or two to bring in whatever API that you’re saying, Oh, well, it doesn’t do this. There’s like, well, new get add package dawn as it now. Yeah. And then maybe it’ll be there in the next version. I’m not Microsoft, you’re not Microsoft, maybe it will, maybe it won’t. But if the support is there already, then why not? Right.

Chris

Yeah, yeah, definitely. Yeah, I mean, I think, I think I’m right in saying they’re talking about, you know, potentially putting in things like drag and drop for, you know, maybe dotnet six and stuff. So, you know, all these things are coming. And I mean, you can do those things now. But, you know, these common UI problems, you know, I think that’s where Microsoft is gonna be an interesting place. In the front end space, because, you know, the JavaScript community, you know, sort of the years have spent working with that technology, and that it’s very much community LED, you know, drive to fix problems. So you know, somebody will hit a problem and crap package for and off they go and things like that. And but that also is kind of slightly the Achilles heel, because then you get 3000 packages that technically are all solving the same problem. But which one do you pick? And when was the you know, that one’s not been updated for two years? And that one’s that one was updated last week, but it wasn’t updated for like three years before that. So is that, okay? And you end up having to be like a bit like a super sleuth trying to work out? Is this thing gonna be okay? and stuff. Whereas I think with blazer and dotnet. And with Microsoft, the way they are at the moment is kind of like, wait, they just want to let you get on with solving the business problem as easily as possible. So it’s like, well, if there’s a, there’s a benefit to putting a feature into the framework, that’s a common enough thing to warrant being in the framework, then it you know, it’s up for consideration. And obviously, you know, the great thing about dotnet now is that it’s all open source. So if you want something and you’ve got, you know, you’ve got a valid use case, you can go and raise an issue. And you will, you know, the team will listen to that they will, you know, they will respond to you. They, they might always respond what you want to hear, but they will, you know, you can at least make your argument. And you know, there’s plenty of features that have gone into Blaser that have been community driven features. And I think that’s a, you know, a big testament things as well.

Jamie

Absolutely, absolutely. And, you know, I think I don’t want to discount the fact I feel like I’m like I’m picking on NPM and then picking on JavaScript, but you’re saying, you know, we can’t really compare a seven year old framework to something that’s less than two, right? Or less than two and a half or whatever. And I think you’re right. And I, I wonder whether part of that is because dotnet has a standard library. JavaScript doesn’t. And, and and yeah, Angular is maybe seven years old, but JavaScript goes back to 1995 1994. Right? And the same problems, some of the same problems existed, then that still exists in there. Right? And that’s, maybe that’s because the community has had to come forward and say, Hey, use this library use this mistake, right? I still remember a time when there’s memes and jokes about it. Now you would search for a problem I have this problem with with with JavaScript, and the answer would be use jQuery. Yeah. Right. Like, how do I add two numbers together? use jQuery. Yeah. Why would you either. But, but maybe that’s because there isn’t a standard library. And maybe because C sharp has a standard library, it’s a slightly I don’t want to say a better fit. But for some developers, maybe having that standard library, this, hey, here’s a bunch of types and features, and then API’s and stuff you can use that has already been vetted, has already been used, and it’s already being kept up to date. And here’s the latest version. And it’s been, you know, you know, it’s being maintained, because like I say, it’s completely open source now. And then yeah, you could dive in and say, right, okay, I’m having this problem is a bug report, or I’m having this problem. I’d love to have this feature. What and then the community comes in, and I think they still use the thumbs up and thumbs down emoji to do the voting, right. Yeah. So if you can get enough people voting Yeah, we need to do this. It will eventually be added to the roadmap, like,

Chris

Yeah, definitely. Yeah. But they were, again, this is kind of time travelling, because obviously, like, say, we’ll be in January, when we so but yeah, back in current time of, you know, October, you know, the dotnet team have been sort of on a big drive, asking people to actually go on on GitHub and upvote the issues they want and help them prioritise. They should really try to make the point to people that, you know, you can actually affect the roadmap, like, if you want something, you know, and there’s enough people want it, going up, vote it, and if it’s at the top of the list, then that’s what you know, that’s what they’re gonna look at. You know, and again, obviously, there’s always going to be caveats that there might be a limitation technology wise, why they can’t do it or something like that. But, you know, generally speaking, it’s going to at least have some serious consideration, which I think is is a really Yeah, I think that’s a really good thing. I think the only thing that you obviously have to be wary of is with a with a single custodian of the community is that you don’t you know, that you you you always risk losing some diversity and, and that kind of thing with with that model. And I you know, it just to make the point that I’m not just sitting here as a fanboy, you know, there’s plenty of, you know, there’s plenty of disgruntled people who who have felt very, you know, it’s kind of stomped on by Microsoft because they’ve had an open source package. It’s very successful, and Microsoft have just come out with a frame You know, added that feature into a framework instead of maybe contributing to the, you know, the the community version. And of course, then, you know, the community version just gets, just gets sort of left by the wayside. Because, you know, generally speaking, most people in the dotnet community will go with the Microsoft option over the community option. And, you know, there’s a few, I’ve read a few blog posts from people who have been like, right next version of dotnet, I’ve seen that they’re bringing out this feature. So I’m sharing my library, because I’m not going to waste any more time because I know that when that comes out, 70% of people who use my library, just stop using it, because they’ll just go to the Microsoft one because it’s Microsoft. And I think that can I think that’s a bit of a shame. I, you know, just like, say, just add some balance to it here is that I do think that is a bit of a shame. I think there’s some times where maybe there could be better support for an existing community project, over, bring it into the framework sometimes, by also get why, because you’ve got very big companies who have a lot of money riding on certain bits of software, and they need that reassurance that they can go and they can go and bang on like Microsoft Store, if something stops working and not, you know, not some guy’s, you know, working really hard and trying to do it in evenings, weekends or something like that, and maybe can’t get something out. So, yeah, it’s definitely a double edged sword. But I think there’s a lot of there is still probably more benefit, benefit to it than anything, really. And I think as long as it’s always a discussion, as long as the community can always input, then I think, yeah, I think he’s not too bad.

Jamie

Yeah, definitely. Definitely. It. It’s, it’s a thing for smarter people than me to figure out I know that much. is just, yeah, it’s a difficult one. Like, is it is yeah. I mean, do you end up going down the JSON dotnet route and go, Hey, James, you gain Why don’t you come work for us? Yeah. Because like that, that falls into what people call the was the extended embrace, extinguish? Like, you don’t want to you don’t want to do that. But then, you know, if there’s if there genuinely is this thing that everyone’s using, like JSON dotnet, it makes sense to bring it in, because it’s part of the core, the whole experience. But then if people might get upset about that, or I totally get it. And I think we going forward, I think we have a lot of we need to have a or like I said smarter people than we need to have that discussion about this open source thing. How do we support it properly? You know, yeah. And maybe the current level of support is enough. And I just don’t know, I don’t you know, I’m holding my hands up. I really don’t, I don’t, I don’t get it. I’ll happily use a package. If it helps me to solve the problem. Yeah. But then also, I’ll happily use the framework if it helps me to solve the problem. So maybe I’m part of that problem.

Chris

Yeah, no, I think that’s the point. I think at the end of the day, most of us are, you know, where we’re being paid to solve a problem as efficiently as possible. And at the end of the day, if it’s built into the framework, most of us are going to just use that. Because why would you waste time researching an open source package? when, you know, if there’s something already there and you don’t use it? You probably wouldn’t even think to try? Because you bet. Well, there’s the answer is right there in front of me. So, it like you said, it’s not an easy, it’s not an easy thing in the whole, I mean, we could, you know, we could probably talk for several episodes about open source and how you sustain a good ecosystem. And it’s definitely something that I listened to a lot, I listened to a lot of people as corn, your phrase a lot smarter than me, who are who are trying to work those problems out, and I’m just kind of, yeah, just trying to learn really, from them. And, you know, I’ve got a small toe really in the open source world, and, you know, relatively speaking, compared to the people who are doing this, like, really big styling and stuff. And I definitely can see some of the pain points that people have, you know, when, you know, you get someone who opens a very snotty issue, because, you know, they’ve been inconvenienced because they wanted to do this thing. And your library hasn’t done it the way they wanted to, or, you know, they’ve, they’ve come up, they found a problem, but they, they can’t be bothered to tell you how to repro it. They just, they’re just like, well, you wrote it, you need to fix it. You know, I’ve got other things to do. I’ve got you know, I’m being paid to write software, not fix yours. And it’s like, interesting, interesting perspective there. Because when my when my when my software was solving a problem for you, you weren’t thanking me, you weren’t contributing. You were just probably, you know, getting some applause from your boss that you did something quicker than you thought you were going to whatever, which is great. And that’s, you know, that’s great. I love that. That’s part of why I do open source. But you can’t come at me like that when there’s a problem. And you know, treat me like you’re paying 100 You know, 100 pound a month licence fee or something like that, because that’s not fair. And that’s, you know that that’s not and that’s a very small minority of people that do that. It’s It’s tiny, I can count on, you know, one or two hands in the last two years that the people who have done that kind of thing, and you know, there’s hundreds who don’t so you know it, but you know, there shouldn’t be those people at all. It shouldn’t be a thing. But yeah, but anyway, I won’t keep going down that because like, say it’s just such a complicated thing. The open source world.

Jamie

Yeah, it is. It is. So let’s talk. let’s shift gears back towards blazer. Right. We’re recording this ahead of dotnet. Five coming out, which I believe if I’m remembering correctly, has the shorter of the support life cycles, because I believe it’s the even numbers that have the even numbers

Chris

are LTS. Yeah.

Jamie

So, so lots of presumably lots and lots and lots of new features coming out dotnet, five for all of the different dotnet things, right. But we’re talking about blazer. So having looked into the source code, having looked into the release candidates, and obviously I’ll caveat whenever you’re about to say with, we’re recording this ahead of time. So this some of this may not be true, or it may be only partially true, or you may just be lying to me, I have no idea. But when it comes to blazer, in dotnet, five, what are some of your favourite things, the things that you’re super excited about, with blazer with the brand new version, this is about to drop any moment now, in in in recording time, but has already dropped by the time people are listening, we just feel is like a challenge to you. Because Microsoft can change their their mind to just something

Chris

they could technically Yeah, yeah, definitely. And so there’s probably two things that I really like. There’s probably more actually that, but they’re the two that come to mind right now is there’s CSS isolation, which has been something that the community has been pushing for for a very long time. So again, it’s an example of what we’re talking about a second ago of Microsoft, listening to the community and, and building features that the community wants. So CSS isolation has probably been the most requested feature for blazer, since it, you know, very, like even before it first came, like hours of ga product, you know, so that’s really great. I like the way they’ve liked the way that’s been implemented. They’ve used the like Vue js is sort of model for scoping, CSS, which is, from at least from what I’ve read and understand is a really well liked and sort of well thought of implementation. So. So that works really well. And funnily enough, and this is mainly because I do, I do build these libraries, is the JavaScript isolation. So there’s, it’s called JavaScript isolation. But really, it’s not as JavaScript module support, really. And it allows you to dynamically load JavaScript modules on the fly. So that’s the reason I’m excited about that is because this is a library author, I can now dynamically load any JavaScript, I need to because a few of my libraries do use JavaScript. And I can dynamically load that now without having to have the consumer add a script tag to their blazer app, which I think is just a nice usability feature. Because, you know, a good chunk of the issues that get raised on my repos when a version changes is because of a cached JavaScript file or a cached CSS file. So for me, those two features kind of move us away from sort of some of the common problems that I hit, which is, which is really good. But there’s some other stuff in there, like there’s the virtualization component. So this is a component that will take you know, long huge list of data and stuff in virtualize it. So it only shows, you know, the portion that’s visible in the viewport. So you know, you can load a list with like 10,000 items in it. And it’s only going to show you the I know the 20 or whatever it is that you’ve physically got on view and maybe a couple either side of that to make it a nice, smooth scrolling exercise. But that’s a great component. I think that’d be very useful. And what’s really cool with that, that was actually built by an intern. So yeah, so that was built by an intern at Microsoft on the blazer team. So kudos to him, and I’ve completely forgotten his name now. So if he ever happens to listen to this, I apologise. But he’s on the one of the dotnet community stand ups. They did a while now will be a few weeks ago, maybe a month ago, where they kind of introduced all the all the big features coming in dotnet five, so yeah. And what’s the other one? I was going to call that Oh, head head tag manipulation. So

spa frameworks have and this is not a blazer problem. This is just any spa framework. Always kind of had this issue around, you know, SEO and creating the true page navigation experience by changing meta tags and page titles and everything, not just the URL. And with blazer, there’s been no built in solution for that. So you can do some JavaScript interop to manipulate the head tag, you can do seen some sort of versions where you have sort of two route components in a blazer app, one of them is in the head tag, and you literally sort of build the head tag dynamically as well. So but now there’s a solution out of the box in dotnet, five, where you can, you can set your title of your page using a component now. And then when you navigate between pages, you have that component in each page and set the title of each page. And it just changes every time you navigate. And but you can also add and remove any other elements in head tag is where you want. So if you want meta description, meta keywords, for SEO, stuff like that, you can build build all those into it as well. So if you’re doing that, and you’re doing pre rendering, then you’re, you know, you’re going to probably be doing okay, SEO wise, you should be able to sort of get the usual SEO, sort of all the basic SEO markers. Again, I’m not gonna try and claim to be an SEO expert, because that’s another black box that I don’t think no matter how much I read about I ever understand. So. So yeah, so that’s another I think that’s another good one. And you know, that one, again, even if, you know a lot of the time, a lot of apps in dotnet tend to be more line of business or maybe not public anyway. But I think it’s just a nice from a user experience that you can have a different title on the browser tab when they move around and things, I think that it’s just a nicer user experience. So they’re kind of the four things that I I kind of really like I did, I sort of really sort of fortunate enough, I got asked to do a keynote for a South American blazer event, which is really, really awesome. And I did a talk about what was going in dotnet five, and I was doing some research then on actual numbers. And there’s like, thing I pulled out like 15 features that are coming in dotnet. Five. And I think the overall like number of issues that actually got merged for dotnet. Five, I’m sure I heard someone from the dotnet team say this was around 50 in total. So that’s more like the bug fixes and general performance and framework changes because obviously moving to dotnet. Five and the changes that came with that, which I just think is phenomenal, considering they’ve worked on a very compressed timescale for dotnet. Five, because up until May, they were working on blazer webassembly, which was dotnet. Core 3.2. So up until then they were fully concentrate on that. So the blazer team has only really been working on dotnet. Five features since May. So I think to build all that stuff into the framework in that period of time is is impressive. So yeah, and so you Yeah, so that anyway, that was Yeah, they might, they might keep it.

Jamie

Cool. Okay. I’m interested with the CSS. Do you say CSS isolation?

Unknown Speaker
Yeah. Yeah.

Jamie

Is that is that similar to? Let’s say, I’m building something in a modern JavaScript framework with Vue js, or rather view, I guess, is the unit Angular react like anything? I’ve got an A block of HTML, a block of JavaScript and a block of CSS that’s only relevant to that component, right? Yeah. Is that that same idea?

Chris

Yep. Yeah, so Exactly. Right. So the way that it works with blazer is you, you have your component file. So let’s look, I’ll use the always popular counter component that’s in every blazer demo in the world. So yeah, you’d have your counter dot razor file. So there you go. That would be your component code. And what you do is you create a stylesheet with the same name. So you create counter dot razor dot CSS. So use that convention, and the framework will pick that up. And then you can, you’ve probably got quite a few of these, because you’ve probably got styles, Ricci components. So the framework will actually during the build phase will pull those together and bundle them into one file, which will be the name of the project, dot styles dot CSS. So so if we, if we had a blazer webassembly app, for example, it could be a blazer server app does remap and it was called, I know, awesome. blazer. So So yeah, the the output stylesheet would be called awesome blazer dot styles dot CSS. And yes, you just put that one that one stylesheet reference in your head tag. And the framework is going to bundle all of those styles up and put them in there for you. But the key point is, what it does, it generates a unique, a unique key on each HTML element. So add it as an attribute at build time, and if they have the same structure, so it’s been hyphen and then like a random like alphanumeric string. And then all of your CSS is rewritten. And it’s scoped to that attribute on that on that block of HTML. So so that means all of the HTML elements in in a component will all have the same ID and all of the classes get written to that Id re scoped to that ID, which obviously then stops any CSS bleed between between the components. And, again, it’s quite useful if you’re, you know, consuming library code, because, you know, if you’ve got a class called container, and someone else has got a class called container, you then end up like, which order Do I need style sheets to go in? Or do I need to put like, exclamation mark important online, so overrides that one on, and the whole problem goes away with scoped CSS. So So yeah, it’s a really, it’s a really good feature. Like I say, a lot of people have been asking that for a long time. So funny enough, I don’t I, I sort of use it a little bit. I’m using tailwind CSS a lot at the moment, which is utility based CSS framework. So in a lot of ways, I don’t kind of take advantage of the scope stuff as much as I probably would have been. Whenever we write custom CSS, we’re now using that because we’re where I work, we’re running on the previews of, of dotnet. Five. So we’ve been playing around with this for a while now. So it’s, and it barely works really well, which is really cool.

Jamie

Cool. I like that. I like that. And, you know, it’s a nice to have, even if you’re not using it, right? is full of all of these. We talked about it before are these framework features that maybe you’re using, maybe or not, it’s kind of nice to have support for iterators and fedlink, and CSS isolation, those kinds of things, just in case you need to use it. Hey, we’ve solved that problem already. Here’s how you can leverage that solution. That totally makes sense to me. Yeah. Yeah.

Chris

That’s cool.

Jamie

Awesome. Okay. So as we as we wrap up, then, tell us a little bit more about the book, if you can, like, where we can get it for him. He’s available. Now I know that at the time of recording this, like a, an early access programme going on, I don’t want to pressure you into giving a release date, but by January 2021, is it out? Or is it still a work in progress? So you know, what’s, what’s that all about?

Chris

Oh, no, if only Yeah, so. So the book will be is in Meep now, which is the Manning early access programme. So in that programme, you, you can buy the book, there’s different packages, I think, as well, you can buy so you can buy like the digital version, but you can also buy it with the physical copy that will get sent to you when it gets printed and stuff like that. So you can do that. And basically what happened during the meet period is you will get depending on when you buy it, you will get all the chapters that have currently been released to me. And then you will get a new some new content every month, as I basically as I write it, really. But one of the nice things in the good benefits of the meet programme is that you get to feedback on the book. So you can you can leave comments on the on the on the live book forum. And you can sort of give your feedback about what you think about the approach or if something’s missing, or if, you know, if you don’t like the wave, I’ve explained something and you think it could be better, you can make the suggestion and you can basically have a chance to influence the final outcome. So, you know, it’s it’s, you know, Manning of brilliant, they’ve got, you know, brilliant people, and they put, you know, a good, really serious amount of resource behind us authors bill, you know, her writing these books. But, you know, obviously getting input from, you know, the end reader is always is always nice as an author and well constructive feedback. And, you know, that can really be useful when you know, especially when you’re writing something you’re not, you know, you maybe got a few ways you could have done it, you pick away and you’re like not 100% sure if that was the best way. So having some people look at it and go Actually, I really like that, or I’m not sure that’s still not really very clear. Maybe if you could explain that in a bit more detail. And then you can shift it because again, while it’s in digital, we can change it. But once it goes to print, then that’s it that is locked in at that point. So but it’s but yeah, so coming to your point about or your question about timelines. Yeah, in January, it will definitely still be me. I now know why people say like, do you really need to think before you write a book, it’s it’s very challenging. I think at the time and the time forecast, now I’m writing chapter three for the third time. So so far, I’ve written chapter three. The versions I’ve written is getting over 50 pages. Because of iterations, I think I’ve had a 45 page version of it. A 17 or 18 page version of it. I’m a good 17 or 18 pages. And again, for the version. So it’s just one of them. There’s just been my bogeyman chapter that I just like, I don’t know what it is. I just yeah, it’s not. It’s been a pain. So but I think I’ve got it this time. I think I’ve got it late. So, so yeah, but hopefully and get the head down, get a few more chapters under under the belt and it will be released next year. So that’s the goal. So well, the time the timer broadcast this year, so 2021 is the goal. So So yeah, fingers crossed, as long as the Marvel’s

Jamie

excellent. Okay. So, yeah. So what I’ll do is I got a couple of links from you and put them in the in the show notes directly to the meetup page, or if indeed, you’re listening in the future. Maybe it’s the same URL? I don’t know. But we’ll figure it out. We’ll get those. Definitely go check it out. Because, yeah, I feel like, blazer is one of those technologies, like you say, it’s got all of these different hosting models. And it’s going to be something that goes forward, right? Because, as far as I’m aware, you don’t? Well, okay, one last question. If I’m building something with blazer, I know that blazer kind of hangs off of ASP. NET Core, and the razor pages and MVC and stuff I got, can I bring some of that in? Or am I a lot just a blazer, right? Because like, if I’m making the technology choice for my app, and maybe I’m solution architect, maybe I’m tech lead, maybe I’m technology CTO or something, and I’m saying, right, you’re gonna build it with blazer. And somebody says, you know, and I say, I’m gonna build it with blazer. And then six months in, we go, actually, we’re gonna need this API thing, or we need these controllers, or, you know, can I can I mix and match? Because it’s all one framework, right?

Chris

Yeah, yeah, no, definitely. So you can. So the way around it works is you can put Blaser components into razor pages or into MVC views. That’s, that’s fine. What you can’t do it the other way around. So you can’t host a razor page in a blazer component. For example, if you, if you kind of stop for a minute, and think it kinda doesn’t really make much sense, because the razor page is a server construct. And the component is a client side construct. So it’s while they both deal with HTML, and they’re both using razor, they actually work very, very differently because a razor page gets compiled to a string of HTML, and a blazer component gets compiled to a C sharp class that has a special method that when that gets run by a renderer, after all of that, eventually, some HTML comes out in a certain way. So so they don’t really go together in that way around. But yeah, sure, you can just you can just plug in the bits you want. So, you know, one of the hosting, you know, one of the File, New Project, so you can do with blazer is a blazer web assembly with an ASP. NET Core back end. So you know, that gives you the, the, the API’s and stuff like that, and then you can actually, the API project actually serves the blazer project and stuff. So it all kind of everything works together, which is, you know, it comes back to what we said earlier about, you know, dotnet, being able to do so many things, you know, you can now use all these technologies together to create the, you know, the thing you want to create in the best way, you know, to solve your problem, your version of that problem, you know, which is, yeah, which is nice. I think that’s the exciting thing about dotnet.

Jamie

Excellent. Okay. Well, I mean, that could have been something that I completely forgot to ask anyone. But that’s, that’s, that’s on me. So thank you for the cover. So what about finding out more about Chris, I know you said earlier on the Chris siente.com blog is kind of been put to the wayside a little bit. Because of the whole you were all of these hundreds of thousands of things going on and the book. So is it is it check the website? Is it Twitter? what’s what’s the best way to find out?

Chris

Yeah, so yeah, I feel so bad about my poor blog. I love my blog. And I’m actually really excited that when I finish the book, and get back to writing blog posts, because I used to do a blog post every week, and I really miss doing it. So. So yes, I’m looking forward to getting that done. So you’ve got my newsletter, you can sign up to my blog. So if anything changes, there’ll be something set out there. So there’s that aspect. And I will try to do try and post an occasional blog post. whenever I can. They just tend to be a bit shorter than what I usually wrote on there. But yeah, you can get me on Twitter. It’s Chris underscore sany on Twitter, if you want to get hold of me, although I’m not always the most talk. I don’t tend to post huge amounts. So I tried to just post something that’s useful and not run on too much. But I yeah. So yeah, that’s probably the best way either of those routes is probably the best way to get hold of me. I think. If you saw me at a conference, come and say hello, but we don’t really have face to face conferences anymore, do we? So

Jamie

now the moment but you know, once the unfortunate pneus as calm down, we’ll be able to maybe start doing it again. Yeah, definitely say who can say yeah, excellent. Okay. Well, what I’ll say to you, Chris, is I’ll get some more legs from you offer. And you know everyone to just go to the shownotes, the beautiful transcription down at the bottom of the transcription, handful of useful, useful links. So definitely check those out. And Chris, thank you ever so much for taking some time out of your evening. I know that you’ve got a lot of stuff going on. And you know, you’ve got the little one to look after and all that kind of stuff. So I feel bad for monopolising your time now, but thank you so much for agreeing to be on the show again.

Chris

No, not at all. Thanks for having me again. Yeah, it’s been my absolute pleasure, Jamie. It’s Yeah, I’m looking forward to that, Patrick. It’s gonna be good.

Jamie

That’s it. That’s it. Well, we’re left to put out a poll should crispy on the show again.

Chris

Oh, God, now that the mighty archetype God knows why.

Jamie

You know, we’ll maybe have to do a poll of what do we get for people who are on the show three times, you know, oh, yeah. Well scheme and then we can have like competitors. Yeah. And like a league table or something. Excellent. Well, like I said, Chris, thank you so much. It’s been loads of fun. And I’m looking forward to reading the book when it comes out. So Best of luck with that and best of luck with all of your projects and especially Best of luck with the other one as well. So they gave us so much gold Thanks, Amy. Case

The above is a machine transcription, as such there may be subtle errors. If you would like to help to fix this transcription, please see this GitHub repository

Wrapping Up

That was my interview with Chris Sainty about Blazor. Be sure to check out the show notes for a bunch of links to some of the stuff that we covered, and full transcription of the interview. The show notes, as always, can be found at dotnetcore.show, and there will be a link directly to them in your podcatcher.

And don’t forget to spread the word, leave a rating or review on your podcatcher of choice - head over to dotnetcore.show/subscribe for ways to do that - and to come back next time for more .NET Core goodness.

I will see you again real soon. See you later folks.

Follow the show

You can find the show on any of these places