Speaker 1: How'd you like to listen to dot NetRocks with no ads? Easy?
Speaker 1: Become a patron for just five dollars a month you
Speaker 1: get access to a private RSS feed where all the
Speaker 1: shows have no ads. Twenty dollars a month will get
Speaker 1: you that and a special dot net Rocks patron mug.
Speaker 1: Sign up now at Patreon dot dot NetRocks dot com. Hi,
Speaker 1: this is Carl Franklin.
Speaker 2: And this is Richard Campbell.
Speaker 1: We've got two special shows coming up soon, episode nineteen
Speaker 1: ninety nine and two thousand.
Speaker 2: For episode nineteen ninety nine, we're collecting people's y two
Speaker 2: k stories what did you do to help the Y
Speaker 2: two k event not actually happen?
Speaker 1: And for episode two thousand, we're going to be sharing
Speaker 1: stories about how dot net shaped your career.
Speaker 2: We have a special page at dot netroocks dot com
Speaker 2: slash voxpop where you can record messages for us that
Speaker 2: we can play on these special episodes. So tell us
Speaker 2: what you did for Y two k and what dot
Speaker 2: net means to you, and of course how long you've
Speaker 2: been listening to dot net rocks. So go do dot
Speaker 2: NetRocks dot com slash vox pop now and leave us
Speaker 2: a message before the thought of operates like whiskey left
Speaker 2: in a glass overnight.
Speaker 1: Do it? Hey, welcome back to dot net Rocks. I'm
Speaker 1: Carl Franklin.
Speaker 2: An Amateurd Campbell.
Speaker 1: Daniel Roth is here. Holy crap, hooray who the asbnet guy,
Speaker 1: the Blazer guy. I We're gonna introduce Dan later but formally.
Speaker 1: But Daniel, we do this introduction and feel free to
Speaker 1: just jump in. It's okay. Our listeners have told us
Speaker 1: that they like that.
Speaker 3: Give me a signal you want me to actually say
Speaker 3: something or.
Speaker 1: No, no, no, no, you just jump in when you
Speaker 1: need to. This is episode nineteen ninety six, and as promised, here,
Speaker 1: let's talk about the things that happened in that year,
Speaker 1: nineteen ninety six.
Speaker 2: All right, so any favorites.
Speaker 1: Yeah, Well Bill Clinton defeated Bob Dole, the guy who
Speaker 1: liked to talk about himself in the third person.
Speaker 2: Nice his re election, Yeah of course.
Speaker 1: Yeah. So some really bad stuff happened in nineteen ninety six,
Speaker 1: the major tragedies and aviations and shooting and terrorism, but
Speaker 1: there were some scientific breakthroughs like Dollia's Sheep and Taliban
Speaker 1: rose up to power. Let's see in Afghanistan. Yeah, Afghanistan,
Speaker 1: the helicopter collision in Israel, Port Arthur massacre Tasmania thirty
Speaker 1: five people, and that triggered sweeping gun law reforms in
Speaker 1: Australia which have pretty much held held fast.
Speaker 2: Yeah, they didn't until just recently. Then there was an
Speaker 2: incident at the Bondi Beach.
Speaker 1: Right, But they went for a long long time without
Speaker 1: having ay having any incidents. John ben a Ramsay little girl,
Speaker 1: six year old pageant queen found murdered in Colorado. Dolly
Speaker 1: the sheep first mammal clone from an adult cell by
Speaker 1: scientists in Scotland, twa flight eight hundred crash Boeing seven
Speaker 1: forty seven exploded off Long Island. I remember that it
Speaker 1: was taken off.
Speaker 2: Yeah, a lot of conspiracy around that one, but we
Speaker 2: eventually proved that it was a problem with the wiring
Speaker 2: in the center fuel tank what was empty and it
Speaker 2: exploded and blew the nose off the plane.
Speaker 3: Yeah.
Speaker 1: And the Centennial Olympic Park bombing pipe bomb exploded.
Speaker 2: Because it was also the Summer Olympics in Atlanta.
Speaker 1: Summer Olympics in Atlanta. And that guy they thought they
Speaker 1: had the right guy, I can't remember if he ever
Speaker 1: got arrested or whatever. But yeah, and speaking of Scotland,
Speaker 1: the Dunblane school massacre. Gunman killed sixteen children in a teacher.
Speaker 1: It just wasn't a pretty nasty year for that grim year.
Speaker 2: I mean, I can point in a few more positive
Speaker 2: things going on. The Motorola Startack phone came out, the
Speaker 2: first really popular cell phone.
Speaker 1: Wow, the cool phone, the star Attack Yeah, okay, that's cool.
Speaker 2: Yeah. Also the pom pilot. This was the first, the
Speaker 2: first you know, productivity device, the pomp pilot. Right on
Speaker 2: the space side of things. Seven Shuttle flights this year,
Speaker 2: three two of which go to to mir because they're
Speaker 2: now bringing astronauts up to mer and they're doing your
Speaker 2: six month shifts and rotating out. The rest are mostly
Speaker 2: have experiments. Most notable in November Columbia not going to
Speaker 2: miror because Columbia couldn't get to Mirror being slightly heavier.
Speaker 2: It broke the record for the longest mission ever seventeen days,
Speaker 2: fifteen hours. It also had the astronaut's story Musgrave on it.
Speaker 2: He was one of the principal guys behind fixing the
Speaker 2: hubble and with the flight on Columbia, he was the
Speaker 2: only astronaut to fly all five shuttles. Wow. I had
Speaker 2: a chance to meet him once. He was just an amazing,
Speaker 2: amazing guy, really brilliant. He was doing a presentation for
Speaker 2: a conference that I was involved with. You know, he's
Speaker 2: the guy who fixed thehubble, right, So he goes into
Speaker 2: the presentation and before he start, everybody's waiting for me's
Speaker 2: about to start. He gets off the stage, walks up
Speaker 2: to the projector and starts twiddling. We was just sorry,
Speaker 2: I really care a lot about focus.
Speaker 1: That's great.
Speaker 2: Well, I laughed. I thought that was hilarious. I don't
Speaker 2: know that anybody else knewed it was about Yeah, that's
Speaker 2: staring mys gram.
Speaker 1: That's great.
Speaker 2: One other space thing. The last module mirror the Purorda module,
Speaker 2: which was an earth sensing module partially funded by the
Speaker 2: US that had been sitting you know, at this point
Speaker 2: the Soviet Union's collapse, the Russian Federation is very financially restricted.
Speaker 2: So they had built this module and wasn't quite done yet,
Speaker 2: and so this was very much an international thing. The
Speaker 2: US kicked in some money. There were experiments for a
Speaker 2: bunch of different nations, and so it was his research module. Yeah,
Speaker 2: and then commet hayakud Hayakatake, detected by a Japanese astronomical
Speaker 2: student in January, made a very close pass on Earth
Speaker 2: in March, and just a it was just a reminder
Speaker 2: back then that we don't have good eyes on what's
Speaker 2: out there far out, you know. And the big difference,
Speaker 2: big difference from between us and the dinosaurs is the
Speaker 2: dinosaurs didn't have a space program and so you know,
Speaker 2: if the comet had was headed for Earth, we only
Speaker 2: had two months notice, like, there was probably nothing we
Speaker 2: could have done about it. But as it was, it
Speaker 2: made a close flyby, was spectacular. It's a very near
Speaker 2: thing on the web. The population of the web, but
Speaker 2: that points about thirty six million users. This is nineteen
Speaker 2: ninety six, we're just in the beginning of it. It's
Speaker 2: also the year that was figured out that there was
Speaker 2: more email sent than physical mail, which doesn't seem like
Speaker 2: much of accomplishment today, but it's kind of a big
Speaker 2: deal at the time. This is the year that ICQ
Speaker 2: was released, right, sort of beginning of a whole messaging
Speaker 2: wave of things.
Speaker 4: Yeah, USB, univers verssal Syria Bus, the first prototypes are
Speaker 4: out then, along with Microsoft makes direct X for the
Speaker 4: Win nine X stact.
Speaker 2: They also released NT four and I E three.
Speaker 1: Somebody told me once and I couldn't believe it that
Speaker 1: Windows XP didn't support USB.
Speaker 2: It well, it was me.
Speaker 1: It wasn't until Windows two thousand.
Speaker 2: No, No, it was not until Service Back two.
Speaker 1: Oh that's what it was.
Speaker 2: Yeah, So the original release of XP did not have
Speaker 2: support for USP, but they had service Back two they
Speaker 2: added it.
Speaker 1: Just hard to believe, I thought, Op, it was like
Speaker 1: the whole new generation.
Speaker 2: Are memories of XP are posts SPA two. Yeah, we
Speaker 2: made fun of XP when it first shipped. It was
Speaker 2: nt two thousand with the Fisher Price interface. Right, it
Speaker 2: was all per three and colorful and cute, you know,
Speaker 2: it wasn't that shiny.
Speaker 1: And it had profiles. I think that was the big
Speaker 1: deal too, Like you had a different profile to swap them.
Speaker 2: Yeah. Amazon releases Alexa, the first one of the first
Speaker 2: voice modules.
Speaker 1: In nineteen ninety six United States. Are you kidding?
Speaker 2: Yeah, it isn't good, but they come up with it, huh.
Speaker 2: Over at Sun they released the Javit Devil look at
Speaker 2: one point. Oh and then in gaming, three fairly famous
Speaker 2: popular games Duke Nukem three D it's time to kick
Speaker 2: ass and chew bubble gum. But I'm all a lot
Speaker 2: of gum and from Blizzard Diablo, which was a overhead
Speaker 2: view proportional sort of dingon Dragon's Game, and Loercroft tomb Raider.
Speaker 1: Big deal that one, Yep, that one, And that's all
Speaker 1: I got for you, friend. All Right, I'm going to
Speaker 1: go back to culture.
Speaker 2: Here.
Speaker 1: The top ten albums, Top ten selling albums. Number ten
Speaker 1: Older by George Michael, the singles I don't recognize any
Speaker 1: of these, but Jesus to a Child, Fast Love, Spinning
Speaker 1: the Wheel and Older. I guess I wasn't listening to
Speaker 1: George Michael back then. I don't know a Number nine
Speaker 1: Backstreet Boys International debut, Quit Playing Games, Get Down and
Speaker 1: Anywhere for You Load by Metallica, a number eight, twelve
Speaker 1: million copies. Singles Until It Sleeps, Hero of the Day,
Speaker 1: Mama said in king Nothing Tragic, Kingdom by no doubt, awesome,
Speaker 1: awesome stuff. Don't Speak, just a Girl, Spiderwebs Sunday Morning,
Speaker 1: Lance Morrisett Jagged Little Pill. This was released in ninety five,
Speaker 1: but it had massive nineteen ninety six sales. Yeah, thirty
Speaker 1: million plus lifetime You ought to Know, Ironic, Hand in
Speaker 1: My Pocket, You Learn huge album.
Speaker 2: Yeah, it's just one of those ones where every song
Speaker 2: is good. It's a crazy album.
Speaker 3: Yeah.
Speaker 1: Yeah. The Fuji's album is the score. That's where killing
Speaker 1: Me Softly Lauren Hill right ready or not? Fuji la
Speaker 1: I liked that stuff. Tony Braxton's secrets You're Making Me
Speaker 1: High and break my Heart. I Don't want to Matchbox
Speaker 1: twenty came out with Yourself or Someone Like You and
Speaker 1: their singles were Push, three Am, Real World and back
Speaker 1: to Good. Spice Girls came out with their album Spice
Speaker 1: singles want to Be, say You'll be there, to become
Speaker 1: one and who do you Think You Are? And then
Speaker 1: the number one album Of course this was released earlier,
Speaker 1: but Celine Dion falling Into You with over thirty two
Speaker 1: million copies. As singles are because You Loved Me, It's
Speaker 1: all coming back to me now all by myself and
Speaker 1: call the me in all right and really quick. The
Speaker 1: top ten movies of nineteen ninety six number ten, Jerry Maguire,
Speaker 1: number nine, Breaking the Waves, number eight, The People Versus
Speaker 1: Larry Flint number seven, Shine, number six, Big Night. I
Speaker 1: don't remember that one, but it looks like a period piece.
Speaker 1: That looks pretty good. Number five Train Spotting, Great Movie,
Speaker 1: Number four, Secrets and Lies number three, The English Patient
Speaker 1: number two, lone Star, number one Fargo, Fargo Awesome. Oh yeah,
Speaker 1: don't you know. I think that's where people were really
Speaker 1: introduced to that, you know, Minnesota, that accent, Yeah, south
Speaker 1: North Dakota. Almost Canadian, isn't it?
Speaker 2: Well? Yeah, in that part of Canada. Yes, yeah, it's
Speaker 2: all all right.
Speaker 1: Well that's what I got, So I guess we should
Speaker 1: get onto better no framework.
Speaker 2: Right, awesome? Apart man, what do you got?
Speaker 1: Our old friend Simon Crop, Simon, what have you been
Speaker 1: up to? He's got this tool called Delta, which is
Speaker 1: an approach to implementing a three oh four not modified
Speaker 1: return leveraging dB change tracking. So the approach uses a
Speaker 1: last updated timestamp from the database to generate an E
Speaker 1: tag header right, and all dynamic requests then have that
Speaker 1: E tag checked and or applied. The approach works well
Speaker 1: when the frequency of updates is relatively low. In this scenario,
Speaker 1: the majority of requests will leverage, the result in a
Speaker 1: three oh four not modified being returned in the Brew
Speaker 1: as are loading the content in it's cash nice and effectively,
Speaker 1: consumers will always receive the most current data while the
Speaker 1: load on the servers reduced.
Speaker 2: He just it's clever.
Speaker 1: You know, this stuff just pours out of his brain.
Speaker 2: Simon, Well, it's okay, clearly he's dealing with the problem.
Speaker 2: It's like, how do I get brown performance there? Yeah,
Speaker 2: it's like we'll stop hitting the database that unnecessarily when
Speaker 2: nothing's changed.
Speaker 1: Yeah, So that's what I got for him and for
Speaker 1: better no framework. Who's talking to us today?
Speaker 2: Richard grabbed a comment off of Show nineteen oh three,
Speaker 2: which back in June twenty twenty four with our friend
Speaker 2: Beth Massey talking about Maui and Blazer fun conversation. You know, certainly,
Speaker 2: you know the many UX choices. In fact, do we
Speaker 2: often get comments along those lines of just how many
Speaker 2: user interface frameworks Microsoft makes much less the rest of
Speaker 2: the ecosystem.
Speaker 1: And Moyd had had hot We did that at Build
Speaker 1: that show, right, I don't remember. Yeah, I think we
Speaker 1: were alive. I mean we were in a little huggy
Speaker 1: a couby it.
Speaker 2: Builder in the booth. Yeah, yeah, it's possible about the
Speaker 2: right time. So this comment comes from mooid Hatat, who
Speaker 2: said I've been using neo vim with dot net via
Speaker 2: PowerShell on Windows for over a year now. Although it
Speaker 2: as a step learning curve, once you've developed the messle memory,
Speaker 2: you can seriously enhance your productivity, so another approach to it.
Speaker 2: Neo Vim's been around a long time. Additionally, I've started
Speaker 2: using terminal more frequently. This is what jumped out to me.
Speaker 2: You know, before we were really you know, dealing with
Speaker 2: agents and stuff, already folks were starting to go down
Speaker 2: this path, which has introduced me to many terminal based
Speaker 2: tools I wasn't familiar with before, such as zoxide, PS
Speaker 2: read line, I know that one well for working PowerShell, JQ, lazy, get, Yazzy,
Speaker 2: and bat. These tools have greatly improved my workflow, not
Speaker 2: even more productive. But most of these tools are open
Speaker 2: source and cross platform, providing me with opportunities to contribute
Speaker 2: to open source projects. Since their cross platform, I'm not
Speaker 2: tied to any operating systems anyway.
Speaker 1: I think we can blame the Linux people for getting
Speaker 1: us all into command line interface.
Speaker 2: Right well, and I say blame there's certain you know,
Speaker 2: you know, with love, Yeah, well we say that with
Speaker 2: love exactly. But also we came to appreciate the fact
Speaker 2: that infrastructure's code automating deployment, like all these things are
Speaker 2: better done in command lines. And now you know the
Speaker 2: conversation we just had with Kathleen about going CLI first.
Speaker 2: Now that you're working with these variosations and things again
Speaker 2: command lines and so I'm seeing a lot of software
Speaker 2: built now where you just working from the command line
Speaker 2: with it calling it out and it's rendering on that
Speaker 2: you know, eighty twenty five kind of formats and so forth.
Speaker 2: So when I saw my AIDS comment, I'm just like,
Speaker 2: you know, you may have been prescient, my friends, like
Speaker 2: you were doing stuff before the rest of we're going, Yeah,
Speaker 2: that's kind of cool.
Speaker 1: When you get it down, like it's way faster than
Speaker 1: going through guy's and things.
Speaker 2: I mean, I totally agree, yeah yeah, And now you know,
Speaker 2: the old days of arcane slash commands and so forth,
Speaker 2: it's just not that big a deal, right, Like we've
Speaker 2: sort of gotten better with all of that. We have
Speaker 2: better interfaces, better way to manage it.
Speaker 1: So now you get your lms to write your command
Speaker 1: line tools, right.
Speaker 2: And that's the other part of it, as long as
Speaker 2: it's discovering plus PowerShell yeah, So Waite, thank you for
Speaker 2: your comment and a copy of music. Co buy is
Speaker 2: on its way to you. And if you'd like a
Speaker 2: copy of music, go buy right. A comment on the
Speaker 2: website of dot net rock so commoner on the facebooks
Speaker 2: and a coupleish every show there and if you comment
Speaker 2: there and ay real on the show, we'll send you
Speaker 2: copy of music.
Speaker 1: Go by Music to Code by twenty two tracks of
Speaker 1: focusy Goodness, twenty five minute long musical tracks. See you
Speaker 1: stay work focus Yeah it is now that will help
Speaker 1: you stay stay in a state of flow.
Speaker 2: Go to music to Code today.
Speaker 1: Yeah, I'm not very focusy obviously. Go to music toocoby
Speaker 1: dot net and you can get the collection in MP
Speaker 1: three wave or flack formats. Oh my god, we're finally
Speaker 1: around it. Dan Dan dan Roth. He is a principal
Speaker 1: product manager on the ASPNAT team at Microsoft, specifically working
Speaker 1: on dot net web development with Blazer. It's a pleasure
Speaker 1: to have you back as always.
Speaker 3: Hello, it's great to be back at Carl herryt welcome friend.
Speaker 1: Yeah, no, good stuff. We want to know, I mean
Speaker 1: we if you were paying attention around dot net comf
Speaker 1: you understand what happened in dot net ten. But maybe
Speaker 1: we should just before because I want to get to
Speaker 1: the good stuff coming in dot net eleven. But maybe
Speaker 1: you should sort of recap what dot net ten gave
Speaker 1: us for web development in general and Blazer in particular,
Speaker 1: just maybe, you know, I.
Speaker 3: Mean, we were just shift dot net ten. It's only
Speaker 3: like well like four months old, like it's still new.
Speaker 3: It's still still pretty hot. I think it's really hot.
Speaker 3: It's like that warm loaf of bread, and you know,
Speaker 3: it's still filling the room with all those delicious aromas.
Speaker 2: And but no, I point out that, uh dot net eleven,
Speaker 2: Uh uh release two is out too, Like it's not
Speaker 2: like you guys are stopping.
Speaker 3: Nope, never stopping. Every year, every year there's a new release. Yeah,
Speaker 3: we just shipped in eleven preview two earlier this month,
Speaker 3: and there will be another preview coming up here pretty quick,
Speaker 3: and uh the next month for preview three.
Speaker 1: So in part that already, Daniel and I did a
Speaker 1: Blazer Train episode recently about why you should upgrade your
Speaker 1: Blazer projects to dot net ten. So if you're interested
Speaker 1: in that, I think we should put a link in
Speaker 1: the show notes to that.
Speaker 2: We will do that.
Speaker 3: Lots of good stuff and done it. I mean obviously
Speaker 3: the latest long term support release.
Speaker 2: So you've got.
Speaker 3: The new another three years of support with dot net ten,
Speaker 3: and it's just loaded with good features. I mean in
Speaker 3: the new sea Sharp features like the new extension members
Speaker 3: and extension properties. File based apps, those are super fun.
Speaker 3: You've tried those with like your AI agent, like getting
Speaker 3: them to generate just little c sharp kind of like
Speaker 3: the little c sharp scripts. Almost right, it's a single
Speaker 3: file that you can just dot it run and I
Speaker 3: think the way you go, no, no project file needed.
Speaker 3: Lots of great run time improvements perf perf oh Man.
Speaker 3: I love watching Tobes dot net com recording where he's
Speaker 3: just like showing all these amazing marks of how much
Speaker 3: we've reduced allocations and increased performance, right, and that goes
Speaker 3: all all way up and down the stack, like he's
Speaker 3: showing like low level run time things. And for library improvements.
Speaker 3: And then at the ACE core layer, we did a
Speaker 3: lot of work on the memory pooling so that the
Speaker 3: memory pool can be can can shrink in size, can
Speaker 3: be released for like real high scale UH, the deployment
Speaker 3: scenarios better adjacent de serialization for your for your APIs.
Speaker 3: You have lots of perof across the stack. That's kind
Speaker 3: of just part of our culture. Like every release has
Speaker 3: to be faster upgrade you get speed.
Speaker 1: And you watch Stephen tub his his presentation if you
Speaker 1: want to know the nity gritty, but you could sum
Speaker 1: it up just by saying it's faster and he uses
Speaker 1: less memory, much less memory.
Speaker 3: Just that's same code and it's faster. That's that's what
Speaker 3: you get.
Speaker 2: So that just by migrating you get a performance proof.
Speaker 3: Yeah, absolutely definitely, and man reduced memory UH footprint as
Speaker 3: well as was a big win I think in the
Speaker 3: UH in the dot net with the on a ten
Speaker 3: release with the improved garbage collection system and then an
Speaker 3: acemic core like we did like a whole bunch of things,
Speaker 3: Like we did lots of observability improvements, so lots of
Speaker 3: new metrics and tracing Like Blazer, we added a whole
Speaker 3: bunch of Blazer specific metrics and Blazer server traces. Like
Speaker 3: Blazer servers has a sort of unique request pattern, right,
Speaker 3: We've got these long run, long running web socket request
Speaker 3: which means that when you're trying to like look at
Speaker 3: your page navigations and things like that that would normally
Speaker 3: appear a separate requests in a traditional web app, you know,
Speaker 3: it's hard, they're harder to see. In Blazer Server and
Speaker 3: dot on a ten, we added specific activities so to
Speaker 3: model all that, so you get a really nice activity
Speaker 3: trace through through what's happening in your Blazer server apps.
Speaker 3: We also added like a bunch of Blazer web assembly
Speaker 3: diagnostic tools so that you can like get CPU profile
Speaker 3: performance profiles from your Blazer websmity apps take memory dumps
Speaker 3: to track down those hard to diagno those issues, so
Speaker 3: that all got in.
Speaker 2: Yeah, yeah, excuses.
Speaker 3: Just upgrade and if you haven't tried already, the get
Speaker 3: up Copilot app monetization tooling for doing those those upgrades,
Speaker 3: like going from version to version, like AI will just
Speaker 3: handle it for you. I mean, it's it's generally not
Speaker 3: a very cumbersome process. In general, you should mostly just
Speaker 3: update the DFM and update your packages and you're done.
Speaker 3: But if you have a really big solution you just
Speaker 3: want AI to to deal with it, then get up
Speaker 3: Copilot app Monetization is built specifically for dealing with that.
Speaker 2: Yeah, very good, very good there, and there's no upgrade issues, right,
Speaker 2: Like if you're living on eight and you switch to
Speaker 2: nine or come up to ten. I don't expect any
Speaker 2: code to break well the.
Speaker 1: Usual the problems are third party tools that don't support
Speaker 1: dot Net ten yet, or you know, have different syntax
Speaker 1: going from one to another, or you know dependencies. That's
Speaker 1: usually the problem, and the c sharp in the code
Speaker 1: is never the issue for me.
Speaker 3: We keep a very high compat bar, like we take
Speaker 3: compat very seriously. I often think of combat as like
Speaker 3: it's our most important feature because you're taking a bed
Speaker 3: on a platform, and why do you do that? You
Speaker 3: do that so that you can just accrue value with
Speaker 3: every new dot net release, Like I just upgrade and
Speaker 3: I don't even have to change code, and I get
Speaker 3: that performance, I get the improved security, I get the
Speaker 3: new features, I get new c sharp without changing a
Speaker 3: line of code. And I can't just upgrade.
Speaker 2: I don't get that, yeah, without anything breaking.
Speaker 3: So breaking changementally well, because the.
Speaker 2: Chances I have cycles to go back and fix existing
Speaker 2: code or low right, Like that's that's hard, I'll just
Speaker 2: stay on the older version absolutely.
Speaker 3: I mean, I'm sure there are some breaking changes that
Speaker 3: happen with every release. We try very hard to non
Speaker 3: introduce some of occasionally there are some cases where we
Speaker 3: feel like for the good of the platform, we really
Speaker 3: do need to make a change here, And you can
Speaker 3: of course find all those documented in the dot net
Speaker 3: breaking change stocks. The app monetization tooling is aware of
Speaker 3: those breaking change documentation, so we can actually help you
Speaker 3: adjust code, and if you are actually touching those those
Speaker 3: places that got changed, it can help you with the
Speaker 3: with the addressing those breaking changes as well.
Speaker 2: Right, I mean, these days, aren't you just pointing your
Speaker 2: agent at it and saying, should it what's the consequences
Speaker 2: of upgrading to ten?
Speaker 3: I should have says none, just gone, it's fine.
Speaker 1: What is this consequence?
Speaker 2: Thing? You speak? Yeah, then it explodes and you're like,
Speaker 2: why did this explode?
Speaker 1: Oh?
Speaker 2: You're right, You're right, You're absolutely right.
Speaker 3: No, no, no, no, not at all. Maybe on some other
Speaker 3: unnamed developer ecosystems that happens when you're upgrading, but not that.
Speaker 1: I think. I think I asked you that question on
Speaker 1: Blazer Train. I said, so, when would you ever not
Speaker 1: want to upgrade? And you said, what are you talking about?
Speaker 1: You always want to upgrade?
Speaker 2: Yeah, he might be a little biased our for our
Speaker 2: friend Dan.
Speaker 3: You know, he's maybe a little bit.
Speaker 2: A little bit.
Speaker 1: Yeah, well, like I said, you know, if you're using
Speaker 1: a third party tool that doesn't work or for some
Speaker 1: reason or the syntax changes, that happens a lot, you know.
Speaker 1: But you know, you get all the latest updates for
Speaker 1: all your packages and hopefully they work. But usually it's
Speaker 1: the ones that don't load or have different syntax that's
Speaker 1: the problem.
Speaker 3: Yes, or maybe you have an environment constraint. We're getting
Speaker 3: the new runtime into your environments is requires going to
Speaker 3: some I person and getting things signed in triplicate and
Speaker 3: stuff like that. We understand that people have their processes
Speaker 3: that they need to follow, and that's perfectly understandable. But
Speaker 3: if you can upgrade, I think you will be very happy.
Speaker 2: Yeah, like you said, at the minimum performance benefits but
Speaker 2: also great new features. Yeah, it's just annual cadence tough
Speaker 2: on the team, Like, how do you know, I know
Speaker 2: folks are struggling with trying to use upgrade at net
Speaker 2: every year. Yeah, I don't know how it is for
Speaker 2: you guys.
Speaker 3: I think it's kind of a mix. Actually it's a struggle.
Speaker 3: I don't think it's a struggle for us to get
Speaker 3: a release out every year and we do know that
Speaker 3: we have users that also that even that, like you
Speaker 3: said that that pace is maybe even faster them. That's
Speaker 3: why we have the long term SUP releases and the
Speaker 3: standard support releases.
Speaker 2: From want of way, lots of folks that are every
Speaker 2: other that just take the LTS.
Speaker 3: It's not that it matters, but that's what those are
Speaker 3: there for. I think the struggle is actually more the
Speaker 3: opposite is like, you know, things just are accelerating right now,
Speaker 3: like like AI is making development faster and more productive,
Speaker 3: and you know, getting value to our to our users
Speaker 3: is something that we would like to to to speed up.
Speaker 3: But at the same time being you know, sensitive to
Speaker 3: and cognizant of the fact that you know, the platform
Speaker 3: needs to be a stable, you know, trustworthy thing, Like
Speaker 3: it's not something you actually want to be moving around
Speaker 3: a lot or changing a lot. You want it to
Speaker 3: be a sure foundation that you build your stuff on
Speaker 3: top of. So there's this tension right now of like, oh, like, well,
Speaker 3: we can do more right now by leveraging AI to
Speaker 3: help us develop features and and you know, burn through
Speaker 3: our backlog and quality and all these things, but still
Speaker 3: only shipping on that yearly cadence kind of creates a
Speaker 3: you know, we have to we have to wait a
Speaker 3: little bit then to get some of those improvements.
Speaker 2: That's so, that's funny. I was thinking there's got to
Speaker 2: be features that take longer than a year to build too,
Speaker 2: but I don't know if that's true.
Speaker 3: There are those as well. Runtime asink I think is
Speaker 3: like an example of that.
Speaker 2: Oh my goodness, yeah, sharp Union's that's not the that's
Speaker 2: not the Blazer team. That's the team trying to move
Speaker 2: stuff what is it out of runtime and into or
Speaker 2: out of language and into runtime.
Speaker 3: Yeap, out of the compiler.
Speaker 2: Basically, I don't envy that battle. That's a big deal
Speaker 2: at that battle, have you guys.
Speaker 3: So that's a big effort for eleven right now is
Speaker 3: working through runtime asink, and a lot of it will
Speaker 3: land in eleven so you can start using And I
Speaker 3: think though the full story is probably a post eleven feature,
Speaker 3: a lot of the runtime features are kind of like that.
Speaker 3: Like another effort is the like the web assembly runtime
Speaker 3: consolidation effort. Like right now, our current websmity runtime for
Speaker 3: Donna is based on the old Mono code base. We're
Speaker 3: trying to consolidate all of our runtime implementations to be
Speaker 3: based on course, you'll are the mobile workloads have already
Speaker 3: been working on that for a while. Webs somebodies of
Speaker 3: sort of the last one in the line to top
Speaker 3: that upgrade. That's also a multi release effort. Like a
Speaker 3: good chunk of the Blazer team right now is actually
Speaker 3: working on getting the new COURSELR based runtime stood up.
Speaker 2: Well, because you guys care about wows and more than
Speaker 2: just about anybody.
Speaker 1: Well, I was gonna say, do you does the ASPNT
Speaker 1: team core team push changes in the language? Does that
Speaker 1: happen the other way too?
Speaker 2: Oh?
Speaker 1: Yeah, have you come to the language team and say hey,
Speaker 1: we need this feature all the time and then they
Speaker 1: come back and yeah, that's.
Speaker 3: Definitely Like I'm well, a lot of the minimum API
Speaker 3: development experience and how that works, oh involved like working
Speaker 3: with the compiler folks and getting specific language features in
Speaker 3: to make that experience really good, and the infrastructure around it.
Speaker 3: You know, a lot of the stuff that was done
Speaker 3: around source generators was done heavily in collaboration with the
Speaker 3: ace minut core team for a lot of our scenarios
Speaker 3: like Razor and Razor compilation was one of those, but
Speaker 3: not the only one. There were others as well. Yeah,
Speaker 3: I know that. That's one of the benefits actually of
Speaker 3: that stack is we can all we have this very
Speaker 3: fluid communication with across the stack, with run time frameworks, libraries, languages,
Speaker 3: app models, tooling. We kind of own that all together
Speaker 3: and try to deliver a cohesive in and experience.
Speaker 1: How far is the walk between the Aspnut building and
Speaker 1: the c sharp Well.
Speaker 3: So a little I took his button on Microsoft Teams
Speaker 3: and I just thought, well, okay, share the speaker, Hey toad, Yeah.
Speaker 2: Are you guys all in twenty five when you are
Speaker 2: on campus.
Speaker 3: I'm actual pretty serius. A lot of us are remote
Speaker 3: and spread across the world. The folks that are here
Speaker 3: in the what I am in Washington. I'm in the
Speaker 3: Seattle area, and building Building eighteen is where a lot
Speaker 3: of us sit these days. We're going through our turncuse.
Speaker 2: It's near like a two days a week in the
Speaker 2: office or anything like. I don't know how that works.
Speaker 3: Three days a week is what we're just transitioning to
Speaker 3: now for books that are close enough to the office
Speaker 3: to do.
Speaker 2: Yeah.
Speaker 3: Yeah, we get to see each other in person.
Speaker 2: Yeah, yeah, that's cool. There's merited that, but at the
Speaker 2: same time, it's like you've got pretty good workspaces at home, now,
Speaker 2: like where are you most productive?
Speaker 3: I know it's a it's tough, so I can tell
Speaker 3: you there are a lot of people with mixed feelings
Speaker 3: about it. I'm sure, yeah, but it'll be fun. It'll
Speaker 3: be fun to be able to you know, be in
Speaker 3: the in the office, to have those hallway chats and
Speaker 3: and all that, but still having to do teams calls
Speaker 3: because a lot of our people are are still remote,
Speaker 3: like a lot of the yeah I work with on
Speaker 3: Blazer and in Europe or in Prague, and we've got
Speaker 3: people on the East Coast like they're they're all over
Speaker 3: the place. So we're definitely a distributed team.
Speaker 2: That's cool. Yeah, it's just the nature of the beast.
Speaker 2: You're never not going to have the teams call on Yep,
Speaker 2: the chance of everybody being there.
Speaker 3: Everyone's pretty much hybrid, and you're gonna want it anyway,
Speaker 3: right because who wants to like take notes there?
Speaker 2: Yeah, we got we've got tools for that. You just
Speaker 2: have to turn them off, yes, exactly. Yeah, it's fair.
Speaker 1: Sounds like me trying to get all the horns to
Speaker 1: come to rehearsal at the same time before a gig,
Speaker 1: it's like pulling teeth.
Speaker 2: They can't do that remote now they can't know I
Speaker 2: mean on over there. But yeah, I'm pretty sure. Did
Speaker 2: I say that out loud? I'm sorry, I take it.
Speaker 2: We should take a break.
Speaker 1: Yeah, let's take a break. It's a good time and
Speaker 1: we'll be right back after these very important messages don't
Speaker 1: go away, and we're back. It's dot net Rock. So
Speaker 1: I'm Carl Franklin's Richard Campbell, Hey, and that's Daniel Roth
Speaker 1: and we're talking ASPNT core ten C sharp and let's
Speaker 1: talk about dot net eleven, the future, the future.
Speaker 3: What's coming down. Yeah, we're hard to work at Donna
Speaker 3: at eleven. Already the team is is already delivering new features.
Speaker 3: So PREV two is already out, and we have published
Speaker 3: our roadmap for acep core, which includes Blazer for for
Speaker 3: donin at eleven. You can find that on in our
Speaker 3: GitHub repo. It's just a get up issue if you
Speaker 3: want a short link aka dot ms slash acep net
Speaker 3: slash roadmap, and that's where you'll find it. And there's
Speaker 3: kind of like four high level themes I would say
Speaker 3: to what we're focusing on this year. The first one
Speaker 3: is pretty broad. It's just like you know, addressed top
Speaker 3: pain points and uh and and feedback that we have
Speaker 3: in our repo. So everyone who has your your favorite
Speaker 3: issue that's sitting in the a spit core repo that
Speaker 3: you really want addressed, that's been there for a while.
Speaker 3: We look at, you know, all those thumbs up reactions
Speaker 3: on the original posts. We look at people commenting and
Speaker 3: telling us that this is important, and we're trying to
Speaker 3: really push to get those into the stack, even some
Speaker 3: things that have been around for for a while. So
Speaker 3: things in that bucket, Like one of the big ones
Speaker 3: is we're finally going to do a sync validation in
Speaker 3: asp net core. I think we've had that one in
Speaker 3: the backlog since I've been working on the stack.
Speaker 1: Wow, are you saying validation is synchronous?
Speaker 3: Got framework?
Speaker 1: It is? I know a lot of people you got
Speaker 1: to wait to push the button before you can get
Speaker 1: the validation. I think that's what you're talking about.
Speaker 3: Yeah, well, I mean you want to check your username
Speaker 3: to see if it's already taken in the database and
Speaker 3: things like that. So people have been using things like
Speaker 3: fluent validation and other third party libraries to achieve that
Speaker 3: for quite a while, we've we've decided that there's been
Speaker 3: enough people complaining about this that it's finally time to
Speaker 3: go do it. So we're going to do it for minimapis,
Speaker 3: we'll do it for for a Blazer, and we're actually
Speaker 3: working with the Core libraries team to push this down
Speaker 3: into like system component model data annotations and the core
Speaker 3: abstraction layers, so that ACINC validation now becomes a first
Speaker 3: class feature across the stack. Yeah, involves a lot of
Speaker 3: work again on compatibility. Like we were talking before, we
Speaker 3: care a lot about compatibility and a lot of people
Speaker 3: use those abstractions. So making sure that when you know
Speaker 3: code with ACYNC validation logic now shows up in the
Speaker 3: graph that we have good reasonable behaviors, good good compatibility
Speaker 3: story for how that will be will be handled, and
Speaker 3: then up in the app model layers like in Blazer,
Speaker 3: you know, providing you with the ability to provide the
Speaker 3: right user experiences when you know validation kicks off and
Speaker 3: now well it might take a little while while I
Speaker 3: go talk to the database to validate what you're doing,
Speaker 3: that you can provide a user experience to say, hey,
Speaker 3: hold on a second, I'm checking that that input here's
Speaker 3: a little spinner or something until the actual validation input
Speaker 3: comes comes back. So yeah, ACINC validation was the top
Speaker 3: requested feature. So we're gonna we're gonna take a look
Speaker 3: at that. And there's a bucket of those, Like, there's
Speaker 3: a lot of them that are in the stack.
Speaker 2: That and do you do that validation through the existing
Speaker 2: c sharp ACINC or are you hanging in for runtime ACNC,
Speaker 2: Like where does that play?
Speaker 3: It's I mean runtime ACINC I think, just takes the
Speaker 3: existing acc model and makes it effectively more efficient, Like
Speaker 3: it takes of the what the state machine being generated
Speaker 3: by the compiler runtime ACENC moves that into the run
Speaker 3: time itself, which should dramatically improve performance for people that
Speaker 3: have acinc code today. So this just means you use
Speaker 3: the c sharp ACNC coding model to write your ACINC
Speaker 3: validation logic and then it gets even faster thanks.
Speaker 2: To and your expectation is once it gets when the
Speaker 2: runtime acinc becomes real, it'll just run just better.
Speaker 3: Yeah that's exactly right. Cool yep, so big bucket up.
Speaker 2: Just as I remember, I remember I was having a
Speaker 2: conversation with Andrews about a sink back in the day,
Speaker 2: and this has got to be a decade plus ago.
Speaker 2: It's like, well, I have control of the language. I
Speaker 2: could get that to happen here. We could get it
Speaker 2: to happen in the runtime. Ye like that that used
Speaker 2: to be the way. It's it's nice to have everyone
Speaker 2: working closer together on these kinds of problems. That and
Speaker 2: and ACYNC became a hit. I don't know that he
Speaker 2: knew at that time, Like there's a C plus plus
Speaker 2: inmvalentation of a sync now.
Speaker 3: Started a wave movements when it hit.
Speaker 1: When it hit JavaScript, I was like.
Speaker 2: It was the right syntax. You know that people could
Speaker 2: dig it.
Speaker 1: When it hit JavaScript, I knew, Wow, this is way
Speaker 1: bigger than way bigger than we thought.
Speaker 3: So we also have a bucket of fundamentals work so
Speaker 3: again purpose part of our culture, some more performance improvements,
Speaker 3: security focus. We do added Pasky support and ten for
Speaker 3: acemic Core applications for folks that are using acemit core identity.
Speaker 3: We have a number of follow up items there that
Speaker 3: we want to do to flesh out the user experiences
Speaker 3: that are enabled more observability, some more tracing diagnostics, and
Speaker 3: we do a lot of that work in collaboration with
Speaker 3: our friends on the Aspire team, so you get that
Speaker 3: awesome experience in the Aspired dashboard and open telemetry based
Speaker 3: monitoring of your application. So we'll continue to push on
Speaker 3: cross cutting fundamentals. Our primary investments will be in our
Speaker 3: what we think of as our modern stack in ACE
Speaker 3: net core, so think like minimal APIs blazers are recommended.
Speaker 3: Webi offering minimal APIs for API development signal R. We
Speaker 3: still of course love and support our NBC developers and
Speaker 3: our Razor Pages developers and people building API controllers, but
Speaker 3: that's not really where we're like investing.
Speaker 1: You're not innovating.
Speaker 3: Yeah, that's not where we're trying to optimize. But you
Speaker 3: can feel good your apps will continue to work and
Speaker 3: they'll get all the other benefits from the platform improvements.
Speaker 3: You'll get c Shark, Clipteen, and you'll get all those
Speaker 3: performance improvements.
Speaker 1: But for the app more, it seems from your attitude
Speaker 1: that people get really persnickety about that, Like do they
Speaker 1: complain to you, It's like, so what are you killing MVC?
Speaker 3: Oh, they get nervous, I mean they want to know
Speaker 3: that they app we're gonna you know, stop working in
Speaker 3: the future, that they'll still continue to get dirty update.
Speaker 2: Like they're just gonna fall down, right, you know, Yeah,
Speaker 2: well burst into flames.
Speaker 3: And the support, like the support matters, Like you want
Speaker 3: to know that security fixes are going to keep coming
Speaker 3: coming your way. Yeah, of course, Yeah, And I think
Speaker 3: we have I mean, we have a There's been certainly
Speaker 3: some cases in the past where Microsoft has you know,
Speaker 3: caused people pain, you know, the the he who should
Speaker 3: not be named silver Light situation for example, you know,
Speaker 3: things like that.
Speaker 2: Yeah, to be clear, there's one scenario and people are
Speaker 2: still upset about it.
Speaker 1: Yeah, that's the only scenario really, and it was and
Speaker 1: it was the right call by Microsoft.
Speaker 2: I might say it was the right corption. I would
Speaker 2: say there were better ways to go about doing the
Speaker 2: right thing.
Speaker 1: Yeah, well their hand, their hand was forced, and.
Speaker 2: I don't disagree.
Speaker 3: Water under the bridge at this point.
Speaker 2: But Blazer.
Speaker 1: Doesn't matter. The browsers moved on, it wouldn't matter anyway.
Speaker 2: Yeah.
Speaker 3: I think it's really funny that people, a lot of
Speaker 3: people were asking me about like, how do I know
Speaker 3: Blazer's not going to be the next silver Light? Even
Speaker 3: today they still asked me that.
Speaker 1: Yeah, you still do me too.
Speaker 3: And I think it's ironic that the same websamby runtime
Speaker 3: that we use is actually used by this community project
Speaker 3: called open silver, which is a reimplementation of silver Light
Speaker 3: but based on our webssembly runtime. So you can still
Speaker 3: run silver Light apps in a browser using the runtime
Speaker 3: that we built for Blazer. So no, Blazer is not
Speaker 3: silver Light, but it helped, I guess, resuscitate it in
Speaker 3: an open source way.
Speaker 1: If you really want to run that code, if you
Speaker 1: really want it, you can do it.
Speaker 2: Yeah. Yeah, And we did shows with the open Silver
Speaker 2: guys back in the you know, as silver Light was
Speaker 2: finally coming out of support. I think it was twenty
Speaker 2: twenty one, you know, we were they they got done
Speaker 2: in time. I just don't know how many people actually
Speaker 2: were still using it at that point. Like from a
Speaker 2: CISDMIN perspective, to be able to run the silver Light
Speaker 2: plug in right now is incredibly hard. It only runs,
Speaker 2: it only runs an I E eleven, It only runs
Speaker 2: in a particular compatibility mode, like you have to jump
Speaker 2: through some hoops to make it actually allow that plug
Speaker 2: in to run.
Speaker 1: And why would you run it in an in an
Speaker 1: old browser that doesn't have the latest security patches or
Speaker 1: anything like that. It's completely insecure.
Speaker 2: Well it does. It's a main it's a it is
Speaker 2: a maintained mode strictly the internal you know, for certain companies,
Speaker 2: and they still exist that need that plug in to run.
Speaker 2: But it is I've done, show, I done run as
Speaker 2: is on this like, it is not easy to tease
Speaker 2: that thing back to life. It is not for public consumption.
Speaker 2: It is purely for old school compat.
Speaker 1: Well, when I was excited about silver Light, it wasn't
Speaker 1: because I was excited about plugins. It was only later
Speaker 1: when I realized that when like the rest of us,
Speaker 1: that plugins were dangerously insecure. That and that's why I
Speaker 1: think it was the right call. But the whole browser
Speaker 1: community moved on to extensions, which are a completely secure
Speaker 1: version of plug ins, which weren't well.
Speaker 3: With asp do on net. I think we have a
Speaker 3: pretty good track record, Like there are lots of people
Speaker 3: happily running their web forms, apps, their ACE, NBC apps,
Speaker 3: apint Webpi, and it's still fully supported, and it's been
Speaker 3: supported for a long long time, and we expected to
Speaker 3: be supported for a long long time in the future.
Speaker 3: Same thing with anit core, NBC ACEPNIT core APIs like those,
Speaker 3: you can feel good you'll continue to get platform improvements
Speaker 3: on those for for a while. But we were going
Speaker 3: to be focusing our investments in eleven on our modern
Speaker 3: stacks of minimal ada Blazer. That's where we're really trying
Speaker 3: to direct people, and you can see that in a
Speaker 3: lot of the features that we have planned.
Speaker 1: So I got a question and dot ten you when
Speaker 1: we talked on Blazer Train, you said that there is
Speaker 1: a new feature in dot ten about being able to
Speaker 1: decorate properties of a class with an attribute that would
Speaker 1: allow them to persist you know, through browser storage local storage,
Speaker 1: which is really cool, you know, for using for keeping
Speaker 1: state around, right, especially for a component state. Yeah, you
Speaker 1: disconnect and reconnect and it's right there, something that I've
Speaker 1: been doing through my components and talking about on Blazer
Speaker 1: Train a lot. And people got confused and they're like, well,
Speaker 1: does that mean that I don't need to have an
Speaker 1: app state component? No, you still do. You still have
Speaker 1: to have a container for your state. You know, that's
Speaker 1: not going to write it for you, but now you
Speaker 1: can persist it. That's what it's all about. But in
Speaker 1: dot net eleven, I see that there's some new persistence
Speaker 1: stuff for state.
Speaker 3: Yeah, so we did the pause and resume support and
Speaker 3: the declarative persistent component state support and DOT at ten.
Speaker 3: So those features are already available. So if like, for example,
Speaker 3: if you're pre rendering your components before they become interactive, yeah,
Speaker 3: and you have to acquire a bunch of state during
Speaker 3: that pre rendering stage where you're just basically going to
Speaker 3: statically render your components as HTML, and then when the
Speaker 3: components then wire up interactively like either either doing the
Speaker 3: Blazer server thing or Blazer web assembly, often you end
Speaker 3: up acquiring that state again. So to avoid doing that twice,
Speaker 3: you can just take the state that you got during
Speaker 3: the pre rendering and persist it into the page so
Speaker 3: that it can be reused when the components render interactively.
Speaker 3: That makes things more efficient and it improves the user experience.
Speaker 3: Prior to DOT in ten, it was a little clunky
Speaker 3: to do that, like there was some APIs and services
Speaker 3: that you had to wire up in the right way.
Speaker 3: In ten, there's just an attribute like you slap it
Speaker 3: on a property and say this is the state that
Speaker 3: I need persisted so that when I render interactively, I'm
Speaker 3: good to go. So it's much easier. We then took
Speaker 3: that model and made it so that when your circuits
Speaker 3: are potentially going to get evicted or might or being
Speaker 3: explicitly paused, you can take the state of your server
Speaker 3: hosted circuits and persist them so that they can be
Speaker 3: again rehydrated. Like this might happen if your like your client,
Speaker 3: becomes disconnected for an extended period of time, Blazer will
Speaker 3: try to hold on to your the circuit state the
Speaker 3: server state for at least a little while. I think
Speaker 3: the faults like three minutes. But if the client doesn't reconnect,
Speaker 3: then the server's going to say, well, I guess they're gone,
Speaker 3: and it will evict the circuit and the user's state
Speaker 3: is gone. If they try to then come back and say,
Speaker 3: like five minutes later, then they're basically back to the
Speaker 3: beginning again. With state persistence the component state persistence, you
Speaker 3: can before the component gets the circuit gets evicted, it
Speaker 3: can save its state, and then when the user comes back,
Speaker 3: it can just oh, be like, I know who you are.
Speaker 3: I'll just recreate your circuit for you from the persistent state,
Speaker 3: and you're good to go. That will actually happen automatically
Speaker 3: for you in ten the thing you can do manually
Speaker 3: also is you can request that the circuit be paused.
Speaker 3: So like let's say the the user minimizes the browser
Speaker 3: and goes to lunch, Well, you've got the circuit sitting
Speaker 3: there on the server and the connection like, well, it's
Speaker 3: not doing anything, it's just wasting your server resources. You
Speaker 3: could detect that that happened and say like, well that's
Speaker 3: not even visible. Let me just pause the circuit and
Speaker 3: that will evict it and persist it, and then when
Speaker 3: the browser becomes visible again, you can have logic that says, oh,
Speaker 3: now we should recreate that circuit for them so they
Speaker 3: can continue using the app. That API for explicitly pausing
Speaker 3: and resuming is in ten is a client side API.
Speaker 3: It's like a JavaScript API. We didn't get the server
Speaker 3: based ability to persist the circuit and rehydrate it in ten.
Speaker 3: We'll we'll have that done in the eleven, and we'll
Speaker 3: give you also of some of the policies that we
Speaker 3: had talked about enabling intent, Like you know you're about
Speaker 3: to restart the server, and so you want to actually
Speaker 3: take all the circuits that you currently have active and
Speaker 3: save them so that when the server comes back up,
Speaker 3: you can resume them. Ideally, you want to run some
Speaker 3: server side code for dealing with that type of stuff
Speaker 3: in eleven will make that much more and more easier
Speaker 3: to deal with and handle.
Speaker 1: And here's here's a tip. Guys. You know we were
Speaker 1: talking about using pre rendering, right and so on initialized
Speaker 1: is going to fire twice, once in the pre rendered
Speaker 1: state and once when it's complete. I've had projects where
Speaker 1: that on initialized code takes a while, you know, to
Speaker 1: load everything. It's got to go out to the database,
Speaker 1: it's got to fetch a bunch of stuff, boom, put
Speaker 1: it all together. And you don't really want that pause
Speaker 1: in the pre rendered state. So what I do is
Speaker 1: I just get dummy stuff, you know, and use that
Speaker 1: in the pre rendered state and then wait until I'm
Speaker 1: not you know, until i'm full fully complete on the
Speaker 1: second pass to do the actual loading of data.
Speaker 2: Yep.
Speaker 1: But you could do that too.
Speaker 3: You can even stream that pre rendered content. We support
Speaker 3: streaming rendering for static rendering. So streaming rendering will basically
Speaker 3: say like, I want to statically render this page, but
Speaker 3: while doing that, if there's like some long running asynchronous
Speaker 3: task that happens in the middle of that logic instead
Speaker 3: of just having the client weight for any HTML to
Speaker 3: show up, Go ahead and send the first batch down
Speaker 3: like whatever you got, send it down, and then when
Speaker 3: that task complete, send the following follow up batch and
Speaker 3: just patch that into the the dom for me. That
Speaker 3: works with pre rendering us as as well. So you could,
Speaker 3: you know, implement some like you know, i'mloading dot dot
Speaker 3: dot even in that static rendered state that then gets
Speaker 3: filled in once the database query or whatever it is
Speaker 3: that you're doing completes.
Speaker 1: Yeah, good stuff, But I love being able to choose
Speaker 1: how that works based on the complexity or the size
Speaker 1: or the scale of your app.
Speaker 3: The thing I hope that that all this work on
Speaker 3: pause and resume and state persistence really enables is I
Speaker 3: know that some people get some anxiety about the scaling
Speaker 3: characteristics of laser server based apps. You know, I have
Speaker 3: all these circuits that you're maintaining for the users that
Speaker 3: are connected to your application. You have all these connections.
Speaker 3: How is that going to scale? I mean, it turns
Speaker 3: out that even without any of these optimizations, it actually
Speaker 3: scales pretty darn good. Like you can pretty easily handle
Speaker 3: like tens of thousands of concurrent users on the site
Speaker 3: with pretty reasonable hardware for most Plazer server apps. If
Speaker 3: you're really trying to get big to like, you know, one,
Speaker 3: hundreds of thousands or millions of concurrent it's really concurrent
Speaker 3: users that map number of views, but people on the
Speaker 3: site at the same time, then yeah, maybe it could
Speaker 3: be heavier load, and maybe you might want to think
Speaker 3: about moving more of that to the client. But with
Speaker 3: these patterns of like you know, being able to pause
Speaker 3: the circuit and the victims to free up those resources.
Speaker 3: So even even if you have a you know, quote
Speaker 3: unquote a current user but they went to lunch and
Speaker 3: they're not using the server resources and that type of stuff,
Speaker 3: you can really optimize the server utilization quite a bit.
Speaker 3: And scale.
Speaker 2: Are there many folks doing much of a client side
Speaker 2: it seems like the server side one.
Speaker 3: There are passionate folks on both sides. It's it's it's
Speaker 3: uh okay, I love that. Yeah, and they love to
Speaker 3: each other and you don't.
Speaker 2: And as I understand, you don't have to choose either, Right,
Speaker 2: you can run some stuff clients some size server like.
Speaker 3: Yeah, in the same app, you can have a mixture
Speaker 3: of both. But there's definitely like sort of the blazer
Speaker 3: webs of the crowd who.
Speaker 2: Like, wa love bugs.
Speaker 3: I love it so and I do everything blazers server
Speaker 3: and I love it and they'd love to like, you know,
Speaker 3: throw The.
Speaker 1: First question I ask potential clients is how many users
Speaker 1: do you think concurrently would be using your the maximum
Speaker 1: that would be using it concurrently? And you know, for
Speaker 1: the for the clients I've had, there's no more than
Speaker 1: you know, fifty thousand or something like that, twenty thousand,
Speaker 1: And I'm like, well.
Speaker 3: Yeah, and those are big, those are usually the big ones.
Speaker 3: I talked to a lot of people are like, you know,
Speaker 3: a few hundred, yeah, And I'm like, well, don't even
Speaker 3: think about it.
Speaker 1: I don't even think about it. Yeah, but yeah, for
Speaker 1: fifty thousand, you know, you could just get a big,
Speaker 1: you know, fourteen sixteen gig server if you want. And jeez, don't.
Speaker 2: Support thousand concurrents. Yeah, what are you doing? Like that's
Speaker 2: a lot, Like it's just a lot.
Speaker 1: Well that they might be doing some sort of commercial
Speaker 1: customers facing.
Speaker 2: It said the whole stadium worth of people to a
Speaker 2: site at the same time you got.
Speaker 3: Some global app or like I talked to a lot of
Speaker 3: people doing like you know SaaS offerings, so you know
Speaker 3: they have multiple they're they're hosting the same app for
Speaker 3: multiple customers, and so they have to think about the
Speaker 3: scale and end times for each customer. Apps at that
Speaker 3: scale definitely exist, and it's something you do want to
Speaker 3: consider when you're thinking about your architecture for your Blazer apps.
Speaker 3: Hopefully with these features like pause and rezoom and all
Speaker 3: the also the like just the static service ide rendering
Speaker 3: features that we're adding it there's less anxiety about using
Speaker 3: some of these features that are particularly convenient.
Speaker 2: Well, I mean it's not like you can't change your
Speaker 2: mind either, right, Like it's just.
Speaker 3: And you can always switch the render mode exactly.
Speaker 1: And we gotten at ten especially because perfe and memory
Speaker 1: usage got so much lower. You know, you can have
Speaker 1: even more jeez, you wouldn't even need all that ran.
Speaker 3: Guess it gets more efficient for static service side rendering.
Speaker 3: We are leaning into that also quite a bit, Like
Speaker 3: there's a we think there's this really nice sweet spot
Speaker 3: where I don't even need an interactive render mode to
Speaker 3: do a lot of what I'm what I'm doing. And
Speaker 3: for that like think of all like we have actually
Speaker 3: quite a few people that are still using classic NBC
Speaker 3: or Razor pages or back to web forms for their applications,
Speaker 3: and they're just mostly doing static service side rendering and
Speaker 3: maybe some JavaScript to light up some interactivity wherever they
Speaker 3: need it. And there's a lot of people building apps
Speaker 3: that way. Blazer we're trying to position as the you know,
Speaker 3: our single recommended WebUI offering, and we want to make
Speaker 3: sure that the people that come from that style of
Speaker 3: app don't come to Blazer disappointed in any way, shape
Speaker 3: or form. There's a few feature gaps that we're filling
Speaker 3: in there and dotten at eleven, like support for temp data,
Speaker 3: like dealing with session state, like having things that a
Speaker 3: lot of the tag helvers.
Speaker 1: Yeah, there's no state that.
Speaker 3: We don't have in Blazer as components like adding those
Speaker 3: as well.
Speaker 1: There's no state for static rendered mode right.
Speaker 3: Right, yep, so you have to like provide these mechanisms
Speaker 3: to the past state state along. We're also looking at
Speaker 3: like for forms, when you have a form and you
Speaker 3: want to do validation today in Blazer you end up
Speaker 3: flipping to do either you write your own JavaScript or
Speaker 3: you flip to an interactive render mode to have client
Speaker 3: side validation logic for that form. Right, you know eleven,
Speaker 3: we are going to add a a a some client
Speaker 3: side validation support for static service side rendering in Blazer
Speaker 3: that doesn't require an interactive render mode.
Speaker 1: That's cool.
Speaker 3: Can think of it as like a modern replacement for
Speaker 3: the like remember the old like jquera and uptrist to
Speaker 3: validation libraries that we have for NBC. I think of
Speaker 3: it as like a modern replacement for that that you
Speaker 3: can use with with Blazer. And since it might as well,
Speaker 3: we'll probably also make it work for existing NBC and
Speaker 3: Razor Pages apps too, so you maybe can get rid
Speaker 3: of that jQuery dependency.
Speaker 1: Finally that well, well you kind of did that already
Speaker 1: with with the forms validation, not forms validation, but forms processing. Right,
Speaker 1: you can do that without interactivity because you do a fetch,
Speaker 1: a JavaScript fetch or something like that, and so it works,
Speaker 1: but but you still don't have state, so you kind
Speaker 1: of can be fooled into thinking, oh, I can just
Speaker 1: put a class level variable here. Yeah, you get pretty close,
Speaker 1: You get pretty close.
Speaker 3: Yeah. I think that's the enhanced navigation, enhanced form form
Speaker 3: handling that we have in Blazer, where it will feel
Speaker 3: like a SPA app even though it's actually doing service
Speaker 3: side rendering for the form and even that case though
Speaker 3: the validation is still going to happen server side. If
Speaker 3: you want to try and even prevent the request, you
Speaker 3: still want that client side validation to kick in to
Speaker 3: say like hold on, you still got your email or
Speaker 3: phone number miss miss uh misformatted. And so that's what
Speaker 3: this uh, this feature will enables. You can have a
Speaker 3: client side validation model without you having to really go
Speaker 3: full and full on interactive.
Speaker 2: Awesome. Yeah, so a bunch of stuff there.
Speaker 1: What else in dot net eleven?
Speaker 3: So on the web assembly side, one cool thing we
Speaker 3: we're adding is a new a new template for building
Speaker 3: uh dot net based webworkers uh in the web platform.
Speaker 3: So the webworkers are right? Are these kind of like
Speaker 3: it's like a separate process that you can spin up
Speaker 3: in a in a browser and offload some work from
Speaker 3: the UI thread and do something in the background. One
Speaker 3: of the top uploaded features we have in our backlog
Speaker 3: is support for multi threading in Blaser web assembly. Yeah,
Speaker 3: we wanted it forever and I promised it actually for
Speaker 3: your multiple years. Is that we're going to do it,
Speaker 3: and we had been working hard on it. But on
Speaker 3: the mono based run time, and now, as we talked earlier,
Speaker 3: we're consolidating our run times to be based on core CLR,
Speaker 3: so we need to get that done first before we
Speaker 3: can deliver multi threading and then do the multi threading
Speaker 3: on top of course CLR. So the multi threading work
Speaker 3: is kind of blocked right now. It's kind of pause,
Speaker 3: so sort of as a peace offering to our users
Speaker 3: that really need some way to move work off of
Speaker 3: the UI thread to free up.
Speaker 1: The main So the web worker is kind of like
Speaker 1: a service worker in a pwa A, right, is it
Speaker 1: kind of the same idea?
Speaker 3: Yeah, yeah, very very very similar. Think it's the same
Speaker 3: underlying infrastructure.
Speaker 1: But it's C sharp so yeah.
Speaker 3: So what you can do is you can have a
Speaker 3: a donn It webworker that your Blazer web assembly app
Speaker 3: references and you can use that to fire up some
Speaker 3: work that happens in the background, like if you have
Speaker 3: some really CPU intensive stuff that you don't want to
Speaker 3: have happen on the UI thread. Donnet webworker template will
Speaker 3: allow you to do that. Nice, so that'll be available,
Speaker 3: and it's general purpose. It's not actually even Blazer specific,
Speaker 3: like there's nothing, there's no Blazer component model in this thing.
Speaker 3: It's just a way to run dot neit code on
Speaker 3: a webworker. It came up in part because one of
Speaker 3: our internal teams at Microsoft that the team that builds
Speaker 3: Copilot Studio, like that the tool that you use to
Speaker 3: build like custom agents that run in Microsoft Copilot Microsoft
Speaker 3: through sixty five Copilot. Copilot Studio actually uses our Donet
Speaker 3: web assembly run time for their agentic infrastructure, and they
Speaker 3: run a lot of it client side on web Assembly,
Speaker 3: but they do it on a background webworker. They don't
Speaker 3: do it on the UI thread which when we found
Speaker 3: out about this, we were like, wow, that's like amazing
Speaker 3: that you were able to figure out how to do that,
Speaker 3: because if it wasn't an officially supported feature, like they've
Speaker 3: gone in and seeing the found all the run time
Speaker 3: APIs and just worked it out themselves. And we're like,
Speaker 3: we should probably, you know, make this more first class,
Speaker 3: like make it a thing that that everyone can do
Speaker 3: and everyone can use. So we're standardizing that pattern in
Speaker 3: eleven and giving you a template so that you can
Speaker 3: do it. And also it helps mitigate a lot of
Speaker 3: these scenarios that people want multi threading for at least
Speaker 3: as a temporary measure. I do want to some caveats
Speaker 3: that you are spinning up. You know, basically two run times, right,
Speaker 3: you have the runtime on the main thread and another
Speaker 3: runtime in the background thread. So memory usage can be
Speaker 3: heavy with this pattern, so use it judiciously. If you
Speaker 3: don't need it, don't don't. Don't don't go spinning up
Speaker 3: web workers left and right in your in your application.
Speaker 3: But for those people who have those CPU intensive workloads,
Speaker 3: things they need to off move off the UI thread.
Speaker 3: This is a pattern that you can now.
Speaker 1: So don't run it on one of those old Android
Speaker 1: phones you've found in your drawer of broken dreams.
Speaker 3: Maybe not?
Speaker 2: Who's running proto anymore?
Speaker 1: Sandwich screep saw.
Speaker 2: Which uh the drawer broken dreams?
Speaker 1: I still have mine?
Speaker 2: Yeah, pack all those phone phones, those old old phones.
Speaker 3: Other cool things. I see. Sharp unions I think are
Speaker 3: finally coming right, like C sharp unions.
Speaker 2: Yeah, yeah, they've they've been hammered on that for a
Speaker 2: long time, trying to get that right.
Speaker 1: That is you're right, you know, I think you and
Speaker 1: Kathleen are the only ones who understand what that is.
Speaker 3: We have this are right? Like you want to return
Speaker 3: multiple types from a controller action or a minimal API
Speaker 3: like either the actual result or a you know, some
Speaker 3: HP status code thing. All those like types that have
Speaker 3: multiple genetic parameters where you're basically sort of handcrafting unions
Speaker 3: in in a core using a proper sea sharp union feature.
Speaker 3: I think we'll make a lot of those patterns more
Speaker 3: for more natural. We'll need to do framework work to
Speaker 3: enable that in the ACE.
Speaker 1: I mean, don't mere mortals just create a class to return.
Speaker 3: Yeah you can. I mean, nothing stop you from sort
Speaker 3: of creating your own union today manually. It just gives
Speaker 3: you a language feature for for doing.
Speaker 1: Those things, right, I suppose. So if you really want
Speaker 1: to impress somebody on a job interview, you say, well,
Speaker 1: just spent a union and you got the job.
Speaker 3: My friend, I didn't know this was like a like
Speaker 3: a NEWT features. I'm using unions of my.
Speaker 2: Only the cool kids, that's right.
Speaker 3: Yeah, And of course there's all the AI stuff which
Speaker 3: would have to work out half to day something.
Speaker 2: You know what. I'm not unhappy we didn't talk much
Speaker 2: about AI. It happens often enough, but we are.
Speaker 3: We will pay pay homage to the the AI gods
Speaker 3: to make sure we do all the I think so
Speaker 3: Microsoftic Centers. A.
Speaker 2: Hey, I'm excited about the past key implementation. That makes
Speaker 2: me happy because you know, by bit getting away from
Speaker 2: past ors is a good thing. So there's a lot
Speaker 2: of cool stuff coming. And I really like the way
Speaker 2: you talk about asp core as a whole. It doesn't
Speaker 2: matter whether your web forms or MVC or raizor or Blazer.
Speaker 2: It's all the same.
Speaker 3: It's one framework and one dot web development story. That's
Speaker 3: that's that's pretty important for what we're trying to.
Speaker 2: Deliver well in airon lies, you know the issue and
Speaker 2: even going back to the comment, which is too many
Speaker 2: UXes and so the C a unified group out there
Speaker 2: presenting one, you know, a set of ways to do
Speaker 2: things that work together. I love everything about that.
Speaker 1: Yeah, anything else you want to spring on us Dan
Speaker 1: here at the last minute.
Speaker 3: Well, I'll show just one one little AI think just
Speaker 3: one little.
Speaker 2: Cool Okay, one little AI think brother, hit.
Speaker 3: Me one thing we are working on in Blaze, and
Speaker 3: we showed a little bit of this at dot net
Speaker 3: comp But I think it's cool is we're working like
Speaker 3: when you're trying to build an agentic app, right, an
Speaker 3: app that surfaces AI functionality to your users. You know
Speaker 3: not you're going to build it with a I two,
Speaker 3: but like the actually having an AI feature in the app.
Speaker 3: One of the problems you offer encounter is, well, I
Speaker 3: have some client and it needs to talk to the
Speaker 3: server and the servers where I'm really accessing the AI
Speaker 3: resources like Microsoft Foundry or whatever wherever your model is
Speaker 3: is hosted. How should I set up that channel of communication?
Speaker 3: How do I deal with the streamed results from from
Speaker 3: the AI the agent, Like, you know it's going to
Speaker 3: stream you back a bunch of tokens. How do I
Speaker 3: deal with that? What if I want to handle multimodal inputs,
Speaker 3: like I want to be able to talk to my agent, Now,
Speaker 3: I've got to figure out an API surface area for
Speaker 3: dealing with that. Maybe I want to send it images
Speaker 3: or camera input. There's a protocol that's been defined called
Speaker 3: AGUI Agent to QI I guess what's short for. That
Speaker 3: defines that interaction between front ends and their AGENTIC Backe
Speaker 3: and so we've been working with our friends on the
Speaker 3: Foundry chain that built the Microsoft Agent Framework library to
Speaker 3: add AGUI support to that framework so that you can
Speaker 3: easily stand up an AGUI endpoint and then on the client,
Speaker 3: like in your Blazer app or your Blazer Hybrid app
Speaker 3: or your Maui app. We're going to give you Blazer
Speaker 3: Ai components that make it just really trivial then for
Speaker 3: you to build out that agentic user interface that then
Speaker 3: talks to that back end. So that's something that we're
Speaker 3: working pretty hard on with our friends and partners over
Speaker 3: at co pilot Kit who wrote the AGUI spec. They've
Speaker 3: been great partners to work with. We have some early
Speaker 3: preview bits for the AGUI support that's already out There's
Speaker 3: if you really hunt around in the agent Framework Repel,
Speaker 3: you can even find some branches with prototypes of the
Speaker 3: Blazer Ai components that we've been working on, and we
Speaker 3: expect to get those out here relatively short order for
Speaker 3: people to be able to try so awesome. Agentic UI
Speaker 3: is the big thing that we're working on in the
Speaker 3: eleven time frame as.
Speaker 2: Well, the new term of concept. Okay, I love it.
Speaker 1: Yeah, thanks Dan, I'm sure we'll talk about that more
Speaker 1: next time we talk to you. Sounds great, Yeah, and uh,
Speaker 1: speaking of talking next time, We'll talk to you next time,
Speaker 1: dear listener on dot net rocks. Dot net rocks is
Speaker 1: brought to you by Franklin's Net and produced by Pop Studios,
Speaker 1: a full service audio, video and post production facility located
Speaker 1: physically in New London, Connecticut, and of course in the
Speaker 1: cloud online at pwop dot com.
Speaker 5: Visit our website at d O T N E t
Speaker 5: R O c k S dot com for RSS feeds, downloads,
Speaker 5: mobile apps, comments, and access to the full archives going
Speaker 5: back to show number one, recorded in September two thousand
Speaker 5: and two.
Speaker 1: And make sure you check out our sponsors. They keep
Speaker 1: us in business. Now go write some code. See you
Speaker 1: next time.
Speaker 3: Chapters Middle vand day A Summer times is hard and
Speaker 3: my taxes in line