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