mergeconflict218 James: [00:00:00] Right. Are you going to buy bill and Ted's excellent adventure part breeze, part three, technically. Technically, is this fun? Frank: [00:00:15] If you've been reading my Twitter again off, man, I can't, I just can't decide. I am so much a child of the eighties. I so much have such good fond memories of watching those movies. As a kid, I am such a Keanu Reeves fan. James, are you okay? I I'll read sand. James: [00:00:31] I'm literally growing my hair to become Keanu as we speak. Frank: [00:00:35] Awesome. Um, but man, I'm also a cheapskate. I saw that movie is $25 and I was like, I don't know. I don't know if I want to pay that much James: [00:00:45] money. Yeah. Yeah. I don't remember watching the sequel. I mean, I definitely remember watching the original, but bogus journey. I'm not positive on this one. Same. I did watch the trailer for the new one and I'm just sorta like, and our, no, you know, Disney wants to charge $30 for Milan, but then like, they're going to give it for free to Disney plus people in December. Like what are the, what are box offices thinking? I don't understand. Oh, Frank: [00:01:09] I feel so sorry for the movie owners. Well, I don't cause that's a giant conglomerate, but whatever. I still feel kind of sorry for them with the owners. Uh, you know, it, it is the virus and I literally have nothing else to do, but program and watch TV. So. I probably will break down at some point and buy it. I'm just going to be a moody teenager for a little while and be like money. I should be able to go to go to the movie theater and pay only $15 for this and sit in a sticky feet. James: [00:01:37] I was like, Oh, I should be able to only pay $15 for a ticket and tad and dollar for a popcorn, a $15 for a soda. But I refused. No, I can't. Can you not rent it for like two 99 or something? Three 99? Frank: [00:01:47] I think the rental is. 1999. This is in the U S obviously. Um, and then it's a $5 more to own it. James: [00:01:55] That's ridiculous. Frank: [00:01:56] And I'm marketing works on me. You know, when you price that item $20 cheaper than the better one. You're like, well, I guess I'll just get the better one. It's only $20 more. James: [00:02:07] Yeah. That's a deal they're literally giving it away to you you'll have that. You'll have the, they'll give you the unlimited rights to watch that movie. As long as that service is around. Frank: [00:02:17] I am such a sucker. So I'm going to end up watching this movie tonight. Okay. James: [00:02:21] Talking about nostalgia though, before we go on to our topic today, which is a. Which is a revolution from nostalgic past of, of creating websites. But, uh, I highly could recommend to all of our listeners and to you, uh, a documentary series on Netflix called the high score. Have you seen or watch this at all yet? Frank: [00:02:43] I believe it's been promoted to me quite a bit by the algorithm, but I have not watched it. James: [00:02:51] It's very true. The V algorithm, if you will, is a extremely. Extremely oddly accurate and weird. Um, it is by like a giant something. Let me, let me look up the Frank: [00:03:05] it's a video game thing. Is it like cataloging that? James: [00:03:09] Yeah. So what it is, it's from a company called great big story, which they do tons of documentaries and YouTube videos, all sorts of stuff. Um, it's, it's a Netflix documentary series that. Looks at the video game industry from the 1980s, the 1990s, it's also narrated by Charles Martin net. Who's the voice actor of Mario, which is kind of fantastic because we're really only used to hearing Charles via it's a me Jamario and that's about it. So Frank: [00:03:41] to visit, is it, are they going include programmers or do we just get like a few programmers for five minutes? James: [00:03:49] There's quite a lot of way. Quite a lot of programmers there's, especially in the first episode, they took a lot of looks at the early days of space invaders and PAC man, the Atari era I've watched I'm on the second, uh, uh, there's only six, six episodes. I'm on the second one, which is about the NES revolution, you know, coming out of the, the days of, uh, of the, the great, you know, Atari apocalypse. Of the, um, of the late, uh, of the eighties, you know what I mean? So pretty, pretty awesome in general. And then there's a bunch of, there's a bunch of other ones, but it's really fun. There's, there's all sorts of different perspectives and views so far. It's super good. I definitely highly recommend, uh, of you if you want to taste it. It's really cool too. They do a lot of pixilated artwork and animations it's really well done. Like it's, it's it's you could tell that somebody spent some time and effort and energy on it, for sure. Frank: [00:04:45] You know, you make the Atari apocalypse sound like a bad thing, but for me as a kid, it was amazing because I could finally afford all the games. Like they were all in all the garage sales and they were in the dollar bins at the stores. So like I had such a vast catalog of games, thanks to that company imploding. So, you know, some benefits James: [00:05:05] it's really, it's really fascinating to think about the, how the video game industry. No self imploded on itself in those days, which was all about quantity over, over quality. And if you sort of compare it in a way. To how we live today in a sea of, of apps on our phone, on a sea of, of Netflix shenanigans that are just nonstop piles of, of, of TV and movies, or even just going on Amazon, you know, they're, the algorithm is in place to help or even YouTube. Right. There's just, there's so much, it's just a bunch of just a bunch of crap and there's some good stuff, but like most of it in general, In our life as well. Frank: [00:05:46] Right. Those are very different things like YouTube is I think these days a lot about quantity, for sure. Oh yeah. But at the same time in the game industry, you have games, the AAA games that take five years to produce these days. You know, like people in Hollywood are like, wow, that's low. It's just amazing how much energy and effort have to go and do them. James: [00:06:07] Well, that's why I think that the kind of video games sort of turned themselves around. Now, there are like on steam, there is sort of, there was a steam pocalypse, almost the, I don't know really where the stage where it's at, but there was sort of a pivotal point where. Steam opened its flood Gates and let us anything in. Right. And I kind of see that on the switch dispatch podcast on, um, Sunday, they were recording. There's always so many games, right? Say that they're all bad or that everything's crap, but there's just a lot of yeah. Names. And you're like, Oh my God, how is anyone going to dive all through this? But I don't, I don't believe that like obviously yeah, single game or a single. You know that the CWA quantity of there, there's probably a whole bunch of different reasons in which, you know, Atari. Um, collapsed a lot of the video game industry of that time, not just that. So, um, Frank: [00:06:57] but yeah. Well, as an app developer, though, I love the chaos. I love the bizarre, I like having a million different games available, you know, the Oculus, uh, not the quest. What was before that? James: [00:07:10] The goat. Go Frank: [00:07:11] go, go. Well, yeah, rift was before, but, um, the goal was cool because there were a lot of $5 games for it, so they weren't all great. A lot of them were terrible, but at the same time, I was willing to try, you know, 10 of them instead of paying $50 for a AA game and whatever we get on VR, we don't get your boy. James: [00:07:33] Yeah. You really get to like nibble on, on little bite sized things sometimes. Being able to put out content faster, enables some creativity compared to things that take a long, long time to produce. But you know, what's really fascinating about all this talk about just having so many options, so many choices. It's sorta like web development, Frank great West of development, where there's just a five of billion ways to build an application today. Look at that transition. That's pretty good. Frank: [00:07:59] That was an amazing segue, everyone. Hey look, we're talking about web stuff. Somehow we started a video games and now we're talking about web stuff. I just ruined your segue. Sorry. It's it's fun. Um, the web is crazy because we have a common platform. And the moment you have a common platform, everyone's going to find a different way to program it and manipulate it and do everything. Why don't we all just use JavaScript and HTML forms and posting and all that stuff because it's not the nineties anymore, James. And although I, I hate churn and I hate, uh, flashy, new dev environments. That's not true. I actually do kind of love them at the same time. I've fallen in love with a new web framework. It's not new, not new at all. James: [00:08:47] Well, it is kind of just GED in a way. Well, let's, let's talk about that, right? Because when you think of the world, when I think of the world of the web, I think of, for all intents and purposes, you know, there's of course, website generators. Like if you're building a website yourself, you have a angular, you have react, you have asp.net core MVC, which has been around. For a long time. Those are all those, all three are kind of, they're kind of like three different architectures. I know with asp.net core, you can actually blend angular or react into it as well, which seems a little bit complicated, or you need to build an entire react website, but the new, the new kid on the block, the new, the new power glove addition to the mix would be a little thing called blazer. Later my nemesis. Frank: [00:09:45] I can't believe you just mentioned a bunch of web frameworks and didn't bother to mention PHP or Ruby on rails. Like where's the respect, James? Where's the respect. James: [00:09:52] Well, I guess, are those frameworks or language? I don't know. I'm not a web developer. I don't know. I guess, you know, I guess all of what isn't all of GitHub, all Ruby's or something like that. Frank: [00:10:05] Yeah, I don't know. But if you want to get paid for doing web development, you better know PHP also. James: [00:10:11] Okay. So you got PHP, you got, you got PHP, you got Ruby on rails. There's like, go, obviously there's. I mean goes programming language. Is that framework? I don't know. What's exactly Frank: [00:10:23] right. We're, we're crossing boundaries here, but whatever I like to frame it more like 1990s versus modern. And for me, that difference is, um, are we doing get some posts? And maybe some API calls and maybe some jQuery. It's funny jQuery didn't come around in the nineties at all, but I still think of it as 1990s technology. Cause I'm old, I'm ancient. Um, so you know, that's like kind of, you know, old fashiony stuff where as your reacts and your blazers and your wees. In your UNOS, these are modern takes on let's do web development a little more. Let's make it better. Let's make it actually hospitable. Let's make it livable mostly by getting rid of HTTP and stupid HDV posts and forms and form validation. All that stuff is so silly. It's all such a Relic of a simple model that we had in the nineties that just. You know, it, it scales up to a point, but it's annoying. Anyway, point being modern frameworks, James: [00:11:33] aren't they great. They are now one thing you said earlier, which was all about JavaScript and a lot of people love the JavaScripts. And in fact, you know, if you're doing traditional development, when we think about, you know, there's really like the backend development, and if you think of MVC as the controller, that's sort of running on the server, right. And then your view is running. It in the browser and then it's interacting with the JavaScript, which is updating the Dom. I don't know what the Dom, what does Dom Sanford not Domino's gotcha. Object model. The Dom. Well, that's your HTML and your whatever inside of there. Now the JavaScript, the JavaScript right. Is, is what everybody basically has to use. Right? Because. Because that is what is running in the browser. I mean, there's really no other option, I think blades or is the thing that sort of flips it on its head. Um, because it enables you to not necessarily get rid of JavaScript. I like to say minimize JavaScript, if you will. Does that make sense? I Frank: [00:12:40] like to say, get rid of, okay, you mentalize as a, as an engineering feat, you're gonna end up minimizing because he can't avoid JavaScript a hundred percent, but yeah, the more you can get rid of the better, and that's not a knock against JavaScript. It's fine. Trying to script it to find language, you know, it just doesn't. Yeah. Especially modern versions of it, you know, they have async. They totally got it. I think in JavaScript, you know, it's cool like that. Um, the problem is if you're writing JavaScript code, you're going to have to write an API if you're a web server, because that's what websites are there shared data. You have a database somewhere, you know, that needs to be written to, and you're not going to have the client writing to that database. That's scary. Don't do that. So instead you're going to have to create AAPI and that's when. Everything falls apart because now you have to design a data abstraction layer. You have to version it. You have to make it safe. You have to come up with a tokening system, all that stuff. So. It's this whole, this boundary between the client and the server. That's really the problem. It's not that language is fault. It's that boundaries fault. And the neat thing that I love so much about pleaser is that through the magic of magic, and there was a lot of magic involved, they eliminate that boundary for the most part. And all of a sudden you're writing HTML, but little C sharp snippets with some C sharp code. And it's doing some really reactive, really fast, fun web development. It's making web development fun. I guess that's the part I, I haven't expressed enough. It's actually making it fun. I've been doing this forever and that hasn't been fun in a long time. James: [00:14:27] Yeah. You know, on the website, um, on blazer.net, you know, They make a good point of it. It's like the goal of blazer is to build interactive web UIs using C sharp instead of Java script, which is as accurate. Um, you use reusable web components with C-sharp HTML CSS. These are the words you just said, you know, in different terms. Cause from your I'm reading a website you're just off, off the cuff. And then, but the key here is what you also said, which is both client and server code is written in C sharp, allowing you to share code. And your libraries, and this is something that us as Xamarin developers, by the way, have been able to, to bask in the glory of and taken advantage of years. I always thought that one of the, I guess, the advantages of building mobile apps with Xamarin was not only that you could build iOS and Android and Mac apps in C-sharp, but you could also then share that app logic with other. Desktop apps with your web application that maybe is built with asp.net core with your Azure functions, right? In, in this world of blazer and in this world of basically writing everything in C-sharp. Well, isn't this beautiful because you can now share more code than ever with your website. And your backend and your web API, which, you know, I think web API with asp.net core is very, very, very popular. Um, I think that's very powerful, but I think to me, if we get to the final point, which I think is, is the, is the actual thing I want to talk about, which is making it fun. To build web apps, because one, I'm not good at web apps. And if I look at web apps, there's three components to it right on the website even says it. And you said it too. It is C-sharp HTML and CSS. I'm good at C sharp. I think Frank, you're pretty good at C sharp too, right? Frank: [00:16:14] Yeah, I know it. I can write hello world at James: [00:16:17] least. Alright. HTML pretty. Okay. All right. Frank: [00:16:22] You know, here, here, I'm not even going to pretend, uh, master master of the HTML James: [00:16:29] master the HDL HTML. And on top of that. So before we get to the last part, which is one more thing, the HTML is actually razor, and this is not a brand spanking new technology, but razor templating then turn into razor pages, which then turn into blazer pages. And the cool part is that your HTML razor. Scripting in there, which is surprisingly, surprisingly similar to XAML just a little bit, there is more C-sharp in that file, but they can sit side by side. So you can have your code and your actual well representation of the UI city right there and accessing the variables instead of having to create additional files and bindings. And also if it's kind of all the binding and all the glue and all the magic is there. And I want to take a second to just. Talk about razor. Cause I didn't, I knew that I probably was gonna like razor, but, but before blazer, I just didn't quite grasp it. Cause it was still more Webby. I think. Frank: [00:17:31] Yeah, it's still Webby. You're gonna still have to know that Dom a little bit. You're going to have to know your HTML elements and all of that, but you really know, uh, hit the nail on the head when you said native development, because that's, that's the magic trick in the same way that async code makes writing procedural code, but you know, somehow magical using threads and backgrounding and I O stuff. It. Has a magic to it that makes that happen. There's the magic of blazer that makes web development feel like native development it's feels very similar. When you write an event, call back, you're on click handler for button. Yeah. You know, the classic example, you know, almost feels like VB because he say unclick equals some function name. And then in the code area, you write a function with that name. And it works well, it should work, but for 30 years that hasn't worked, you know, like what's going on here. And, you know, part of me, I resisted blazer variety of reasons, full disclosure here. One of the reasons is because I used to be an ASP web forms developer, and that had several magic tricks attempting to do this. Um, Trick of you're writing all your code in C sharp and doesn't it feel just like C sharp? Doesn't it feel like native? Well it's didn't and it broke in so many things, places and surprising ways as Joel Spolsky would say that abstraction was very leaky and error prone. And that's what I was kind of afraid of with Placer. I was worried it was going to feel like that, but my experience has been quite the opposite. In fact, it has fouled rock solid it's as it's bugs, you know, I've had to do my cardio, you work around here and there, but as someone who's developed these kind of reactive frameworks, cause I have wi which is very similar. It has WebSockets it does wisdom, you know, it's very similar. Um, I know. The hard parts. I know which parts are tricky to get. Right. And they seem to have gotten them. Right. James: [00:19:46] Yeah. It's really fascinating because you're right. The button click counter, but also just the data updating is, you know, when your data binding, I'm gonna put that in quotes here, you put an at sign and then you could say current count, for example, if we're doing button clicker, like from the website, um, you know, when you change that thing, It updates the UI automatically like a data binding or you don't have to do anything fancy you when the thing updates, it knows how to update the page automatically for you. And it knows how to call your method. And those things don't need to be public or private. You don't need to. To know all this magical syntax and that feels really fresh to me. I don't know. I'm sure. Web developers logo. Hello? No, to me. No. Is this, am I wrong? I don't know. Frank: [00:20:32] Yeah, no, that's good. That's nice. This is new. This is, this is modern. Um, because we've all had data binding for a while now. And in the.net world, we know it as I notify properties changed. That is the basis for all of our data binding, but you'll notice in all these examples, there is no mention of I notify property changed. It's not doing that. Uh, it's being a little less efficient, but at the same time, so much simpler and how it treats data and changes in data and how to re render the UI. It's doing the trick that we talked about a few episodes ago, where. They just re rendered the UI on every event and then, you know, do a diff and be clever about how they actually apply it to the user interface. But conceptually, conceptually, it's simple. You hear some data whenever the data changes, update the UI, don't bother me with the details. I don't care about events and all that kind of stuff. I don't care about. I notify property change. Uh, honestly it feels a lot like Swifty. Why. Swift UI has managed to do a lot of these data binding tricks without you doing too much. I notify property change. They don't call it. I know if I proper change, obviously they call it observable object. You still have to do observable object in places in Swift UI, but in a lot of places you don't. And I feel like you're getting a lot of those same benefits. And so you're writing a lot less Croft code, so much less Croft code than I feared at first when I was first walking into James: [00:22:06] this. True. Yeah. There's, there's that nice thing of just being, just seeing the code, Ron, without having to say on property change and it just does it like good. And I'm curious if we'll get there maybe with. Some of the stuff that they're doing with Xamarin forms and Don and Maui with code generators, right? Like what is that? Yeah. It's written for you, right? It's kind of, yeah, it feels like there's stuff happening somewhere back here, but someone is, swizzled doing some code magic for the, framework's doing something crazy, but I like this and you know, my favorite part about blazer is. I don't want to talk about yet how it works or the modes that it runs in. But I do want to talk about that, that the, the, the thing that I've been working on is this new sort of live at TV webpage. Part of that on our website, you've been working with it on some other things, but, you know, the dinette website is not a blazer application. Like it is a bunch over the time. It's I think migrated from razor pages to NBC. I had some react stuff in there, and I had a bunch of different stuff in there, but. Just this new page is blazer inside of the app. And that's really powerful because I thought I had talked to Dan Ross because we're, we're working on some stuff together. And, and I said, I don't understand. You know, cause I thought when I looked at blazer, people perceive blazer and you know, it'd be great to get feedback from our listeners. I'm sure you have your, your input to the students. I always equated the blazer as a competitor to react angular or even asp.net core MVC. I thought, you know, it's like, am I doing the app completely in Xamarin forms? Or am I doing it completely in, you know, uh, storyboards? Right. I thought of it as a completely separate. App almost like, like as it's like completely branching separately and Dan's like, no, that's, that's not, it is all, it's like, it's actually more similar to razor pages or web API or cigars. It's a feature of asp.net core. And once that unlocked in my brain Niamh, that really clicked. And I was like, Oh, this is cool. Because every single web application out there, you know, asp.net core application can infuse. Some blazer into it and I thought that's powerful. Yeah. Frank: [00:24:25] Ma'am where are your expectations? Like when I wrote, we have, of course I made sure that you could embed it into a system. I don't know. No, I'm just messing up. Um, it's funny because I remember back in the, uh, old, old asp.net days, when you said file new project, you would say like MVC project or web API project, and then you were stuck with that kind of project type. You couldn't just add like other little bits to it and then. I forgot when it happened, but there was a big revolution where they said no matter what your asp.net project is, you can, you know, use, um, old time ASP, net template. Views is what we used to use. And then we got MVC and then MVC got razor views. They were the new hotness, and then we got razor pages. Those were the new hotness. And now we have razor components and it's a Testament to asp.net design. You know, I love to make fun of IOC and they certainly do break. Their API is from time to time. But they've managed to have all these different styles of web development in one framework, it's a vast, huge, giant framework, but it's got all these different styles students. It's quite awesome. And while yes, we definitely should talk about the embedding cause that's super awesome. And I'm very excited about that. A blazer 100% is competing with angular and react because. Why in the world, would you write an app using those technologies when you have something like Placer it's it's that good? It's that well organized? It's that? Well-written that? I don't see any reason why you wouldn't write a website using those that said my website is asp.net MVC. So I am doing your trick to have I'm hosting a pleaser inside of different razor views. James: [00:26:23] And, you know, I believe that the templates for angular and react with ESPN on a core are the same thing. They are an asp.net core app, and they're just hosting angular, react technology. So I think you are right. I think that how I looked at it sometimes is like people. May think that I have to create the whole thing and blazer I are, or I'm not even going to look@asp.net core because I'm just going to write the entire thing in angular or react only, and right. Not even think about hosting that thing inside of asp.net core. Whereas, you know, I think that there's, there may be a lot of web developers that have. You know, hopped on like the angular react train, because that's, that was like the hype and still is the hype. I think react more than angular now, but I could be wrong. Feel free to write in, of course I'm not a web developer. Do these are all opinions on myself just from monitoring conferences. That's sort of my, my, my pulse is monitoring conferences, but limited to the dotnet audience or whatever that scope is. Right. But you know, a lot, I think there may be some that like, Hey, we have these ASP on net apps and. Okay, well, I'm just going to do everything in react. Instead of now they can say, no, we're just going to do, uh, asp.net core that we already know and infuse it with some blazer. Instead of saying, having to say, I have to go blazer only, like I thought for some reason, the entire, the entirety had to be a blazer application and don't ask me why, but I have to imagine it's because every demo I see is a 100% fully blaze. Arrised. App or, and again, I'm not a web developer, so maybe web developers see those cool demos. And they're like, Oh, I get what they're doing here. But for me I'm like, Oh, it's blue. I have to choose between blazer or asp.net core MVC. But really the, the answer is you can blend those two worlds Frank: [00:28:13] together. Yeah. And, and honestly, I think a lot of that's just showing off. You want to show off that your technology is good enough to do a whole site. Like, um, well, let's start with at a high level, blazer and react are kind of similar in that they want you to componentize your app break its UI down into small. Easily understood components. And for that reason, I love both technologies because in the old power parlance, it was user controls or custom controls that are very, they highly emphasized. Create your own custom controls, create lots of them, parameterize them, whenever things are getting confusing, you probably want to create a custom control. Um, it's just a nice way to organize your application. That is how you built the UI is with it, but at the same time, They built in routing. So, you know, you can do like weird single page, you know, hash bang, your elf things and make, you know, make your single page applications that used to be cool, but they're not cool people. Single page applications are dumb. URLs are good. A nice sweet spot that I'm finding is, um, MVC because, um, controllers are a good abstraction for creating websites. It's again, just a nice logical way to break up a website and the components basically of any app, honestly, but it's a good way to think about your app. And then, um, laser is providing basically just crazy powerful views, native kind of views for your controllers and yeah. Gosh, it just, it feels really good. I don't know why I keep ending all my little monologues with, gosh, it feels good, but that just tells you, it makes me happy. James: [00:30:05] Yeah. It's, it's pretty cool because I think as a XAML developer for so long and, and Android and iOS, but before that, and XAML, before that coming into this world, it really didn't feel that crazy different. You know, I kind of feel like if I needed to create a website. Now, like, you know, when you think of react and react native, those are two different things. You have to create a mobile app is separate than this. And to be honest, I was creating a blazer app and a Xamarin app. It wouldn't really be all that different because, you know, you could even reuse your view models or whatever, like you, there's ways of sharing logic and code between those. But honestly, the, even the UI parts are relatively familiar between the two of them. Um, and what I found with blazer at least is. I found it the same as being like a brand new developer to, to Xamarin forms. Like when I demo it, which is I can very quickly and very easily get stuff on the page. Like I can eat, we get data on the page, all in C-sharp, all the stuff I already know and love. I can easily iterate through those, get lists of data, get the links and get the images I can do all the normal HTML stuff I can get. Ugly data on the screen. Very fast. That's what I found because, because the sharpen, the HTML and the razor, I kind of get that Frank, the last part that I don't understand, because I'm not a web developer is the CSS and. And I guess, you know, I think that's okay. I was talking to Heather who is a web developer, obviously she's a manager of web developers and, and she told me she's like, that's okay. Because front end developers love that crap. Right. They love tweaking and tuning and getting the, you know, the perfect rounded corners to look great. I can get it. And then once it's there, right. Here's the cool part about this too, is like, I'm working with it with another developer, Dan, not Dan Roth, but different Dan on the, on this website. And the cool part is that he's pretty good at the front end. So I'm like, Hey, I really want this over here. And then he comes back an hour later. He's like, here you go. And then I'm like, okay, well I actually want like this up here and this on here, but I can go do those changes. Right. I can go move bold H one H two and move crap around. I'm not good at. The bootstraps and the rows and the columns, I can put the data down. Right. And that was powerful because I said, We have like an upcoming shows and recent shows and he did upcoming shows. And literally within 20 minutes I had a new component which was called upcoming or recent shows. And I went and made another HTTP request, pump the data down and boom, I just copied his, I copied his previous component and then customize it. And I was like, look at me. I'm like web developer, Holy crap. Holy smokes guys. I'm a web developer and I did a PR and he's, this is amazing. Right. And that was cool. I don't think I could have done that. Um, I don't think I would have felt empowered enough to do that even with, with normally it's been on NBC. I don't think so. Maybe with razor pages, but I don't think I would have felt the ability to do that. Um, before now, HD Frank: [00:33:11] paths, man. They're so scary. Like anyone can send you anything in an HTAP post. Who knows, who knows what's going to come down that pipeline. It's so funny hearing you talk about CSS. There's like a joke or it's not even a joke. Maybe it's a good practice, who knows what's a good practice in HTML these days, but basically put a different class name on every dev in your app. And that way CSS, you can take your time and do the formatting. However you want. As long as you have a different class name on everything, all of the semantic people will be rolling their eyes, but Symantec people are wrong. I'm an engineer. I'm trying to get things done here. People and CSS is James: [00:33:49] so powerful Frank: [00:33:51] at this point that you can basically reformat an entire site and just CSS. It almost doesn't matter what the structure of your devs even are. You could just put them all on one big list if you want it to. But. Um, I think that's kind of why I love it. I'm a little bit of a tight Buffy nerd throughout college. When I should have been studying, I'd always be in the library, just looking at like graphic design books from the sixties. So I kind of love CSS and I love playing with all the options, especially if you ignore browser compatibility. There are just so many options. You can do so many fun, different things like, you know, HTML elements can have a background, right? Most people know you can have a background color, you could have a background image. Did you know that you can have multiple layers? So you could have like 20 different images, all composited differently together over that background with continuous animations running, like those are the fun tricks of CSS that just don't get passed around enough. James: [00:34:51] Yeah. Yeah. I, I don't even pretend like I know anything about anything in the CSS world. It's, it's a, it's a struggle. I want to get there, but then I don't at the same time. So maybe one day, you know, what, what I do like is I do like. Um, going in to, you know, your developer tools. And one thing I do like doing is I like highlighting an element that I'm working on, seeing what it's using and making changes in the browser to then go into the CSS because I can, I can do that. Right. I can go in and say, Oh, this is interesting. The font weight is this. Or the line height is this or the margin. Is this, and I can see what the values are and I can be like, Oh, what happens if I turn it? Oh, interesting. Fascinating. Right. And then, and then I can go into the CSS that's in there and then I can go and modify it. And I think that's also powerful compared to, you know, I've been building apps on mobile devices and mobile phones. We don't really necessarily have that. A capability that is really performance and awesome. Right. We have like the inspector back in the day and I know Apple, I have some tools. I don't know what they have with Swift UI. I don't know flutter has some tools, but I don't know if it's like. I mean in the browser, and this is for anything, not just blazer, but this is just like, it's a it's HTML, right? It's like I can go to any webpage in any time and I can modify, in fact that's how I often mock up web pages, by the way, like, I'm like, I like this webpage, okay, let me just go into the HTML, modify it, take a screenshot. I would like a website like this, you know what I mean? Like make a page like this and, and that's kind of a cool, powerful feature of the web. Frank: [00:36:37] Yeah, no, it is. It is. It's like whenever I was a teaching case, it's how to program before I would teach them any programming concepts. I would teach them HTML first. I was like, here's how to make a document and how to put your name on it and how to change the background, color, how to change this and that. And the best part of that is. It's kind of thoughtless. You're just having fun. You're just playing with colors. You're fighting with shapes, you're playing with design. So it's like a fun introduction to you using text files to get what you want. And then you introduced the function and that kind of stuff. And then you make it more complicated. But yeah, it is. That's that, uh, feedback cycle. Yeah. And throughout mobile development, I've always been and trying to get a fast feedback cycle like that. So you said w we're getting better. It's getting better, uh, that development cycle, but you know what I'm excited for. Uh, do you remember some years ago I did an April fools joke. I put Kalka on the web James: [00:37:39] and I do remember that. Frank: [00:37:41] It was, um, a fond experience. Aye. I hacked this thing in order to convert.net code Java script code it, it was a neat conversion. Unfortunately, the library I was using, they completely rewrote it and change the API and broke my hacks. So it no longer works. Sad, sad puppy face. Yeah. And ever since then, I've, I've still wanted to be able to put Coca on the web. I just wasn't sure exactly how I would do it. James. I'm so excited that like, I think I finally understand enough about blazer and how it works, that I can put an app on the web and I think that's. So exciting because now I'm not supporting my own custom compiler to, to accomplish that James: [00:38:34] task. Yeah. Yeah. That'd be, that's sort of the knee part of it too, is like, that's definitely an app that's prime for it. And in fact, you know, there's, there's, at some point, you know, the nice part about this technology is that. It will enable developers like you and me to bring our visions to the web, but it will also be able to do the reverse, which is enabled web developers to bring their apps too. The desktop or to mobile devices via, well, I mean, they could, Frank: [00:39:11] I'm just messing around. No, it's fine. It's fine. You know, I I'm native apps for life, but, um, if you're going to bring your web apps to my platform yet, please use us sophisticated technology at least like this. Yes. James: [00:39:24] Correct. Yeah. Well, the cool part here is that, you know, There's there's the two aspects of which things are running, which is either blazer server or blazer WebAssembly, um, blazer server that acts. Like a website where like that runs your C sharp logic on the server. So if you increment account, it knows how to update it via signal R and does the web sockets and does all the magic behind the scenes, um, which is good and super scales, you know, you know, you're not, you're not going to maybe build a amazon.com or a Walmart. You know, with it. I don't know. You have a lot of servers, I'm sure. I'm Frank: [00:40:06] sure Microsoft would be happy to have you as a test case if you did James: [00:40:09] well, where we are about to put, you know, blazer and blazer server into the dinette website, which has a lot of hits. So I think that it will be just fine. I think it will be just fine, but you know, it depends on what you're doing because the other part too, is that there is the ability to, to basically. Not run it on the server and have this connection. Well, also, you know, and when you think about it, you know, one thing that I think about too, by the way, is if I look@our.net website, like there is, um, you, you have the website and then you load some data and then you display some data, right? Like I'm not, I'm not actively manipulating the Dom tons or doing a bunch of stuff. It's like, here's some data. Right. Um, which I think is really nice. There is the aspect of a countdown, which we could have done in C-sharp. But we did in Java script because we are manipulating the Dom and that, and basically every second to do a countdown, but in the future here, there's the ability, um, You can already do it today, by the way, which is run that logic inside of the browser, the C-sharp, which would be blazer WebAssembly, which you have talked about. WebAssembly a lot with wi and other technologies, which is not new, maybe to some of our developers, but maybe you could break that down here in like 30 seconds. Frank: [00:41:32] Sure. Sure. Um, so these technologies have fun modes. You said it well, there's the server mode. They call it and the client side mode. So service side, client side, I, the server side has a lot of benefits. You can talk to your database, it's running on the server. You don't have to, um, You don't have to think about much. You can actually pass objects around without serialization. You can have shared memory, so many advantages of just running code on the server. A lot of security and vocations, whereas on a client, you're back to where we kind of started when we were talking about JavaScript. Now you are doing just kind of a language replacement, because if you want to do shared data, you have to have an API. If you don't want to do shared data, doing a video game, you're just doing, you know, just a data website, then it doesn't really matter. And that's fine. You can do everything. clients' side. Um, the benefits there are, you're not paying for CPU resources on your server. You're not paying for a band with, so you're offloading a lot of resource usage onto the client, which is good, distributed computing. It's good problem. Is. No one wants to write an API. At least I don't want to write an API. So I'm sticking with server side for James: [00:42:47] quite a while. You can go either way. So like, if you started with server today, you maybe could eventually migrate over or migrate back and forth. Um, which is, which is nifty too. Um, yeah, it's really cool technology that, that gives you the ability to then, you know, wrap it into an application like an electron application or other signs of application that, you know, runs it on your desktop, for example, or. You know, there's also those blazer mobile bindings that Alon has been working on, which now has a hybrid mode by the way, which enables you to run native components and blazer components side-by-side and share the same memory on the mobile device, which has bananas. Frank: [00:43:29] Yeah, that blaze our mobile project is that open source. James: [00:43:34] Yep. Completely opensource. Frank: [00:43:35] Okay. So I need to dig into the code of that because I am so intrigued. I've written things in this area before, and I know how darn trickery they can be. So I'm super curious how they were able to pull off the tricks, but, um, if they're able to give the blazer programming model to mobile development, That's pretty darn sweet. Um, I'll be honest. It's a nice programming model. I like not implementing, I notify property chain, kind of my nemesis. I would love to have that on iOS. Just saying don't care about those other mobile operating systems. iOS focused on my iOS plays or mobile. James: [00:44:20] There you go. Yeah. Well, there's a lot of, uh, fascinating. Quirks in there probably to get it perfect, but I wouldn't see why not. I think it would be. Quite quite awesome because, you know, it's kind of what react native is at the end of the day, right? It takes the react model, it brings it to mobile. And then when you create a bud and it creates a native UI button, et cetera, et cetera. And, Frank: [00:44:42] but, but, but you're still going through the JavaScript engine. James: [00:44:46] That's correct. Still this Frank: [00:44:47] stupid single threaded piece of junk, whereas you could be running on.net compiled with the LLVM compiler. But then wait, just, yeah. It's, there's a big difference between those two worlds. James: [00:45:02] Well, I, you know, the, the cool part about, about, you know, a blazer hybrid approach or the blade is, or mobile bindings is that, you know, You get all of Don net, right. You know, with the WebAssembly there, there's still going to be some restrictions there, like in general and obviously with Xamarin and the runtime, like there's a few, there's not very many, we've talked about it, but there are things that you can't do. But you know, if you combine the razor blazer model on a mobile device, it's still running the Xamarin monitor runtime. Right. Which means. You can just do anything that you want that's inside of it. It's not like it's running web assembly as well. It's just, it's just executing your dotnet code per huge need, which is cool. Frank: [00:45:53] All right. Well, I think we're going to have to do a follow up on that library. I just don't know anything about it. I haven't used it. So I have to learn up maybe because that's how I'm pressing. I am with the silly blazer library that I'm considering it for my mobile development. How bad is that a web technology? Is that good? That I consider it for native development. Well, James: [00:46:16] you know, a new model just like Swift you, I could come along and pull you over. Right. It's less about, I mean, that's the cool part. It's like the things that you like are the native aspects to it. So if you can get the native aspects and write less code and be more productive. Maybe that's up your alley. That's Frank: [00:46:33] right up my alley, James, right on up it. James: [00:46:37] I like that. Oh my goodness. Yeah. Frank: [00:46:39] Well, this was fun. This was fun. I, I, um, to everyone listening, we are a mobile developer podcast. I promise you. It's just, I've been working on a website lately. It happens to the best of us. I think probably, uh, Well, good. 20% of our content is web development because you can't be a programmer and not deal with the web all the time. So if you find yourself building a website, please, for the love of God, don't write a form with a post on it. Go get blazer or any modern web frame. I guess there's like Vue JS and react. Those are okay, but you're still whatever. Trailblazer James: [00:47:18] I do. Frank: [00:47:18] This is not a paid advertisement, but I shouldn't feel like I should be getting paid. James: [00:47:22] And, and if you were a web of forms, developer, which you said you were, I do want to bring a special attention. I'll put it in the show notes onto something. One of my colleagues, Jeff Fritz has been working on, which I just posted in Zencaster for you. And I'll specifically take point here, which is the thing is it's blazer, web form components. So this enables you to do. Is basically get all of your web form controls as blazer components, which are pretty awesome. Amazing. Just implemented a tree view, which is great. Frank: [00:47:57] Yeah, I see that. I see that. I mean, most of these are easy. You have like image and hyperlink, but data list, form view, grid, view, list, view, repeater. Those are all tricky. Those are tricky. Good job for it's. Uh, that's funny. That's so funny. You need a data grid. James: [00:48:15] Yeah. So, you know, imagine if you were coming from that, I'm like, Oh man, where's this thing out. Well, don't worry. Just boom. Here it is. I think that's pretty, pretty Neato. So I mean, There's all sorts of stuff. I saw like, you know, material components for, for blazer and all this other stuff. Um, but yeah, this is pretty cool. And just because you said web forms, so I just figured I'd throw it in there for you. Frank: [00:48:35] I appreciate that. I love a good throwback like that. I was making fun of web forms, but honestly that was good tech back in the day too. Oh yeah. Again, it certainly beats doing raw posts to form and points. James: [00:48:48] Yeah. I agree. I agree. All right, that's going to do it for this. Week's emerge conflict, all blazer fide edition. Um, and there you go. Until the next time there's been another merge conflict on James Monson Mac Frank: [00:49:00] now, Hey Frank. Thanks for listening.