1
00:00:01,080 --> 00:00:03,000
Speaker 1: How'd you like to listen to dot net rocks with

2
00:00:03,040 --> 00:00:07,879
no ads? Easy? Become a patron for just five dollars

3
00:00:07,919 --> 00:00:10,800
a month. You get access to a private RSS feed

4
00:00:10,839 --> 00:00:14,279
where all the shows have no ads. Twenty dollars a month,

5
00:00:14,279 --> 00:00:16,920
we'll get you that and a special dot net Rocks

6
00:00:16,960 --> 00:00:21,000
patron mug. Sign up now at patreon dot dot NetRocks

7
00:00:21,120 --> 00:00:36,200
dot com. Hey guess what it's dot net Rocks twenty

8
00:00:36,280 --> 00:00:39,679
twenty five edition. I'm Carl Franklin, I'm Richard Campbell. Happy

9
00:00:39,719 --> 00:00:43,560
New Year everybody, and what's how did you? How'd you

10
00:00:43,600 --> 00:00:44,359
do your New Year's?

11
00:00:44,600 --> 00:00:46,039
Speaker 2: We did New Year's up on the coast because we

12
00:00:46,079 --> 00:00:48,520
went down to the city for Christmas, right, spend time

13
00:00:48,560 --> 00:00:51,119
with the girls. The youngest is pregnant, so called the

14
00:00:51,159 --> 00:00:54,399
baby bump. Christmas very nice and uh, and then New

15
00:00:54,479 --> 00:00:56,359
Year's we came back up. I had a party in

16
00:00:56,399 --> 00:00:59,320
the boathouse with a little mixing of the worlds. You know,

17
00:00:59,320 --> 00:01:02,280
we're building friendship groups up on the coast, so a

18
00:01:02,320 --> 00:01:04,200
few of those couples showed up and a few from

19
00:01:04,280 --> 00:01:05,319
back on the mainland.

20
00:01:05,400 --> 00:01:07,879
Speaker 1: And yeah, I saw the pictures on Facebook. Looked a

21
00:01:07,920 --> 00:01:09,640
lot of fun. Yeah, you know, the best thing you

22
00:01:09,640 --> 00:01:12,200
can hope for in the new year. Belly laughs, like

23
00:01:12,359 --> 00:01:15,159
laughing so hard you're crying. That's what we did overde

24
00:01:15,760 --> 00:01:19,040
That's great. Yeah, awesome. Well we just had a quiet

25
00:01:19,040 --> 00:01:23,200
New Year's here. It was nice, you know, just the fam.

26
00:01:23,239 --> 00:01:27,200
It's always good. Yeah. So let's start this show with

27
00:01:27,239 --> 00:01:31,120
a better know of framework, which is interestingly about last year.

28
00:01:31,280 --> 00:01:40,640
Speaker 2: Roll the music. Interesting, man, what do you got?

29
00:01:40,719 --> 00:01:43,840
Speaker 1: It's a video by the Visual Studio team our favorite

30
00:01:44,000 --> 00:01:47,519
new visual studio features of twenty twenty four. So they

31
00:01:48,000 --> 00:01:49,439
took a look at all the things that were added

32
00:01:49,439 --> 00:01:51,439
a visual studio in twenty twenty a lot.

33
00:01:51,760 --> 00:01:53,400
Speaker 2: Yeah, right, Like it's constant.

34
00:01:53,599 --> 00:01:56,239
Speaker 1: Yeah, And you know, if you're like most of us,

35
00:01:56,480 --> 00:01:59,760
you don't know about these new features until somebody says, hey,

36
00:01:59,799 --> 00:02:01,640
you know Scott Hanselman says, hey, do.

37
00:02:01,599 --> 00:02:01,959
Speaker 2: You know this?

38
00:02:02,519 --> 00:02:04,480
Speaker 1: Yeah, and then you look it up.

39
00:02:04,760 --> 00:02:07,959
Speaker 2: People make whole talks about this, just showing features in

40
00:02:08,000 --> 00:02:10,080
studio you didn't know about because it's just so darn

41
00:02:10,159 --> 00:02:11,120
many of them. Right.

42
00:02:11,680 --> 00:02:15,719
Speaker 1: Yeah. It's because the word of coding, hasn't it the

43
00:02:15,800 --> 00:02:16,719
Microsoft word?

44
00:02:16,960 --> 00:02:17,280
Speaker 2: Yeah?

45
00:02:17,360 --> 00:02:19,639
Speaker 1: Yeah, Well, anyway, it's a good video and if you

46
00:02:19,800 --> 00:02:22,400
have how long is it? Well, Anyway, it's a good

47
00:02:22,439 --> 00:02:24,360
video and if you got about twenty minutes to kill

48
00:02:24,960 --> 00:02:28,080
check it out. It's good stuff. So that's what I got.

49
00:02:28,159 --> 00:02:29,560
Know it, learn it, love it. Who's talking to is?

50
00:02:29,639 --> 00:02:32,400
Speaker 2: Richard grabbed a comment of a show nineteen sixteen then

51
00:02:32,400 --> 00:02:35,199
when we recorded with our friend Rendel called how simple

52
00:02:35,280 --> 00:02:39,199
is as simple as possible? Yeah? And another friend of ours,

53
00:02:39,280 --> 00:02:42,039
Richard ra Chima, also known as codeputer, had a good

54
00:02:42,159 --> 00:02:45,479
comment here, mostly about Blazer, where he said simplicity and

55
00:02:45,520 --> 00:02:49,120
web application development it's not a simple conversation Blazer server

56
00:02:49,240 --> 00:02:52,960
and transitioning to WASM is also not simple. So why

57
00:02:52,960 --> 00:02:56,439
are we doing web app development anyway? App distribution to

58
00:02:56,479 --> 00:02:58,520
maintenance is why we wanted it. Web apps over the

59
00:02:58,560 --> 00:03:02,400
client side app installs. Yeah, definitely always running the current version,

60
00:03:02,520 --> 00:03:05,479
don't need to deploy running in a sandbox like there's

61
00:03:05,520 --> 00:03:11,599
good things makes sense. Yeah, So we leveraged the distribution

62
00:03:11,719 --> 00:03:13,840
model of the browser and then got busy building apps,

63
00:03:13,879 --> 00:03:15,800
this time without easy acts to what we had before

64
00:03:15,919 --> 00:03:19,439
the mistley client side resources. Nothing that fifteen megs of

65
00:03:19,520 --> 00:03:23,960
JavaScript can't fix with a sprinkless CSS to really challenge

66
00:03:23,960 --> 00:03:24,319
that street.

67
00:03:24,520 --> 00:03:27,680
Speaker 1: He's our age too, so he's talking experience here.

68
00:03:29,439 --> 00:03:32,919
Speaker 2: Chris Love would have words with you. Oh yes, So

69
00:03:33,159 --> 00:03:35,800
let's take application development, make the super puke it all

70
00:03:35,800 --> 00:03:37,840
into a browser box and give it a solid stir

71
00:03:37,960 --> 00:03:40,719
for fun, while dumping in new app features or ingredients,

72
00:03:40,759 --> 00:03:43,840
more JavaScript frameworks and such as the goodness and all

73
00:03:43,879 --> 00:03:47,080
the joy of distribution. HTML was never supposed to be

74
00:03:47,159 --> 00:03:49,960
used as a U as a user experience interface for

75
00:03:50,000 --> 00:03:53,759
application development amidst the formatting and presentation of electronic documents.

76
00:03:53,800 --> 00:03:56,560
It was about scientific papers with iperlinking.

77
00:03:56,680 --> 00:03:56,879
Speaker 1: Right.

78
00:03:57,520 --> 00:03:59,840
Speaker 2: Then there's Blazer server. Let's not worry about WASM for

79
00:03:59,879 --> 00:04:02,639
a now, just about using the server environment to create

80
00:04:02,719 --> 00:04:04,960
HTML documents that are rented. A browser does not even

81
00:04:05,000 --> 00:04:07,599
need a page refresh, It builds the page. Choosing marshal

82
00:04:07,680 --> 00:04:11,159
or components. Click in the browser is meaning less without

83
00:04:11,199 --> 00:04:13,280
the context of where it happened. A keystroke has the

84
00:04:13,280 --> 00:04:16,800
same requirements in both cases. The event requires context. That

85
00:04:16,920 --> 00:04:21,519
is simple. HTML is simple, but stupid. Why are we

86
00:04:21,560 --> 00:04:25,439
making it more complicated? Somebody says server overload. Server load

87
00:04:25,439 --> 00:04:27,759
for service side rendering using cloud resources not the same

88
00:04:27,800 --> 00:04:30,959
as a web farmer's service. True applications never used servers

89
00:04:30,959 --> 00:04:33,839
that use service is provided by servers. Your application needs

90
00:04:33,839 --> 00:04:36,639
hosting resources from the cloud. Why are we thinking about servers?

91
00:04:37,480 --> 00:04:39,759
And once again, Blazer server framework is nothing more than

92
00:04:39,759 --> 00:04:42,199
moving the context of the client side event and exposing

93
00:04:42,199 --> 00:04:44,079
that in the context of the application. Mix it an

94
00:04:44,120 --> 00:04:47,560
application code, update the component of the dock, and render

95
00:04:48,079 --> 00:04:50,519
just tailored bytes back to the document being viewed in

96
00:04:50,519 --> 00:04:54,079
the client. It's nice, simple and with a minimal byte

97
00:04:54,079 --> 00:04:57,600
count to transport. And that's my definition of web simplicity. Yeah,

98
00:04:57,720 --> 00:04:59,639
I can't argue that. Shame we make such a messment.

99
00:05:00,000 --> 00:05:00,600
Speaker 1: I've seen the light.

100
00:05:00,680 --> 00:05:04,120
Speaker 2: Yeah, he's trying to anyway. Yeah, i'd rich thanks so

101
00:05:04,199 --> 00:05:06,240
much for your comment. I'd send you a copy of

102
00:05:06,279 --> 00:05:09,000
music Code by but you got one. Yeah.

103
00:05:09,199 --> 00:05:10,720
Speaker 1: He's going to be a guest in a couple of

104
00:05:10,759 --> 00:05:11,879
weeks at fall as well.

105
00:05:11,759 --> 00:05:13,519
Speaker 2: And he's going to be a guest to shortly too,

106
00:05:13,560 --> 00:05:15,600
so we'll be here from anyway. I'll tease them the more.

107
00:05:15,680 --> 00:05:16,639
Speaker 1: Yeah, very good.

108
00:05:16,959 --> 00:05:18,399
Speaker 2: And if you'd like a copy of music Code, I

109
00:05:18,439 --> 00:05:20,439
write a comment on the website at dot NetRocks dot

110
00:05:20,439 --> 00:05:22,319
com or on the facebooks. We publish every show there, and

111
00:05:22,360 --> 00:05:23,759
if you comment there and I read it on the show,

112
00:05:23,800 --> 00:05:25,279
we'll send your copy. Music code by.

113
00:05:25,480 --> 00:05:28,279
Speaker 1: And music to code by, of course, is a series

114
00:05:28,360 --> 00:05:33,480
of twenty four minute twenty five minute music pieces that

115
00:05:33,560 --> 00:05:35,759
you can listen to while you code that helps you

116
00:05:35,800 --> 00:05:40,839
focus and keep you from getting distracted. And if you

117
00:05:41,000 --> 00:05:42,680
want to pay for it, it's at music tocode by

118
00:05:42,720 --> 00:05:46,959
dot net. Also, you could get a copy by sending

119
00:05:47,040 --> 00:05:50,120
us a message on the social media's other than facebooks.

120
00:05:50,600 --> 00:05:53,240
We've been on ex Twitter for the longest time. We're

121
00:05:53,279 --> 00:05:59,879
also on masted On and Blue Sky and some variation

122
00:06:00,240 --> 00:06:02,160
at Carl Franklin and at rich Campbell.

123
00:06:02,240 --> 00:06:04,000
Speaker 2: Right right, yeah, blue Sky seems to have all the

124
00:06:04,040 --> 00:06:06,839
action these days. Man, Like I realized I was. I

125
00:06:06,920 --> 00:06:09,959
was scrolling through Blue Sky today and it looks so

126
00:06:10,079 --> 00:06:12,000
much like the old Twitter. I forgot I was on

127
00:06:12,040 --> 00:06:12,480
blues guy.

128
00:06:12,600 --> 00:06:14,279
Speaker 1: Yeah, except it's not dumb.

129
00:06:14,399 --> 00:06:17,120
Speaker 2: Well, it's kind of the like the old Twitter.

130
00:06:17,360 --> 00:06:20,680
Speaker 1: Yeah yeah, all right, let's bring on our guests. Nathan Westfall.

131
00:06:20,759 --> 00:06:23,759
He is a senior no history. Oh you know what

132
00:06:23,959 --> 00:06:27,759
I so, here's the thing I looked at nineteen thirty

133
00:06:27,800 --> 00:06:31,160
five in the history and it's so jam packed, like

134
00:06:31,240 --> 00:06:33,639
we can't even cover it all. But maybe I'll ask

135
00:06:33,720 --> 00:06:35,160
you Richard what is your.

