WEBVTT

1
00:00:01.080 --> 00:00:04.839
<v Speaker 1>How'd you like to listen to dot NetRocks with no ads? Easy?

2
00:00:05.360 --> 00:00:08.560
<v Speaker 1>Become a patron for just five dollars a month. You

3
00:00:08.599 --> 00:00:11.320
<v Speaker 1>get access to a private RSS feed where all the

4
00:00:11.359 --> 00:00:14.599
<v Speaker 1>shows have no ads. Twenty dollars a month, we'll get

5
00:00:14.599 --> 00:00:17.679
<v Speaker 1>you that and a special dot net Rocks patron mug.

6
00:00:18.160 --> 00:00:34.840
<v Speaker 1>Sign up now at Patreon dot dot NetRocks dot com. Hey,

7
00:00:34.880 --> 00:00:37.479
<v Speaker 1>welcome back to dot NetRocks. This is Carl Franklin and

8
00:00:37.600 --> 00:00:40.000
<v Speaker 1>this Ridrid Gammon. This is going to be a great show, Richard.

9
00:00:40.479 --> 00:00:41.920
<v Speaker 2>I'm expecting nothing less.

10
00:00:42.039 --> 00:00:44.920
<v Speaker 1>Yeah, Dan Roth is here and it's also show nineteen

11
00:00:45.000 --> 00:00:49.960
<v Speaker 1>hundred and twenty two, and I'm summarizing what happened that

12
00:00:50.039 --> 00:00:52.119
<v Speaker 1>year from the peoplehistory dot com.

13
00:00:52.200 --> 00:00:52.520
<v Speaker 2>Okay.

14
00:00:52.640 --> 00:00:55.799
<v Speaker 1>In nineteen twenty two, significant global events shape the world.

15
00:00:56.200 --> 00:01:00.000
<v Speaker 1>The Union of the Soviet Socialist republics USSR was formed,

16
00:01:00.399 --> 00:01:03.960
<v Speaker 1>solidifying the rise of communism in the UK. The British

17
00:01:04.000 --> 00:01:08.040
<v Speaker 1>Broadcasting Company or the BBC was founded, making the start

18
00:01:08.120 --> 00:01:13.359
<v Speaker 1>of public radio broadcasting. In science, the first successful insulin

19
00:01:13.439 --> 00:01:16.799
<v Speaker 1>treatment for diabetes took place in Canada. Of course, Canada,

20
00:01:16.840 --> 00:01:20.040
<v Speaker 1>of course, it was meanwhile and refused to patent. It

21
00:01:20.079 --> 00:01:22.560
<v Speaker 1>actually published the specification so that anybody could make it.

22
00:01:22.640 --> 00:01:25.200
<v Speaker 2>Because you guys are polite, well and you know you

23
00:01:25.319 --> 00:01:26.920
<v Speaker 2>do the right thing. And we don't want to we

24
00:01:26.959 --> 00:01:30.000
<v Speaker 2>don't want to make people alive. Cost a lot of money.

25
00:01:30.000 --> 00:01:30.680
<v Speaker 1>Who would do that?

26
00:01:30.840 --> 00:01:31.799
<v Speaker 2>Now? I don't know. I don't know.

27
00:01:33.760 --> 00:01:36.799
<v Speaker 1>I just make it mad by saying things like that. Meanwhile,

28
00:01:36.840 --> 00:01:41.159
<v Speaker 1>the discovery of King Tut's tomb tooked uncommon, captivated the

29
00:01:41.159 --> 00:01:45.480
<v Speaker 1>world and in Italy Benito Mussolini ros to power. The

30
00:01:45.519 --> 00:01:48.760
<v Speaker 1>Lincoln Memorial was also dedicated in Washington, d C. Commencing

31
00:01:48.840 --> 00:01:53.159
<v Speaker 1>President Abraham's Lincoln legacy. Yeah, and that's only something that

32
00:01:53.200 --> 00:01:54.519
<v Speaker 1>you probably have things to add.

33
00:01:54.719 --> 00:01:54.879
<v Speaker 3>Oh.

34
00:01:54.879 --> 00:01:57.680
<v Speaker 2>No, my favorites of that year would be toot In

35
00:01:57.719 --> 00:02:01.519
<v Speaker 2>Commons tomb and the insulin. What else? What can I

36
00:02:01.560 --> 00:02:01.879
<v Speaker 2>think of?

37
00:02:02.120 --> 00:02:02.280
<v Speaker 4>Uh?

38
00:02:03.480 --> 00:02:05.560
<v Speaker 2>Egypt becomes independent from Britain.

39
00:02:05.719 --> 00:02:08.520
<v Speaker 1>Yeah, okay, just was that before or after King Tut's

40
00:02:08.560 --> 00:02:11.680
<v Speaker 1>tomb was well, it was discovered, because wasn't it an

41
00:02:11.719 --> 00:02:13.360
<v Speaker 1>Englishman that discovered? Yeah?

42
00:02:13.400 --> 00:02:15.520
<v Speaker 2>Howard was an Englishman, no question, do you remember it was?

43
00:02:15.639 --> 00:02:18.599
<v Speaker 2>It was a pleasant handover. It was a civilized han,

44
00:02:18.759 --> 00:02:21.080
<v Speaker 2>right and it's not like the British army actually pulled

45
00:02:21.080 --> 00:02:23.400
<v Speaker 2>out they you know, it's more of the like can

46
00:02:23.439 --> 00:02:25.319
<v Speaker 2>It was sort of like they filled in the form

47
00:02:25.800 --> 00:02:28.159
<v Speaker 2>and made the deal. Wasn't a big revolution or anything.

48
00:02:28.319 --> 00:02:30.960
<v Speaker 1>Yeah, have a have some champagne. Okay, it's all yours now.

49
00:02:31.080 --> 00:02:33.759
<v Speaker 2>See well, I mean it still turn into bigger issues

50
00:02:33.759 --> 00:02:35.960
<v Speaker 2>thirty years from now with the Suez Canal crisis. But

51
00:02:36.120 --> 00:02:38.560
<v Speaker 2>you know we'll figure it out that. You know, you've

52
00:02:38.560 --> 00:02:39.960
<v Speaker 2>got a year and a half before we have or

53
00:02:40.039 --> 00:02:41.400
<v Speaker 2>a half a year before I have to talk about

54
00:02:41.439 --> 00:02:46.599
<v Speaker 2>that part thirty episodes from now.

55
00:02:46.680 --> 00:02:49.560
<v Speaker 1>Yeah, I like this. I like this trajectory we're on here. Okay,

56
00:02:49.599 --> 00:02:53.240
<v Speaker 1>it's very informative. Okay, let's roll the crazy music for

57
00:02:53.319 --> 00:02:54.520
<v Speaker 1>better no a framework?

58
00:03:02.400 --> 00:03:03.400
<v Speaker 2>All right, man? What do you got?

59
00:03:03.719 --> 00:03:06.240
<v Speaker 1>Well? I know that you know, Microsoft is all ai

60
00:03:06.280 --> 00:03:12.919
<v Speaker 1>ish these days. It's word definitely ai ish. So I

61
00:03:12.960 --> 00:03:15.840
<v Speaker 1>saw this and I don't know really anything about it.

62
00:03:15.919 --> 00:03:20.759
<v Speaker 1>But this was posted on dev Express's blog on September eighteenth.

63
00:03:21.319 --> 00:03:26.680
<v Speaker 1>New dev Express AI powered blazer Chat component Early access preview.

64
00:03:27.639 --> 00:03:30.199
<v Speaker 1>So it's a new UI library design to incorporate AI

65
00:03:30.319 --> 00:03:34.439
<v Speaker 1>driven interactions into your next great app and deliver responsive,

66
00:03:34.479 --> 00:03:39.639
<v Speaker 1>copilot inspired interfaces with absolute ease. Again, have it checked

67
00:03:39.639 --> 00:03:41.520
<v Speaker 1>it out? I just saw that. It came across my

68
00:03:41.599 --> 00:03:43.599
<v Speaker 1>desk and I was like, you know what, that might

69
00:03:43.639 --> 00:03:45.560
<v Speaker 1>be a good jumping off point for today.

70
00:03:45.960 --> 00:03:48.520
<v Speaker 2>I also think it's the way we're going to see

71
00:03:48.560 --> 00:03:51.280
<v Speaker 2>a lot of these large language model technologies applied is

72
00:03:51.319 --> 00:03:53.520
<v Speaker 2>as a ux extension to an application.

73
00:03:53.960 --> 00:03:55.400
<v Speaker 1>Mm hmm. Absolutely.

74
00:03:55.639 --> 00:03:58.280
<v Speaker 2>And it's not not really a product, it's a feature

75
00:03:58.439 --> 00:03:59.560
<v Speaker 2>to a product. Yeah.

76
00:03:59.759 --> 00:04:02.639
<v Speaker 1>And and it also makes you rethink your whole UI

77
00:04:02.680 --> 00:04:04.879
<v Speaker 1>in general. If you can do a lot of stuff

78
00:04:04.919 --> 00:04:07.520
<v Speaker 1>with a textbox, why do we need all these other controls.

79
00:04:07.960 --> 00:04:10.000
<v Speaker 1>I'm sure Dan's got ideas about that too.

80
00:04:10.080 --> 00:04:13.439
<v Speaker 4>So all the smart components coming coming to the ecosystem,

81
00:04:13.479 --> 00:04:15.879
<v Speaker 4>it's it's pretty pretty fun. We've done some of our

82
00:04:15.919 --> 00:04:18.160
<v Speaker 4>own experiments around that in the in Dwton.

83
00:04:18.279 --> 00:04:20.199
<v Speaker 2>I know it does imply that all everything we've done

84
00:04:20.240 --> 00:04:21.639
<v Speaker 2>up till now was dumb components.

85
00:04:21.920 --> 00:04:26.040
<v Speaker 4>No, nope, more more intelligent components, don't.

86
00:04:26.040 --> 00:04:26.519
<v Speaker 2>There you go?

87
00:04:26.600 --> 00:04:28.160
<v Speaker 1>Yeah, smarter components. I like that.

88
00:04:28.279 --> 00:04:29.480
<v Speaker 2>Smarter, smarter components.

89
00:04:29.480 --> 00:04:31.879
<v Speaker 1>There you going. And when we get to smartest components

90
00:04:31.920 --> 00:04:35.879
<v Speaker 1>and then we're done, we can't go any smarter, more

91
00:04:36.040 --> 00:04:40.199
<v Speaker 1>resource intensive components. How about that? Okayeah, that's good. So

92
00:04:40.240 --> 00:04:42.360
<v Speaker 1>that's what I got today. Richard, who's talking.

93
00:04:42.079 --> 00:04:44.600
<v Speaker 2>To us, grabbed a comment off the show eighteen thirty eight,

94
00:04:44.639 --> 00:04:49.199
<v Speaker 2>the one done by Javier Nelson and Steve Sanderson talking

95
00:04:49.199 --> 00:04:51.800
<v Speaker 2>about Blazer United. One of the few Blazer shows you've

96
00:04:51.800 --> 00:04:54.800
<v Speaker 2>ever done without mister Roth involved directly. Yeah, though I'm

97
00:04:54.800 --> 00:04:56.279
<v Speaker 2>sure he was pretty by the way. This is from

98
00:04:56.279 --> 00:04:59.120
<v Speaker 2>March of twenty twenty three, and lots of good comments

99
00:04:59.120 --> 00:05:02.560
<v Speaker 2>on this show from from our friends, including Richard Ruhima,

100
00:05:02.639 --> 00:05:06.000
<v Speaker 2>who although otherwise known as codeputer yep. On there he says,

101
00:05:06.079 --> 00:05:08.720
<v Speaker 2>this is going to get really interesting. I find this

102
00:05:08.759 --> 00:05:11.040
<v Speaker 2>to be a paradigm shift, not in terms of the web,

103
00:05:11.240 --> 00:05:13.639
<v Speaker 2>but in terms of building an application for the web.

104
00:05:13.680 --> 00:05:16.680
<v Speaker 2>Talking about Blazer United right in this context, not AI

105
00:05:17.079 --> 00:05:20.639
<v Speaker 2>Blazer United, where server and client could be intermixed very easily.

106
00:05:21.199 --> 00:05:25.040
<v Speaker 2>This unity of Blazer styles, I think, simply relates to

107
00:05:25.079 --> 00:05:28.279
<v Speaker 2>where the code resides, which updates the DOM Blazer server.

108
00:05:28.399 --> 00:05:30.439
<v Speaker 2>The DOM is updated on the server and the resulting

109
00:05:30.480 --> 00:05:33.240
<v Speaker 2>dip gram of the UX assent to the browser. Web

110
00:05:33.240 --> 00:05:36.199
<v Speaker 2>assembly is the traditional approach for server pouring the entire

111
00:05:36.240 --> 00:05:39.160
<v Speaker 2>application of the browser just to use client side reasers

112
00:05:39.160 --> 00:05:42.360
<v Speaker 2>to update the DOM to unify and the various design

113
00:05:42.439 --> 00:05:45.240
<v Speaker 2>thoughts expressed here, I thought I could simplify to say

114
00:05:45.279 --> 00:05:48.560
<v Speaker 2>what updates the dom? For example, if I'm using a

115
00:05:48.600 --> 00:05:51.480
<v Speaker 2>click event, why can't I attribute that code as server

116
00:05:51.759 --> 00:05:53.920
<v Speaker 2>and not attribute the code and have it execute on

117
00:05:53.959 --> 00:05:57.079
<v Speaker 2>the client. This is the most granular, but you could

118
00:05:57.079 --> 00:05:59.480
<v Speaker 2>also do it as a component level as well. All data, however,

119
00:05:59.480 --> 00:06:02.600
<v Speaker 2>should be streamed in my opinion, but as that data

120
00:06:02.639 --> 00:06:05.319
<v Speaker 2>becomes available and is simply defined by where it was requested,

121
00:06:05.680 --> 00:06:07.759
<v Speaker 2>I suggested the podcast, I'm going to head over to

122
00:06:07.759 --> 00:06:10.439
<v Speaker 2>GitHub and start planning to participate in what I think

123
00:06:10.639 --> 00:06:13.319
<v Speaker 2>is a very important development in the concept of web

124
00:06:13.360 --> 00:06:14.199
<v Speaker 2>application development.

125
00:06:14.279 --> 00:06:16.240
<v Speaker 1>Richard is a very thoughtful guy. He was one of

126
00:06:16.279 --> 00:06:20.560
<v Speaker 1>the guys last year at Codena Castle event and just

127
00:06:20.639 --> 00:06:23.079
<v Speaker 1>loved it, and I really enjoyed talking to him well.

128
00:06:23.120 --> 00:06:25.600
<v Speaker 2>And I don't disagree with this core sentiment here that

129
00:06:25.639 --> 00:06:28.120
<v Speaker 2>we're getting into this idea of units of compute in

130
00:06:28.160 --> 00:06:30.519
<v Speaker 2>the web that could run in multiple places. As a

131
00:06:30.519 --> 00:06:33.000
<v Speaker 2>certainly a conversation we've had mister Standerson before. We're not

132
00:06:33.120 --> 00:06:36.360
<v Speaker 2>just the client or the browser, but some interim location

133
00:06:36.839 --> 00:06:39.959
<v Speaker 2>close to the client but not actually on their machine. Right,

134
00:06:40.399 --> 00:06:48.360
<v Speaker 2>think about us smarter distributed network. Here your local caches

135
00:06:48.399 --> 00:06:51.000
<v Speaker 2>that could actually run compute units for you, so that

136
00:06:51.040 --> 00:06:53.439
<v Speaker 2>they have nice fast interaction with the browser, but the

137
00:06:53.639 --> 00:06:56.439
<v Speaker 2>sensitive data never actually enters a browser unless necessary, and

138
00:06:56.439 --> 00:06:58.480
<v Speaker 2>then trips back to the server asynchronously.

139
00:06:59.319 --> 00:07:02.759
<v Speaker 1>The the problem I see with that, and basically we're

140
00:07:02.759 --> 00:07:06.839
<v Speaker 1>talking about, is having some button click events that work

141
00:07:06.879 --> 00:07:08.720
<v Speaker 1>on the server and some that work on the client.

142
00:07:08.759 --> 00:07:11.079
<v Speaker 1>And the problem is that if if you're doing server

143
00:07:11.199 --> 00:07:15.360
<v Speaker 1>side Blazer, let's say, uh, it has to keep track

144
00:07:15.399 --> 00:07:18.360
<v Speaker 1>of everything in all the time. Yeah.

145
00:07:18.439 --> 00:07:22.319
<v Speaker 2>Yeah, Well but imagine you know you want you want

146
00:07:22.319 --> 00:07:24.680
<v Speaker 2>that security of the server side, but you can't handle

147
00:07:24.720 --> 00:07:27.120
<v Speaker 2>the round trip. It takes too long. So you have

148
00:07:27.279 --> 00:07:29.839
<v Speaker 2>you're able to deploy chunks of code to a CDN

149
00:07:30.040 --> 00:07:33.279
<v Speaker 2>close to that browser and have that code execute there

150
00:07:33.839 --> 00:07:34.920
<v Speaker 2>and very low latency.

151
00:07:35.079 --> 00:07:37.040
<v Speaker 1>Right, But if it changes the dumb and you're still

152
00:07:37.120 --> 00:07:41.120
<v Speaker 1>using a service side dom graph model, that service side

153
00:07:41.160 --> 00:07:43.600
<v Speaker 1>dumb graph model has to stay informed and updated.

154
00:07:43.680 --> 00:07:46.240
<v Speaker 2>Yeah, so it's got to work both directions. But I

155
00:07:46.279 --> 00:07:49.879
<v Speaker 2>dig it, I think it just gives us options, more

156
00:07:49.959 --> 00:07:53.439
<v Speaker 2>options on where to run our compute. Because you know,

157
00:07:53.759 --> 00:07:55.399
<v Speaker 2>there's a weird way to think about this, which is

158
00:07:55.399 --> 00:07:58.879
<v Speaker 2>a web assembly is almost another kind of container. Oh

159
00:07:58.959 --> 00:08:02.480
<v Speaker 2>definitely right that it's a smaller unit of code that

160
00:08:02.480 --> 00:08:04.680
<v Speaker 2>can be shipped around and executed on demand where you

161
00:08:04.680 --> 00:08:07.680
<v Speaker 2>need it. Richard, thank you so much for your comment.

162
00:08:07.720 --> 00:08:09.680
<v Speaker 2>You always bring up some great ideas, make us think

163
00:08:09.680 --> 00:08:11.560
<v Speaker 2>a little bit. I'd send you a copy of music Cobey,

164
00:08:11.639 --> 00:08:14.120
<v Speaker 2>but I'm pretty sure you got one already. But if

165
00:08:14.160 --> 00:08:16.040
<v Speaker 2>you don't, you know my number, give me a go

166
00:08:16.240 --> 00:08:16.879
<v Speaker 2>I'll look you up.

167
00:08:17.079 --> 00:08:19.000
<v Speaker 1>Or does anything else? You want a mug or whatever,

168
00:08:19.240 --> 00:08:19.800
<v Speaker 1>just let us know.

169
00:08:19.920 --> 00:08:23.319
<v Speaker 2>Yeah, whatever you want, brother, you know you're welcome. And

170
00:08:23.360 --> 00:08:24.959
<v Speaker 2>if you'd like copy of music code By, write a

171
00:08:25.000 --> 00:08:27.000
<v Speaker 2>comment on the website of donn at Rocks dot com

172
00:08:27.079 --> 00:08:28.920
<v Speaker 2>or on the facebooks we publish every show there. If

173
00:08:28.959 --> 00:08:30.759
<v Speaker 2>you comment there and ever ready in the show, we'll

174
00:08:30.800 --> 00:08:32.039
<v Speaker 2>send you a copy of music go by.

175
00:08:32.240 --> 00:08:36.120
<v Speaker 1>And you can always follow Richard Campbell and myself on

176
00:08:36.279 --> 00:08:39.320
<v Speaker 1>ex Twitter. That's we've been there for a long time.

177
00:08:39.799 --> 00:08:42.039
<v Speaker 1>But all the cool kids nowadays are hanging out at

178
00:08:42.039 --> 00:08:45.759
<v Speaker 1>Macedon at least I think so. I'm at Carl Franklin

179
00:08:45.879 --> 00:08:47.840
<v Speaker 1>at tech Hub dot social.

180
00:08:48.159 --> 00:08:50.279
<v Speaker 2>And I'm rich Campbell at Macedon dot social.

181
00:08:50.440 --> 00:08:52.279
<v Speaker 1>Send us a toot. It's another way you can get

182
00:08:52.320 --> 00:08:54.720
<v Speaker 1>a free copy of music to code by if we

183
00:08:54.759 --> 00:08:57.000
<v Speaker 1>read your toot. Are they called toots?

184
00:08:57.120 --> 00:08:57.960
<v Speaker 2>I think they're toots.

185
00:08:58.039 --> 00:08:58.759
<v Speaker 1>Yeah, I think they are.

186
00:08:59.000 --> 00:09:00.480
<v Speaker 2>I've been doing a lot of stuff on louse Ky

187
00:09:00.559 --> 00:09:04.240
<v Speaker 2>lately too, and if there's anything that Elon's done, he's

188
00:09:04.279 --> 00:09:07.600
<v Speaker 2>definitely fragmented this market. Yeah.

189
00:09:07.799 --> 00:09:10.919
<v Speaker 1>I've got a lot more followers on Macedon than I

190
00:09:10.960 --> 00:09:13.000
<v Speaker 1>do on Blue Sky. Blue Sky didn't seem to get

191
00:09:13.039 --> 00:09:15.399
<v Speaker 1>anywhere with me, but I'm still there. Yeah, all right,

192
00:09:15.720 --> 00:09:19.159
<v Speaker 1>so let's bring back mister Daniel Roth. He is a

193
00:09:19.200 --> 00:09:22.960
<v Speaker 1>principal program manager on the aspnet team at Microsoft, specifically

194
00:09:23.000 --> 00:09:28.960
<v Speaker 1>working on dot net web development with Blazer. What's up, Dan, Hi, Carl, Hi, Richard.

195
00:09:28.960 --> 00:09:30.039
<v Speaker 4>It's great to be here.

196
00:09:29.960 --> 00:09:31.639
<v Speaker 2>Great to have you, Good to have you back. Friend.

197
00:09:31.799 --> 00:09:34.480
<v Speaker 1>I guess there's a new dot net in town coming

198
00:09:34.480 --> 00:09:37.399
<v Speaker 1>in November, dot net nine imminently.

199
00:09:38.279 --> 00:09:42.200
<v Speaker 4>Yeah, just around the corner. Every November release, whether you

200
00:09:42.320 --> 00:09:45.919
<v Speaker 4>want it or not, here comes. Oh you'll want it,

201
00:09:46.000 --> 00:09:49.080
<v Speaker 4>You'll want it nine.

202
00:09:49.159 --> 00:09:49.960
<v Speaker 2>Yeah. Yeah.

203
00:09:50.120 --> 00:09:52.559
<v Speaker 1>So I've been reading the blog posts and I saw

204
00:09:52.559 --> 00:09:55.639
<v Speaker 1>the blog post about what's new and asp neet core

205
00:09:55.879 --> 00:09:58.159
<v Speaker 1>for dot net nine, and that included a thing on

206
00:09:58.240 --> 00:10:01.840
<v Speaker 1>Blazer and I'm very lighted to see that in Blazer Server.

207
00:10:02.679 --> 00:10:12.000
<v Speaker 1>I'm calling it the semi opaque veil of death that

208
00:10:12.480 --> 00:10:15.960
<v Speaker 1>happens when you need to reload and you know, the

209
00:10:15.960 --> 00:10:18.960
<v Speaker 1>connection gets broken and stuff, and that is you're really

210
00:10:19.000 --> 00:10:22.960
<v Speaker 1>addressing that with this with this release.

211
00:10:22.879 --> 00:10:26.399
<v Speaker 4>Release, we're helping. We're helped. I think there's still probably

212
00:10:26.480 --> 00:10:28.840
<v Speaker 4>some more things that we can do to improve that experience,

213
00:10:28.879 --> 00:10:33.279
<v Speaker 4>but yeah, we're making some improvements to the reconnection experience

214
00:10:33.360 --> 00:10:36.799
<v Speaker 4>for apps that use the Blazer server model, or as

215
00:10:36.799 --> 00:10:40.120
<v Speaker 4>we would call it now, the interactive server rendering render mode.

216
00:10:41.120 --> 00:10:43.399
<v Speaker 4>With Blazer server apps, it's a stateful model, right like

217
00:10:43.440 --> 00:10:46.080
<v Speaker 4>you have a live connection with the browser or with

218
00:10:46.120 --> 00:10:49.000
<v Speaker 4>the app to function, and you have server state, and

219
00:10:49.039 --> 00:10:51.919
<v Speaker 4>if the connection gets lost, then the app has this

220
00:10:51.960 --> 00:10:55.120
<v Speaker 4>sort of white overlay that that happens to let the

221
00:10:55.200 --> 00:10:57.440
<v Speaker 4>user know like, hey, I'm the app is not going

222
00:10:57.519 --> 00:10:59.039
<v Speaker 4>to be able to function right now because it doesn't

223
00:10:59.039 --> 00:11:01.720
<v Speaker 4>have that connection. All the uy gets driven from the

224
00:11:01.720 --> 00:11:05.000
<v Speaker 4>server in this in this paradigm, and.

225
00:11:04.960 --> 00:11:07.480
<v Speaker 1>I find that users just aren't smart enough to configure

226
00:11:07.519 --> 00:11:11.000
<v Speaker 1>that reconnection stuff. They just don't they don't really don't.

227
00:11:10.799 --> 00:11:12.759
<v Speaker 4>Know on the developer side, yeah, that there are things

228
00:11:12.759 --> 00:11:15.960
<v Speaker 4>you can do, but it it is a bit manual.

229
00:11:15.960 --> 00:11:18.039
<v Speaker 4>In dot AT eight and dot and nine, the goals

230
00:11:18.080 --> 00:11:20.720
<v Speaker 4>to try and make the default set up a little

231
00:11:20.720 --> 00:11:23.159
<v Speaker 4>bit more end user friendly for the people that are

232
00:11:23.279 --> 00:11:25.399
<v Speaker 4>using that that WebApp from that developer.

233
00:11:25.679 --> 00:11:26.960
<v Speaker 1>Yeah, that's great news.

234
00:11:27.080 --> 00:11:31.080
<v Speaker 4>Well, well, things that we'll do now will automatically refresh

235
00:11:31.120 --> 00:11:33.799
<v Speaker 4>the browser for the user with when the connection gets

236
00:11:33.799 --> 00:11:37.159
<v Speaker 4>re established and if the app detects like oh, the

237
00:11:37.240 --> 00:11:40.879
<v Speaker 4>user's circuit like their service side state has gone away

238
00:11:40.919 --> 00:11:42.960
<v Speaker 4>for whatever reason like that. That can happen for a

239
00:11:43.039 --> 00:11:46.879
<v Speaker 4>number of different cases, like maybe there was a server

240
00:11:46.919 --> 00:11:49.840
<v Speaker 4>deployment that happened because the servers or restart and whatever

241
00:11:50.080 --> 00:11:53.200
<v Speaker 4>state was held in memory got lost, or maybe the

242
00:11:53.320 --> 00:11:55.559
<v Speaker 4>connection was lost for too long and the server timed

243
00:11:55.559 --> 00:11:57.519
<v Speaker 4>out the circuit and so it just freed up that

244
00:11:57.600 --> 00:12:01.840
<v Speaker 4>those those resources forever. Reason, if the user state got lost,

245
00:12:02.440 --> 00:12:04.159
<v Speaker 4>they kind of need to start again, and before we

246
00:12:04.200 --> 00:12:06.080
<v Speaker 4>would and help them help them with that. And now

247
00:12:06.120 --> 00:12:10.320
<v Speaker 4>in DOTTA nine we will automatically refreshed the browser, the UI,

248
00:12:10.440 --> 00:12:12.720
<v Speaker 4>the UX that you see that the user sees when

249
00:12:12.759 --> 00:12:15.039
<v Speaker 4>that connection gets lost as a little friendlier it's not

250
00:12:15.120 --> 00:12:17.559
<v Speaker 4>that white overlay anymore. It's a little like sort of

251
00:12:17.559 --> 00:12:20.240
<v Speaker 4>mold dialogue style UI. You can you can customize it,

252
00:12:20.279 --> 00:12:22.960
<v Speaker 4>of course, however you'd like. But the fault experience is

253
00:12:23.000 --> 00:12:25.039
<v Speaker 4>a little a little cleaner, and it's a little bit

254
00:12:25.039 --> 00:12:28.600
<v Speaker 4>more responsive, like when the server comes back up, the

255
00:12:28.679 --> 00:12:31.320
<v Speaker 4>user has to wait less time, Like the polling intervals

256
00:12:31.320 --> 00:12:33.960
<v Speaker 4>are a little bit more intelligent in dotted nine, so

257
00:12:33.960 --> 00:12:37.840
<v Speaker 4>they get the app working working faster. So that's that's

258
00:12:37.840 --> 00:12:41.279
<v Speaker 4>all goodness. To be clear, though, the state on the

259
00:12:41.320 --> 00:12:45.480
<v Speaker 4>server is still the responsibility of the app developer. Like

260
00:12:45.919 --> 00:12:47.639
<v Speaker 4>it by the fault is just held in memory. If

261
00:12:47.639 --> 00:12:50.559
<v Speaker 4>you want to that state to survive, you know, sing

262
00:12:50.679 --> 00:12:52.840
<v Speaker 4>things like a server restart or the cirt of going

263
00:12:52.879 --> 00:12:55.200
<v Speaker 4>away and coming back, you do need to still write

264
00:12:55.240 --> 00:12:58.879
<v Speaker 4>code in your application to persist state and rehydrated again

265
00:12:59.000 --> 00:13:01.679
<v Speaker 4>when a user comes back and wants to resume whatever

266
00:13:01.720 --> 00:13:04.120
<v Speaker 4>it was that they were doing. So that that problem

267
00:13:04.200 --> 00:13:08.000
<v Speaker 4>is still very much an application developer problem. In ten

268
00:13:08.159 --> 00:13:11.480
<v Speaker 4>or some future Donnet, we still hope to create patterns

269
00:13:11.519 --> 00:13:14.080
<v Speaker 4>in the framework that make that a little easier. That's

270
00:13:14.120 --> 00:13:16.399
<v Speaker 4>something we in and I hopefully we'll get in the

271
00:13:16.399 --> 00:13:17.200
<v Speaker 4>future I.

272
00:13:17.159 --> 00:13:19.960
<v Speaker 1>Have a pattern for that actually, and I'll post a

273
00:13:20.000 --> 00:13:22.600
<v Speaker 1>link to it. It's on a GitHub repo. And what

274
00:13:22.679 --> 00:13:26.000
<v Speaker 1>it does is it you create an interface off of

275
00:13:26.039 --> 00:13:30.120
<v Speaker 1>your app state, cascading parameter or cascading value that you

276
00:13:30.200 --> 00:13:33.919
<v Speaker 1>want to persist, and then every time that gets anytime

277
00:13:34.039 --> 00:13:38.919
<v Speaker 1>any of those variables get touched or changed, it persists

278
00:13:38.960 --> 00:13:41.360
<v Speaker 1>those And so you can take that whole idea of

279
00:13:41.399 --> 00:13:44.039
<v Speaker 1>using protected browser storage, or you could save in SQL

280
00:13:44.080 --> 00:13:47.960
<v Speaker 1>server whatever you know, but you save it. You can

281
00:13:48.039 --> 00:13:50.559
<v Speaker 1>even save the page that you were on right, the

282
00:13:51.279 --> 00:13:53.519
<v Speaker 1>form you were filling out, and the fields that you've

283
00:13:53.639 --> 00:13:55.759
<v Speaker 1>entered in the fields that you haven't entered, Like, you

284
00:13:55.799 --> 00:13:57.600
<v Speaker 1>can get down to that kind of level.

285
00:13:57.840 --> 00:14:00.440
<v Speaker 2>Yeah, which, by the way, delights people. Right, Is there

286
00:14:00.600 --> 00:14:02.440
<v Speaker 2>not better than going back to a page you didn't

287
00:14:02.440 --> 00:14:04.480
<v Speaker 2>finish and the work you've already done is still there.

288
00:14:04.840 --> 00:14:07.360
<v Speaker 1>Oh yeah, it's terrible if that doesn't happen.

289
00:14:07.600 --> 00:14:10.720
<v Speaker 2>Well, I think it's expected if it doesn't happen, which

290
00:14:10.720 --> 00:14:13.600
<v Speaker 2>is why it delights when it does. Like, there's not

291
00:14:14.279 --> 00:14:16.720
<v Speaker 2>the tremendously difficult things we have to do, they're not

292
00:14:16.840 --> 00:14:18.960
<v Speaker 2>make people's lives a little bit better and to have

293
00:14:19.039 --> 00:14:21.080
<v Speaker 2>them smile at our software instead of frown.

294
00:14:21.399 --> 00:14:23.720
<v Speaker 1>I had it. I remember this experience and you guys

295
00:14:23.720 --> 00:14:26.320
<v Speaker 1>probably have two. When I was I was applying for

296
00:14:26.360 --> 00:14:29.440
<v Speaker 1>a loan online and I got you know, there was

297
00:14:29.559 --> 00:14:31.960
<v Speaker 1>like nine pages that I had to fill out, and

298
00:14:31.960 --> 00:14:34.639
<v Speaker 1>I got to page seven and it said, oh, by

299
00:14:34.679 --> 00:14:37.919
<v Speaker 1>the way, which one of these dollar values was the