136
00:06:35,120 --> 00:06:36,839
Speaker 2: I only pick one thing, you know me, I'm gonna

137
00:06:36,839 --> 00:06:39,439
pick one thing. Yeah, and the one thing is James

138
00:06:39,519 --> 00:06:42,399
Chadwick's proof that the neutron exists.

139
00:06:42,680 --> 00:06:43,319
Speaker 1: How amazing.

140
00:06:43,519 --> 00:06:47,319
Speaker 2: Yeah, well think about this. That's nineteen thirty five and

141
00:06:47,600 --> 00:06:50,839
within ten years the first atomic bomb would go off. Yeah,

142
00:06:50,879 --> 00:06:54,199
and you need neutrons like that's how fast?

143
00:06:54,480 --> 00:06:57,720
Speaker 1: Yeah, So it's amazing the things that happened in this

144
00:06:58,439 --> 00:07:01,360
relatively short time period. It was just explosive.

145
00:07:01,519 --> 00:07:06,839
Speaker 2: Yeah, literally in so many different ways, right like between

146
00:07:07,439 --> 00:07:12,319
between the Great Depression, the rise of fascism, the explosion

147
00:07:12,319 --> 00:07:16,959
into World War two, like that was a tumultuous ten

148
00:07:17,040 --> 00:07:19,879
plus years and it just happened to be doing shows

149
00:07:19,920 --> 00:07:21,519
in those show numbers right now.

150
00:07:21,560 --> 00:07:23,839
Speaker 1: And a byproduct was a lot of innovation, a by

151
00:07:23,839 --> 00:07:25,680
product of the war and all of that stuff.

152
00:07:25,839 --> 00:07:28,439
Speaker 2: Yeah. Well, for better or worse, the military spends a

153
00:07:28,480 --> 00:07:32,480
lot and a lot of that funding was military.

154
00:07:32,279 --> 00:07:35,720
Speaker 1: Highway system because of the military fifties in America.

155
00:07:35,720 --> 00:07:38,040
Speaker 2: We got a little time yet for that. Yeah, it'll

156
00:07:38,040 --> 00:07:38,839
be later this year.

157
00:07:39,120 --> 00:07:39,560
Speaker 3: Yeah, yeah.

158
00:07:39,639 --> 00:07:40,120
Speaker 2: Yeah.

159
00:07:40,279 --> 00:07:44,120
Speaker 1: Still, it was Eisenhower's idea because he wanted mobility. Yeah,

160
00:07:44,120 --> 00:07:47,319
all right, enough of that. Yeah, that's coming, Let's bring

161
00:07:47,319 --> 00:07:49,639
on Nathan Westfall. As I started to say before, he

162
00:07:49,720 --> 00:07:54,480
is a senior software engineering manager at Tyler Technologies, leading

163
00:07:54,480 --> 00:07:58,560
the Cloud operations and mobile development team for student transportation.

164
00:07:59,399 --> 00:08:02,600
He started development journey with Php and Ruby on rails,

165
00:08:02,639 --> 00:08:05,079
but fell in love with the dot net ecosystem once

166
00:08:05,160 --> 00:08:09,720
leaving college early for his first job outside development. You

167
00:08:09,759 --> 00:08:12,399
can find him mixing audio at your local bar or

168
00:08:12,560 --> 00:08:15,720
fishing on a frozen lake. One of those things.

169
00:08:15,519 --> 00:08:16,600
Speaker 2: I do all the time.

170
00:08:17,560 --> 00:08:19,360
Speaker 1: I wonder which one it's not fishing.

171
00:08:23,240 --> 00:08:25,040
Speaker 4: Welcome, Yeah, thanks for having me.

172
00:08:25,160 --> 00:08:26,720
Speaker 1: So you've been listening to the show for a while,

173
00:08:26,759 --> 00:08:27,399
you said.

174
00:08:27,240 --> 00:08:29,680
Speaker 4: I have been. Yeah. Yeah, kind of the way I

175
00:08:29,800 --> 00:08:33,519
learn is podcast everything else, and you guys are fun

176
00:08:33,559 --> 00:08:36,320
to listen to, So that's good. It's kind of as

177
00:08:36,440 --> 00:08:38,080
Richard was saying earlier. It's nice to now see how

178
00:08:38,120 --> 00:08:38,919
the sausage is made.

179
00:08:39,039 --> 00:08:41,399
Speaker 1: So yeah, well it's good to have you at the table.

180
00:08:41,600 --> 00:08:42,960
Nice past the sausage.

181
00:08:43,080 --> 00:08:44,919
Speaker 2: So what have you been working on, Nathan.

182
00:08:44,759 --> 00:08:48,919
Speaker 4: Yeah, so Tyler Technologies. What I work on in student

183
00:08:48,960 --> 00:08:51,919
transportation is you know a yellow school bus you see

184
00:08:51,960 --> 00:08:54,919
on the road in the US and Canada. You know,

185
00:08:55,000 --> 00:08:58,480
we interact with so we're in one of every four

186
00:08:58,480 --> 00:09:03,200
school districts uses Tyler system. And the app that I

187
00:09:03,360 --> 00:09:06,120
here to talk about is the public facing app, so

188
00:09:06,120 --> 00:09:07,720
the one that any parent who has a kid on

189
00:09:07,759 --> 00:09:10,679
the bus that we integrate with can use called myrid

190
00:09:10,759 --> 00:09:14,360
K twelve And it's an app that we rewrote earlier

191
00:09:14,440 --> 00:09:16,440
last year, so in the beginning of twenty twenty four

192
00:09:16,480 --> 00:09:19,440
it started to roll out, and it is a Blazer

193
00:09:19,879 --> 00:09:24,360
Maui hybrid application works on web iOS, Android, and it

194
00:09:24,440 --> 00:09:28,279
is much Blazer as you could possibly imagine shoved into

195
00:09:28,279 --> 00:09:31,480
this app to have it run at scale and everything else.

196
00:09:31,679 --> 00:09:35,039
Speaker 1: I've already got a man crush on you. Man that

197
00:09:35,240 --> 00:09:37,960
is that is you're speaking my language here.

198
00:09:38,240 --> 00:09:39,799
Speaker 2: What was it before it was Blazer?

199
00:09:40,039 --> 00:09:43,279
Speaker 4: Yeah, good question. So it was examinant Forms. The original

200
00:09:43,399 --> 00:09:46,840
version of this app actually came out a couple months

201
00:09:46,879 --> 00:09:50,200
after dot net one, so dot net Core one was released.

202
00:09:50,279 --> 00:09:52,720
That's how early we were to dot net core and

203
00:09:52,759 --> 00:09:57,000
everything else. And what we learned early on was I

204
00:09:57,000 --> 00:09:59,799
can do examer reforms pretty well. But then when I

205
00:09:59,799 --> 00:10:02,320
have to make those same features on web in dot

206
00:10:02,360 --> 00:10:05,600
net core and Angular JS at the time, my feature

207
00:10:05,679 --> 00:10:08,799
drift became insane, right. It kind of became worse and

208
00:10:08,840 --> 00:10:10,960
worse over time to try to do something in forms

209
00:10:10,960 --> 00:10:13,799
for iOS, maybe something a little different for Android, and

210
00:10:13,879 --> 00:10:16,720
then also then change languages entirely for Web. So we

211
00:10:16,840 --> 00:10:19,960
got the opportunity to rewrite it in twenty twenty three,

212
00:10:20,080 --> 00:10:23,200
released in twenty twenty four, and went full blazer, so

213
00:10:23,240 --> 00:10:25,960
we could share about ninety five percent of our code

214
00:10:25,960 --> 00:10:27,759
between iOS, Android, Web is all the same.

215
00:10:27,840 --> 00:10:28,679
Speaker 1: That's fantastic.

216
00:10:28,799 --> 00:10:32,000
Speaker 2: Yeah. What also means you battle through the tough times

217
00:10:32,000 --> 00:10:35,039
at zamorin too, right, because that was oh yeah, those

218
00:10:35,039 --> 00:10:36,200
were early bits.

219
00:10:36,200 --> 00:10:39,919
Speaker 4: Yeah, correct, Yeah, when I even used examined it before

220
00:10:39,960 --> 00:10:44,000
I joined Tyler, when Microsoft had only had acquired it,

221
00:10:44,039 --> 00:10:46,480
like very very recently. So I mean I've been using

222
00:10:46,519 --> 00:10:48,320
examined for almost as long as it's been help.

223
00:10:48,720 --> 00:10:48,919
Speaker 2: Yeah.

224
00:10:48,960 --> 00:10:51,519
Speaker 1: We I thought it was going to be a lot

225
00:10:51,559 --> 00:10:53,919
smoother ride than it actually turned out to be. I

226
00:10:54,000 --> 00:10:57,600
was so excited when when Zamoran you know, came on

227
00:10:57,639 --> 00:11:00,840
the scene. Yeah, and the promise of jam forms and

228
00:11:00,919 --> 00:11:04,720
all that stuff was just amazing and then just just

229
00:11:05,039 --> 00:11:05,759
warm me down.

230
00:11:06,320 --> 00:11:09,159
Speaker 2: Sorry, yeah, Well, and I wrestle with is it the

231
00:11:09,279 --> 00:11:11,600
problem with the tool learning? Is it just a problem

232
00:11:11,639 --> 00:11:15,600
with building mobile apps like this separation between working on

233
00:11:15,639 --> 00:11:18,279
a machine different from the day app with the app

234
00:11:18,399 --> 00:11:22,600
environment like that, cycle's just hard and it's diverse like that,

235
00:11:22,600 --> 00:11:25,519
that combination just doesn't matter what the tools are. It's

236
00:11:25,559 --> 00:11:26,840
a battle compared to any other.

237
00:11:27,159 --> 00:11:29,399
Speaker 1: It is, and whether the tools keep you up to

238
00:11:29,480 --> 00:11:31,440
date or you have to keep up to date, you're

239
00:11:31,480 --> 00:11:34,320
always going to end up doing some kind of tweaking

240
00:11:34,919 --> 00:11:37,000
on one platform you're not doing on the other. And

241
00:11:37,000 --> 00:11:41,399
that's why I think the road that you took, which

242
00:11:41,440 --> 00:11:44,600
is Blazer Hybrid, gets rid of all that because the

243
00:11:44,639 --> 00:11:47,840
cross platform this is done in the browser, which is

244
00:11:48,480 --> 00:11:52,080
had many many years to go to get its cross

245
00:11:52,120 --> 00:11:54,399
platform story done, and it's there.

246
00:11:54,559 --> 00:11:56,399
Speaker 4: No, I'm with you. I think the biggest part of

247
00:11:56,440 --> 00:11:58,200
Exhibit Forms that was tough is even that you had

248
00:11:58,240 --> 00:12:01,519
all this shared code and c sharp code at the time.

249
00:12:01,960 --> 00:12:05,679
I'm fighting iOS at the time, you know, releases were

250
00:12:05,679 --> 00:12:08,480
in June. Android was later in the year. I'd have

251
00:12:08,559 --> 00:12:11,960
to update all my Android dependencies just so forms would

252
00:12:12,039 --> 00:12:14,320
work right. And to your point, Karl, if I'm just

253
00:12:14,399 --> 00:12:17,480
using a browser which I know will render my CSS

254
00:12:17,519 --> 00:12:21,480
the same way, my dependency is just shrunk. And you know,

255
00:12:21,759 --> 00:12:22,240
so small.

256
00:12:22,399 --> 00:12:24,399
Speaker 1: So yeah, so if you can do a web app

257
00:12:24,399 --> 00:12:27,159
in Blazer, you can do a mobile app in Blazer, right, yep,

258
00:12:27,200 --> 00:12:28,159
that's what it comes down to.

259
00:12:28,679 --> 00:12:30,279
Speaker 4: And we're testing it both because we even went the

260
00:12:30,279 --> 00:12:32,600
whole route. We're not using Blazer server at all. We

261
00:12:32,720 --> 00:12:36,159
went full web assembly. Yeah, I went the full If

262
00:12:36,200 --> 00:12:38,320
I don't have to host the server, why would I? So, yeah,

263
00:12:38,360 --> 00:12:39,720
sure that's what we're doing. Yeah.

264
00:12:39,759 --> 00:12:41,879
Speaker 2: Well, and you've got a I mean, it's not really

265
00:12:41,960 --> 00:12:43,960
public facing app in the sense that it is a

266
00:12:44,000 --> 00:12:48,000
known set of users. It's parents of students, but it's

267
00:12:48,039 --> 00:12:52,279
still a lot like the server load on that. I

268
00:12:52,320 --> 00:12:53,879
think Blazer server makes a lot of sense with an

269
00:12:53,879 --> 00:12:57,919
internal app with a certain number of employees done. Yeah,

270
00:12:57,960 --> 00:13:00,720
to make that public facing it's really hazardous.

271
00:13:00,879 --> 00:13:04,000
Speaker 4: Yeah, yeah, And our traffic's really predictable, right, Like we

272
00:13:04,039 --> 00:13:07,799
can see different time zones come online because buses normally

273
00:13:07,879 --> 00:13:10,039
roll in the same morning the same time East Coast

274
00:13:10,120 --> 00:13:11,799
and then Central and then west.