300
00:14:37.960 --> 00:14:42.399
<v Speaker 1>payment of your mortgage, you know, two years ago or whatever?

301
00:14:42.480 --> 00:14:44.879
<v Speaker 1>And I'm like, what now I have to go. I

302
00:14:45.000 --> 00:14:47.360
<v Speaker 1>have to walk away from the computer, go to the

303
00:14:47.399 --> 00:14:49.639
<v Speaker 1>file camp. By the time I came back, it said

304
00:14:49.360 --> 00:14:51.639
<v Speaker 1>to your sessions timed out. You got to start all

305
00:14:51.639 --> 00:14:56.159
<v Speaker 1>over again. I'm going to someone else now.

306
00:14:56.519 --> 00:14:59.960
<v Speaker 2>Yeah, yeah, yeah, yeah, this stuff doesn't have to suck.

307
00:15:00.039 --> 00:15:02.360
<v Speaker 2>And I appreciate you built app server thinking in terms

308
00:15:02.399 --> 00:15:04.200
<v Speaker 2>of this is just a component you could add in

309
00:15:04.879 --> 00:15:08.200
<v Speaker 2>and have that behavior happen. Yeah, that's a good idea.

310
00:15:08.919 --> 00:15:11.440
<v Speaker 1>So what else you got, Dan so well?

311
00:15:11.600 --> 00:15:14.960
<v Speaker 4>Dotted eight obviously was the big move for Blazer to

312
00:15:15.080 --> 00:15:18.480
<v Speaker 4>become a full stack web framework, like you guys were

313
00:15:18.519 --> 00:15:22.240
<v Speaker 4>mentioning earlier, the Blazer United effort. That was the early

314
00:15:22.320 --> 00:15:25.440
<v Speaker 4>code name that we used for a name name of

315
00:15:25.480 --> 00:15:28.759
<v Speaker 4>that technology of uniting all the Blazers into one thing.

316
00:15:28.840 --> 00:15:29.840
<v Speaker 4>Where you now it's just.

317
00:15:29.840 --> 00:15:33.519
<v Speaker 5>Called Blazer, the Blazer web app as well the way,

318
00:15:34.720 --> 00:15:38.120
<v Speaker 5>but you can have different render modes that you turn

319
00:15:38.200 --> 00:15:41.000
<v Speaker 5>on or off inside your Blazer web app to light

320
00:15:41.039 --> 00:15:43.240
<v Speaker 5>up different functionality in different places.

321
00:15:43.840 --> 00:15:49.759
<v Speaker 4>And so that model really unified the web development experience

322
00:15:49.799 --> 00:15:51.679
<v Speaker 4>for for dot Net, like whether you're doing server or

323
00:15:51.679 --> 00:15:54.559
<v Speaker 4>doing client, you can do it with just one component

324
00:15:54.600 --> 00:15:58.000
<v Speaker 4>model using Blazer components, and it really positioned Blazers our

325
00:15:58.399 --> 00:16:00.960
<v Speaker 4>you know, our our primary our rec commended solution for

326
00:16:01.000 --> 00:16:04.480
<v Speaker 4>building web UI starting with with dot neet eight. But

327
00:16:04.720 --> 00:16:07.639
<v Speaker 4>it was new, like there's certainly user experience gaps in

328
00:16:07.679 --> 00:16:10.639
<v Speaker 4>that in that in that model that we're still ironing

329
00:16:10.639 --> 00:16:14.159
<v Speaker 4>out and filling in. The reconnection experience was was one

330
00:16:14.159 --> 00:16:16.960
<v Speaker 4>thing we did. Another is giving you more run time

331
00:16:17.039 --> 00:16:22.200
<v Speaker 4>visibility into which render mode is currently active. Like just

332
00:16:22.320 --> 00:16:26.000
<v Speaker 4>as a to walk you through a very common Blazer flow.

333
00:16:26.159 --> 00:16:28.840
<v Speaker 4>You might make the initial request to a Blazer web

334
00:16:28.840 --> 00:16:33.279
<v Speaker 4>app and it will render HTML from the server statically,

335
00:16:33.320 --> 00:16:35.480
<v Speaker 4>like just give you some HTMIL immediately. We often call

336
00:16:35.559 --> 00:16:39.000
<v Speaker 4>that pre rendering. That's a form of just static server

337
00:16:39.080 --> 00:16:41.320
<v Speaker 4>side rendering where you get HTMIL down to the browser

338
00:16:41.360 --> 00:16:43.200
<v Speaker 4>as fast as you can so you get pixels on

339
00:16:43.200 --> 00:16:44.679
<v Speaker 4>the user's screen as quickly as you.

340
00:16:44.720 --> 00:16:47.200
<v Speaker 2>Get stuff floating look at.

341
00:16:47.600 --> 00:16:49.919
<v Speaker 4>Then you might have interactive features though on that page

342
00:16:49.960 --> 00:16:52.000
<v Speaker 4>that you want to enable, like you want to handle

343
00:16:52.039 --> 00:16:54.840
<v Speaker 4>those button clicks or drag and drop or whatever, and

344
00:16:54.879 --> 00:16:56.720
<v Speaker 4>you have a choice on whether you do that from

345
00:16:56.759 --> 00:16:59.679
<v Speaker 4>the server using interactive server rendering or from the client

346
00:16:59.759 --> 00:17:03.840
<v Speaker 4>using web assembly based rendering. Now, while you're waiting for

347
00:17:04.039 --> 00:17:08.400
<v Speaker 4>that interactivity to light up, there might be interactive features

348
00:17:08.440 --> 00:17:10.720
<v Speaker 4>on the page that aren't quite functional yet, like the

349
00:17:10.720 --> 00:17:12.640
<v Speaker 4>counter button if you try to click on it in

350
00:17:12.640 --> 00:17:16.960
<v Speaker 4>that split second before interactivity has been enabled. There's nothing

351
00:17:17.039 --> 00:17:20.559
<v Speaker 4>yet set up for to handle those UI events or

352
00:17:20.640 --> 00:17:23.440
<v Speaker 4>due to do dynamic UI updates. So what you can

353
00:17:23.480 --> 00:17:25.640
<v Speaker 4>do now in Dota nine, we give you a runtime

354
00:17:25.640 --> 00:17:29.519
<v Speaker 4>API for detecting the render mode. So when you do

355
00:17:29.640 --> 00:17:33.359
<v Speaker 4>that first static service side render, you might maybe disable

356
00:17:33.640 --> 00:17:36.319
<v Speaker 4>the interactive features or don't render them yet, like wait

357
00:17:36.400 --> 00:17:39.359
<v Speaker 4>until interactivity is now live, right, and then when the

358
00:17:39.359 --> 00:17:43.160
<v Speaker 4>component renders interactively, like through from the over the web

359
00:17:43.200 --> 00:17:45.880
<v Speaker 4>socket connection or on web assembly, you then light up

360
00:17:45.880 --> 00:17:48.720
<v Speaker 4>those interactive features so they're now available for the user

361
00:17:48.839 --> 00:17:49.480
<v Speaker 4>to use.

362
00:17:49.519 --> 00:17:50.599
<v Speaker 2>So you have this.

363
00:17:50.640 --> 00:17:54.440
<v Speaker 4>Capability now of structuring the dom, adjusting the component rendering

364
00:17:54.759 --> 00:17:57.480
<v Speaker 4>based on how that component is currently being rendered, which

365
00:17:57.519 --> 00:17:58.720
<v Speaker 4>render mode is currently act.

366
00:17:58.680 --> 00:18:01.799
<v Speaker 1>Nice and saving and low state is kind of important, right,

367
00:18:01.839 --> 00:18:04.640
<v Speaker 1>because if you go from an interactive thing where you've

368
00:18:04.640 --> 00:18:08.799
<v Speaker 1>got some state to a non interactive thing where you don't,

369
00:18:09.480 --> 00:18:12.480
<v Speaker 1>and then back to an interactive thing, what happens to

370
00:18:12.519 --> 00:18:13.319
<v Speaker 1>your state? Right?

371
00:18:13.400 --> 00:18:15.160
<v Speaker 4>You might you know, yeah, you need some some way

372
00:18:15.200 --> 00:18:17.599
<v Speaker 4>of flowing that around, and that can be that can

373
00:18:17.720 --> 00:18:21.119
<v Speaker 4>be tricky, you know, you mentioned earlier options like I

374
00:18:21.119 --> 00:18:23.480
<v Speaker 4>think I think this is sort of one of the

375
00:18:23.480 --> 00:18:26.240
<v Speaker 4>the industry trends right now in front in web development

376
00:18:26.319 --> 00:18:29.720
<v Speaker 4>that the frameworks are getting are getting very powerful in

377
00:18:29.799 --> 00:18:33.799
<v Speaker 4>terms of the the flexibility and how you render your components,

378
00:18:33.839 --> 00:18:35.359
<v Speaker 4>Like you can render your components from the server, you

379
00:18:35.359 --> 00:18:37.839
<v Speaker 4>can render them from the from the client, and various

380
00:18:38.680 --> 00:18:42.839
<v Speaker 4>mixed cases as well, like enhanced uh static, enhanced navigation

381
00:18:42.920 --> 00:18:46.160
<v Speaker 4>and forum handling, streaming rendering. These these new patterns that

382
00:18:46.319 --> 00:18:48.640
<v Speaker 4>enable you to make your app more feel, more responsive,

383
00:18:49.079 --> 00:18:52.119
<v Speaker 4>load faster, have a better user experience, but it does

384
00:18:52.160 --> 00:18:56.400
<v Speaker 4>also result in complexity, like and it can result in

385
00:18:56.400 --> 00:18:59.799
<v Speaker 4>like these types of architectural questions that you're asking about like, well,

386
00:18:59.799 --> 00:19:02.400
<v Speaker 4>how I now flow state from each of these different

387
00:19:02.440 --> 00:19:04.599
<v Speaker 4>types of rendering within my application.

388
00:19:04.839 --> 00:19:05.119
<v Speaker 1>Yeah.

389
00:19:05.440 --> 00:19:07.640
<v Speaker 4>I think that's something that you know in general, not

390
00:19:07.680 --> 00:19:10.440
<v Speaker 4>just in Blazer, but like whether you're doing React or Angular,

391
00:19:10.880 --> 00:19:14.200
<v Speaker 4>you know, React server components, our thing right next JS

392
00:19:13.960 --> 00:19:17.839
<v Speaker 4>has similar patterns or newer frameworks like Astro and solid

393
00:19:18.319 --> 00:19:21.960
<v Speaker 4>like figuring out ways to help users navigate the complexity

394
00:19:22.000 --> 00:19:25.119
<v Speaker 4>of these different ways of rendering. Web UI is I

395
00:19:25.119 --> 00:19:27.400
<v Speaker 4>think an ongoing, an ongoing, challenging problem.

396
00:19:27.440 --> 00:19:27.839
<v Speaker 2>Yeah.

397
00:19:27.920 --> 00:19:31.200
<v Speaker 1>Yeah, just to be clear, you can use some props.

398
00:19:31.279 --> 00:19:35.519
<v Speaker 1>So when dot Net eight came out, Rocky Laca and

399
00:19:35.559 --> 00:19:40.960
<v Speaker 1>I noticed that there was some problems with scope services

400
00:19:41.000 --> 00:19:43.039
<v Speaker 1>just sort of dying and going null on you when

401
00:19:43.039 --> 00:19:46.240
<v Speaker 1>you switched modes. And that seems to have been fixed.

402
00:19:46.599 --> 00:19:48.519
<v Speaker 1>I didn't see a lot of fanfare about it, but

403
00:19:48.960 --> 00:19:51.920
<v Speaker 1>I tried it recently for a talk I was giving

404
00:19:52.079 --> 00:19:56.079
<v Speaker 1>and lo and behold those scope services are now surviving

405
00:19:56.759 --> 00:20:00.279
<v Speaker 1>the in it. Yeah, which is great, which is great.

406
00:20:00.519 --> 00:20:03.799
<v Speaker 1>So I mean working is expected, there was Yeah, working

407
00:20:03.920 --> 00:20:06.119
<v Speaker 1>is expected, but you know, there's like he said, there

408
00:20:06.160 --> 00:20:07.640
<v Speaker 1>were some glitches with dot and it eate when it

409
00:20:07.680 --> 00:20:09.759
<v Speaker 1>came out, and some of those things are being correct

410
00:20:09.799 --> 00:20:13.319
<v Speaker 1>and hats off man. Good stuff. Laser goes on.

411
00:20:13.440 --> 00:20:15.400
<v Speaker 4>Laser continues to do to improve we do. We do

412
00:20:15.480 --> 00:20:17.480
<v Speaker 4>try to listen to to user feedback. I think they're

413
00:20:17.480 --> 00:20:20.960
<v Speaker 4>still like with state and persistence, like we were talking

414
00:20:20.960 --> 00:20:24.440
<v Speaker 4>about you know, your own libraries to helping with service

415
00:20:24.480 --> 00:20:26.960
<v Speaker 4>side persistence. I still think there's more to be to

416
00:20:27.000 --> 00:20:29.559
<v Speaker 4>be done, Like we've wanted for a while to have

417
00:20:29.599 --> 00:20:32.559
<v Speaker 4>like a more declarative model for persistence in Blazer where

418
00:20:32.640 --> 00:20:34.759
<v Speaker 4>you can sort of declare on your component, like here's

419
00:20:34.759 --> 00:20:37.480
<v Speaker 4>stuff that I'd like to be that's awesome persisted or

420
00:20:37.519 --> 00:20:40.400
<v Speaker 4>survive the pre render to the interactive rendering flow and

421
00:20:40.759 --> 00:20:43.160
<v Speaker 4>all these places where you want to flow state around

422
00:20:43.559 --> 00:20:47.880
<v Speaker 4>helping with framework patterns UH to deal with those types

423
00:20:47.920 --> 00:20:49.680
<v Speaker 4>of types of issues, and those are things I think

424
00:20:49.680 --> 00:20:51.839
<v Speaker 4>we'll look at in a future version.

425
00:20:51.960 --> 00:20:55.720
<v Speaker 2>It's cool, very cool. The relationship with MAUI. I mean

426
00:20:55.759 --> 00:20:58.720
<v Speaker 2>they'd come up later than you know, Blazer's been around

427
00:20:58.799 --> 00:21:02.039
<v Speaker 2>longer and there's sort of this energy around this is

428
00:21:02.079 --> 00:21:05.720
<v Speaker 2>your you know, all purpose client environment. What are you

429
00:21:05.720 --> 00:21:06.240
<v Speaker 2>guys doing.

430
00:21:06.440 --> 00:21:10.119
<v Speaker 4>We have a great partnership and integration with with MAUI.

431
00:21:10.319 --> 00:21:14.000
<v Speaker 4>I mean MAUI is all about cross platform native client

432
00:21:14.039 --> 00:21:17.039
<v Speaker 4>apps like you want to use, and Mali really specializes

433
00:21:17.079 --> 00:21:20.119
<v Speaker 4>in enabling you to use the native view y controls

434
00:21:20.119 --> 00:21:22.839
<v Speaker 4>and elements from the underlying platform. You when you render

435
00:21:22.839 --> 00:21:26.680
<v Speaker 4>a button, yeah, and you're gonna get the iOS button.

436
00:21:26.680 --> 00:21:28.839
<v Speaker 4>When you are on an Android, you get the Android button,

437
00:21:28.920 --> 00:21:30.960
<v Speaker 4>or when y you get the winduw I button. That's

438
00:21:31.000 --> 00:21:33.640
<v Speaker 4>their their bread and butter. Where we plug into Mali

439
00:21:33.680 --> 00:21:38.119
<v Speaker 4>with Blazer is well, you can render a WebView control

440
00:21:38.160 --> 00:21:40.759
<v Speaker 4>within a Maui app on regardless of the platform you're on,

441
00:21:41.200 --> 00:21:43.440
<v Speaker 4>and from that WebView control, you can then render Blazer

442
00:21:43.440 --> 00:21:45.559
<v Speaker 4>components from from the device. So this is what we

443
00:21:45.640 --> 00:21:49.160
<v Speaker 4>call the Blazer hybrid pattern. And actually, Donta nine we

444
00:21:49.440 --> 00:21:53.200
<v Speaker 4>have a new solution template I guess we could call

445
00:21:53.240 --> 00:21:56.920
<v Speaker 4>it for doing both a dott Maui Blazer hybrid app

446
00:21:57.319 --> 00:22:00.200
<v Speaker 4>in conjunction with a Blazer web app where you want

447
00:22:00.200 --> 00:22:02.559
<v Speaker 4>to target not only the native client platforms with your

448
00:22:02.920 --> 00:22:07.000
<v Speaker 4>Blazer components, but also the webs web, mobile and desktop

449
00:22:07.359 --> 00:22:10.920
<v Speaker 4>with one template setup. That's something you could do in

450
00:22:10.920 --> 00:22:12.240
<v Speaker 4>Donna Dight, but you had to kind of set it

451
00:22:12.279 --> 00:22:14.200
<v Speaker 4>up manually. It was a bit bit tedious and Dota

452
00:22:14.279 --> 00:22:15.359
<v Speaker 4>nine we give you a pre kit.

453
00:22:15.640 --> 00:22:17.880
<v Speaker 2>It is a bit inception, ye, right, that you have

454
00:22:18.039 --> 00:22:21.359
<v Speaker 2>an UX inside of a framework inside of a UX

455
00:22:21.480 --> 00:22:24.119
<v Speaker 2>A little bit, yeah.

456
00:22:23.480 --> 00:22:27.039
<v Speaker 4>But it's very common. Like we use these style of

457
00:22:27.079 --> 00:22:29.640
<v Speaker 4>apps all the time. If anyone's using Visual Studio code

458
00:22:30.039 --> 00:22:33.039
<v Speaker 4>have a native shell with a you know, chromium based

459
00:22:33.319 --> 00:22:38.240
<v Speaker 4>web view sitting inside of it. Your editor Microsoft teams

460
00:22:38.039 --> 00:22:41.720
<v Speaker 4>is built with a similar technology stack of similar similar

461
00:22:41.799 --> 00:22:45.680
<v Speaker 4>architecture or hybrid style architecture. Sure, the Blazer hybrid pattern

462
00:22:45.720 --> 00:22:48.480
<v Speaker 4>just lets you do it with Blazer components as opposed

463
00:22:48.519 --> 00:22:50.680
<v Speaker 4>to having to do it with JavaScript, right.

464
00:22:50.759 --> 00:22:53.000
<v Speaker 1>I also like the fact that you can mix a match,

465
00:22:53.200 --> 00:22:56.160
<v Speaker 1>Like you can build a WPF app that has a

466
00:22:56.160 --> 00:22:59.440
<v Speaker 1>Blazer view for your main content and then hey, if

467
00:22:59.440 --> 00:23:02.440
<v Speaker 1>you can't find a good Blazer calendar control, you can

468
00:23:02.559 --> 00:23:05.640
<v Speaker 1>use a WPF calendar control and pop that up right,

469
00:23:05.720 --> 00:23:08.920
<v Speaker 1>and you know what I mean, it's just wind forms

470
00:23:08.960 --> 00:23:12.640
<v Speaker 1>or vice versa. Yeah, So you can truly use the

471
00:23:13.200 --> 00:23:16.640
<v Speaker 1>platforms inside the different platforms inside of an app for

472
00:23:17.480 --> 00:23:20.599
<v Speaker 1>what you know, the best of breed technology is whatever.

473
00:23:20.759 --> 00:23:23.160
<v Speaker 4>I was talking with some of the Maui folks, and

474
00:23:23.200 --> 00:23:25.400
<v Speaker 4>I think in some cases they like if if there's

475
00:23:25.440 --> 00:23:30.000
<v Speaker 4>a control that's not quite available or not quite working

476
00:23:30.000 --> 00:23:32.480
<v Speaker 4>the way people want. At the native layer. People often

477
00:23:32.519 --> 00:23:34.680
<v Speaker 4>will go the Blazer hybrid rout to go grab a

478
00:23:34.720 --> 00:23:37.720
<v Speaker 4>control from you know, popular web frameworks or Blazer that

479
00:23:37.920 --> 00:23:39.880
<v Speaker 4>use that inside their mauway up and that that works

480
00:23:39.960 --> 00:23:41.319
<v Speaker 4>very quite quite quite well for them.

481
00:23:41.400 --> 00:23:45.440
<v Speaker 2>Yeah, I just wonder about performance behavior, Like there's all

482
00:23:45.440 --> 00:23:48.680
<v Speaker 2>the subtleties that work when you're pulling in components through

483
00:23:48.680 --> 00:23:52.279
<v Speaker 2>these different layers like that, like does this UX hold together?

484
00:23:52.359 --> 00:23:55.119
<v Speaker 2>Does it look like this is a different component stat

485
00:23:55.119 --> 00:23:57.240
<v Speaker 2>that came from a different Blazer. Does it look like

486
00:23:57.279 --> 00:23:58.119
<v Speaker 2>it's all unified?

487
00:23:58.240 --> 00:24:01.039
<v Speaker 4>Yeah? That that's so. The thing you lose out with

488
00:24:01.079 --> 00:24:04.640
<v Speaker 4>the Blazer hybrid pattern is you are now rendering web

489
00:24:04.720 --> 00:24:06.960
<v Speaker 4>UI within the native shell. If you've stuck with just

490
00:24:07.039 --> 00:24:10.680
<v Speaker 4>native native controls like the MAUI abstractions. For those native controls,

491
00:24:11.000 --> 00:24:14.880
<v Speaker 4>you get the look and feel consistency of that platform,

492
00:24:14.960 --> 00:24:17.079
<v Speaker 4>Like it'll look like an iOS app when it's running

493
00:24:17.079 --> 00:24:18.839
<v Speaker 4>on iOS, it will look like an Android app when

494
00:24:18.839 --> 00:24:21.680
<v Speaker 4>it's on Android. Once you go into the hybrid world

495
00:24:21.799 --> 00:24:22.519
<v Speaker 4>you're now in that.

496
00:24:22.599 --> 00:24:23.559
<v Speaker 2>It looks like a web app.

497
00:24:23.960 --> 00:24:26.359
<v Speaker 4>Yeah, well, however you style that that web app you

498
00:24:26.359 --> 00:24:28.119
<v Speaker 4>want it to look IOSC. Then you're gonna have to

499
00:24:28.200 --> 00:24:31.160
<v Speaker 4>use some CSS styles that make it follow the iOS

500
00:24:31.920 --> 00:24:32.720
<v Speaker 4>design patterns.

501
00:24:32.799 --> 00:24:35.240
<v Speaker 2>Or if you want all your textbox to be in flames, yes,

502
00:24:35.279 --> 00:24:36.359
<v Speaker 2>CSS will do that for you.

503
00:24:36.440 --> 00:24:37.519
<v Speaker 4>Yes, you can do it.

504
00:24:38.480 --> 00:24:40.440
<v Speaker 1>All your text box are belonging to S.

505
00:24:40.559 --> 00:24:43.319
<v Speaker 2>Yes. No applying for taste here, that's not it.

506
00:24:44.000 --> 00:24:46.000
<v Speaker 4>I want you want to mention like for performance. I

507
00:24:46.039 --> 00:24:48.680
<v Speaker 4>actually think that the Blazer hybrid pattern is is a

508
00:24:48.720 --> 00:24:52.720
<v Speaker 4>really good story for a performance because the rendering of

509
00:24:52.759 --> 00:24:56.839
<v Speaker 4>the Blazer components is happening natively on the device. Like

510
00:24:56.880 --> 00:25:00.799
<v Speaker 4>there's no web assembly involved. No, there's no website get involved.

511
00:25:01.039 --> 00:25:04.640
<v Speaker 4>You're running your dot net Blazer components on a normal

512
00:25:04.880 --> 00:25:07.759
<v Speaker 4>dot net run time with JIT and normal garbage collector

513
00:25:07.799 --> 00:25:10.680
<v Speaker 4>and all that stuff running on the device. It's then

514
00:25:10.799 --> 00:25:14.000
<v Speaker 4>just talking to the WebView control over like a local

515
00:25:14.000 --> 00:25:17.880
<v Speaker 4>interrupt channel. So the component rendering is quick. That's very performant.

516
00:25:18.200 --> 00:25:20.519
<v Speaker 4>You do have a little extra weight because you are

517
00:25:20.599 --> 00:25:22.440
<v Speaker 4>bringing the web platform with.

518
00:25:22.480 --> 00:25:24.880
<v Speaker 2>You as soon as the web control comes into play.

519
00:25:25.000 --> 00:25:29.160
<v Speaker 2>That's a spicy meatball, right, yeah, and spicy meat.

520
00:25:29.160 --> 00:25:31.000
<v Speaker 1>And you can look, you know, you can look at

521
00:25:31.039 --> 00:25:34.039
<v Speaker 1>the task manager and see the difference right. The native

522
00:25:35.400 --> 00:25:39.119
<v Speaker 1>Maui stuff is smaller, right, and then you have the

523
00:25:39.279 --> 00:25:42.960
<v Speaker 1>in the in the process for the for the Blazer Hybrid,

524
00:25:43.000 --> 00:25:46.200
<v Speaker 1>you've got you know, edge webe chromium, the WebView and

525
00:25:46.279 --> 00:25:50.119
<v Speaker 1>all of the stuff that comes with it. Right. So yeah, yeah,

526
00:25:50.160 --> 00:25:51.480
<v Speaker 1>you aren't going to use more memory.

527
00:25:51.640 --> 00:25:53.920
<v Speaker 2>You're going to feel it now that last time I look,

528
00:25:54.000 --> 00:25:56.279
<v Speaker 2>most of these machines have way too much memory anyway.

529
00:25:56.359 --> 00:26:00.000
<v Speaker 1>So I totally agree Richard. Never run out of memory

530
00:26:00.200 --> 00:26:02.920
<v Speaker 1>on my iPhone to take back.

531
00:26:02.759 --> 00:26:04.880
<v Speaker 4>The memory so they don't have so much to waste.

532
00:26:06.279 --> 00:26:08.240
<v Speaker 1>I had. I had a group in here in the

533
00:26:08.279 --> 00:26:11.799
<v Speaker 1>studio the other night when we're recording something, and he says,

534
00:26:11.920 --> 00:26:15.119
<v Speaker 1>you know, he's trying to punch in and and I said, dude,

535
00:26:15.359 --> 00:26:16.880
<v Speaker 1>I'm not going to run out of tape.

536
00:26:17.039 --> 00:26:17.799
<v Speaker 2>It's gonna be okay.

537
00:26:17.839 --> 00:26:20.880
<v Speaker 1>You know, you can go as many times as long

538
00:26:20.920 --> 00:26:23.799
<v Speaker 1>as you want. You can just keep recording. He's like, oh, stop,

539
00:26:23.880 --> 00:26:26.440
<v Speaker 1>go back, you know. No, no, not gonna run out

540
00:26:26.440 --> 00:26:27.920
<v Speaker 1>of tape, not going to run out of memory.

541
00:26:28.440 --> 00:26:30.559
<v Speaker 2>I'm not going to stop. It's not going to just

542
00:26:30.640 --> 00:26:34.119
<v Speaker 2>have one continuous stream, keep going. It's like my phone's

543
00:26:34.119 --> 00:26:36.559
<v Speaker 2>not running out of film. It's going to be take

544
00:26:36.559 --> 00:26:37.200
<v Speaker 2>another picture.

545
00:26:37.200 --> 00:26:42.079
<v Speaker 1>It's okay, right, Yeah, yeah, this is just leftover behaviors

546
00:26:42.119 --> 00:26:43.319
<v Speaker 1>from old technologies.

547
00:26:43.359 --> 00:26:46.079
<v Speaker 2>Yeah, I mean there is a phones have some constraints

548
00:26:46.079 --> 00:26:50.160
<v Speaker 2>they but mostly bandwidth related ones and storage related ones

549
00:26:50.160 --> 00:26:53.559
<v Speaker 2>depending on what phone you're getting. But yeah, definitely we

550
00:26:53.640 --> 00:26:56.880
<v Speaker 2>have you know, maintainability is more important these days and

551
00:26:57.039 --> 00:26:58.240
<v Speaker 2>optimizing the bites.

552
00:26:58.480 --> 00:27:00.839
<v Speaker 1>Still, when my phone starts running low on battery, the

553
00:27:00.880 --> 00:27:03.440
<v Speaker 1>first thing I do is close all the apps that

554
00:27:03.680 --> 00:27:04.640
<v Speaker 1>are running there.

555
00:27:04.680 --> 00:27:07.440
<v Speaker 2>You go, well, I just swapped up my phone because

556
00:27:07.440 --> 00:27:09.880
<v Speaker 2>the last one started to grow in the way that

557
00:27:09.960 --> 00:27:11.759
<v Speaker 2>says this will catch fire soon.

558
00:27:12.400 --> 00:27:14.160
<v Speaker 1>So you mean like capacitors.

559
00:27:14.319 --> 00:27:19.440
<v Speaker 2>No, the battery started to expand popular expanding Yeah, yike.

560
00:27:19.960 --> 00:27:22.480
<v Speaker 2>Not a good sign. No, not at all. So I

561
00:27:22.559 --> 00:27:24.559
<v Speaker 2>moved on. Hey, we should take a little break, and

562
00:27:24.599 --> 00:27:24.880
<v Speaker 2>then I.

563
00:27:24.839 --> 00:27:26.680
<v Speaker 1>Get some questions. All right, we'll be right back after

564
00:27:26.720 --> 00:27:30.480
<v Speaker 1>these messages. Did you know you can lift and shift

565
00:27:30.559 --> 00:27:34.200
<v Speaker 1>your dot net framework apps to virtual machines in the cloud.

566
00:27:35.000 --> 00:27:39.200
<v Speaker 1>Use the elastic beanstalk service to easily migrate to Amazon

567
00:27:39.279 --> 00:27:43.400
<v Speaker 1>EC two with little or no changes. Find out more

568
00:27:43.440 --> 00:27:53.160
<v Speaker 1>at aws dot Amazon dot com slash elastic beanstalk. And

569
00:27:53.240 --> 00:27:55.160
<v Speaker 1>we're back. It's dot in a Rocks and Carl Franklin,

570
00:27:55.200 --> 00:27:57.920
<v Speaker 1>my friend Richard Campbell, Heye, and our friend Daniel Roth

571
00:27:57.920 --> 00:27:59.960
<v Speaker 1>from Microsoft in just as a reminder, if you don't

572
00:28:00.079 --> 00:28:02.599
<v Speaker 1>want to hear these ads, because let's face it, some

573
00:28:02.680 --> 00:28:05.319
<v Speaker 1>of them you really don't want to hear, you can

574
00:28:05.559 --> 00:28:08.160
<v Speaker 1>for five dollars a month go to Patreon dot dot

575
00:28:08.200 --> 00:28:11.440
<v Speaker 1>nerocks dot com and become a patron and you'll get

576
00:28:11.440 --> 00:28:12.759
<v Speaker 1>a feed that's ad free.

577
00:28:13.039 --> 00:28:13.480
<v Speaker 2>Nice.

578
00:28:13.680 --> 00:28:16.759
<v Speaker 1>All right, where were we dan? What's on your list next?

579
00:28:16.839 --> 00:28:17.759
<v Speaker 2>What have we covered? So?

580
00:28:18.279 --> 00:28:20.319
<v Speaker 4>I think it's important to stress that for DOTT nine,

581
00:28:20.720 --> 00:28:22.720
<v Speaker 4>a lot of what we're doing in this release is

582
00:28:22.759 --> 00:28:27.160
<v Speaker 4>about quality and fundamentals, like the features always get the

583
00:28:27.480 --> 00:28:32.000
<v Speaker 4>headlines right, new new capabilities, new functionality. But a pretty

584
00:28:32.000 --> 00:28:34.599
<v Speaker 4>significant investment was made in DOTTA nine just to focus

585
00:28:34.640 --> 00:28:40.440
<v Speaker 4>on things like performance, security, accessibility, just making sure that

586
00:28:40.519 --> 00:28:44.319
<v Speaker 4>the fundamentals of what we're shipping our top top quality.

587
00:28:44.640 --> 00:28:47.319
<v Speaker 4>I'm sure many people listening have heard of the Secure

588
00:28:47.680 --> 00:28:51.480
<v Speaker 4>Future initiative from microclock. The whole dot net team has

589
00:28:51.519 --> 00:28:54.000
<v Speaker 4>been participating in that effort as well, making sure that

590
00:28:54.079 --> 00:28:58.079
<v Speaker 4>every feature we ship is secure by default, has secure

591
00:28:58.119 --> 00:29:00.799
<v Speaker 4>characteristics for our users, and that's all.

592
00:29:00.680 --> 00:29:04.240
<v Speaker 2>Work, expects to expects to managed identity, like those kinds

593
00:29:04.279 --> 00:29:07.000
<v Speaker 2>of things, right, really doing the zero testing.

594
00:29:07.279 --> 00:29:10.960
<v Speaker 4>Making sure our samples show you best practices for the

595
00:29:11.079 --> 00:29:15.200
<v Speaker 4>latest threats and how you mitigate them, and just making

596
00:29:15.200 --> 00:29:17.799
<v Speaker 4>sure that our own infrastructure, of course is is as

597
00:29:17.880 --> 00:29:20.640
<v Speaker 4>tight and as secure as it possibly can be, a

598
00:29:20.680 --> 00:29:24.359
<v Speaker 4>lot of works gone to security performance, though it is

599
00:29:24.359 --> 00:29:26.920
<v Speaker 4>always a big area of investment.

600
00:29:27.319 --> 00:29:29.200
<v Speaker 2>There is Steven tow isn't there.

601
00:29:29.680 --> 00:29:33.759
<v Speaker 4>Has published his tomb Yes, the tome.

602
00:29:36.839 --> 00:29:38.559
<v Speaker 2>Taking I know what I'm doing this weekend.