275
00:13:11,679 --> 00:13:14,679
Speaker 2: Right, right, you know when it's going to be busy. Right.

276
00:13:14,840 --> 00:13:16,279
Speaker 4: Parents are going to check the f twice a day,

277
00:13:16,360 --> 00:13:18,519
when their kids going to school and when their kids

278
00:13:18,559 --> 00:13:21,159
coming home, and everyone's doing it at the same time.

279
00:13:21,240 --> 00:13:24,159
Speaker 2: Almost, so aren't you then making an argument in favor

280
00:13:24,200 --> 00:13:25,200
of server sign.

281
00:13:25,120 --> 00:13:28,879
Speaker 4: Ah kind of you know, but the costs at the

282
00:13:28,960 --> 00:13:30,679
end of the day for web assembly to support all

283
00:13:30,679 --> 00:13:34,480
of this is I have we're partnered with AWS here

284
00:13:34,480 --> 00:13:36,600
at Tyler, so we're using dot net on AWS. But

285
00:13:37,519 --> 00:13:39,799
the whole web server for hundreds of thousands of parents

286
00:13:39,919 --> 00:13:42,000
is an S three bucket and then a CDN and

287
00:13:42,039 --> 00:13:42,480
I'm done.

288
00:13:42,559 --> 00:13:42,879
Speaker 2: That's it.

289
00:13:42,919 --> 00:13:43,480
Speaker 4: That's all I got.

290
00:13:43,559 --> 00:13:44,200
Speaker 1: Yeah, that's great.

291
00:13:44,279 --> 00:13:44,519
Speaker 2: Nice.

292
00:13:44,519 --> 00:13:47,000
Speaker 1: So I got to ask, what are you using for authentication?

293
00:13:47,240 --> 00:13:49,840
Speaker 4: Cognito Actually, huh, tell.

294
00:13:49,679 --> 00:13:50,559
Speaker 1: Me about Cognito.

295
00:13:50,759 --> 00:13:54,200
Speaker 4: Yeah, so Cognito. We we're going back and forth what

296
00:13:54,240 --> 00:13:56,399
we should use. There's a whole bunch of obviously authentication

297
00:13:56,480 --> 00:14:00,320
providers you can use Cognito. We just wanted to stay

298
00:14:00,360 --> 00:14:04,000
within the Amazon ecosystem because we don't have huge requirements

299
00:14:04,000 --> 00:14:08,039
for authentication. They have a nice portal for users self registering,

300
00:14:08,039 --> 00:14:09,559
which is our big use case. It's not like we

301
00:14:09,600 --> 00:14:12,960
create these accounts for parents. They can self register and

302
00:14:12,960 --> 00:14:15,320
give us the option to do social logins down the road. So,

303
00:14:16,200 --> 00:14:18,399
you know, we're over six hundred and fifty thousand users

304
00:14:18,399 --> 00:14:21,679
that have been created in Cognito, and then even so

305
00:14:21,759 --> 00:14:24,120
Cognitio create a nice pipeline because we were not in

306
00:14:24,200 --> 00:14:28,960
cognito common examinineforms and they let you actually in real time,

307
00:14:29,039 --> 00:14:31,000
So once a user tries to log in for the

308
00:14:31,000 --> 00:14:34,639
first time, we can migrate those users in real time.

309
00:14:34,879 --> 00:14:36,879
So no password change, no nothing.

310
00:14:37,080 --> 00:14:39,519
Speaker 2: If you're going to run on AWS, you should use

311
00:14:39,559 --> 00:14:42,240
AWS as authenticator, just the same way that if you're

312
00:14:42,240 --> 00:14:45,679
going to run on Azure you should be using Azure AD, right.

313
00:14:45,639 --> 00:14:47,960
Speaker 4: Like, yeah, I'm a big fan of peeping it together.

314
00:14:48,080 --> 00:14:50,799
Speaker 2: Yeah yeah, yeah, it's just not worth the pain. Yeah, Like,

315
00:14:50,879 --> 00:14:55,039
it's very challenging to build a unified authentication strategy across clouds,

316
00:14:56,000 --> 00:14:57,360
fighting that a lot, right.

317
00:14:57,480 --> 00:15:01,360
Speaker 1: And so I imagine that all the credentials are kept

318
00:15:01,480 --> 00:15:04,200
out of your reach, Yeah, so that you don't you're

319
00:15:04,240 --> 00:15:07,720
not liable for you know, break ins or anything like that.

320
00:15:07,559 --> 00:15:09,559
Speaker 4: Correct, which is another big benefit. We used to host

321
00:15:09,600 --> 00:15:14,440
it ourselves with dot Net's identity server and handled all

322
00:15:14,480 --> 00:15:17,320
that and that's all gone now and all everyone got

323
00:15:17,360 --> 00:15:20,200
migrated over and again that real time is nice because

324
00:15:20,399 --> 00:15:22,279
you can use landa when they log in, Oh, this

325
00:15:22,360 --> 00:15:24,879
user doesn't exist, let me check your existing user store

326
00:15:25,159 --> 00:15:26,879
and the user never had to change their password. It

327
00:15:26,960 --> 00:15:29,399
just moves right over and that's great. Nice starts working.

328
00:15:29,960 --> 00:15:32,120
Speaker 2: So you did that, very nice migration. They never knew

329
00:15:32,120 --> 00:15:34,080
you changed authentication strategies. Doesn't matter.

330
00:15:34,159 --> 00:15:35,200
Speaker 4: Yeah, no idea.

331
00:15:35,879 --> 00:15:38,799
Speaker 2: Then and then one day nobody's hitting that identity server anymore.

332
00:15:38,840 --> 00:15:40,360
You can turn it off one day.

333
00:15:40,200 --> 00:15:42,759
Speaker 4: Correct, Well that was I had the pleasure of a

334
00:15:42,799 --> 00:15:44,840
couple of months ago finally turning everything off, and it

335
00:15:44,919 --> 00:15:47,960
felt so nice to go through and web servers off,

336
00:15:48,039 --> 00:15:50,519
APIs off, everything got shut down.

337
00:15:50,720 --> 00:15:52,679
Speaker 2: Why do we feel good when we turn stuff off?

338
00:15:53,639 --> 00:15:55,399
Speaker 4: It's like calming, right, Yeah, No, it's.

339
00:15:55,320 --> 00:15:59,519
Speaker 1: The money goes back into your wallet, reversing the flow

340
00:15:59,519 --> 00:15:59,879
of money.

341
00:16:00,000 --> 00:16:02,519
Speaker 2: It's also it's also an end of pain, right, Like,

342
00:16:02,519 --> 00:16:05,240
that's weary. It's not going to hurt you anymore because

343
00:16:05,320 --> 00:16:07,759
it's the stuff.

344
00:16:10,840 --> 00:16:12,600
Speaker 4: I know. There was a there's a brief period where

345
00:16:12,639 --> 00:16:14,639
we were rewriting it, and I always hated getting a

346
00:16:14,879 --> 00:16:16,480
you know, an issue come through and I'm like, I

347
00:16:16,519 --> 00:16:18,440
got to open examin forms again and I got to

348
00:16:18,440 --> 00:16:21,080
go through and fix this. And after using Blazer for

349
00:16:21,080 --> 00:16:23,879
so long, rewriting it's it was hard to go back.

350
00:16:24,120 --> 00:16:27,480
Speaker 2: Oh yeah, wandering back in his zamm reforms like walking

351
00:16:27,480 --> 00:16:30,519
into a dark forest. Yeah, I remember why I left

352
00:16:30,519 --> 00:16:33,720
this place. I appreciate that.

353
00:16:33,960 --> 00:16:36,600
Speaker 1: I it's on my list of things to do to

354
00:16:37,360 --> 00:16:41,519
open up uh MAUI in dot net nine and take

355
00:16:41,559 --> 00:16:42,639
a good hard look at it.

356
00:16:42,679 --> 00:16:42,960
Speaker 2: Again.

357
00:16:43,679 --> 00:16:46,399
Speaker 1: I don't because ever since I found you know, the

358
00:16:46,440 --> 00:16:51,240
Blazer hybrid MEI hybrid stuff, I'm I just don't. I

359
00:16:51,320 --> 00:16:52,080
haven't gone back.

360
00:16:52,200 --> 00:16:55,159
Speaker 4: Yeah, basically, so yeah, we've done. We've done a few

361
00:16:55,200 --> 00:16:57,759
to play around with it, but I every time I

362
00:16:57,840 --> 00:16:59,039
do it field and need of like I could just

363
00:16:59,080 --> 00:17:00,840
do this and blaze and I'm used to it and

364
00:17:00,919 --> 00:17:02,240
it's works just as good.

365
00:17:02,200 --> 00:17:05,400
Speaker 2: Right yeah, yeah, well yeah, if you're getting the results,

366
00:17:05,400 --> 00:17:07,599
if the customer is happy, which is parents, which are

367
00:17:07,680 --> 00:17:10,680
who are never happy, then you're doing all right right right.

368
00:17:11,119 --> 00:17:12,720
Speaker 4: Yeah, you can definitely say that again.

369
00:17:12,799 --> 00:17:15,680
Speaker 2: So yes, yeah, yeah, don't mess with it.

370
00:17:15,720 --> 00:17:17,240
Speaker 1: And how many users did you say you had?

371
00:17:17,519 --> 00:17:20,599
Speaker 4: We currently have over six hundred and fifty thousand uh

372
00:17:20,880 --> 00:17:24,160
registered in our active counts daily active counts prett high

373
00:17:24,200 --> 00:17:24,759
on the top of that.

374
00:17:24,920 --> 00:17:27,480
Speaker 2: So wow, you do not want to do tech support

375
00:17:27,519 --> 00:17:29,720
for six hundred fifty thousand people. That's not good. No,

376
00:17:30,039 --> 00:17:32,359
they got to be all self service, They got it,

377
00:17:32,440 --> 00:17:34,720
but also they don't care. They just want to know

378
00:17:34,759 --> 00:17:35,480
where the kid is.

379
00:17:35,559 --> 00:17:37,720
Speaker 4: Correct, which is a whole other set of problems that

380
00:17:38,079 --> 00:17:41,640
we had to do in a way that's helping both

381
00:17:41,680 --> 00:17:44,640
the district, who is really our customer, right, The school

382
00:17:44,640 --> 00:17:46,519
district is the one that uses our technology.

383
00:17:46,759 --> 00:17:49,039
Speaker 2: Those the ones you're paying you, right, But.

384
00:17:49,000 --> 00:17:51,240
Speaker 4: They're servicing the parents, and we also have to serve

385
00:17:51,279 --> 00:17:53,480
the parents and the district. So how do I explain

386
00:17:53,599 --> 00:17:56,359
to the parent, hey, this bus is out of commission, right,

387
00:17:56,400 --> 00:17:58,519
and this is why you can't see where your kid is, right,

388
00:17:58,519 --> 00:18:02,000
and solving all these problems to someone who's not in

389
00:18:02,079 --> 00:18:06,480
the operation of school busing, right, making them not come

390
00:18:06,519 --> 00:18:09,400
back at us. Obviously, we want to protect our operatings

391
00:18:09,400 --> 00:18:11,440
as much as possible and be like, hey, your app's

392
00:18:11,480 --> 00:18:12,920
not working, But at the end of the day, it's

393
00:18:13,079 --> 00:18:15,519
you know, your bus didn't drive today because it's a holiday.

394
00:18:16,079 --> 00:18:16,839
True story, right.

395
00:18:17,000 --> 00:18:20,200
Speaker 1: So is that what your app does primarily as track buses?

396
00:18:20,400 --> 00:18:23,400
Speaker 4: Yeah, so it does two different things. So you can

397
00:18:23,519 --> 00:18:26,680
find your kids' schedule all through self registration. So if

398
00:18:26,720 --> 00:18:30,000
I had my kid was in elementary school, I could

399
00:18:30,000 --> 00:18:31,839
register them to the app and see, hey, the bus

400
00:18:31,880 --> 00:18:33,480
is going to pick them up at this corner every

401
00:18:33,880 --> 00:18:36,400
Monday through Friday at eight twenty in the morning. This

402
00:18:36,519 --> 00:18:39,240
is my driver's name and what bus is coming. And

403
00:18:39,279 --> 00:18:41,839
then if the district allows it and has the capability,

404
00:18:41,880 --> 00:18:44,960
you can actually see when your bus is coming in

405
00:18:45,000 --> 00:18:47,640
your real time. You get notifications kind of like Huber

406
00:18:47,680 --> 00:18:50,720
if your bus is about to arrive, it's five minutes away,

407
00:18:50,799 --> 00:18:54,920
it's running late, and kind of provides that experience. So

408
00:18:55,079 --> 00:18:58,039
parents can just really quickly say, I mean, it was

409
00:18:58,079 --> 00:19:00,440
a cold day up here in New York. I was

410
00:19:00,880 --> 00:19:03,200
outside and realize how windy it was. I would hate

411
00:19:03,240 --> 00:19:04,799
if I had to go stand at the bus stop

412
00:19:04,839 --> 00:19:07,359
for twenty minutes hoping the bus would show up. No,

413
00:19:07,720 --> 00:19:10,200
it's nice if I can get that notification just walk outside.

414
00:19:10,240 --> 00:19:13,480
Speaker 1: What about kids fourteen and older, Let's say, can they

415
00:19:13,559 --> 00:19:14,400
use the app as well?

416
00:19:14,799 --> 00:19:18,160
Speaker 4: They technically can. We obviously try to restrict it as

417
00:19:18,240 --> 00:19:19,880
much as possible as it's meant for the parent, But

418
00:19:19,960 --> 00:19:24,319
there's parents have the ability to share that information with

419
00:19:24,400 --> 00:19:27,160
any other account, right, so they can even say, hey,

420
00:19:27,200 --> 00:19:29,240
for the day, the babysitter can have it to make

421
00:19:29,279 --> 00:19:30,880
sure that my kid gets off the bus.

422
00:19:31,000 --> 00:19:34,599
Speaker 1: Nice the kid wouldn't necessarily be waiting at the bus

423
00:19:34,599 --> 00:19:36,440
and it's late and be able to flip up the

424
00:19:36,480 --> 00:19:39,119
app and say, oh, yeah it's ten minutes late.

425
00:19:39,240 --> 00:19:41,920
Speaker 4: Yeah, we have some kids that do it, but primarily

426
00:19:41,960 --> 00:19:44,640
it's the older kids are kind of left on their own.

427
00:19:44,640 --> 00:19:47,039
As you know as a parent, they kind of you're

428
00:19:47,319 --> 00:19:49,640
becoming more of an adult. It's a lot of kids

429
00:19:49,680 --> 00:19:52,480
in elementary school, right, because even in some states, depending

430
00:19:52,480 --> 00:19:54,160
on your age, you have to be at the stop

431
00:19:54,200 --> 00:19:55,880
for the kids to get dropped off. True, so I

432
00:19:55,920 --> 00:19:56,799
don't want to wait outside.

433
00:19:56,839 --> 00:20:00,640
Speaker 1: Plus there's the Kappa thing, right, Yes, the Kapa against

434
00:20:01,400 --> 00:20:04,920
kids using software. If you were going to allow kids

435
00:20:04,960 --> 00:20:07,480
I think it's fourteen and younger or under fourteen.

436
00:20:07,559 --> 00:20:09,599
Speaker 4: Yeah, it's somewhere like that. Thirteen fourteen, Yeah.

437
00:20:09,480 --> 00:20:11,960
Speaker 1: Thirteen and under, if you're going to allow them to

438
00:20:12,079 --> 00:20:12,319
use it.

439
00:20:12,359 --> 00:20:14,799
Speaker 2: Not that there's any sensitive information here, it's the location

440
00:20:14,880 --> 00:20:15,599
of a bus.

441
00:20:15,759 --> 00:20:21,039
Speaker 1: Yeah, you'd have to go through hoops yet that Yeah, And.

442
00:20:21,400 --> 00:20:23,000
Speaker 2: We happen to be recording this when there was a

443
00:20:23,039 --> 00:20:27,240
pretty big snowfall through central US. So I got to

444
00:20:27,279 --> 00:20:29,599
think that impacts bus as a whole bunch. And that's

445
00:20:29,599 --> 00:20:31,440
when everybody's going to be hammering on the app, like,

446
00:20:31,480 --> 00:20:32,400
have we seen the maps?

447
00:20:32,440 --> 00:20:32,720
Speaker 4: Correct?

448
00:20:32,759 --> 00:20:33,519
Speaker 2: He's the bus running?

449
00:20:33,519 --> 00:20:33,680
Speaker 4: Is it?

450
00:20:34,079 --> 00:20:34,640
Speaker 2: Is it moving?

451
00:20:35,160 --> 00:20:37,559
Speaker 1: Have you seen the maps? Like this white band all

452
00:20:37,599 --> 00:20:40,119
the way through the Midwest from the from the west

453
00:20:40,119 --> 00:20:43,720
coast to the east coast. Unbelievable. Yeah, quite a piece

454
00:20:43,759 --> 00:20:44,759
of weather anyway.

455
00:20:44,960 --> 00:20:47,039
Speaker 2: So do you present it as a map or is

456
00:20:47,079 --> 00:20:49,599
it just a table of this is the bus, this

457
00:20:49,640 --> 00:20:50,240
is where it'll be?

458
00:20:50,480 --> 00:20:50,680
Speaker 1: Yeah?

459
00:20:50,759 --> 00:20:53,279
Speaker 4: No, good question time. So it's it's all configured by

460
00:20:53,279 --> 00:20:56,680
the district because different districts have different policies. And you know,

461
00:20:56,759 --> 00:20:58,720
some districts have a policy where they don't want to

462
00:20:58,720 --> 00:21:00,680
show the parents the bus just don't it's about to

463
00:21:00,799 --> 00:21:03,279
arrive soon because they don't want angry parents getting in

464
00:21:03,319 --> 00:21:05,319
their car and chasing the bus down because they miss

465
00:21:05,400 --> 00:21:07,960
their kid and so on and so forth. Right, But

466
00:21:08,000 --> 00:21:10,799
if they allow everything, Yeah, you can see your bus

467
00:21:11,000 --> 00:21:14,480
on a map. We use signal R to broadcast that

468
00:21:14,640 --> 00:21:18,160
information and then show it live within the app. You

469
00:21:18,200 --> 00:21:20,200
can interact with it, follow it in three D all

470
00:21:20,240 --> 00:21:21,000
this other fun stuff.

471
00:21:21,960 --> 00:21:23,960
Speaker 2: Yeah. I like that. Yeah, I know that's yeah, so

472
00:21:24,000 --> 00:21:26,799
you can go but very that's very like uber esque

473
00:21:26,960 --> 00:21:29,200
in that sense. You can literally watch the vehicle emotion.

474
00:21:29,279 --> 00:21:32,480
But I can also see why certain districts would say,

475
00:21:32,519 --> 00:21:34,799
you know, that's probably a little too much information, that's

476
00:21:34,799 --> 00:21:37,599
a creepy Yes, exactly.

477
00:21:38,000 --> 00:21:39,880
Speaker 4: You get both extremes. I want to see everything and

478
00:21:39,880 --> 00:21:41,039
I want to see nothing, right.

479
00:21:41,119 --> 00:21:41,359
Speaker 2: Yeah.

480
00:21:41,920 --> 00:21:44,599
Speaker 4: The Uber thing is is when we've been trying to

481
00:21:44,599 --> 00:21:46,920
deal with for a while. Because Uber is obviously great, right.

482
00:21:46,960 --> 00:21:48,440
I mean I've gone to the airport so many times

483
00:21:48,480 --> 00:21:50,160
and I go to a conference, I'll pull up Uber

484
00:21:50,200 --> 00:21:53,519
get where I need to go. But people don't quite

485
00:21:53,599 --> 00:21:55,720
understand all the time, is that Uber is nice because

486
00:21:55,799 --> 00:21:58,400
you as a driver, except that I'm carrying my one

487
00:21:58,440 --> 00:22:02,759
passenger somewhere else. While a school bus is if it's

488
00:22:02,759 --> 00:22:05,799
all configured properly, because the driver can't do any interaction

489
00:22:05,920 --> 00:22:07,880
while they're driving. They can't have a screen up, they

490
00:22:07,880 --> 00:22:10,759
can't have all this other technology that a taxi driver

491
00:22:10,880 --> 00:22:13,720
UBI driver can have. I can't just notify one parent.

492
00:22:13,839 --> 00:22:17,799
I have to notify sixty kids maybe and their families,

493
00:22:18,119 --> 00:22:20,759
and not also share where those fifty nine other kids

494
00:22:20,839 --> 00:22:22,720
also live, right? And how do I do that in

495
00:22:22,759 --> 00:22:23,359
a different way?

496
00:22:23,680 --> 00:22:24,119
Speaker 1: Challenge?

497
00:22:24,400 --> 00:22:26,559
Speaker 2: Yeah, No, it's great, and it's great. Question. It's like

498
00:22:26,599 --> 00:22:27,799
what's the right thing to do there?

499
00:22:27,960 --> 00:22:30,799
Speaker 1: So you have let's count the clients. You have a

500
00:22:31,559 --> 00:22:35,240
web obviously and mobile. Do you also have Windows and

501
00:22:35,319 --> 00:22:35,960
Mac clients.

502
00:22:36,119 --> 00:22:39,400
Speaker 4: We don't have Windows because actually all of the development team,

503
00:22:39,400 --> 00:22:41,880
including myself, we only run max. I do have it

504
00:22:41,960 --> 00:22:44,720
running on a Mac locally, though, because that's how I

505
00:22:44,759 --> 00:22:46,279
do development is mostly in the Mac.

506
00:22:46,519 --> 00:22:50,240
Speaker 1: Right okay, because you're using the Mali hybrid model.

507
00:22:50,359 --> 00:22:52,599
Speaker 4: Right, correct, there's nothing stopping us.

508
00:22:52,720 --> 00:22:54,279
Speaker 1: It's more uh, nothing stopping you.

509
00:22:54,400 --> 00:22:57,680
Speaker 4: Yeah, it's more because of you know, got to go

510
00:22:57,720 --> 00:23:00,359
through enterprise hoops. I don't want to fight that, yeah, exactly.

511
00:23:00,519 --> 00:23:03,799
Speaker 1: I mean that comes back to Richard Rukima's point is

512
00:23:03,839 --> 00:23:07,119
that we love these mobile things because you can just

513
00:23:07,400 --> 00:23:09,640
pull them up, you get the latest version, you don't

514
00:23:09,640 --> 00:23:15,160
have to install them and ye WPF who needs it?

515
00:23:15,200 --> 00:23:15,720
For this guy?

516
00:23:15,799 --> 00:23:20,119
Speaker 2: Apps that? Yeah? Yeah, that's you don't want to run

517
00:23:20,240 --> 00:23:22,480
WPF on now? That would be gosh.

518
00:23:22,920 --> 00:23:25,440
Speaker 1: Did you also take a look at some of the

519
00:23:25,480 --> 00:23:32,880
other sort of you know, multi client frameworks out there

520
00:23:32,960 --> 00:23:36,000
before you decided on this or was it a natural

521
00:23:36,039 --> 00:23:39,119
progression because you were always using zamor and already.

522
00:23:39,240 --> 00:23:42,000
Speaker 4: Yeah, it was obviously we were leaning this way. We

523
00:23:42,079 --> 00:23:46,279
were using Blazer already, Uh since what was it done

524
00:23:46,279 --> 00:23:48,160
in a core three three one depending on whethery're using

525
00:23:48,200 --> 00:23:50,880
web assembly or not, so we kind of were already

526
00:23:50,920 --> 00:23:56,000
familiar with Blazer. Tyler also has a internal UI library

527
00:23:56,000 --> 00:23:58,079
that we use, and of course it's web components only,

528
00:23:58,319 --> 00:24:00,599
so it's do I want to port that something else

529
00:24:00,680 --> 00:24:03,279
or keep using web We did look at things like

530
00:24:03,359 --> 00:24:07,960
Flutter and Ionic for a little while, but really we're

531
00:24:07,960 --> 00:24:10,440
a dot net shop through and through, even outside of

532
00:24:10,440 --> 00:24:12,400
mobile development, so it kind of just made sense for

533
00:24:12,480 --> 00:24:15,440
us to stick with dot net. And I've never had

534
00:24:15,440 --> 00:24:17,880
any issues with Blazer, which I know people have their

535
00:24:17,920 --> 00:24:21,559
opinions on necessarily using web assembly and all this other stuff,

536
00:24:21,559 --> 00:24:25,119
but it's at least I know what can be wrong,

537
00:24:25,200 --> 00:24:26,000
so it's familiar.

538
00:24:27,039 --> 00:24:30,240
Speaker 2: Yeah, But I mean, MAUI was supposed to be the

539
00:24:30,279 --> 00:24:33,200
logical successor to zamorin forms like you are making a

540
00:24:33,240 --> 00:24:35,799
bigger leap here to jump over to Blazer.

541
00:24:35,839 --> 00:24:38,400
Speaker 4: We are, and we definitely walked through that. So we've

542
00:24:38,440 --> 00:24:41,880
actually had two apps and we did them differently. So

543
00:24:43,559 --> 00:24:45,720
ride through sixty now known my ride K twelve, we

544
00:24:45,759 --> 00:24:48,200
did that whole Blazer rewrite, right, We took things in

545
00:24:48,279 --> 00:24:50,160
and forms through the way it did everything a blazer.

546
00:24:50,559 --> 00:24:52,960
We have another application called my Stuff, which is for

547
00:24:53,759 --> 00:24:56,839
a different application that we support kind of same functionality,

548
00:24:56,880 --> 00:25:01,480
but for a different on prem solution basically uh bus srouting.

549
00:25:02,480 --> 00:25:06,319
That one went from examer Informs to Maui. There was

550
00:25:06,359 --> 00:25:08,599
no blaze or anything we write. That one went through

551
00:25:08,640 --> 00:25:11,680
what Microsoft wants you to do with progressing straight over

552
00:25:11,720 --> 00:25:15,039
to Maui and it because of how that app operated.

553
00:25:15,079 --> 00:25:18,759
It didn't have anything overly complex. It wasn't difficult, but

554
00:25:18,799 --> 00:25:21,279
it definitely was not as easy as it is made