603
00:29:39.720 --> 00:29:41.759
<v Speaker 4>I gotta say, like these these perform I know he

604
00:29:41.799 --> 00:29:44.400
<v Speaker 4>does a lot of like micro benchmarking part of showing

605
00:29:44.400 --> 00:29:48.440
<v Speaker 4>those benefits, but these benefits are real. Like we Donnet

606
00:29:48.559 --> 00:29:52.759
<v Speaker 4>is used heavily internally at Microsoft by our largest products,

607
00:29:53.039 --> 00:29:57.480
<v Speaker 4>you know Microsoft teams being in Tune, Xbox, like these

608
00:29:57.599 --> 00:30:00.440
<v Speaker 4>huge properties are using don net to power their back

609
00:30:00.559 --> 00:30:04.440
<v Speaker 4>ends and they just love that. Every donnet version comes out,

610
00:30:04.480 --> 00:30:06.119
<v Speaker 4>they install that on to.

611
00:30:06.240 --> 00:30:09.319
<v Speaker 2>Change nothing and things are faster. Actually, some of my

612
00:30:09.440 --> 00:30:13.839
<v Speaker 2>favorite blog posts have been like the team's team saying,

613
00:30:14.039 --> 00:30:17.400
<v Speaker 2>here's our benchmarks. When we were on seven, and then

614
00:30:17.480 --> 00:30:20.400
<v Speaker 2>we switch to eight, here's the things we needed to fix,

615
00:30:20.599 --> 00:30:22.400
<v Speaker 2>and then we ran the same benchmarks again and here's

616
00:30:22.440 --> 00:30:26.240
<v Speaker 2>our performance on eight. Like those, I think are very

617
00:30:26.279 --> 00:30:30.400
<v Speaker 2>compelling for folks to see Microsoft consumes its own dog food,

618
00:30:30.440 --> 00:30:32.920
<v Speaker 2>like this is a product they use and they are

619
00:30:32.920 --> 00:30:36.680
<v Speaker 2>getting these benefits too, and they care about them. Absolutely, Yeah, absolutely.

620
00:30:36.759 --> 00:30:41.680
<v Speaker 2>I would tie that back to the Secure Future initiative

621
00:30:42.200 --> 00:30:45.599
<v Speaker 2>in the sense that it is still too hard to

622
00:30:45.680 --> 00:30:48.960
<v Speaker 2>write really secure code, but I'm glad you guys are

623
00:30:49.000 --> 00:30:52.279
<v Speaker 2>doing it because it will then get easier because you

624
00:30:52.359 --> 00:30:55.799
<v Speaker 2>need You've got deadlines too, right, and as soon as

625
00:30:55.839 --> 00:30:57.880
<v Speaker 2>security gets in the way enough that you're serious and

626
00:30:57.920 --> 00:31:00.440
<v Speaker 2>considering circumventing it, like you know where those guys work,

627
00:31:00.559 --> 00:31:02.880
<v Speaker 2>go get them and make it better.

628
00:31:03.880 --> 00:31:05.200
<v Speaker 4>Fix it.

629
00:31:05.680 --> 00:31:09.000
<v Speaker 2>Well, I remember what happened to WPF when the studio

630
00:31:09.039 --> 00:31:11.640
<v Speaker 2>team started implementing it back for the twenty ten edition.

631
00:31:12.440 --> 00:31:16.279
<v Speaker 2>WPF took this massive leap in improvement because those guys

632
00:31:16.799 --> 00:31:19.440
<v Speaker 2>rang it out and found its weaknesses and then hunted

633
00:31:19.519 --> 00:31:21.680
<v Speaker 2>down the folks who built it and made it better.

634
00:31:21.799 --> 00:31:24.279
<v Speaker 1>And the dot Net Framework the same thing happened when

635
00:31:24.319 --> 00:31:27.039
<v Speaker 1>it was embedded in SQL service. Yeah, shook it out,

636
00:31:27.079 --> 00:31:28.240
<v Speaker 1>They beat the snot out of it.

637
00:31:28.640 --> 00:31:33.359
<v Speaker 4>Things get used, they get refined in the the world.

638
00:31:33.480 --> 00:31:36.039
<v Speaker 2>Yeah, but it's also there's there's a little insider angle

639
00:31:36.079 --> 00:31:40.079
<v Speaker 2>there where one Microsoft team's being impeded by another Microsoft team.

640
00:31:40.240 --> 00:31:43.680
<v Speaker 2>Like that gets energy right that you can actually make

641
00:31:43.680 --> 00:31:45.480
<v Speaker 2>step better. That will all bet of fit from. Like

642
00:31:45.559 --> 00:31:49.359
<v Speaker 2>I expect our process of making secure dot net applications

643
00:31:49.400 --> 00:31:51.119
<v Speaker 2>to get dramatically better the next year.

644
00:31:51.200 --> 00:31:53.839
<v Speaker 4>It is a goal that as we improve our own security,

645
00:31:53.839 --> 00:31:56.799
<v Speaker 4>that that spreads to the rest of the eCos rolls

646
00:31:56.839 --> 00:31:59.160
<v Speaker 4>out to everybody. One example I can think of is

647
00:31:59.519 --> 00:32:02.119
<v Speaker 4>like one technique we're using internally on our code basis

648
00:32:02.200 --> 00:32:05.400
<v Speaker 4>is you know, static code analysis scanning, scanning our codebases

649
00:32:05.480 --> 00:32:08.440
<v Speaker 4>looking for problems in an automated fashion. One of the

650
00:32:08.480 --> 00:32:10.559
<v Speaker 4>tools we use for that is code ql, which is

651
00:32:10.599 --> 00:32:14.200
<v Speaker 4>a publicly available suite that's used as part of our

652
00:32:14.319 --> 00:32:18.200
<v Speaker 4>get up Advanced Security offering for scanning codebases. And so

653
00:32:18.279 --> 00:32:21.039
<v Speaker 4>as we you know, tweak and refine the rules that

654
00:32:21.079 --> 00:32:23.240
<v Speaker 4>we use for scanning our code bases, then those can

655
00:32:23.240 --> 00:32:25.880
<v Speaker 4>become available to external users and that that whole story

656
00:32:25.960 --> 00:32:29.559
<v Speaker 4>just gets better and stronger, so you can find issues

657
00:32:29.839 --> 00:32:33.480
<v Speaker 4>faster in an automated way. So security top top priority.

658
00:32:34.240 --> 00:32:36.359
<v Speaker 4>You know, huge amount of resources being spent on making

659
00:32:36.359 --> 00:32:39.400
<v Speaker 4>sure that our uh that that that our users can

660
00:32:39.440 --> 00:32:42.480
<v Speaker 4>trust the products that we ship from Microsoft because everything

661
00:32:42.480 --> 00:32:43.920
<v Speaker 4>else rides on top of.

662
00:32:43.880 --> 00:32:46.880
<v Speaker 1>That getting back performance from it, and just this will

663
00:32:46.920 --> 00:32:49.599
<v Speaker 1>give you a good segway for you. Uh. I recall

664
00:32:49.799 --> 00:32:52.240
<v Speaker 1>several years ago. I don't remember what which version of

665
00:32:52.279 --> 00:32:54.079
<v Speaker 1>dot net it was, but it was like, for the

666
00:32:54.119 --> 00:33:00.599
<v Speaker 1>first time dot Net was outperforming. It's uh, you know,

667
00:33:00.720 --> 00:33:04.039
<v Speaker 1>not its rivals or its adversaries, but it's competitors. It's

668
00:33:04.079 --> 00:33:08.079
<v Speaker 1>competitive stacks in terms of you know, speed and performance.

669
00:33:08.680 --> 00:33:11.680
<v Speaker 1>And you know, at that point I was like, ah, okay,

670
00:33:11.839 --> 00:33:14.319
<v Speaker 1>dot Net is the most performance. I don't have to

671
00:33:14.319 --> 00:33:16.440
<v Speaker 1>worry about that now. But then you know, of course

672
00:33:16.519 --> 00:33:21.759
<v Speaker 1>every year those competitors' platforms also increase their performance. And

673
00:33:21.799 --> 00:33:24.240
<v Speaker 1>you've got this cat and mouse team, So what is

674
00:33:24.279 --> 00:33:27.119
<v Speaker 1>it in terms of performance? Do you know what the

675
00:33:27.200 --> 00:33:31.240
<v Speaker 1>rank is in terms of compared to everything else.

676
00:33:31.400 --> 00:33:33.920
<v Speaker 4>The benchmark that we use for that and that we

677
00:33:33.960 --> 00:33:37.000
<v Speaker 4>target and Donnett is the Tech and Power Benchmarks, which

678
00:33:37.000 --> 00:33:39.960
<v Speaker 4>are a public set of benchmarks that look at all

679
00:33:40.039 --> 00:33:43.680
<v Speaker 4>the developer ecosystems that are on the planet. They implement

680
00:33:43.720 --> 00:33:46.279
<v Speaker 4>the same suite of benchmark tests and then they run

681
00:33:46.319 --> 00:33:49.440
<v Speaker 4>them and you can go and look and compare how

682
00:33:49.799 --> 00:33:53.720
<v Speaker 4>different implementations of different stacks look against each other. And

683
00:33:54.119 --> 00:33:55.920
<v Speaker 4>I don't have the numbers off the top of my head,

684
00:33:55.960 --> 00:33:57.839
<v Speaker 4>but you can, of course just go and check the

685
00:33:57.880 --> 00:33:59.680
<v Speaker 4>tech power benchmarks yourself.

686
00:34:00.079 --> 00:34:01.599
<v Speaker 1>And we were Richard's doing that area.

687
00:34:01.640 --> 00:34:07.119
<v Speaker 4>Well, yep, very very well on those benchmarks.

688
00:34:07.160 --> 00:34:09.519
<v Speaker 2>You guys are always in the top few, right, I

689
00:34:09.519 --> 00:34:10.599
<v Speaker 2>mean the the.

690
00:34:11.000 --> 00:34:14.119
<v Speaker 4>And usually it's the top few where we're like often

691
00:34:14.159 --> 00:34:16.239
<v Speaker 4>the one that is like the thing you would actually

692
00:34:16.599 --> 00:34:18.280
<v Speaker 4>consider using, like some of the other there are some.

693
00:34:18.440 --> 00:34:20.360
<v Speaker 2>Right, yeah, some of these stacks are pretty weird.

694
00:34:21.039 --> 00:34:24.760
<v Speaker 4>Academic I would say there are some other good stacks

695
00:34:24.760 --> 00:34:26.440
<v Speaker 4>out there. I don't want to say there are.

696
00:34:26.480 --> 00:34:29.159
<v Speaker 2>Sure, yeah, there's plenty. There's plenty of good stacks. But

697
00:34:29.239 --> 00:34:33.480
<v Speaker 2>there dot net Core sitting at twenty three out of

698
00:34:33.599 --> 00:34:37.000
<v Speaker 2>what two hundred, three hundred, five hundred.

699
00:34:36.920 --> 00:34:39.679
<v Speaker 4>Say pretty confidently that if you choose dot net for

700
00:34:39.719 --> 00:34:42.519
<v Speaker 4>your service stack, you will be very happy with its performance.

701
00:34:42.599 --> 00:34:45.519
<v Speaker 2>Character performance will not be an issue. That's it's not

702
00:34:45.559 --> 00:34:46.840
<v Speaker 2>going to be an issue.

703
00:34:47.039 --> 00:34:49.480
<v Speaker 4>And that's proven out in the real world by like

704
00:34:49.519 --> 00:34:51.760
<v Speaker 4>we were talking earlier about us running down it in our

705
00:34:51.760 --> 00:34:54.519
<v Speaker 4>own data centers, for our own cloud, for our.

706
00:34:54.400 --> 00:34:55.440
<v Speaker 2>Own product offering.

707
00:34:55.519 --> 00:34:57.519
<v Speaker 1>Okay, so Dan, I hate to put you on the spot,

708
00:34:57.559 --> 00:35:00.840
<v Speaker 1>but if I ask you this every time I interview you,

709
00:35:01.320 --> 00:35:04.440
<v Speaker 1>back when dot net was just coming out, dot net server,

710
00:35:05.159 --> 00:35:07.920
<v Speaker 1>you showed at dot ne kof a slide where you

711
00:35:07.960 --> 00:35:13.000
<v Speaker 1>did a headless test of the skew that Blazer server

712
00:35:13.159 --> 00:35:15.519
<v Speaker 1>was running on. How much RAM and how many CPUs

713
00:35:16.039 --> 00:35:22.599
<v Speaker 1>versus how many consecutive users you could have, not consecutive concurrent,

714
00:35:23.079 --> 00:35:26.840
<v Speaker 1>how many concurrent users you can have before a click

715
00:35:27.639 --> 00:35:31.519
<v Speaker 1>result doesn't return in two hundred milliseconds, which is kind

716
00:35:31.519 --> 00:35:34.760
<v Speaker 1>of the brain benchmark by which people think it's slow.

717
00:35:35.960 --> 00:35:41.000
<v Speaker 1>And you said that I think it was five thousand

718
00:35:41.440 --> 00:35:44.840
<v Speaker 1>for like, don't know, four gigs of RAM, and if

719
00:35:44.840 --> 00:35:48.880
<v Speaker 1>you increase that to something in for CPUs, it got more.

720
00:35:49.239 --> 00:35:50.920
<v Speaker 1>And the other thing that you said was how much

721
00:35:50.960 --> 00:35:55.159
<v Speaker 1>overhead blazer server used for each user to keep the state,

722
00:35:55.239 --> 00:35:57.360
<v Speaker 1>to keep the dom and back then I think it

723
00:35:57.400 --> 00:36:01.920
<v Speaker 1>was eighty five k. Do you have any idea, I mean,

724
00:36:01.920 --> 00:36:05.599
<v Speaker 1>you probably don't have a number, but would you expect

725
00:36:05.599 --> 00:36:07.719
<v Speaker 1>that number to go up or to go down?

726
00:36:08.119 --> 00:36:10.559
<v Speaker 4>With the number to go down, give them amount of

727
00:36:10.559 --> 00:36:13.239
<v Speaker 4>performance tuning we've had, but I don't think we've run

728
00:36:13.239 --> 00:36:15.960
<v Speaker 4>that test again since we did. It Initially was done

729
00:36:16.000 --> 00:36:19.119
<v Speaker 4>as sort of a just a proof point to show

730
00:36:19.199 --> 00:36:22.039
<v Speaker 4>that Laser Server wasn't going to be the bottleneck for

731
00:36:23.000 --> 00:36:24.239
<v Speaker 4>a good chunk of apps.

732
00:36:24.920 --> 00:36:25.400
<v Speaker 2>I think it was.

733
00:36:25.639 --> 00:36:27.519
<v Speaker 4>It was act like it was a fairly small VM

734
00:36:27.559 --> 00:36:30.159
<v Speaker 4>that you could run five thousand concurrent users and.

735
00:36:30.159 --> 00:36:32.920
<v Speaker 1>A more yeah, like a gig of RAM or something.

736
00:36:33.039 --> 00:36:35.239
<v Speaker 4>Yeah, and a more reasonable size VM you could easily

737
00:36:35.280 --> 00:36:38.880
<v Speaker 4>handle twenty thousand concurrent using Blazer Server. Of course, that

738
00:36:38.960 --> 00:36:41.079
<v Speaker 4>changes as you add your own app logic, like if

739
00:36:41.119 --> 00:36:44.159
<v Speaker 4>you start allocating a bunch of memory for each circuit

740
00:36:44.320 --> 00:36:47.719
<v Speaker 4>for each user, then that will yeah, that's baseline change

741
00:36:47.760 --> 00:36:51.320
<v Speaker 4>the dynamics. But as a baseline, Blaser Server can certainly

742
00:36:51.400 --> 00:36:56.400
<v Speaker 4>handle quite easily with fairly reasonable hardware tens of thousands

743
00:36:56.440 --> 00:37:00.599
<v Speaker 4>of current users without sweating. And Microsoft do that all the.

744
00:37:00.599 --> 00:37:04.639
<v Speaker 1>Time on one server, And this question I get asked

745
00:37:04.679 --> 00:37:07.000
<v Speaker 1>all the time, and just to so that everybody can

746
00:37:07.239 --> 00:37:09.599
<v Speaker 1>not make sure that I didn't lie to them, I'll

747
00:37:09.639 --> 00:37:13.360
<v Speaker 1>ask you. So, if you want to scale out Blazer Server,

748
00:37:13.960 --> 00:37:19.840
<v Speaker 1>you use the signal our service from Azure, and so

749
00:37:19.920 --> 00:37:23.559
<v Speaker 1>then you can scale out add more servers, right, so

750
00:37:23.639 --> 00:37:27.719
<v Speaker 1>if you're twenty thousand concurrent user servers and enough, you

751
00:37:27.719 --> 00:37:31.599
<v Speaker 1>add another one. But by default affinity is on, so

752
00:37:32.280 --> 00:37:34.960
<v Speaker 1>connections are sticky. So when somebody comes in and they

753
00:37:35.159 --> 00:37:37.760
<v Speaker 1>log in and they register, they're always using that server,

754
00:37:38.360 --> 00:37:41.079
<v Speaker 1>so you don't have to worry about, oh, this time

755
00:37:41.119 --> 00:37:43.840
<v Speaker 1>when they press this button, it went to this particular

756
00:37:43.840 --> 00:37:46.800
<v Speaker 1>server which doesn't have my state. So is that that

757
00:37:46.920 --> 00:37:47.360
<v Speaker 1>is true?

758
00:37:47.440 --> 00:37:47.679
<v Speaker 2>Right?

759
00:37:47.760 --> 00:37:50.079
<v Speaker 4>That is still the pattern You need to have session

760
00:37:50.119 --> 00:37:52.760
<v Speaker 4>affinity in order to run Blazer server apps because it

761
00:37:52.800 --> 00:37:53.880
<v Speaker 4>is a statefold.

762
00:37:54.119 --> 00:37:57.320
<v Speaker 1>It's on by default in an app service, I think yes.

763
00:37:58.880 --> 00:38:03.199
<v Speaker 4>And the signal Our service, what purpose that serves is

764
00:38:03.559 --> 00:38:06.280
<v Speaker 4>helping you with the connections scaled out, Like if you

765
00:38:06.320 --> 00:38:10.119
<v Speaker 4>have a server environment, we're flooding it with you know,

766
00:38:10.159 --> 00:38:13.480
<v Speaker 4>tens of thousands of concurrent web socket connections might be

767
00:38:13.639 --> 00:38:18.159
<v Speaker 4>an issue. They signal ADUs signilar service can help multiplex

768
00:38:18.199 --> 00:38:22.079
<v Speaker 4>those connections so that your server infrastructure is less loaded

769
00:38:22.119 --> 00:38:25.800
<v Speaker 4>on the at the connection part of the application in

770
00:38:25.840 --> 00:38:29.239
<v Speaker 4>many Azure services. Actually, we recently updated our guidance around

771
00:38:29.239 --> 00:38:31.599
<v Speaker 4>the Azure signal Our service, so it's worth noting if

772
00:38:31.599 --> 00:38:35.840
<v Speaker 4>you're using it today. In Azure app service, having lots

773
00:38:35.880 --> 00:38:37.719
<v Speaker 4>and lots of website and connections used to be more

774
00:38:37.760 --> 00:38:40.280
<v Speaker 4>of a concern than it is now, and so for

775
00:38:40.440 --> 00:38:43.599
<v Speaker 4>most of our Azure based hosts, we no longer say

776
00:38:43.639 --> 00:38:45.519
<v Speaker 4>that you need to use the adres signal our service

777
00:38:45.559 --> 00:38:49.079
<v Speaker 4>in companionship with it, because those services can already handle

778
00:38:49.119 --> 00:38:51.719
<v Speaker 4>the number of web socket connections by themselves, so it's

779
00:38:51.719 --> 00:38:54.239
<v Speaker 4>not a normally a problem. But if you have another

780
00:38:54.320 --> 00:38:56.480
<v Speaker 4>environment where that might be an issue, then the address

781
00:38:56.480 --> 00:38:57.960
<v Speaker 4>Signal our service is a great option.

782
00:38:58.159 --> 00:38:59.280
<v Speaker 1>That's really good news.

783
00:39:00.599 --> 00:39:03.039
<v Speaker 2>And yeah, you added a bunch of signal R features

784
00:39:03.079 --> 00:39:04.239
<v Speaker 2>for nine right.

785
00:39:04.159 --> 00:39:07.360
<v Speaker 4>Yeah, yeah. Signal are now has sports polymorphic types, so

786
00:39:07.400 --> 00:39:09.519
<v Speaker 4>if you want to like pass an instance of a

787
00:39:09.559 --> 00:39:12.880
<v Speaker 4>derived type to to your hub methods, you can do that.

788
00:39:13.559 --> 00:39:16.679
<v Speaker 4>There was some work done around its tracing model, like

789
00:39:16.719 --> 00:39:21.000
<v Speaker 4>how how signal handles UH distributed tracing. It used to

790
00:39:21.039 --> 00:39:24.199
<v Speaker 4>be that all the hub invocations would kind of appear

791
00:39:24.280 --> 00:39:26.920
<v Speaker 4>under one big, giant long request, right, because these are

792
00:39:27.000 --> 00:39:30.840
<v Speaker 4>usually long running web socket connections, and so it looks

793
00:39:30.880 --> 00:39:33.679
<v Speaker 4>kind of weird when you're trying to analyze the distributed traces.

794
00:39:34.079 --> 00:39:36.320
<v Speaker 4>They now kind of appear more more like you would

795
00:39:36.320 --> 00:39:40.119
<v Speaker 4>imagine a request reply style trace, uh looking in the

796
00:39:40.800 --> 00:39:43.719
<v Speaker 4>in the traces, which is much It's much nicer when

797
00:39:43.719 --> 00:39:45.599
<v Speaker 4>you're like looking at your signal r hubs in like

798
00:39:45.639 --> 00:39:49.360
<v Speaker 4>the Aspire dashboard, you get a much easier view to

799
00:39:49.519 --> 00:39:52.119
<v Speaker 4>parts to see the what's what's happening with your your hubs.

800
00:39:52.800 --> 00:39:56.360
<v Speaker 4>So those are both new on the there's a couple

801
00:39:56.400 --> 00:39:59.920
<v Speaker 4>of performance improvements. I also wanted to mention on Blazer side,

802
00:40:00.400 --> 00:40:04.119
<v Speaker 4>the for Blazer server or interactive server rendering, we now

803
00:40:04.159 --> 00:40:07.440
<v Speaker 4>do compression at the web socket layer. So the traffic

804
00:40:07.719 --> 00:40:11.079
<v Speaker 4>that gets sent to your Blazer server hub, which itself

805
00:40:11.119 --> 00:40:13.239
<v Speaker 4>is a signaler hub underneath the cover, so it also

806
00:40:13.239 --> 00:40:16.559
<v Speaker 4>benefits from all those signal features too, but that traffic

807
00:40:16.599 --> 00:40:19.719
<v Speaker 4>is smaller and therefore has a lower latency and is faster.

808
00:40:20.719 --> 00:40:22.840
<v Speaker 4>On the web assembly side, we did a bunch of

809
00:40:22.880 --> 00:40:26.719
<v Speaker 4>work on the startup performance of the web assembly runtime.

810
00:40:27.480 --> 00:40:29.960
<v Speaker 4>In the past, we've we've focused a lot on shrinking

811
00:40:29.960 --> 00:40:32.079
<v Speaker 4>the download size so that you can get the bits

812
00:40:32.480 --> 00:40:35.000
<v Speaker 4>for the dotted web assembly runtime onto the device as

813
00:40:35.079 --> 00:40:38.360
<v Speaker 4>quickly as possible, and that is still important, and we

814
00:40:38.119 --> 00:40:42.079
<v Speaker 4>we've shrunk that thing of as far down as as

815
00:40:42.119 --> 00:40:44.320
<v Speaker 4>we can, and we look for ways to improve that,

816
00:40:44.719 --> 00:40:47.960
<v Speaker 4>but there is also still some latency that can occur

817
00:40:48.000 --> 00:40:50.039
<v Speaker 4>when you then boot it up, like you say, okay,

818
00:40:50.119 --> 00:40:53.599
<v Speaker 4>now run the runtime. That can take a you know,

819
00:40:54.599 --> 00:40:57.239
<v Speaker 4>some some number of milliseconds to actually get the runtime started,

820
00:40:57.280 --> 00:41:01.320
<v Speaker 4>which also delays the the interactive state of your app.

821
00:41:01.360 --> 00:41:03.440
<v Speaker 4>So we focused on that and dot at nine and

822
00:41:03.719 --> 00:41:05.400
<v Speaker 4>sped that up by good like I don't remember the

823
00:41:05.440 --> 00:41:09.119
<v Speaker 4>exact number, but something like twenty thirty percent faster runtime

824
00:41:09.159 --> 00:41:13.239
<v Speaker 4>startup performance. And then broadly for asp dot Core, we

825
00:41:13.320 --> 00:41:16.880
<v Speaker 4>did a bunch of work around static web assets, like

826
00:41:16.920 --> 00:41:20.519
<v Speaker 4>the static files that make up your your web applications,

827
00:41:20.559 --> 00:41:23.280
<v Speaker 4>whether this is a Blaser app or an NBC app

828
00:41:23.320 --> 00:41:25.480
<v Speaker 4>or a Razor Pages app, anything that lives in your

829
00:41:25.519 --> 00:41:30.599
<v Speaker 4>dubdub root folder. We now will build and publish time

830
00:41:31.119 --> 00:41:34.119
<v Speaker 4>identify those static web assets and do a bunch of

831
00:41:34.199 --> 00:41:38.320
<v Speaker 4>optimizations on them. We will free the print their filenames

832
00:41:38.400 --> 00:41:42.159
<v Speaker 4>so they have unique caches in the filenames that enables

833
00:41:42.239 --> 00:41:45.679
<v Speaker 4>us to then aggressively cash them when they're being served,

834
00:41:45.719 --> 00:41:47.920
<v Speaker 4>Like we can basically KnowI browsers that cash us forever,

835
00:41:48.000 --> 00:41:49.880
<v Speaker 4>because if there's a new version of it, I'm just

836
00:41:49.920 --> 00:41:51.320
<v Speaker 4>going to change the file name, so you don't need

837
00:41:51.519 --> 00:41:52.360
<v Speaker 4>to worry about that.

838
00:41:52.559 --> 00:41:52.840
<v Speaker 2>Wow.

839
00:41:53.199 --> 00:41:56.119
<v Speaker 4>We also pre compress them at build and published time

840
00:41:56.320 --> 00:41:59.440
<v Speaker 4>using Broadley compression. It's very similar to what we've had

841
00:41:59.480 --> 00:42:02.440
<v Speaker 4>in Blazer web assembly for a while, but now it's

842
00:42:02.480 --> 00:42:04.760
<v Speaker 4>done for any static web asset that you have that

843
00:42:05.400 --> 00:42:08.440
<v Speaker 4>isn't already in a compressed format. So thinks CSS files,

844
00:42:08.519 --> 00:42:11.800
<v Speaker 4>jobscript files. The acement core tooling will now do a

845
00:42:12.119 --> 00:42:15.039
<v Speaker 4>precompression on those those those files as well, so your

846
00:42:15.079 --> 00:42:18.719
<v Speaker 4>static web assets load faster and they're better cased, and

847
00:42:18.760 --> 00:42:21.800
<v Speaker 4>that helps Blazer apps as well as any dot Net

848
00:42:22.199 --> 00:42:22.960
<v Speaker 4>web front.

849
00:42:22.760 --> 00:42:25.159
<v Speaker 1>And lazy loading comes to mind when you said that,

850
00:42:25.320 --> 00:42:28.360
<v Speaker 1>and are you doing any lazy loading automatically in the

851
00:42:28.400 --> 00:42:31.960
<v Speaker 1>background of your own assets in the dot Net framework

852
00:42:32.159 --> 00:42:34.800
<v Speaker 1>or is do we still can we still benefit from

853
00:42:34.840 --> 00:42:36.000
<v Speaker 1>doing that ourselves.

854
00:42:37.159 --> 00:42:40.000
<v Speaker 4>So there's lazyloading and Blazer where you can like sort

855
00:42:40.000 --> 00:42:41.960
<v Speaker 4>of take a chunk of your app that gets downloaded

856
00:42:42.000 --> 00:42:43.320
<v Speaker 4>to the client and say, you know what, I don't

857
00:42:43.320 --> 00:42:45.920
<v Speaker 4>need this yet. I will tell you when I'm going

858
00:42:45.960 --> 00:42:47.880
<v Speaker 4>to load this, and then they can be lazyloaded in

859
00:42:47.960 --> 00:42:51.960
<v Speaker 4>later that that feature still exists for static web assets.

860
00:42:52.559 --> 00:42:54.760
<v Speaker 4>There are I don't think we've we got to this

861
00:42:54.840 --> 00:42:57.519
<v Speaker 4>point dot at nine, but on our roadmap we also

862
00:42:57.559 --> 00:42:59.519
<v Speaker 4>would like to do like preloading. It's not not really

863
00:42:59.599 --> 00:43:01.960
<v Speaker 4>lazy looad, but like saying like sure, hey, I'm about

864
00:43:02.000 --> 00:43:04.320
<v Speaker 4>to go to this asset and i can see that

865
00:43:04.400 --> 00:43:06.400
<v Speaker 4>it needs these other files too, so go ahead and

866
00:43:06.960 --> 00:43:09.199
<v Speaker 4>preload those into the browser because I'm probably going to

867
00:43:09.280 --> 00:43:12.639
<v Speaker 4>request them them soon. Like having links in your Yeah,

868
00:43:12.679 --> 00:43:15.639
<v Speaker 4>that's that's smart HDMIL. That's signal of that's that will

869
00:43:15.679 --> 00:43:20.320
<v Speaker 4>be the case. That can avoid waterfall style loading of

870
00:43:20.320 --> 00:43:22.920
<v Speaker 4>assets in your webpages that can slow things down. If

871
00:43:22.960 --> 00:43:25.119
<v Speaker 4>you can avoid that waterfall, then things will load faster

872
00:43:25.159 --> 00:43:25.480
<v Speaker 4>as well.

873
00:43:25.639 --> 00:43:26.039
<v Speaker 2>Very cool.

874
00:43:26.119 --> 00:43:28.719
<v Speaker 4>That's a future optimization that we hope to get to.

875
00:43:28.960 --> 00:43:31.400
<v Speaker 2>Nice hate really great. I'm I'm going to go a

876
00:43:31.440 --> 00:43:33.119
<v Speaker 2>little off the beaten path here because I was just

877
00:43:33.159 --> 00:43:36.440
<v Speaker 2>going through some of the notes and it ran across

878
00:43:36.519 --> 00:43:39.880
<v Speaker 2>this mention of multiple Blazer web apps per server project,

879
00:43:39.880 --> 00:43:42.360
<v Speaker 2>which I totally get. I've dug into the issue and

880
00:43:42.400 --> 00:43:44.039
<v Speaker 2>so forth, where it's like, okay, you know you've got

881
00:43:44.079 --> 00:43:46.360
<v Speaker 2>to comment back end several different clients that they want

882
00:43:46.400 --> 00:43:49.400
<v Speaker 2>to manage in one project. What what I smiled at

883
00:43:49.440 --> 00:43:51.480
<v Speaker 2>was when I saw this is tagged for dot net

884
00:43:51.599 --> 00:43:55.719
<v Speaker 2>ten November twenty twenty five, and it's just like, man,

885
00:43:55.800 --> 00:43:58.639
<v Speaker 2>that's organized, Like we know definitely when this is going

886
00:43:58.719 --> 00:44:01.760
<v Speaker 2>to make it for another version, but it just speaks

887
00:44:01.840 --> 00:44:07.280
<v Speaker 2>to the whole conversation about this was a user submitting

888
00:44:07.360 --> 00:44:10.519
<v Speaker 2>the issue? I think just looking at the GitHub reposts

889
00:44:10.599 --> 00:44:14.480
<v Speaker 2>like November of twenty three, so it was it was

890
00:44:14.679 --> 00:44:20.079
<v Speaker 2>right after dot net eight had shipped, is when they

891
00:44:20.400 --> 00:44:22.519
<v Speaker 2>sort of post this issue. I'm sure folks were talking

892
00:44:22.559 --> 00:44:24.039
<v Speaker 2>about it before then, but I'm just looking at this

893
00:44:24.119 --> 00:44:26.559
<v Speaker 2>particular issue, like can you talk a bit about this flow.

894
00:44:26.559 --> 00:44:28.960
<v Speaker 2>I don't imagine this is your problem or not, Dan,

895
00:44:29.079 --> 00:44:30.840
<v Speaker 2>but it's just interesting to me, like.

896
00:44:30.800 --> 00:44:34.320
<v Speaker 4>How we manage the user feedback and that.

897
00:44:34.719 --> 00:44:37.079
<v Speaker 2>Yeah, and that's whole triage, Like the fact that it's

898
00:44:37.079 --> 00:44:38.840
<v Speaker 2>all in gidhub now where people can just write an

899
00:44:38.840 --> 00:44:43.039
<v Speaker 2>issue and I see guys like Havia interacting with this

900
00:44:43.119 --> 00:44:46.719
<v Speaker 2>issue and you know, taking it seriously and queuing it up.

901
00:44:46.920 --> 00:44:48.679
<v Speaker 4>Yeah, yeah, this is this is good to know because

902
00:44:48.679 --> 00:44:51.440
<v Speaker 4>this is how you can understand if you have a

903
00:44:51.440 --> 00:44:53.559
<v Speaker 4>feature that's important to you, how you can engage with