555
00:25:21,279 --> 00:25:21,599
out to be.

556
00:25:21,880 --> 00:25:25,720
Speaker 2: Well, both products had their challenges, right, Yes, Yeah, and

557
00:25:26,200 --> 00:25:28,960
I would argue if you still had a Zamora Informs

558
00:25:28,960 --> 00:25:32,039
app today moving to Maui on done at nine, he's

559
00:25:32,039 --> 00:25:34,640
a heck how a lot less painful? Totally agree. Yeah,

560
00:25:34,720 --> 00:25:38,279
definitely if you jump when they wanted you to jump,

561
00:25:38,400 --> 00:25:41,839
you jumped into a pifle of glass like.

562
00:25:41,960 --> 00:25:45,440
Speaker 4: Correct, correct? Yeah, we only did that migration from Forms

563
00:25:45,440 --> 00:25:47,960
to Maui within the past six months, right, so when

564
00:25:47,960 --> 00:25:50,920
all that stuff got worked out and learning curves and

565
00:25:50,960 --> 00:25:51,279
all that.

566
00:25:51,400 --> 00:25:55,039
Speaker 2: Yeah, if you can wait, wait you it will. Yeah,

567
00:25:55,160 --> 00:25:57,279
it's a benefit without it's like, if your app's not

568
00:25:57,319 --> 00:26:01,319
currently on fire and people aren't going to kill you,

569
00:26:00,039 --> 00:26:03,240
you know, stay with what you got and let the

570
00:26:03,240 --> 00:26:04,960
bugs be worked up by somebody else.

571
00:26:05,200 --> 00:26:05,440
Speaker 4: Yep.

572
00:26:05,599 --> 00:26:08,680
Speaker 1: Well, and also you know, you don't really he's not

573
00:26:08,839 --> 00:26:13,680
really going from Maui to Blazer. He's using Blazer inside

574
00:26:13,920 --> 00:26:19,119
a Maui app, So so it is Maui Blazer essentially.

575
00:26:19,920 --> 00:26:23,200
But I was thinking of something like Avalonia. I mean,

576
00:26:23,240 --> 00:26:23,880
do you look at that?

577
00:26:24,319 --> 00:26:27,720
Speaker 4: Oh yeah, yeah, and that we did look at too,

578
00:26:27,799 --> 00:26:30,000
So I think some confusion has a couple of libraries

579
00:26:30,000 --> 00:26:33,359
that we were looking at, and you know all those

580
00:26:35,400 --> 00:26:39,119
cross platform cross uh you know, whether it's Web or

581
00:26:39,480 --> 00:26:42,519
Maui UI frameworks, and again, what it what it came

582
00:26:42,559 --> 00:26:44,960
down to us was we wanted to stick with the

583
00:26:45,119 --> 00:26:48,079
UI components that here at Tyler Tech someone has built

584
00:26:48,079 --> 00:26:50,680
and they were all web components. So we were kind of, yeah,

585
00:26:50,759 --> 00:26:52,640
do we want to take that and replicate it somewhere

586
00:26:52,640 --> 00:26:54,640
else or do we just want to keep using web components.

587
00:26:54,880 --> 00:26:57,519
Speaker 1: And it totally makes sense, as you said, because you know,

588
00:26:57,599 --> 00:27:00,960
the cross platform part is already done. Yeah, yeah, you're

589
00:27:01,000 --> 00:27:02,960
not worrying about this platform that.

590
00:27:03,079 --> 00:27:05,640
Speaker 2: Plus you've got six hundred thousand users that are used

591
00:27:05,680 --> 00:27:08,960
to a look and feel correct. Don't mess with that.

592
00:27:08,359 --> 00:27:11,319
That's just cost for you. The more you mess with that,

593
00:27:11,319 --> 00:27:12,359
the more trouble you're going to get.

594
00:27:12,519 --> 00:27:16,079
Speaker 4: Yeah, and we want to be good partners at Tyler. Right.

595
00:27:16,119 --> 00:27:19,039
So Tyler does everything public sector right, whether it be

596
00:27:19,079 --> 00:27:23,799
courts injustice or public safety or healthcare to student transportation.

597
00:27:24,279 --> 00:27:27,039
You know, there's bunches of apps that Tyler reproduces, and

598
00:27:27,039 --> 00:27:29,279
we want to make sure that if a parent happens

599
00:27:29,319 --> 00:27:31,160
to also be in a district where I can pay

600
00:27:31,200 --> 00:27:33,400
my electric bill through Tyler Tech, right, that that look

601
00:27:33,400 --> 00:27:34,319
and feels kind of the same.

602
00:27:34,440 --> 00:27:37,599
Speaker 2: Oh interesting, Right, So literally you can have multiple products

603
00:27:37,640 --> 00:27:39,599
in this space and they're like, oh I know this already.

604
00:27:39,720 --> 00:27:40,920
Speaker 4: Yep, Yeah, that's cool.

605
00:27:41,200 --> 00:27:41,799
Speaker 2: That makes sense.

606
00:27:42,000 --> 00:27:43,720
Speaker 1: All right, that sounds like a good place to take

607
00:27:43,720 --> 00:27:46,160
a break. We'll be right back after these very important messages.

608
00:27:48,640 --> 00:27:51,079
Did you know you can lift and shift your dot

609
00:27:51,119 --> 00:27:55,240
net framework apps to virtual machines in the cloud. Use

610
00:27:55,279 --> 00:27:59,599
the elastic beanstalk service to easily migrate to Amazon EC

611
00:27:59,759 --> 00:28:03,680
too with little or no changes. Find out more at

612
00:28:03,720 --> 00:28:13,640
aws dot Amazon dot com slash elastic beanstock and we're back.

613
00:28:13,799 --> 00:28:16,559
It's at Rocks. I'm Carl Franklin, It's Richard Campbell, hey,

614
00:28:16,720 --> 00:28:20,200
and that's Nathan Westfall and we're talking about his application

615
00:28:20,799 --> 00:28:25,279
hosting six hundred and fifty thousand plus users with an

616
00:28:25,440 --> 00:28:30,920
S three bucket and a CDN all in Blazer for

617
00:28:31,319 --> 00:28:35,720
mobile clients and for web and not looking back.

618
00:28:35,839 --> 00:28:38,319
Speaker 4: Not at all, not at all, not at all.

619
00:28:38,680 --> 00:28:46,039
Speaker 1: So no web forms here, no Windows forms, no WPF,

620
00:28:45,240 --> 00:28:49,960
no native client code for iOS or Andrew, you don't have.

621
00:28:49,960 --> 00:28:50,440
Speaker 2: To deal with that.

622
00:28:50,680 --> 00:28:54,960
Speaker 4: Yeah, definitely not UI native code. Right. So, I think

623
00:28:55,000 --> 00:28:57,799
the only things that we got stuck with, and I

624
00:28:57,799 --> 00:28:59,720
say stuck with, they were not major to begin with

625
00:28:59,720 --> 00:29:04,559
at all. But in terms of either you know, browser specific,

626
00:29:04,599 --> 00:29:07,519
iOS Android specific, you got push notifications.

627
00:29:08,599 --> 00:29:10,799
Speaker 1: Yeah that's a problem, right, always.

628
00:29:10,480 --> 00:29:14,640
Speaker 4: Right, push notifications and authentication actually had to have a

629
00:29:14,759 --> 00:29:16,640
nice little hack to get to work in all of

630
00:29:16,640 --> 00:29:20,519
them because we wanted to use what Blazer does for authentication.

631
00:29:21,119 --> 00:29:23,960
But how I log in auto mobile device is not

632
00:29:24,000 --> 00:29:25,319
going to be the same on the web. So how

633
00:29:25,319 --> 00:29:28,000
do I make sure I can still use Access Token Provider?

634
00:29:28,119 --> 00:29:29,759
How do I still use that on MAUI?

635
00:29:29,880 --> 00:29:33,599
Speaker 1: So let's talk about push notifications. Yeah, so I'm not

636
00:29:33,720 --> 00:29:37,000
talking about signal ar can send you a message and say, hey,

637
00:29:37,039 --> 00:29:39,680
how you doing. We're talking about when your app is

638
00:29:39,759 --> 00:29:44,119
minimized and you're getting messages in the background and you

639
00:29:44,200 --> 00:29:47,680
want that number with a red circle with that number

640
00:29:47,680 --> 00:29:53,359
to increment that. That is not trivial to do and

641
00:29:53,720 --> 00:29:55,839
an Android. I figured out how to do it by

642
00:29:55,839 --> 00:29:58,319
doing an actual fore ground service that works as a

643
00:29:58,319 --> 00:30:04,240
background service. Yep, but that adds another service, and on

644
00:30:04,319 --> 00:30:07,279
iOS forget about it, like you have to, you know,

645
00:30:07,559 --> 00:30:10,359
draw three courts of blood and sign over your firstborn

646
00:30:10,599 --> 00:30:13,960
and right, and then they don't even have it for

647
00:30:14,319 --> 00:30:16,640
Blazer as far as I'm concerned. They didn't last time

648
00:30:16,680 --> 00:30:18,920
I checked. So how how on earth did you solve

649
00:30:18,960 --> 00:30:19,519
that problem?

650
00:30:19,640 --> 00:30:23,920
Speaker 4: Yeah? So we this is I guess saying outside of

651
00:30:23,920 --> 00:30:25,839
the ecosystem. I know we talked about being inside of it,

652
00:30:25,920 --> 00:30:29,400
but we use ad your notification hub for push notifications.

653
00:30:30,519 --> 00:30:33,480
Part of the reason was because the older application Examined

654
00:30:33,559 --> 00:30:37,960
Forms already had it because it was Adure first, and

655
00:30:38,039 --> 00:30:40,039
we wanted to just keep the same system in case

656
00:30:40,079 --> 00:30:42,039
parents had both apps. Right, So it was a decision

657
00:30:42,039 --> 00:30:43,440
we made to just just keep it around.

658
00:30:43,880 --> 00:30:47,200
Speaker 1: But how does that notification service interact with your dormant

659
00:30:47,440 --> 00:30:48,119
yes app.

660
00:30:48,240 --> 00:30:51,720
Speaker 4: So we had to write code specific for Android and

661
00:30:51,799 --> 00:30:56,519
iOS to tie into both push notifications. So on Android

662
00:30:56,559 --> 00:31:01,920
it's firebased FCM now right, they officially retired GCM unfortunately,

663
00:31:01,960 --> 00:31:06,039
and then iOS is always messing with delegates and all

664
00:31:06,039 --> 00:31:09,039
this fun stuff that if it doesn't work how as

665
00:31:09,039 --> 00:31:10,599
you said, it doesn't work how the docs work, I'm

666
00:31:10,640 --> 00:31:11,880
kind of out of luck because it's not like I'm

667
00:31:11,880 --> 00:31:15,200
getting an help from Apple Lane time soon. So tie

668
00:31:15,279 --> 00:31:18,079
into both and just kind of have the native push

669
00:31:18,119 --> 00:31:21,319
unification system work. And then if they happen to click

670
00:31:21,359 --> 00:31:25,279
the application, you know, we're doing some things with session

671
00:31:25,359 --> 00:31:28,039
state too, kind of if Blazer then wants to detect

672
00:31:28,079 --> 00:31:30,480
that I have a message safe, then I can prompt

673
00:31:30,480 --> 00:31:33,079
that in a totally different way or manage it totally separate.

674
00:31:33,240 --> 00:31:36,319
Speaker 2: Yeah. Wow, but now you're using notification AUPs like you

675
00:31:36,440 --> 00:31:40,119
now describing a cloud hybrid app too, because you're also

676
00:31:40,200 --> 00:31:40,799
using is three.

677
00:31:40,960 --> 00:31:43,200
Speaker 4: Yes, yeah, a little bit of both on that one.

678
00:31:43,319 --> 00:31:50,240
Speaker 2: Not complicated at all their data Imagine you have any problems? No, no,

679
00:31:52,400 --> 00:31:54,880
but no, I see how you got there. Totally makes sense, right,

680
00:31:54,920 --> 00:31:57,640
and there's nothing bad about notification apps they were.

681
00:31:57,839 --> 00:32:01,160
Speaker 4: Yeah, I've honestly out of alved the Azure services. I've

682
00:32:01,240 --> 00:32:04,319
used them. We used to do Azure probably at this

683
00:32:04,359 --> 00:32:07,200
point seven years ago or so, right from everything that

684
00:32:07,240 --> 00:32:09,640
they have to offer, and I've never had any complaints

685
00:32:09,640 --> 00:32:13,480
iuthentification of it. It's honestly nice how easy it works

686
00:32:13,480 --> 00:32:16,720
from an API perspective. If I have to generate a notification,

687
00:32:16,799 --> 00:32:18,640
how to send it to them, and then how to

688
00:32:19,359 --> 00:32:21,759
managing devices, which I've had to do before in terms

689
00:32:21,839 --> 00:32:25,240
of my you know, P and S token on Apple

690
00:32:25,440 --> 00:32:27,960
and my fire based token on Android and which messages

691
00:32:28,000 --> 00:32:30,559
can you get and can't you get. I've written that

692
00:32:30,599 --> 00:32:32,640
code before to manage it, and I'd rather never do

693
00:32:32,720 --> 00:32:33,119
it again.

694
00:32:33,480 --> 00:32:40,279
Speaker 3: So you also hint did a thing that I've talked

695
00:32:40,319 --> 00:32:43,160
to a bunch of mobile devs about, which is making

696
00:32:43,200 --> 00:32:46,559
sure the Android and iPhone versions are utterly in sync.

697
00:32:46,640 --> 00:32:49,559
Speaker 2: Like if you had a parent's one with an iPhone

698
00:32:49,559 --> 00:32:52,599
more than an Android and the app was much different. Yeah,

699
00:32:52,839 --> 00:32:56,599
like that that, I'm surprised how upset people get. Yeah,

700
00:32:56,640 --> 00:32:58,640
why does iPhone have this and I don't have it

701
00:32:58,640 --> 00:32:59,240
on Android?

702
00:32:59,359 --> 00:33:02,839
Speaker 4: Yeah, And for us, before Blazer was the web was

703
00:33:03,319 --> 00:33:06,559
incredibly honesting like, I can't emphasize how bad you could

704
00:33:06,759 --> 00:33:09,000
see your live busting on web because it was just

705
00:33:09,200 --> 00:33:11,440
it was never built, that never had priority of what

706
00:33:11,519 --> 00:33:14,200
was there. And now what's nice is because we have

707
00:33:14,279 --> 00:33:17,000
all of our shared code and a shared class library.

708
00:33:17,480 --> 00:33:20,640
If I have to add a new button, I'm putting

709
00:33:20,680 --> 00:33:23,359
it in one spot, I'm quickly testing all three devices

710
00:33:23,359 --> 00:33:27,039
and it's out to production right after that. You know,

711
00:33:27,119 --> 00:33:28,640
it's it's quick.

712
00:33:29,160 --> 00:33:34,880
Speaker 2: And what are the three devices? iPhone, Android and browser browser? Okay, yeah, yeah?

713
00:33:35,000 --> 00:33:38,960
Do you do you much phone specific testing? Like do

714
00:33:39,000 --> 00:33:41,319
you care which iPhone or which Android device?

715
00:33:41,839 --> 00:33:47,400
Speaker 4: We more sot Android because of the possibilities almost being endless, right.

716
00:33:47,519 --> 00:33:51,000
Speaker 2: Yes, we recall it the drawer broken dreams for a reason.

717
00:33:54,119 --> 00:33:57,920
Speaker 4: For for iOS, we only care really about the version

718
00:33:57,960 --> 00:34:00,519
of iOS that we support. I don't know if you know,

719
00:34:00,640 --> 00:34:04,279
but iOS had a breaking change between iOS seventeen and

720
00:34:04,319 --> 00:34:09,320
eighteen that impacted Mali Hybrid because of that IP address

721
00:34:09,400 --> 00:34:11,320
zero do zero do zero dot zero bug and they

722
00:34:11,320 --> 00:34:13,679
took that away, but Maui was using that to spin

723
00:34:13,760 --> 00:34:17,360
everything up, and you know that encouraged us to do

724
00:34:17,440 --> 00:34:20,639
more testing around that. But yeah, really, just always changes at.

725
00:34:20,599 --> 00:34:23,559
Speaker 2: That point, well, and Apple is so insisted on getting

726
00:34:23,559 --> 00:34:25,519
into the latest version of iOS all the time, which

727
00:34:26,079 --> 00:34:28,440
is I think a little annoying for consumers but pretty

728
00:34:28,440 --> 00:34:29,320
good for devs.

729
00:34:29,639 --> 00:34:34,079
Speaker 1: And it's good. It's good for consumers because security, you know,

730
00:34:34,320 --> 00:34:37,880
and fewer problems. Apple is still the most secure mobile

731
00:34:38,239 --> 00:34:40,920
platform there is because they own it top to bottom,

732
00:34:41,000 --> 00:34:41,440
and it's.

733
00:34:41,320 --> 00:34:44,840
Speaker 2: Part of that. Part of that is enforcing homogeity. It's

734
00:34:44,880 --> 00:34:48,000
always the latest version. Yeah, yeah, and with you and

735
00:34:48,039 --> 00:34:49,960
it's certainly from a dev perspective if you're willing to

736
00:34:50,039 --> 00:34:52,760
jump through iOS hoops because they are iOS hoops, at

737
00:34:52,880 --> 00:34:54,920
least it's one os you more or less have to

738
00:34:54,960 --> 00:34:58,039
care about, correct. Yeah. But I've definitely talked to folks

739
00:34:58,079 --> 00:35:00,920
who they have to have a Pixel device, they have

740
00:35:01,000 --> 00:35:03,880
to have a Samsung device, yeah, you know, and then

741
00:35:03,920 --> 00:35:07,800
it gets questionable after that, like those are those are

742
00:35:07,840 --> 00:35:09,800
the two? And it's at that point you're like at

743
00:35:10,039 --> 00:35:10,920
seventy percent.

744
00:35:11,559 --> 00:35:13,679
Speaker 4: Yeah, and foldables whole other.

745
00:35:14,800 --> 00:35:17,599
Speaker 2: Yeah, you do you do foldable testing? Good? Lord? Really,

746
00:35:17,960 --> 00:35:19,840
I just held up a foldable nice.

747
00:35:19,760 --> 00:35:22,039
Speaker 4: Yeah, only because our product owner has one, so he'll

748
00:35:22,039 --> 00:35:23,960
tell me immediately if something doesn't work.

749
00:35:23,840 --> 00:35:26,519
Speaker 2: Because that's what he's testing on, so he cares about Yeah,

750
00:35:26,559 --> 00:35:29,679
well that's all that changes your media queries completely, right, Yeah,

751
00:35:29,679 --> 00:35:30,760
you have to change the rendering.

752
00:35:31,119 --> 00:35:34,159
Speaker 4: Yeah, and some of it's nice in terms of most

753
00:35:34,159 --> 00:35:37,440
of the mobile devices kind of work immediately on tablets

754
00:35:37,440 --> 00:35:40,280
and larger screens because I'm writing the same code for

755
00:35:40,320 --> 00:35:43,039
web anyway. Right, we kind of have that mindset as

756
00:35:43,039 --> 00:35:46,039
a developer from dam one because all of my code

757
00:35:46,039 --> 00:35:47,920
for IYO with Sandre and the browser are coming from

758
00:35:47,920 --> 00:35:51,079
one spot. I'm already thinking about twenty device screen sizes

759
00:35:51,119 --> 00:35:54,239
as I'm going here, right, so you know, making sure

760
00:35:54,280 --> 00:35:57,480
that works, localization works, all this stuff is now up

761
00:35:57,519 --> 00:36:00,679
in the forefront of a developer instead of kind of sure.

762
00:36:00,760 --> 00:36:04,679
Speaker 2: And they're absolutely iPad fanatics. Yes, if it's not perfect

763
00:36:04,679 --> 00:36:07,119
on the iPad, they lose their minds.

764
00:36:06,880 --> 00:36:07,960
Speaker 4: Yes, yep.

765
00:36:08,320 --> 00:36:12,599
Speaker 2: Yeah. So it's just that that issue continues to exist

766
00:36:12,679 --> 00:36:15,599
and it's not simple, like you really do think about

767
00:36:15,599 --> 00:36:18,559
how you make your UI in the different board screen

768
00:36:18,599 --> 00:36:21,280
constrained correct, much less tested.

769
00:36:21,639 --> 00:36:25,360
Speaker 4: Yeah. No, we even on some of our differences between

770
00:36:25,440 --> 00:36:27,360
like mobile and web. Right, we might write a component

771
00:36:28,559 --> 00:36:31,000
that renders some UI content, but then we have other

772
00:36:31,039 --> 00:36:33,719
logic that's Hey, if you're in a browser over this size,

773
00:36:34,119 --> 00:36:36,400
I'm prompting it in a dialogue, as opposed to if

774
00:36:36,400 --> 00:36:38,880
it's on iOS, it's just a full screen new page

775
00:36:39,039 --> 00:36:42,880
and blazer for it to work. Right, And yeah, yeah,

776
00:36:43,079 --> 00:36:44,159
gets complicated, But.

777
00:36:44,119 --> 00:36:46,920
Speaker 2: It sounds like you have a tooling team because you

778
00:36:46,920 --> 00:36:48,400
guys have multiple products, so it makes sense to have

779
00:36:48,400 --> 00:36:51,440
a tooling team that just worries about Okay, I'm going

780
00:36:51,519 --> 00:36:54,800
to make this new collecting text from the user interface.

781
00:36:55,280 --> 00:36:57,679
Here's how we'll render on an iPhone. Here's how it'll

782
00:36:57,679 --> 00:37:00,159
render on an iPad. Here's how it'll render on on

783
00:37:00,239 --> 00:37:03,000
pixel and so forth, like it's and how render on

784
00:37:03,079 --> 00:37:05,920
web like. You are making different versions and still make

785
00:37:05,960 --> 00:37:07,519
it look close to the same.

786
00:37:07,719 --> 00:37:10,599
Speaker 4: Yeah, yeah, a lot of that's still on us in

787
00:37:10,679 --> 00:37:12,079
terms of how we want it to look. But the

788
00:37:12,159 --> 00:37:16,000
components are nice and effective. They all have accessibility in mind, right,

789
00:37:16,039 --> 00:37:19,159
they all have different screen sizes in mind and all

790
00:37:19,199 --> 00:37:21,960
that stuff, So how we use them. It's kind of

791
00:37:22,000 --> 00:37:23,360
hard to mess up, I'll put it that way, right,

792
00:37:23,360 --> 00:37:24,960
we can, but it is harder to mess up.

793
00:37:25,039 --> 00:37:26,840
Speaker 1: Yeah, And you can test, right, you can test the

794
00:37:26,960 --> 00:37:29,519
mobile device just by shrinking the browser, right, right, and

795
00:37:29,519 --> 00:37:33,039
it's essentially what you do, you test the reactivity of it. Yep, Richard,

796
00:37:33,039 --> 00:37:34,800
do you remember when we used to do shows on

797
00:37:34,880 --> 00:37:37,519
mobile and the Tablet Show and all that stuff. Yeah,

798
00:37:37,559 --> 00:37:40,159
and we would always say, you know, what is the

799
00:37:40,239 --> 00:37:45,599
trade off between making your UI look like the platform UI,

800
00:37:45,920 --> 00:37:51,119
like iOS Android and looking like your branded thing? And

801
00:37:51,559 --> 00:37:54,719
it seems like people were more concerned back then about

802
00:37:55,320 --> 00:37:57,719
making an iOS app look like an iOS app and

803
00:37:57,760 --> 00:38:00,159
making an Android app look like an Android app. No,

804
00:38:00,239 --> 00:38:03,280
I just don't think that's such an issue, do you.

805
00:38:03,639 --> 00:38:06,039
Speaker 2: I don't think I think you're right. I think Jobs

806
00:38:06,159 --> 00:38:08,679
was big on skemorphic design, and he wanted you know,

807
00:38:08,719 --> 00:38:10,440
there was always a threat they wouldn't let it go

808
00:38:10,480 --> 00:38:12,400
through the store if you didn't make it look like

809
00:38:12,440 --> 00:38:15,519
an iPhone app. Yeah, And so there was a time

810
00:38:15,519 --> 00:38:18,119
when that mattered. And then Facebook came along and said nope,

811
00:38:18,239 --> 00:38:22,119
Facebook looks like Facebook. Yeah, and some and then corporate

812
00:38:22,199 --> 00:38:25,039
internal You're like, no, it looks like corporate internal. Yeah.

813
00:38:25,079 --> 00:38:27,440
And I mean, and I do think Tyler falls into

814
00:38:27,440 --> 00:38:30,239
this category. You have a bunch of different apps and

815
00:38:30,599 --> 00:38:33,559
you see an advantage to a common look and feel. Absolutely,

816
00:38:33,599 --> 00:38:35,360
But I'm not going to let you go, Nathan on

817
00:38:35,440 --> 00:38:38,800
the whole accessibility thing. So do you spend some time

818
00:38:38,920 --> 00:38:43,599
on visually impaired or audible player, like how different folks

819
00:38:43,599 --> 00:38:44,440
can use this app?

820
00:38:44,599 --> 00:38:47,440
Speaker 4: Yeah, we do. We Again, what's nice is a lot

821
00:38:47,440 --> 00:38:50,320
of the components kind of have support for that already, right,

822
00:38:50,360 --> 00:38:54,440
all the area labels and what's there the other pieces.

823
00:38:54,840 --> 00:38:58,000
Because we're on a whole bunch of buses across the

824
00:38:58,119 --> 00:39:01,280
US of Canada, we see laws coming out all the

825
00:39:01,320 --> 00:39:04,079
time that kind of require this, right Colorado, if you've

826
00:39:04,119 --> 00:39:06,760
worked with something in that state recently, you kind of

827
00:39:06,800 --> 00:39:09,000
know that they have this initiative right now that on

828
00:39:09,159 --> 00:39:12,639
June of this year, people are starting getting fined if

829
00:39:12,679 --> 00:39:15,880
it's not accessibility out of the box. Right, So we