904
00:44:53.639 --> 00:44:57.000
<v Speaker 4>us on the Blazer team to make sure your your

905
00:44:57.440 --> 00:45:00.599
<v Speaker 4>your feedback and your perspectives on these issues is being heard.

906
00:45:00.960 --> 00:45:03.639
<v Speaker 4>So all the feedback everything that we do is publicly

907
00:45:03.679 --> 00:45:06.159
<v Speaker 4>tracked on GitHub. We are a fully public open source

908
00:45:06.280 --> 00:45:08.760
<v Speaker 4>project and that's where we operate. That's where our devs

909
00:45:08.800 --> 00:45:11.199
<v Speaker 4>do their day to day work, and it's part of

910
00:45:11.239 --> 00:45:14.039
<v Speaker 4>every release. And we're about to go into the ten

911
00:45:14.320 --> 00:45:16.800
<v Speaker 4>planning cycle to think through what are we going.

912
00:45:16.760 --> 00:45:19.320
<v Speaker 2>To do with You're you're in our see now. So

913
00:45:19.360 --> 00:45:23.159
<v Speaker 2>there's clearly stuff that's been triaged out to next and

914
00:45:23.159 --> 00:45:25.159
<v Speaker 2>it's time and this is probably one of them. And

915
00:45:25.199 --> 00:45:27.000
<v Speaker 2>yet now you're starting to sort out like what lives

916
00:45:27.000 --> 00:45:27.440
<v Speaker 2>in next?

917
00:45:27.599 --> 00:45:30.639
<v Speaker 4>Yeah, so we we we have a number of different

918
00:45:30.679 --> 00:45:33.400
<v Speaker 4>signals that we use to figure out, okay, what what

919
00:45:33.440 --> 00:45:35.320
<v Speaker 4>do we want to push up the stack on our

920
00:45:35.360 --> 00:45:39.320
<v Speaker 4>on our backlog. The one that's most user facing is

921
00:45:39.320 --> 00:45:41.280
<v Speaker 4>if you just go to a GitHub issue and use

922
00:45:41.320 --> 00:45:43.679
<v Speaker 4>the thumbs up reactions right to say like this is

923
00:45:43.719 --> 00:45:45.559
<v Speaker 4>important to me, and do it on the original post,

924
00:45:45.559 --> 00:45:46.239
<v Speaker 4>do it at the top.

925
00:45:46.440 --> 00:45:50.360
<v Speaker 2>Now I see fourteen fourteen thumbs up on that one.

926
00:45:50.800 --> 00:45:53.480
<v Speaker 4>Please don't get this, like, please don't look your friends

927
00:45:53.760 --> 00:45:56.360
<v Speaker 4>from a bot network to click thumbs up on these things,

928
00:45:56.400 --> 00:45:57.920
<v Speaker 4>because we do use it as a signal, and we

929
00:45:57.960 --> 00:46:01.199
<v Speaker 4>know it's a rough signal. Yeah, at least lets us know, like, yeah,

930
00:46:01.239 --> 00:46:03.679
<v Speaker 4>I care about this too, so please please consider this.

931
00:46:05.079 --> 00:46:08.880
<v Speaker 4>The next, like level two of helping us out is

932
00:46:08.920 --> 00:46:11.000
<v Speaker 4>if you could post a comment on the GitHub issue

933
00:46:11.000 --> 00:46:14.559
<v Speaker 4>explaining the why, explaining the scenario that you care about

934
00:46:14.559 --> 00:46:16.079
<v Speaker 4>and why this is really important.

935
00:46:16.079 --> 00:46:18.199
<v Speaker 2>Well, and you have a nice template here the is

936
00:46:18.239 --> 00:46:21.320
<v Speaker 2>there an existing issue? Is it really or fature requests

937
00:46:21.320 --> 00:46:23.679
<v Speaker 2>related to a problem? Can you tell us about the problem,

938
00:46:24.159 --> 00:46:27.320
<v Speaker 2>describe the solution you'd like, you know, some additional context,

939
00:46:27.360 --> 00:46:30.199
<v Speaker 2>Like you've given us some structure to sort of describe

940
00:46:30.280 --> 00:46:30.920
<v Speaker 2>the issue to you.

941
00:46:31.000 --> 00:46:33.199
<v Speaker 4>So if you're the one that's posting the original issue,

942
00:46:33.199 --> 00:46:35.360
<v Speaker 4>like you're actually the one making the request, then you

943
00:46:35.519 --> 00:46:38.519
<v Speaker 4>follow the template, fill out that information, give us, give

944
00:46:38.599 --> 00:46:41.320
<v Speaker 4>us as much data as you can on your scenario,

945
00:46:41.519 --> 00:46:44.840
<v Speaker 4>your requirements, and why it's important, because that's all stuff

946
00:46:44.840 --> 00:46:47.800
<v Speaker 4>that we read through and factor into our prioritization. Even

947
00:46:47.840 --> 00:46:49.920
<v Speaker 4>if it's an issue that you find is already filed,

948
00:46:50.039 --> 00:46:53.199
<v Speaker 4>it's still helpful for you to post another comment saying

949
00:46:53.239 --> 00:46:55.239
<v Speaker 4>also this is important to me because of X, Y

950
00:46:55.280 --> 00:46:56.880
<v Speaker 4>and Z, So give us more perspective.

951
00:46:57.000 --> 00:47:01.039
<v Speaker 2>Right, I mean this emphasis on search first, because if

952
00:47:01.079 --> 00:47:03.719
<v Speaker 2>there's an existing issue that you can contribute to, you

953
00:47:03.800 --> 00:47:07.079
<v Speaker 2>increase the likelihood of this happening a weight, right, the

954
00:47:07.079 --> 00:47:10.760
<v Speaker 2>weight gets bigger where multiple separate requests are less powerful

955
00:47:10.800 --> 00:47:13.719
<v Speaker 2>than one big one that everybody's contributing.

956
00:47:13.800 --> 00:47:16.599
<v Speaker 1>It seems to me that before GitHub, you know, if

957
00:47:16.639 --> 00:47:18.920
<v Speaker 1>you were to, if anyone were to approach a team

958
00:47:18.960 --> 00:47:21.920
<v Speaker 1>member and say, hey, I have this, why don't you

959
00:47:22.000 --> 00:47:24.960
<v Speaker 1>implement this feature? Blah blah blah blah blah, that Microsoft

960
00:47:25.360 --> 00:47:29.639
<v Speaker 1>team members were programmed to say, why would you ever

961
00:47:29.719 --> 00:47:34.119
<v Speaker 1>want to do that? Right? I mean I've gotten that answer,

962
00:47:34.159 --> 00:47:36.800
<v Speaker 1>and I've seen them give that answer to in person,

963
00:47:37.320 --> 00:47:40.719
<v Speaker 1>because that it's not necessarily a combative question, but it

964
00:47:40.719 --> 00:47:44.840
<v Speaker 1>really makes you think I want less compa that I think, no, no,

965
00:47:45.039 --> 00:47:47.440
<v Speaker 1>But I mean it's a great question. But I think

966
00:47:47.559 --> 00:47:49.719
<v Speaker 1>that that's kind of what you're doing with GitHub. You know,

967
00:47:49.840 --> 00:47:53.320
<v Speaker 1>what is the real issue that you're having. Perhaps you've

968
00:47:53.320 --> 00:47:56.920
<v Speaker 1>already gone several abstractions higher than you need to go,

969
00:47:57.559 --> 00:47:59.920
<v Speaker 1>and maybe let's get to the core of the problem.

970
00:48:00.440 --> 00:48:03.079
<v Speaker 4>And sometimes that's about us. We want to understand the

971
00:48:03.079 --> 00:48:05.960
<v Speaker 4>core of the problem because maybe you're requesting a particular solution,

972
00:48:06.400 --> 00:48:09.519
<v Speaker 4>but if you take the more context on what the

973
00:48:09.559 --> 00:48:11.599
<v Speaker 4>problem actually is, like what you're trying to solve, that

974
00:48:11.679 --> 00:48:13.920
<v Speaker 4>might lead us to a different solution that would work

975
00:48:13.960 --> 00:48:16.880
<v Speaker 4>better from a framework authoring perspective, like maybe we can

976
00:48:16.920 --> 00:48:19.559
<v Speaker 4>broaden the solution that would help not only your scenario

977
00:48:19.559 --> 00:48:22.519
<v Speaker 4>but also these other scenarios and you know, line things better.

978
00:48:22.559 --> 00:48:26.119
<v Speaker 4>So though, the why behind your request is really really helpful.

979
00:48:26.440 --> 00:48:28.639
<v Speaker 1>And the search thing that Richard was talking about is

980
00:48:28.639 --> 00:48:31.840
<v Speaker 1>important too, because like in my world, I get probably

981
00:48:31.920 --> 00:48:35.719
<v Speaker 1>ten people coming to me a year with ideas for apps.

982
00:48:36.079 --> 00:48:38.119
<v Speaker 1>I have the idea, you build it and will split

983
00:48:38.159 --> 00:48:40.440
<v Speaker 1>it fifty to fifty. I think it's all the time right,

984
00:48:41.039 --> 00:48:43.639
<v Speaker 1>And I always say, all right, before you come back

985
00:48:43.639 --> 00:48:45.400
<v Speaker 1>to me again, I want you to do a thorough

986
00:48:45.440 --> 00:48:47.880
<v Speaker 1>search to see if that app already exists, and I

987
00:48:48.000 --> 00:48:49.480
<v Speaker 1>knit they never come back.

988
00:48:51.280 --> 00:48:53.599
<v Speaker 4>There's a lot of people with the ideas out there.

989
00:48:53.639 --> 00:48:56.599
<v Speaker 4>It's hard to prome with something truly unique. A couple

990
00:48:56.639 --> 00:48:59.440
<v Speaker 4>of other things though, that are worth noting, So we will.

991
00:48:59.480 --> 00:49:02.719
<v Speaker 4>We have our backlog milestone that's where we put everything

992
00:49:02.760 --> 00:49:04.599
<v Speaker 4>that's like, you know, something we may consider to do

993
00:49:04.599 --> 00:49:08.480
<v Speaker 4>at some point. We often will have a you mentioned

994
00:49:08.519 --> 00:49:12.360
<v Speaker 4>a ten milestone, Richard, and usually that's a doit ten

995
00:49:12.440 --> 00:49:13.480
<v Speaker 4>planning milestone.

996
00:49:13.599 --> 00:49:15.280
<v Speaker 2>Yeah, and I see it here now as I read

997
00:49:15.320 --> 00:49:16.840
<v Speaker 2>deeper into this thing, it's like you can see you

998
00:49:16.880 --> 00:49:18.800
<v Speaker 2>the point where when okay, this is going to be

999
00:49:18.800 --> 00:49:22.159
<v Speaker 2>in ten like it was initially in nine, and then

1000
00:49:22.199 --> 00:49:23.639
<v Speaker 2>it would know it's going to make it to ten.

1001
00:49:23.880 --> 00:49:26.559
<v Speaker 4>So Donna ten planning is the stuff that we're like,

1002
00:49:26.880 --> 00:49:29.599
<v Speaker 4>it's kind of like a level above the the just

1003
00:49:29.599 --> 00:49:31.639
<v Speaker 4>being on the backlog. It's stuff that we have already

1004
00:49:31.639 --> 00:49:33.760
<v Speaker 4>thought about that we do think is important, right, and

1005
00:49:33.800 --> 00:49:36.000
<v Speaker 4>we'd like to consider as part of what we're going

1006
00:49:36.039 --> 00:49:38.760
<v Speaker 4>to do in intent. It almost always has more stuff

1007
00:49:38.760 --> 00:49:40.719
<v Speaker 4>in that milestone than we could ever possibly sure.

1008
00:49:40.800 --> 00:49:43.119
<v Speaker 2>Sure it is like the next it's where you put

1009
00:49:43.119 --> 00:49:45.599
<v Speaker 2>all the next it might split across more so, it's not.

1010
00:49:45.559 --> 00:49:48.599
<v Speaker 4>A commitment yet, it's a it's a planning tool that

1011
00:49:48.599 --> 00:49:50.079
<v Speaker 4>we used to say, you know, this is probably the

1012
00:49:50.079 --> 00:49:51.639
<v Speaker 4>first batch of stuff that we'll look at for the

1013
00:49:51.760 --> 00:49:54.679
<v Speaker 4>dot tent planning. And then we take all the user

1014
00:49:54.760 --> 00:49:58.239
<v Speaker 4>data that the reactions, we take our our own understanding

1015
00:49:58.239 --> 00:50:00.559
<v Speaker 4>about where's the industry going, Like we go do you know,

1016
00:50:00.639 --> 00:50:03.599
<v Speaker 4>analysis on what other frameworks are doing, what's what's happening

1017
00:50:03.679 --> 00:50:06.000
<v Speaker 4>on the web platform. We look from that direction, and

1018
00:50:06.000 --> 00:50:08.559
<v Speaker 4>then we of course look from our own business priorities

1019
00:50:08.599 --> 00:50:11.559
<v Speaker 4>and from Microsoft pays the bills.

1020
00:50:11.639 --> 00:50:13.920
<v Speaker 2>Yep, there's things they need. You're going to have to

1021
00:50:13.960 --> 00:50:14.559
<v Speaker 2>do those things.

1022
00:50:14.639 --> 00:50:18.119
<v Speaker 4>The roadmap, the committed roadmap, and even this commitment is

1023
00:50:18.119 --> 00:50:21.800
<v Speaker 4>is it's it's our our best understanding at the moment.

1024
00:50:21.960 --> 00:50:25.280
<v Speaker 4>Roadmap then usually gets published early, like first quarter of

1025
00:50:25.320 --> 00:50:27.599
<v Speaker 4>the year saying this is what we think we're doing

1026
00:50:27.639 --> 00:50:30.480
<v Speaker 4>an ACEMT Core and Blazer for say dot ten, and

1027
00:50:30.519 --> 00:50:33.079
<v Speaker 4>that should published on GitHub. That is still of course

1028
00:50:33.119 --> 00:50:36.840
<v Speaker 4>subject to change. You know, software development is hard. We

1029
00:50:36.840 --> 00:50:39.320
<v Speaker 4>we often sometimes we misjudge how much things are going

1030
00:50:39.360 --> 00:50:42.800
<v Speaker 4>to cost. Sometimes initiatives come in that change plans, like

1031
00:50:42.800 --> 00:50:45.119
<v Speaker 4>the secure initiative was certainly something.

1032
00:50:44.880 --> 00:50:47.400
<v Speaker 2>That definitely drew resources off change.

1033
00:50:47.119 --> 00:50:50.400
<v Speaker 4>Things for dot net nine. So the roadmap I wouldn't

1034
00:50:50.519 --> 00:50:53.679
<v Speaker 4>view even that as like a guaranteed to happen for

1035
00:50:53.760 --> 00:50:56.000
<v Speaker 4>the release. It's one of those things actually that I've

1036
00:50:56.039 --> 00:50:57.960
<v Speaker 4>been we've been trying to improve on. It's like, have

1037
00:50:58.079 --> 00:51:01.119
<v Speaker 4>that roadmap be more more trustworthy that yes, these things

1038
00:51:01.119 --> 00:51:02.760
<v Speaker 4>will actually get done, but it is at least our

1039
00:51:02.760 --> 00:51:05.400
<v Speaker 4>best understanding at that moment about what we think we're

1040
00:51:05.400 --> 00:51:06.280
<v Speaker 4>going to bite off for.

1041
00:51:06.239 --> 00:51:08.840
<v Speaker 1>The I can also imagine that if you implement a

1042
00:51:08.880 --> 00:51:13.480
<v Speaker 1>feature too soon that it can it can be more

1043
00:51:13.519 --> 00:51:18.079
<v Speaker 1>of a problem later, So deferring a feature for the

1044
00:51:18.119 --> 00:51:21.320
<v Speaker 1>next version the next version after that can often come

1045
00:51:21.400 --> 00:51:23.679
<v Speaker 1>on the heels of an analysis that says, ah, before

1046
00:51:23.679 --> 00:51:26.360
<v Speaker 1>we solve that problem. We have to solve these problems

1047
00:51:26.519 --> 00:51:30.639
<v Speaker 1>because that will make this one a lot more intelligent

1048
00:51:30.840 --> 00:51:33.360
<v Speaker 1>or whatever that we won't have to backfill.

1049
00:51:33.559 --> 00:51:36.239
<v Speaker 4>It's for people that maybe get frustrated by that, because

1050
00:51:36.239 --> 00:51:37.840
<v Speaker 4>it can be frustrating right where you have like a

1051
00:51:37.880 --> 00:51:40.920
<v Speaker 4>feature that's important that gets delayed from release to release.

1052
00:51:41.519 --> 00:51:45.039
<v Speaker 4>Might I think the one that's maybe close to people's

1053
00:51:45.679 --> 00:51:48.679
<v Speaker 4>minds at this point for web assembly is our multi

1054
00:51:48.679 --> 00:51:51.280
<v Speaker 4>threading support. We've we've had multi threading on our i

1055
00:51:51.280 --> 00:51:54.159
<v Speaker 4>think on our roadmap now for like two or three releases,

1056
00:51:54.360 --> 00:51:56.840
<v Speaker 4>wanting to get it done, and then for various reasons

1057
00:51:56.880 --> 00:52:00.159
<v Speaker 4>it having to be to be pushed out. Things that

1058
00:52:00.159 --> 00:52:02.320
<v Speaker 4>the community can do to help out with some of

1059
00:52:02.360 --> 00:52:04.320
<v Speaker 4>those is that if we are open source project, you

1060
00:52:04.360 --> 00:52:10.880
<v Speaker 4>can contribute. That includes contributing design thoughts, contributing approaches, helping

1061
00:52:10.920 --> 00:52:13.239
<v Speaker 4>us work through like how would we actually do this,

1062
00:52:13.360 --> 00:52:15.920
<v Speaker 4>and even potentially contributing code.

1063
00:52:16.199 --> 00:52:18.320
<v Speaker 2>Yeah, I think someone who's frustrated because you haven't got

1064
00:52:18.320 --> 00:52:20.639
<v Speaker 2>it yet writing up this is what I would use

1065
00:52:20.679 --> 00:52:24.320
<v Speaker 2>it for, so that you have better case analysis of

1066
00:52:24.360 --> 00:52:27.639
<v Speaker 2>like this is how this customer will implement this? Are

1067
00:52:27.639 --> 00:52:28.519
<v Speaker 2>we headed in that path?

1068
00:52:28.519 --> 00:52:29.840
<v Speaker 1>Why would you ever want to do that?

1069
00:52:30.039 --> 00:52:34.400
<v Speaker 4>Yeah? With with multi threading, so that's the like the why,

1070
00:52:34.559 --> 00:52:37.519
<v Speaker 4>and like like what problems should solve? You can also

1071
00:52:37.599 --> 00:52:39.960
<v Speaker 4>help us with contributing and this is how I think

1072
00:52:40.000 --> 00:52:42.039
<v Speaker 4>would be a good way to solve it, even if

1073
00:52:42.079 --> 00:52:44.480
<v Speaker 4>it's a straw man proposal that that is a food

1074
00:52:44.519 --> 00:52:46.639
<v Speaker 4>for a thought. We just went through through this with

1075
00:52:46.719 --> 00:52:49.880
<v Speaker 4>web assembly, multi threading and DOTTA nine, where you know,

1076
00:52:49.920 --> 00:52:53.360
<v Speaker 4>we went through design and you know, get up docs,

1077
00:52:53.360 --> 00:52:57.000
<v Speaker 4>got written and start implementing that design. And for Blazer,

1078
00:52:57.119 --> 00:52:59.000
<v Speaker 4>the design we landed on and look like it's gonna

1079
00:52:59.000 --> 00:53:00.800
<v Speaker 4>be good. This looks So we weren't able to get

1080
00:53:00.800 --> 00:53:02.679
<v Speaker 4>the Blazer part of the work done and DOT and nine,

1081
00:53:02.719 --> 00:53:05.159
<v Speaker 4>so we're still waiting a little bit on that. We pretend,

1082
00:53:05.760 --> 00:53:08.480
<v Speaker 4>but then we got feedback from other UI stacks in

1083
00:53:08.519 --> 00:53:11.559
<v Speaker 4>the ecosystem that use our web assembly support like UNO

1084
00:53:11.639 --> 00:53:14.719
<v Speaker 4>and Avolonia look at look at our looking at our

1085
00:53:14.800 --> 00:53:18.480
<v Speaker 4>multi threading capabilities, and they have valid feedback about whoa

1086
00:53:18.519 --> 00:53:20.840
<v Speaker 4>hold on, like this constraint might be problematic for the

1087
00:53:20.840 --> 00:53:24.239
<v Speaker 4>way we use this feature. And both types of design

1088
00:53:24.239 --> 00:53:28.000
<v Speaker 4>discussions also super valuable, like please look at what we're doing.

1089
00:53:28.079 --> 00:53:30.119
<v Speaker 4>Share you're not every part of the product.

1090
00:53:30.159 --> 00:53:32.519
<v Speaker 2>Well you yeah, you're living. You provide a framework in

1091
00:53:32.559 --> 00:53:35.880
<v Speaker 2>an ecosystem, don't break the ecosystem, like that's we.

1092
00:53:35.960 --> 00:53:37.920
<v Speaker 4>Try not to try to make the world a better

1093
00:53:37.920 --> 00:53:38.920
<v Speaker 4>place for the ecosystem.

1094
00:53:39.519 --> 00:53:39.679
<v Speaker 1>Yeah.

1095
00:53:39.760 --> 00:53:42.000
<v Speaker 2>Yeah. To imagine a group like you know it's done

1096
00:53:42.039 --> 00:53:43.760
<v Speaker 2>all kinds of great work where they say, hey, we're

1097
00:53:43.760 --> 00:53:45.880
<v Speaker 2>not going to be able to use a new version

1098
00:53:45.920 --> 00:53:48.800
<v Speaker 2>of Blazer based on what you're doing here. Yeah, exactly,

1099
00:53:49.320 --> 00:53:51.840
<v Speaker 2>Well that would be bad. That's bad for everybody.

1100
00:53:52.079 --> 00:53:54.960
<v Speaker 4>This won't meet our needs, that might make Microsoft's needs.

1101
00:53:55.000 --> 00:53:59.239
<v Speaker 4>And we we want to develop deliver features for the

1102
00:53:59.400 --> 00:54:00.679
<v Speaker 4>entire ecosystem.

1103
00:54:00.760 --> 00:54:04.760
<v Speaker 2>Not But I think it's just you stepping into introduced

1104
00:54:04.760 --> 00:54:07.679
<v Speaker 2>breaking changes knowing what you're breaking. I'm not saying you

1105
00:54:07.719 --> 00:54:11.400
<v Speaker 2>wouldn't do it, but you want to have those considerations, like,

1106
00:54:11.880 --> 00:54:14.079
<v Speaker 2>here's how big the impact actually is. You don't want

1107
00:54:14.119 --> 00:54:16.239
<v Speaker 2>to ship it and then find out about the impact.

1108
00:54:16.400 --> 00:54:18.880
<v Speaker 4>Yeah, I mean, breaking changes are one thing, and in

1109
00:54:18.920 --> 00:54:21.840
<v Speaker 4>other cases it's just like having a design that's overly

1110
00:54:22.000 --> 00:54:25.920
<v Speaker 4>constrained or thought about certain scenarios in certain ways, you know,

1111
00:54:25.920 --> 00:54:29.920
<v Speaker 4>adjusting the requirements based on as broad and inclusive an

1112
00:54:29.960 --> 00:54:31.280
<v Speaker 4>audience as we can, we can.

1113
00:54:31.159 --> 00:54:33.280
<v Speaker 2>Get sure and I could see it'd be worth just

1114
00:54:33.320 --> 00:54:35.840
<v Speaker 2>pushing back and working a little longer and then maybe

1115
00:54:35.880 --> 00:54:37.719
<v Speaker 2>a pass the thresholder it's like, it's not going to

1116
00:54:37.760 --> 00:54:40.280
<v Speaker 2>make this version. Yeah, I mean you're shipping every year,

1117
00:54:40.320 --> 00:54:42.480
<v Speaker 2>which I think has got to be hard. I know

1118
00:54:42.559 --> 00:54:46.760
<v Speaker 2>it's hard receiving new versions every year. So I gotta

1119
00:54:46.760 --> 00:54:49.239
<v Speaker 2>think it's hard on you guys too, pushing these out

1120
00:54:49.280 --> 00:54:51.679
<v Speaker 2>every year, knowing your ship date the second week of

1121
00:54:51.719 --> 00:54:53.280
<v Speaker 2>November every.

1122
00:54:53.079 --> 00:54:55.480
<v Speaker 4>Time, got a ship one way or another.

1123
00:54:55.599 --> 00:54:58.239
<v Speaker 2>Yeah, And certainly other teams you talk to where it's like, oh,

1124
00:54:58.320 --> 00:55:01.679
<v Speaker 2>this feature has been worked on, spanning multiple versions before

1125
00:55:01.719 --> 00:55:04.519
<v Speaker 2>we could finally actually turn it on. Like absolutely, that's

1126
00:55:04.599 --> 00:55:07.119
<v Speaker 2>just that's just the reality. Not everything fits into a

1127
00:55:07.199 --> 00:55:10.400
<v Speaker 2>year long development, much less how the target moves like

1128
00:55:10.800 --> 00:55:14.320
<v Speaker 2>you think you know, think about the the FSI. It's

1129
00:55:14.639 --> 00:55:18.840
<v Speaker 2>how many of the features you're currently planning breach FSI

1130
00:55:19.239 --> 00:55:23.719
<v Speaker 2>and need to be reworked to include new security requirements. Yeah,

1131
00:55:24.320 --> 00:55:27.840
<v Speaker 2>all these things are hard, and it's reality tends to

1132
00:55:27.880 --> 00:55:31.239
<v Speaker 2>smack you around, right, And I, for one, having been

1133
00:55:31.280 --> 00:55:33.719
<v Speaker 2>on the side of you ship something that created a

1134
00:55:33.760 --> 00:55:36.599
<v Speaker 2>bunch of problems for folks, I'd rather you wait.

1135
00:55:36.400 --> 00:55:38.760
<v Speaker 4>It, particularly when it comes to frameworks, because when things

1136
00:55:38.800 --> 00:55:40.400
<v Speaker 4>go into a framework, it's it's hard.

1137
00:55:40.480 --> 00:55:43.360
<v Speaker 2>You can't ever take them out. Really, Yeah, taking them

1138
00:55:43.360 --> 00:55:45.519
<v Speaker 2>out is way way more arduous.

1139
00:55:45.679 --> 00:55:49.440
<v Speaker 1>Or convince people not to use that anymore, use this instead.

1140
00:55:49.599 --> 00:55:51.840
<v Speaker 2>Yeah, that's that's a tough one, because they got working

1141
00:55:51.880 --> 00:55:55.039
<v Speaker 2>code on the old way. It's something to see Steve

1142
00:55:55.079 --> 00:55:57.280
<v Speaker 2>Sanderson's show up in some of these threads and just

1143
00:55:57.280 --> 00:55:58.880
<v Speaker 2>make a couple of notes or something like that. It's like,

1144
00:55:59.280 --> 00:56:04.280
<v Speaker 2>it's like this is as demigod, I blessed this, Like dang,

1145
00:56:04.320 --> 00:56:05.480
<v Speaker 2>you got blessed.

1146
00:56:08.800 --> 00:56:10.320
<v Speaker 1>All right, Dan, I want to know who plays the

1147
00:56:10.360 --> 00:56:11.360
<v Speaker 1>cello in your family.

1148
00:56:11.840 --> 00:56:15.679
<v Speaker 4>I play a little bit of the cello. I don't

1149
00:56:15.679 --> 00:56:18.840
<v Speaker 4>play very much anymore. I did do a little like

1150
00:56:18.960 --> 00:56:22.199
<v Speaker 4>talent show concert like a couple months ago. So I

1151
00:56:22.199 --> 00:56:24.679
<v Speaker 4>had it out and was playing it. And I don't

1152
00:56:24.679 --> 00:56:26.079
<v Speaker 4>know if you ever play a string instrument.

1153
00:56:26.159 --> 00:56:27.760
<v Speaker 1>I tried for a year.

1154
00:56:28.119 --> 00:56:30.920
<v Speaker 4>Oh yeah, your fingers get raw if you haven't played

1155
00:56:30.960 --> 00:56:33.679
<v Speaker 4>in a while. So I was getting all the red fingertips.

1156
00:56:34.639 --> 00:56:37.519
<v Speaker 4>I played through like high school, a little bit in college,

1157
00:56:37.559 --> 00:56:40.400
<v Speaker 4>and definitely petered off after that. But I still have

1158
00:56:40.480 --> 00:56:43.320
<v Speaker 4>my cello, still occasionally break it out.

1159
00:56:42.320 --> 00:56:46.599
<v Speaker 1>And yeah, I noticed the case. That's why everybody can't

1160
00:56:46.639 --> 00:56:49.159
<v Speaker 1>see this because it's the radio show. But but there's

1161
00:56:49.159 --> 00:56:51.159
<v Speaker 1>a case in the corner. Yeah. I tried it for

1162
00:56:51.199 --> 00:56:52.960
<v Speaker 1>about a year. I was already playing guitar, so I

1163
00:56:53.000 --> 00:56:56.119
<v Speaker 1>didn't have the fingertip problem, but the stretch, Like you know,

1164
00:56:56.679 --> 00:57:00.000
<v Speaker 1>my hands are relatively small, and the figure your hands

1165
00:57:00.039 --> 00:57:03.920
<v Speaker 1>sorry for a cello or bass player. The smaller your

1166
00:57:03.920 --> 00:57:07.599
<v Speaker 1>fingers are for violin, the better. But anyway, I think

1167
00:57:07.599 --> 00:57:07.800
<v Speaker 1>it was.

1168
00:57:07.800 --> 00:57:09.840
<v Speaker 2>A joke by Frank Carlwoods told me, says, you know

1169
00:57:09.840 --> 00:57:12.360
<v Speaker 2>what the difference between a violin and a viola is

1170
00:57:12.400 --> 00:57:18.840
<v Speaker 2>the viola burns longer. This is very How did you

1171
00:57:18.920 --> 00:57:27.800
<v Speaker 2>know this? We should test it, all right, Dan? Anything

1172
00:57:27.840 --> 00:57:29.000
<v Speaker 2>else before we jump off?

1173
00:57:29.519 --> 00:57:33.599
<v Speaker 4>I get get market calendar for fort comp November. That's

1174
00:57:33.599 --> 00:57:35.960
<v Speaker 4>when we'll be having a big the big ship party.

1175
00:57:36.039 --> 00:57:36.800
<v Speaker 4>So we look forward.

1176
00:57:36.880 --> 00:57:40.960
<v Speaker 1>You got early bits available now you can early what sorry,

1177
00:57:41.119 --> 00:57:43.199
<v Speaker 1>early bits are early bits available now?

1178
00:57:43.280 --> 00:57:45.960
<v Speaker 4>Oh yeah, the release candidate is already the first release

1179
00:57:46.000 --> 00:57:49.239
<v Speaker 4>Candidate's already shipped and here in just a few days.

1180
00:57:49.239 --> 00:57:51.320
<v Speaker 4>Maybe by the time this this episode air, by.

1181
00:57:51.199 --> 00:57:53.400
<v Speaker 2>The time this is this publishes end of October, there'll

1182
00:57:53.400 --> 00:57:56.480
<v Speaker 2>be they'll be you'll be second release candiate too, which

1183
00:57:56.519 --> 00:57:59.360
<v Speaker 2>really means your interest away. Then it will be a

1184
00:57:59.400 --> 00:58:01.400
<v Speaker 2>couple of weeks before dot dot com at that point,

1185
00:58:01.760 --> 00:58:03.320
<v Speaker 2>so it'll be final.

1186
00:58:03.960 --> 00:58:07.239
<v Speaker 1>So awesome. Our timing works. Thank you, Dan, always a pleasure.

1187
00:58:07.360 --> 00:58:09.440
<v Speaker 2>Good to see you, frank for having me talking with

1188
00:58:09.480 --> 00:58:10.599
<v Speaker 2>you guys. You bet all right.

1189
00:58:10.639 --> 00:58:30.559
<v Speaker 1>We'll talk to you next time on dot net rocks.

1190
00:58:34.039 --> 00:58:36.719
<v Speaker 1>Dot net Rocks is brought to you by Franklin's Net

1191
00:58:36.880 --> 00:58:40.840
<v Speaker 1>and produced by Pop Studios, a full service audio, video

1192
00:58:40.880 --> 00:58:44.960
<v Speaker 1>and post production facility located physically in New London, Connecticut,

1193
00:58:45.199 --> 00:58:50.039
<v Speaker 1>and of course in the cloud online at pwop dot com.

1194
00:58:50.199 --> 00:58:52.360
<v Speaker 3>Visit our website at d O T N E t

1195
00:58:52.559 --> 00:58:56.599
<v Speaker 3>R O c k S dot com for RSS feeds, downloads,

1196
00:58:56.760 --> 00:59:00.440
<v Speaker 3>mobile apps, comments, and access to the full archive going

1197
00:59:00.480 --> 00:59:03.880
<v Speaker 3>back to show number one, recorded in September two thousand

1198
00:59:03.880 --> 00:59:04.159
<v Speaker 3>and two.

1199
00:59:04.760 --> 00:59:07.119
<v Speaker 1>And make sure you check out our sponsors. They keep

1200
00:59:07.199 --> 00:59:10.360
<v Speaker 1>us in business. Now go write some code, See you

1201
00:59:10.400 --> 00:59:14.119
<v Speaker 1>next time. You got JAD middle vans, the

1202
00:59:20.840 --> 00:59:21.239
<v Speaker 3>Taxes,