830
00:39:16,000 --> 00:39:18,480
kind of have that in mind, knowing how public facing

831
00:39:18,519 --> 00:39:20,440
it can be and all that sort of stuff.

832
00:39:20,400 --> 00:39:22,760
Speaker 2: And often public sector expected to be the forefront of that.

833
00:39:22,840 --> 00:39:25,360
Speaker 4: You need to sell it first, yeah, correct, Right, the

834
00:39:25,440 --> 00:39:27,320
law comes from the government, the better the government better

835
00:39:27,320 --> 00:39:28,559
be compliant, right, So.

836
00:39:28,639 --> 00:39:32,519
Speaker 2: Totally yeah, So and yeah, when you think about phones, like,

837
00:39:32,559 --> 00:39:33,880
there's a lot of different ways to do that. You

838
00:39:33,920 --> 00:39:36,960
could you could provide this whole interface as audio only,

839
00:39:37,360 --> 00:39:39,599
correct theory if you think it through properly.

840
00:39:40,000 --> 00:39:43,039
Speaker 4: Yeah, And we've talked about that before. We're we were

841
00:39:43,039 --> 00:39:45,000
going through the app a couple months ago. We're like, yeah,

842
00:39:45,000 --> 00:39:47,199
you know, we can improve a few areas and really

843
00:39:47,320 --> 00:39:50,079
start and dial in some things in. What gets complicated

844
00:39:50,159 --> 00:39:53,480
is the map, Right, how do I open gl screen

845
00:39:53,599 --> 00:39:57,039
kind of explain what's going on? So we've talked about

846
00:39:57,480 --> 00:39:59,079
how we can kind of accomplish that.

847
00:39:59,280 --> 00:40:01,000
Speaker 2: Yeah, I think you would. I mean in the end,

848
00:40:01,079 --> 00:40:04,039
if somebody else was operating that app on behalf of

849
00:40:04,239 --> 00:40:06,519
somebody and describing what was going on, they don't be

850
00:40:06,639 --> 00:40:09,199
that precise. It's like, yeah, the bus is in motion,

851
00:40:09,440 --> 00:40:11,480
it is this far away from the stop is expected

852
00:40:11,480 --> 00:40:15,679
at this time? Correct?

853
00:40:15,719 --> 00:40:18,679
Speaker 4: Yeah, And it's it's kind of how we want to

854
00:40:18,679 --> 00:40:20,400
see how far we can go with. It's kind of

855
00:40:20,400 --> 00:40:21,880
what we're starting to play around with, right, because I

856
00:40:22,199 --> 00:40:26,719
might have a kid in sixth grade and a kid

857
00:40:26,760 --> 00:40:28,719
in tenth grade, and one's going to the middle school,

858
00:40:28,719 --> 00:40:30,440
one's going to the high school. How do I explain

859
00:40:30,519 --> 00:40:33,159
now both buses and the relationship to where I am

860
00:40:33,199 --> 00:40:33,920
and where they're going.

861
00:40:35,039 --> 00:40:38,519
Speaker 2: Yeah, that's actually I think it'd be a really cool project.

862
00:40:39,880 --> 00:40:41,800
That'd be really fun. It's like, how do I do

863
00:40:41,880 --> 00:40:45,840
this well where people are wowed? Yeah? Yeah, I kind

864
00:40:45,840 --> 00:40:48,880
of like the idea of using that interface because the

865
00:40:49,000 --> 00:40:51,119
parent is driving and does want to know where their

866
00:40:51,159 --> 00:40:53,960
kid is and you don't want to take their eyes right, Like,

867
00:40:54,000 --> 00:40:57,800
can I pump this through bluetooth and tell you safely? Yep? Yeah,

868
00:40:58,079 --> 00:40:59,920
the bus is fine, Yep, it's good.

869
00:41:00,320 --> 00:41:04,360
Speaker 4: Yeah. We have some experience in this already because another app,

870
00:41:04,400 --> 00:41:07,800
this one's examined because it's only for Indurid, but we

871
00:41:07,840 --> 00:41:11,079
actually put tablets on school buses, and once the tablet

872
00:41:11,079 --> 00:41:13,920
goes on a school bus, a lot of them, I say,

873
00:41:14,079 --> 00:41:15,679
a fair amount of states have the rule where the

874
00:41:15,719 --> 00:41:18,480
screen just has to be black when the bus is

875
00:41:18,480 --> 00:41:22,039
in motion, So we are almost audio only from this

876
00:41:22,079 --> 00:41:24,280
point on right, how far away am I from my stop?

877
00:41:24,320 --> 00:41:26,800
Where am I taking my directions? So we basically a

878
00:41:26,840 --> 00:41:28,760
lot of our testing is done with just the screen

879
00:41:28,800 --> 00:41:31,920
off and how well can you understand what's going on

880
00:41:32,000 --> 00:41:33,519
with it being completely blocked out?

881
00:41:33,519 --> 00:41:34,119
Speaker 1: That's really cool?

882
00:41:34,199 --> 00:41:37,079
Speaker 2: Yeah, and have some great user acceptions testing to just

883
00:41:37,199 --> 00:41:41,679
watch what does a driver need in motion from my app?

884
00:41:42,199 --> 00:41:43,719
What will make them the most benefit?

885
00:41:44,239 --> 00:41:46,639
Speaker 1: Did you actually go around with drivers, not you personally,

886
00:41:46,639 --> 00:41:48,559
but somebody in the company go around with drivers and

887
00:41:48,599 --> 00:41:49,480
get their feedback.

888
00:41:49,880 --> 00:41:51,880
Speaker 4: I actually did, and there's some people in the DEB

889
00:41:51,920 --> 00:41:54,159
team that did so. I before I was a manager.

890
00:41:54,199 --> 00:41:56,559
I was actually one of the lead devs on that project,

891
00:41:56,599 --> 00:42:00,440
and I went across the US riding buses with you know,

892
00:42:00,480 --> 00:42:04,039
all sorts of kids on different districts, and you know,

893
00:42:04,239 --> 00:42:07,199
got to see it firsthand and how it can both impact.

894
00:42:07,239 --> 00:42:10,000
But how my mind is, I don't know. I think

895
00:42:10,000 --> 00:42:11,519
did the right thing putting a developer on a bus,

896
00:42:11,559 --> 00:42:12,840
because now all of a sudden, I think of twenty

897
00:42:12,840 --> 00:42:15,360
more problems I have to fix, seeing like what can happen.

898
00:42:15,440 --> 00:42:18,079
Speaker 2: Right, I've always been a big fan of this putting

899
00:42:18,320 --> 00:42:22,440
putting the developer into the position of the user. Yeah,

900
00:42:22,480 --> 00:42:25,559
because they do come away with exactly that. Oh I've

901
00:42:25,599 --> 00:42:28,000
seen how they actually use this, and we've been thinking

902
00:42:28,000 --> 00:42:29,159
about this entirely wrong.

903
00:42:29,320 --> 00:42:30,039
Speaker 4: Yep, yep.

904
00:42:30,239 --> 00:42:33,119
Speaker 2: It's powerful and it also connects up like we can

905
00:42:33,119 --> 00:42:36,440
get really abstracted from our software. Yes, like when you

906
00:42:36,480 --> 00:42:39,199
see it in the field helping people, it's pretty powerful.

907
00:42:39,440 --> 00:42:41,519
Speaker 4: Yeah. No, it's great to see the kind of the

908
00:42:41,559 --> 00:42:44,599
impact you can make, right, I mean I did not realize.

909
00:42:44,639 --> 00:42:47,360
I you tell people, before I worked at Tyler, I

910
00:42:47,400 --> 00:42:51,119
did not think this much about school buses. I started

911
00:42:51,159 --> 00:42:53,199
working at Tyler when I was when I was twenty,

912
00:42:53,280 --> 00:42:54,679
so I was only in a school bus two years

913
00:42:54,719 --> 00:42:56,199
before this, and I still did not think of a

914
00:42:56,199 --> 00:42:57,320
school bus as much as I do.

915
00:42:57,480 --> 00:43:01,039
Speaker 2: That you were more school bus savvy than most. Yeah, right,

916
00:43:02,119 --> 00:43:05,159
that's really funny. That's cool. Yeah, it's one of those truths.

917
00:43:05,159 --> 00:43:07,320
Like the great thing is when we do this kind

918
00:43:07,320 --> 00:43:11,880
of tech, right, it's it's almost invisible. Yeah. Yeah, you

919
00:43:11,880 --> 00:43:13,800
know the fact that they know you have to sort

920
00:43:13,800 --> 00:43:16,000
of have a moment ago. Wow, I whipped out my

921
00:43:16,119 --> 00:43:18,000
phone and it told me where my kid was. Yes,

922
00:43:18,119 --> 00:43:21,000
you know, it's seconds, including dealing with all you know,

923
00:43:21,079 --> 00:43:23,119
it's a it's a heavy snow day, but no, the

924
00:43:23,159 --> 00:43:26,159
bus is in motion and fine, yep, that's what you

925
00:43:26,199 --> 00:43:28,960
wanted to know, right, And that's really thinking about all

926
00:43:28,960 --> 00:43:30,719
the pieces that had to work together to make to

927
00:43:30,840 --> 00:43:34,360
give you a good answer. It just was impossible that going.

928
00:43:34,199 --> 00:43:37,760
Speaker 1: Back to the notifications thing, if what kind of notifications

929
00:43:37,800 --> 00:43:40,000
do you have? Obviously, like if the bus breaks down,

930
00:43:40,199 --> 00:43:42,639
side of the road, accident, whatever.

931
00:43:42,920 --> 00:43:45,559
Speaker 4: Yeah, so we support a whole bunch. So there's a

932
00:43:46,880 --> 00:43:50,000
couple of them are actually integrated directly with the tablet, which,

933
00:43:50,039 --> 00:43:53,079
again talking about saving computing resources, it's the tablet on

934
00:43:53,159 --> 00:43:56,320
the bus with the district's local map and where the

935
00:43:56,360 --> 00:43:59,320
bus currently is, where they're going next. Is the one

936
00:43:59,360 --> 00:44:02,280
doing all those ETA calculations. Right, here's the ten parents.

937
00:44:02,320 --> 00:44:04,119
I need to notify that I'm about to be at

938
00:44:04,119 --> 00:44:06,000
their stop, because I, as a driver, said it's my

939
00:44:06,079 --> 00:44:08,119
next one, and I got three more turns to make.

940
00:44:08,840 --> 00:44:11,199
So that's awesome, right, the tablets doing all the work

941
00:44:11,320 --> 00:44:12,599
for the mobile device.

942
00:44:12,760 --> 00:44:16,800
Speaker 2: Yeah, the nice little localized service there, it's the best

943
00:44:16,800 --> 00:44:19,920
position to know. The workload's not more than a tablet

944
00:44:19,960 --> 00:44:20,360
can handle.

945
00:44:20,400 --> 00:44:23,280
Speaker 1: It's well, I imagineflove bus breaks down. There's could be a

946
00:44:23,519 --> 00:44:25,679
there could be a marriad of reasons that you won't know.

947
00:44:26,239 --> 00:44:29,800
So the driver can type into the tablet. I'm sure

948
00:44:30,599 --> 00:44:34,920
ran out of gas in a tree, dog, you know,

949
00:44:35,000 --> 00:44:35,960
hit a deer or whatever.

950
00:44:36,119 --> 00:44:36,719
Speaker 2: Yeah.

951
00:44:36,840 --> 00:44:39,400
Speaker 4: Yeah, now they can let dispatch. No dispatch can let

952
00:44:39,920 --> 00:44:41,960
x number of parents know whether they based off the

953
00:44:41,960 --> 00:44:44,840
bus or even you know, we track how far along

954
00:44:44,880 --> 00:44:46,280
the buses and the route, so I only need to

955
00:44:46,320 --> 00:44:49,199
notify parents after said stuff. Right, I've made it halfway

956
00:44:49,199 --> 00:44:51,639
through and now I can tell the other half. We're

957
00:44:51,639 --> 00:44:54,199
working on next, and I'm interested to see how we

958
00:44:54,199 --> 00:44:56,679
can do this with Maui. But we're working on doing

959
00:44:56,679 --> 00:44:58,800
those live activities. Right. So if you've ever done an

960
00:44:58,880 --> 00:45:01,000
uber and you can kind of see live update, it's

961
00:45:01,000 --> 00:45:03,119
not quite a push notification, right, it's one of those

962
00:45:03,159 --> 00:45:05,639
live tracker ones. We're trying to play around with that

963
00:45:05,719 --> 00:45:08,320
to see how far we can take it. Where if

964
00:45:08,360 --> 00:45:10,159
you don't even have to open the app and now

965
00:45:10,159 --> 00:45:13,280
you're fully functioning off push notifications, that's kind of awesome, right,

966
00:45:13,360 --> 00:45:16,039
I kind of have less resources on my side and

967
00:45:16,039 --> 00:45:18,760
you're getting this up to date information without even opening

968
00:45:18,760 --> 00:45:19,119
the app.

969
00:45:19,440 --> 00:45:19,639
Speaker 2: Right.

970
00:45:20,079 --> 00:45:24,119
Speaker 1: You takes coordinates and stream them to a service somewhere

971
00:45:24,159 --> 00:45:26,199
and pick them up on the client, yeah.

972
00:45:26,039 --> 00:45:27,400
Speaker 2: Yep, just to be able to say, tell me when

973
00:45:27,400 --> 00:45:30,079
they're ten minutes out, yep, I can get there on time.

974
00:45:30,199 --> 00:45:33,199
That's clever. And again that would actually save resources and

975
00:45:33,280 --> 00:45:35,199
not leading on the app all the time. You're wasting

976
00:45:35,199 --> 00:45:36,119
anybody's time that way.

977
00:45:36,159 --> 00:45:38,280
Speaker 4: Correct. If I can get everything from that live activity,

978
00:45:38,280 --> 00:45:40,960
it's all technically feeding from that tablet device and then

979
00:45:41,480 --> 00:45:43,400
they never open the app. I mean, I'm like, we're

980
00:45:43,440 --> 00:45:45,840
not checking anything, right, it's all coming directly from the

981
00:45:45,840 --> 00:45:46,559
bus YEP.

982
00:45:47,000 --> 00:45:49,039
Speaker 2: All right, what have we talked about on this app?

983
00:45:49,400 --> 00:45:52,280
What is your testing strategy? Like? What tools are you

984
00:45:52,320 --> 00:45:53,800
using when you when you do a bill?

985
00:45:54,000 --> 00:45:57,920
Speaker 4: Yeah? Good question. So we do fare money unit testing.

986
00:45:58,719 --> 00:46:02,280
Our API is also in dot net, So that's all

987
00:46:02,400 --> 00:46:06,039
unit tested with X unit because all of our UI

988
00:46:06,159 --> 00:46:09,199
could have shared. We're using b unit to test as

989
00:46:09,280 --> 00:46:11,880
much as we can, right, So as much as I

990
00:46:11,920 --> 00:46:15,559
can test in terms of rendering or business logic I

991
00:46:15,639 --> 00:46:19,559
might have on the client side, testing that kind of

992
00:46:19,559 --> 00:46:22,760
like I would an API, right, And then we also

993
00:46:22,840 --> 00:46:25,679
use browser stack to kind of run into end tests

994
00:46:25,800 --> 00:46:29,559
on here, right, So launching a couple of devices, making

995
00:46:29,559 --> 00:46:32,360
sure they can do X number of user functions? Right?

996
00:46:32,360 --> 00:46:34,280
Can I add my student? Can I load the bus?

997
00:46:34,320 --> 00:46:36,400
Can I create a new account? All that sort of

998
00:46:36,440 --> 00:46:38,760
stuff on number of devices and let us know. So

999
00:46:39,320 --> 00:46:41,760
we don't have obviously coverage everywhere. I don't think anyone

1000
00:46:41,760 --> 00:46:44,440
ever does anymore. Just development moves so quick it's hard.

1001
00:46:44,519 --> 00:46:48,039
But those unit tests, especially the unit knowing that I

1002
00:46:48,079 --> 00:46:50,840
can kind of have the same rendering and the same

1003
00:46:50,960 --> 00:46:54,639
functionality really quickly. Is good to see.

1004
00:46:55,360 --> 00:46:57,679
Speaker 2: Absolutely, it's great. Anything you don't mean the same mistake

1005
00:46:57,719 --> 00:47:00,920
again and again make new mistakes correct. It's enough testing

1006
00:47:00,960 --> 00:47:03,000
in place to capture the last mistake so it doesn't

1007
00:47:03,000 --> 00:47:03,519
happen again.

1008
00:47:03,679 --> 00:47:05,599
Speaker 4: Correct. Yeah, we tried to raise many tests upfront, but

1009
00:47:05,639 --> 00:47:07,920
we have a policy here where if you get a

1010
00:47:07,960 --> 00:47:10,320
bug or something client reported, it has to get fixed

1011
00:47:10,320 --> 00:47:12,639
with the unit test. Right, It's always that regression case.

1012
00:47:12,760 --> 00:47:15,320
Speaker 2: Yeah, first make a test that fails, then fix it

1013
00:47:15,360 --> 00:47:18,559
and the test doesn't fail. Now it's actually fixed exactly.

1014
00:47:18,800 --> 00:47:22,119
Speaker 1: Yeah, we love the unit, love the gal Yep, just

1015
00:47:22,239 --> 00:47:22,880
good stuff.

1016
00:47:23,519 --> 00:47:24,639
Speaker 4: It's a great product. Yeah.

1017
00:47:24,679 --> 00:47:28,320
Speaker 2: Well, and also I try I appreciate you not fixating

1018
00:47:28,320 --> 00:47:30,719
on test coverage. Is that it is its own kind

1019
00:47:30,719 --> 00:47:31,119
of crazy.

1020
00:47:31,199 --> 00:47:33,039
Speaker 4: Yeah. If you were trying to shoot fround percent test

1021
00:47:33,039 --> 00:47:35,440
coverage and it's kind of you're never going to get

1022
00:47:35,440 --> 00:47:39,280
it right. Yeah. So the nice thing that developers can

1023
00:47:39,400 --> 00:47:41,920
understand is we give them all the tools and they're

1024
00:47:41,920 --> 00:47:43,800
able to do it upfront, because sometimes it is faster.

1025
00:47:43,840 --> 00:47:45,679
If I'm building an API service and I don't want

1026
00:47:45,719 --> 00:47:48,360
to keep trying to mock all this data from the tablet. Yes,

1027
00:47:48,360 --> 00:47:49,840
I'm going to write a unit test because I can

1028
00:47:49,880 --> 00:47:53,199
grab something that's usable and keep integrating over it. And

1029
00:47:53,239 --> 00:47:56,280
then the simple requirement of just if you're fixing a bug,

1030
00:47:56,320 --> 00:47:58,000
you have to write a test to something that people

1031
00:47:58,039 --> 00:47:58,840
can kind of swallow.

1032
00:47:58,920 --> 00:48:01,519
Speaker 2: And those auld end up being the best tests anyway. Yeah,

1033
00:48:01,800 --> 00:48:04,079
they were ones with a bug that made it to

1034
00:48:04,119 --> 00:48:06,639
the field and you wrote and the testing for it

1035
00:48:06,679 --> 00:48:08,800
is more complicated than you think. You would never write

1036
00:48:08,840 --> 00:48:11,639
that test out of your head just considering it. So

1037
00:48:11,719 --> 00:48:14,159
you write this better test and then you know, go

1038
00:48:14,239 --> 00:48:16,000
through that process and fix it and maybe it never

1039
00:48:16,079 --> 00:48:17,920
ever hits it again, but at least you won't have

1040
00:48:17,920 --> 00:48:18,280
that problem.

1041
00:48:18,360 --> 00:48:21,119
Speaker 4: You do mocking, We do, yes, well, we do mocking

1042
00:48:22,199 --> 00:48:25,159
because a lot of this data comes from our main application,

1043
00:48:25,239 --> 00:48:27,760
student transportation, right, and I don't want to have that

1044
00:48:27,840 --> 00:48:29,320
running for this, so we mock a lot of the

1045
00:48:29,400 --> 00:48:31,159
database and kind of just core data.

1046
00:48:31,320 --> 00:48:31,480
Speaker 2: Right.

1047
00:48:31,559 --> 00:48:33,960
Speaker 4: So the way this app works is a lot of

1048
00:48:33,960 --> 00:48:37,039
it's read only anyway, parents not really obviously updating their

1049
00:48:37,079 --> 00:48:39,079
location for the bus and all that. So we kind

1050
00:48:39,079 --> 00:48:41,000
of can get away with a little more mocking than

1051
00:48:41,000 --> 00:48:41,639
you might be able to.

1052
00:48:41,719 --> 00:48:44,159
Speaker 1: So you have like bogus services that run and send

1053
00:48:44,440 --> 00:48:45,920
mock data that kind of thing.

1054
00:48:46,000 --> 00:48:48,559
Speaker 4: Yeah, yeah, bogus services we use. I forget that. I

1055
00:48:48,599 --> 00:48:51,119
think it's called test containers. So even some of our

1056
00:48:51,119 --> 00:48:55,079
implementations with redtis and how we you know, not kill

1057
00:48:55,079 --> 00:48:58,239
our services by having one hundred thousand parents watch buses? Right,

1058
00:48:58,280 --> 00:48:59,800
how do we kind of scale that efficiently? We can

1059
00:48:59,840 --> 00:49:02,800
kind to do that cool mocking it, Yeah.

1060
00:49:02,880 --> 00:49:04,599
Speaker 2: And a lot of it, I think a lot of

1061
00:49:04,719 --> 00:49:06,719
Just because you've got a dozen parents want one bus

1062
00:49:06,719 --> 00:49:10,679
doesn't meaning you can catch that once. It's also correct,

1063
00:49:11,000 --> 00:49:11,559
very granular.

1064
00:49:11,719 --> 00:49:15,000
Speaker 1: Yea, sounds like a fantastic, very successful product.

1065
00:49:15,320 --> 00:49:17,199
Speaker 4: I appreciate it's It's been a fun one to work on.

1066
00:49:17,280 --> 00:49:22,440
I I selfishly like, uh like being involved in this project.

1067
00:49:22,440 --> 00:49:24,719
It was a really fun one for me to work

1068
00:49:24,760 --> 00:49:26,719
on the team, to work on you know, kind of

1069
00:49:26,719 --> 00:49:28,679
even development kind of picking this up from what we

1070
00:49:28,760 --> 00:49:30,880
do day on to work on this. Everyone's kind of

1071
00:49:32,039 --> 00:49:34,280
enjoyed the dev life cycle more than anything else. Right,

1072
00:49:34,280 --> 00:49:36,599
It's kind of easy to get going. We had someone

1073
00:49:36,679 --> 00:49:39,599
start a month ago and they were making fixes in

1074
00:49:39,599 --> 00:49:41,400
the app a couple of days later. Right, it was

1075
00:49:41,480 --> 00:49:42,599
just easy to pick up.

1076
00:49:43,119 --> 00:49:46,440
Speaker 2: That's a great metric. How many days to productivity for

1077
00:49:46,559 --> 00:49:48,719
a new worker. Yeah, great metric.

1078
00:49:48,960 --> 00:49:51,639
Speaker 1: Well, Nathan, what's next for you? What's in your inbox?

1079
00:49:51,840 --> 00:49:56,840
Speaker 4: More Blazer? So this has been this has been a

1080
00:49:56,840 --> 00:49:59,719
little test for us, and it's been successful enough where

1081
00:49:59,760 --> 00:50:01,880
we've got a few more around the corner that we're

1082
00:50:02,320 --> 00:50:05,280
working on. And I hope that, you know, dot net

1083
00:50:05,360 --> 00:50:08,360
kind of sees the benefit of Blazer as we get

1084
00:50:08,480 --> 00:50:10,519
more and more to this space and keeps dumping time

1085
00:50:10,559 --> 00:50:14,159
and energy into it, so hopefully I'll keep using as

1086
00:50:14,159 --> 00:50:15,840
long as I keep working here.

1087
00:50:15,920 --> 00:50:16,800
Speaker 2: So that's great.

1088
00:50:16,920 --> 00:50:20,440
Speaker 1: Well, thanks for sharing the story with us, and congratulations.

1089
00:50:20,559 --> 00:50:22,920
Speaker 4: Yeah, thanks for having me. It was fun being able

1090
00:50:22,920 --> 00:50:24,880
to talk to you guys and kind of share what

1091
00:50:24,920 --> 00:50:26,440
we did right here. You talk about Blazer all the

1092
00:50:26,480 --> 00:50:28,360
time at dot net rocks, so I wanted to be like, oh,

1093
00:50:28,400 --> 00:50:30,000
I got a story for that.

1094
00:50:30,119 --> 00:50:35,239
Speaker 1: He'll love you certainly, all right, Thanks again, and we'll

1095
00:50:35,280 --> 00:50:58,880
see you next time on dot net rocks. Dot net

1096
00:50:59,000 --> 00:51:01,880
Rocks is brought to you by Franklin's Net and produced

1097
00:51:01,920 --> 00:51:05,760
by Pop Studios, a full service audio, video and post

1098
00:51:05,760 --> 00:51:09,920
production facility located physically in New London, Connecticut, and of

1099
00:51:09,960 --> 00:51:14,440
course in the cloud online at pwop dot com.

1100
00:51:14,639 --> 00:51:16,760
Speaker 5: Visit our website at d O T N E t

1101
00:51:17,000 --> 00:51:21,039
R O c k S dot com for RSS feeds, downloads,

1102
00:51:21,159 --> 00:51:24,880
mobile apps, comments, and access to the full archives going

1103
00:51:24,880 --> 00:51:28,079
back to show number one, recorded in September two.

1104
00:51:27,960 --> 00:51:28,559
Speaker 2: Thousand and two.

1105
00:51:29,199 --> 00:51:31,519
Speaker 5: And make sure you check out our sponsors. They keep

1106
00:51:31,599 --> 00:51:34,719
us in business. Now, go write some code, See you

1107
00:51:34,800 --> 00:51:35,239
next time.

1108
00:51:36,159 --> 00:51:37,920
Speaker 4: You got jam Vans

1109
00:51:40,039 --> 00:51:44,760
Speaker 2: And

