WEBVTT

1
00:00:01.080 --> 00:00:04.799
How'd you like to listen to dot
net rocks with no ads? Easy?

2
00:00:05.360 --> 00:00:09.480
Become a patron for just five dollars
a month. You get access to a

3
00:00:09.480 --> 00:00:14.279
private RSS feed where all the shows
have no ads. Twenty dollars a month.

4
00:00:14.279 --> 00:00:18.440
We'll get you that and a special
dot net Rocks patron mug. Sign

5
00:00:18.519 --> 00:00:36.000
up now at Patreon dot dot NetRocks
dot com. Welcome back to dot net

6
00:00:36.119 --> 00:00:39.000
rocks. This is Carl Franklin and
this is Richard Campbell. We're here in

7
00:00:39.039 --> 00:00:45.359
our respective studios. I saw you
on Windows Weekly yesterday. Oh yeah,

8
00:00:45.399 --> 00:00:47.960
you watched the live stream of that. I did, So tell me what

9
00:00:48.000 --> 00:00:52.399
you're doing on Windows Weekly besides you
know, stirring up hat and discontent and

10
00:00:52.399 --> 00:00:56.640
whiskey. Yet I mean, in
the end, I've come to appreciate that

11
00:00:56.719 --> 00:01:00.600
Window. This all happened because Mary
Joe Foley left zd net. She went

12
00:01:00.640 --> 00:01:07.799
to work for Directions on Microsoft,
which is an analyst group mostly ex microsofties,

13
00:01:07.959 --> 00:01:14.000
and she's really their sort of lead
writer organizer, does the blogs and

14
00:01:14.000 --> 00:01:17.400
things like that. She super loves
the new roles like super Happy, but

15
00:01:17.439 --> 00:01:19.959
Windows Weekly was intmpatible with that,
and so Paul and Leo were doing it

16
00:01:21.000 --> 00:01:25.239
on their own for a few weeks, and Paul was so sad. You

17
00:01:25.239 --> 00:01:27.040
guys are buddies from way. We've
been buzzy for a long time. And

18
00:01:27.120 --> 00:01:30.719
so I came in and guested a
couple of times, and actually it was

19
00:01:30.799 --> 00:01:33.560
Leo. He said, like,
what are we going to do to make

20
00:01:33.599 --> 00:01:36.359
it permanent? That's kind of how
it worked with you and me and Dot

21
00:01:36.439 --> 00:01:40.680
Rocks. Isn't it that you were
Richard the toy boy? And then it's

22
00:01:40.719 --> 00:01:47.680
like, you know, how about
Yeah, that's very cool. I really

23
00:01:47.760 --> 00:01:49.519
enjoyed a conversation. It was great. Yeah, you know, Paul is

24
00:01:49.560 --> 00:01:53.000
a prolific writer, like a dozen
articles a week. It's insane, and

25
00:01:53.079 --> 00:01:57.879
in a lot of ways, the
show is basically going over what Paul's written

26
00:01:57.879 --> 00:02:00.239
that week, which is fine.
You know, I'm familiar with most of

27
00:02:00.239 --> 00:02:04.200
the subjects. I have opinions,
and it's easy to make fun of Paul.

28
00:02:05.680 --> 00:02:08.039
And then they added the you know, MJ used to do this closing

29
00:02:08.080 --> 00:02:12.000
bit on her malt liquor of the
week, her beer of the week.

30
00:02:12.199 --> 00:02:15.120
She has, like her craft beer. So they asked if I could put

31
00:02:15.120 --> 00:02:16.360
something there, and it's like,
how about brown liquor? And of course

32
00:02:16.400 --> 00:02:22.680
he's never forgotten you and I And
he refers to this day as the Bourbon

33
00:02:22.759 --> 00:02:30.560
Brothers going up there after a build
and they cracked that abler abunda the cask

34
00:02:30.639 --> 00:02:35.039
string. Oh my gosh, yeah, that stuff. He was gooned by

35
00:02:35.080 --> 00:02:37.840
the time we were done. Yeah, they ran a couple of clips of

36
00:02:37.919 --> 00:02:40.960
that day right where I think Paul
said something along the lines of I feel

37
00:02:40.960 --> 00:02:49.120
like I've been shot in the tongue. Anyway, So every week now I

38
00:02:49.240 --> 00:02:53.000
do a different thing on whiskey,
and they'd been clipping them and picking him

39
00:02:53.000 --> 00:02:59.439
into a playlist on YouTube as well, including over eight parts I described Scottish

40
00:02:59.439 --> 00:03:02.639
whiskey creation in detail, and if
you can buy those eight bits together two

41
00:03:02.680 --> 00:03:06.240
and a half hours. So basically, there's a two and a half hour

42
00:03:06.319 --> 00:03:08.599
geek out on making Scottish whiskey out
there if you want it. So you

43
00:03:08.759 --> 00:03:14.080
sent me a link to the live
recording. Yeah, but you guys don't

44
00:03:14.199 --> 00:03:17.120
publish a lot a live recording.
You publish an edited recording, right,

45
00:03:17.199 --> 00:03:21.520
Yeah, Yeah, they publish a
podcast essentially. Yeah, but yeah,

46
00:03:21.599 --> 00:03:24.120
it's still it's just that they also
stream it in some respects, and like

47
00:03:24.199 --> 00:03:29.159
every podcast, they're struggling financially Yeah. So they where they used to literally

48
00:03:29.159 --> 00:03:30.639
have a twenty four hour stream with
inter socials and stuff. They've cut that

49
00:03:30.719 --> 00:03:35.240
back to we just stream their recordings. Well, it's really fun, and

50
00:03:35.319 --> 00:03:38.560
I encourage all the dot ne Rocks
listeners to go check out Windows Weekly,

51
00:03:38.919 --> 00:03:43.400
just google it. It's at twit
dot tv and you can get more Richard

52
00:03:43.439 --> 00:03:57.719
Cammell that way, let's let's get
into better no framework. Awesome, All

53
00:03:57.800 --> 00:04:00.159
right, man, what do you
got? So a friend of mine said,

54
00:04:00.240 --> 00:04:04.280
have you seen this? It's a
YouTube channel YouTube dot com slash at

55
00:04:04.439 --> 00:04:11.719
Jim Browning. Jim Browning is a
is a faux name, a nom de

56
00:04:11.800 --> 00:04:16.800
plume. This is an anonymous guy
who finds scammers. Oh yeah, and

57
00:04:17.639 --> 00:04:25.800
and confronts them and in some cases
gets them convicted. Yeah, so tracking

58
00:04:25.800 --> 00:04:29.519
and identifying scammers who knock on my
front door, call me or shove pop

59
00:04:29.639 --> 00:04:33.399
ups onto my computer screen. Yeah. And there's a series of amazing videos

60
00:04:33.439 --> 00:04:36.839
here where he does just that.
Yeah, I know. And he's been

61
00:04:38.040 --> 00:04:43.240
like literally unraveled a huge scam group
in India. Like it's amazing, it's

62
00:04:43.399 --> 00:04:46.120
remarkable the work, But there is
a certain amount of just the shoden froud

63
00:04:46.160 --> 00:04:51.839
of the scammer being scam Absolutely,
I love it. You know, schadenfreud

64
00:04:51.959 --> 00:04:58.800
is the perfect word here. Yeah, so anyway, I really do appreciate

65
00:04:58.839 --> 00:05:00.759
that. And I have also noticed, and you may have noticed this,

66
00:05:00.839 --> 00:05:05.399
and I'm going to bring it up
on security this week later today that if

67
00:05:05.399 --> 00:05:10.720
you have any kind of Facebook page, not a personal page, but a

68
00:05:10.720 --> 00:05:15.279
Facebook page, a business page.
Irene is already nodding her head. She

69
00:05:15.360 --> 00:05:18.800
knows exactly what I'm talking about.
There's this scam that is going on where

70
00:05:19.040 --> 00:05:25.920
people send you, you know,
instant messages, Facebook messages saying they're representing

71
00:05:26.000 --> 00:05:30.000
Facebook and your page is about to
be shut down for some copyright infringements or

72
00:05:30.000 --> 00:05:33.519
whatever unless you respond to this,
and blah blah blah. And at first

73
00:05:33.519 --> 00:05:38.800
it really confused me because it was
very you know, official looking, and

74
00:05:38.839 --> 00:05:43.480
then I noticed I was getting the
same message from like Bob and you know,

75
00:05:43.720 --> 00:05:47.079
Ahmed and all these other people,
and I'm like, okay, this

76
00:05:47.160 --> 00:05:51.959
isn't real. Well, and the
accounts get deleted pretty quickly too, right,

77
00:05:53.079 --> 00:05:55.439
Like, yeah they do, but
I mean, talk about shadenfreud.

78
00:05:55.519 --> 00:06:00.759
I just have a strange urge to
reply bite me. Yeah, you know,

79
00:06:00.360 --> 00:06:04.360
don't, don't. But don't.
Don't do it. Yeah, don't

80
00:06:04.399 --> 00:06:08.439
you don't roll around with pigs.
Not only will you not get anywhere,

81
00:06:08.480 --> 00:06:11.800
but the pig enjoys it. Well. Dottna Rocks has gotten just a spate

82
00:06:11.920 --> 00:06:14.959
of these messages. So if you're
any of the people who sent them to

83
00:06:15.000 --> 00:06:20.240
me, bite me. And Franklin
Brothers Band, another page that I have

84
00:06:20.399 --> 00:06:26.920
has gotten slews of them, Like
I'm talking maybe thirty forty of them.

85
00:06:27.319 --> 00:06:30.560
Bite me, bite me, bite
me. Well, and you imagine,

86
00:06:30.560 --> 00:06:32.879
when you're not a technical person,
just how freaky this must be. Like

87
00:06:32.920 --> 00:06:36.720
it must be effective. But it
speaks to the state of spacebook, isn't

88
00:06:36.720 --> 00:06:41.800
it. It's just a cesspool.
Now. I like Spacebook better than Facebook.

89
00:06:41.839 --> 00:06:45.199
Actually that's a really much better word
for it. Yeah, because it's

90
00:06:45.240 --> 00:06:48.279
out and outer space sometimes you would
hope. Eh. Anyway, that's what

91
00:06:48.319 --> 00:06:50.720
I got. Richard who's talking to
us today, grabbed a comment off for

92
00:06:50.759 --> 00:06:55.680
show seventeen ninety seven, which we
did back in June of twenty two with

93
00:06:55.759 --> 00:06:58.800
one erneus you Tube. Maybe you've
heard her, never heard of her?

94
00:06:58.879 --> 00:07:01.199
Yeah, And oddly enough we were
talking about gRPC, who would have funken

95
00:07:05.920 --> 00:07:10.959
anyway. This comment comes from codepouter
otherwise known as Richard Rukima, who's also

96
00:07:11.040 --> 00:07:14.439
been a guest on the show back
in March twenty two and was also a

97
00:07:14.480 --> 00:07:18.680
student at Codena Castle in Tuscany.
Oh, I didn't know that. That's

98
00:07:18.720 --> 00:07:21.399
awesome. Yeah, he came to
Tuscany. It took me a while to

99
00:07:21.439 --> 00:07:25.199
figure out who he was because I've
never seen him in person. Yeah,

100
00:07:25.240 --> 00:07:27.279
yeah, he could get him,
get him out of character, right,

101
00:07:27.319 --> 00:07:29.759
What a great guy though, And
he's in your neck of the witz.

102
00:07:29.800 --> 00:07:33.240
I think, yes, somewhere nearby, not too close. I have deble

103
00:07:33.319 --> 00:07:39.439
check, but it might be in
said Alberta. Anyway. His comment is

104
00:07:39.759 --> 00:07:43.920
in reference to gRPC, where he
says you might want to review proto buffers.

105
00:07:44.319 --> 00:07:47.920
Yeah, for tro RPC and developers, and specifically the dot net library

106
00:07:47.959 --> 00:07:51.720
for proto buffers. I never understood
why I should create a proto buff file

107
00:07:51.759 --> 00:07:56.800
to describe a message in all the
languages from a dot apps which uses my

108
00:07:56.879 --> 00:08:01.160
ap API for my application. So
it's just one of those utilities. And

109
00:08:01.199 --> 00:08:05.879
I'll include a link on the show
to dealing with idiomatic dot Net with the

110
00:08:05.120 --> 00:08:09.160
protocol buffer's library. So yeah,
we went over at gRPC and Blazer in

111
00:08:09.240 --> 00:08:13.360
the masterclass thing, right, and
so uh yeah, protobuff is just part

112
00:08:13.360 --> 00:08:16.920
of the thing. That's the protocol
that gRPC uses. Yes, it's the

113
00:08:16.920 --> 00:08:20.040
way to go. So, Richard, thanks so much for your comment.

114
00:08:20.079 --> 00:08:22.680
I'm pretty sure you get a copy
of music Code by but ping me anyway,

115
00:08:24.240 --> 00:08:26.040
and we'll hook you up. And
if you'd like a copy of music

116
00:08:26.040 --> 00:08:30.120
Code buy, write a comment on
the website at dot NetRocks dot com or

117
00:08:30.199 --> 00:08:31.360
on the facebooks you publish every show
there, and if you comment there and

118
00:08:31.360 --> 00:08:33.480
everybody on the show, we'll send
you a copy of music Go buy.

119
00:08:33.679 --> 00:08:37.519
And you could also send us a
tweet or an x or whatever the hell

120
00:08:37.600 --> 00:08:41.080
they call him these days. I'm
at Carl Franklin, He's at Rich Campbell,

121
00:08:41.559 --> 00:08:43.720
or you could be like all the
other cool kids and go to mastonon

122
00:08:45.039 --> 00:08:48.639
I'm at Carl Franklin at tech hub
dot social, and I'm Rich Campbell at

123
00:08:48.679 --> 00:08:52.279
Mastodon dot social. Send us a
toot or tweet or an ex or whatever

124
00:08:52.320 --> 00:08:56.759
the bleep you call those things now. Yeah, it'll always be Twitter to

125
00:08:56.799 --> 00:08:58.279
me. I'm sorry, Elin,
Yeah, I'm okay with that. You

126
00:08:58.519 --> 00:09:03.120
You're evil. Plan is not worth
really that story? Yeah, no,

127
00:09:03.159 --> 00:09:07.399
okay, I'm not sorry. I'll
say it like my wife, my wife

128
00:09:07.519 --> 00:09:11.559
Kelly, she has a habit of
apologizing for no parent reason, you know,

129
00:09:11.120 --> 00:09:16.080
anything. And so she's realized this
and now she says sorry, not

130
00:09:16.240 --> 00:09:24.440
sorry, fuck you constantly. It's
the cutest thing. That's pretty good.

131
00:09:26.159 --> 00:09:30.320
She can't stop the reflex, but
she can follow it up. She's right,

132
00:09:30.480 --> 00:09:33.240
exactly. It's like a napid thought. And now it's just becoming one

133
00:09:33.240 --> 00:09:37.759
of those family things. All right, let's bring on Arena back for more.

134
00:09:37.960 --> 00:09:43.240
Arena Skirt two is a Microsoft MVP
for Developer Technologies, the Software architect,

135
00:09:43.240 --> 00:09:48.720
an independent consultant, and Microsoft certified
trainer, always in a quest for

136
00:09:48.720 --> 00:09:52.879
the latest trends and best practices in
architecture, dot net and the world around

137
00:09:52.919 --> 00:09:56.960
it. Also having more than two
thousand hours of delivered trainings, classings,

138
00:09:58.000 --> 00:10:01.519
workshops and presentations, she loves to
help others grow. Twice a year for

139
00:10:01.600 --> 00:10:05.320
five months, she teaches dot net
and c sharp to people that either want

140
00:10:05.360 --> 00:10:11.279
to switch careers and get into software
development or simply learn new things very very

141
00:10:11.279 --> 00:10:16.320
cool. She tries to lead by
example and believes in the importance of growing

142
00:10:16.360 --> 00:10:20.720
tech communities. She is the co
founder of dot net Yash user group that's

143
00:10:20.960 --> 00:10:30.519
I a SI Yash of course,
and dot Netdays dot ro conference where she

144
00:10:30.600 --> 00:10:33.759
tries to gather people that are willing
to share their knowledge with others or gather

145
00:10:33.879 --> 00:10:37.360
around in the community, and from
time to time she publishes articles on her

146
00:10:37.399 --> 00:10:46.120
blog Irena dot codes awesome domain there
codes. I got to look into that,

147
00:10:46.559 --> 00:10:50.759
Carl Frank, Oh, yeah,
welcome back. Thank you for having

148
00:10:50.759 --> 00:10:54.080
me. You're welcome. Great heard
of this dot Net Days dot ro.

149
00:10:56.600 --> 00:11:01.480
I wonder why, all right,
tell everybody come on, I'm coming to

150
00:11:01.559 --> 00:11:05.039
Yash. I'm gonna come. Yeah, I'm going to Yash. I've never

151
00:11:05.080 --> 00:11:07.639
been. I've been, you know, I've been to Cluge, I've been

152
00:11:07.679 --> 00:11:11.600
around Romania, but I've never been. I've done any Yeah, I haven't

153
00:11:11.600 --> 00:11:13.399
done gone to Yash. I'm like, I got to go to Yash.

154
00:11:13.879 --> 00:11:16.639
I don't know that I'll go to
Moldova while I'm there, because it's very

155
00:11:16.639 --> 00:11:20.000
close to Moldova. But it's kind
of a sketchy time to go to Moldova.

156
00:11:20.120 --> 00:11:24.240
Right now, I have a yash
on my wrist and you put a

157
00:11:24.240 --> 00:11:28.159
little ointment on it and it's going
away. So we're talking gRPC here.

158
00:11:28.320 --> 00:11:35.559
It's been a spell more than a
year last time we checked in, and

159
00:11:35.559 --> 00:11:37.399
and you've been writing new course words, stuff like there's more to no,

160
00:11:37.799 --> 00:11:43.120
right, yeah, there's more to
know and the technology is well well established.

161
00:11:43.360 --> 00:11:48.600
No, no, so it's in
the last year. There's been some

162
00:11:48.639 --> 00:11:54.879
innovations in gRPC, more stabilizations,
if that's a word, now I get

163
00:11:54.919 --> 00:11:58.200
that. Yeah, so gRPC is
here to stay if you ask me.

164
00:11:58.639 --> 00:12:03.600
And we're really talking gRPC web,
right, because that's what most developers use.

165
00:12:03.039 --> 00:12:07.080
Is that true? No, No, we're talking gRPC like back end

166
00:12:07.159 --> 00:12:13.440
technology, okay, for server for
the server bit server server, yeah,

167
00:12:13.799 --> 00:12:20.000
micro services, yeah, okay,
so gRPC web obviously for browsers. So

168
00:12:20.240 --> 00:12:26.759
it started at Google. But they
claim that gRPC is a recursive acronym called

169
00:12:26.600 --> 00:12:31.480
gRPC Remote Procedure Calls and so if
you go there, gRPC io, that's

170
00:12:31.480 --> 00:12:35.080
what they say. But they built
it for, as you say, micro

171
00:12:35.159 --> 00:12:41.480
services, you know, service to
service kind of interaction which doesn't require HTTP.

172
00:12:43.000 --> 00:12:48.879
Where they built it to fool people
that a distributed system is the monolith.

173
00:12:48.519 --> 00:12:54.879
Like the way they are behaving.
The g doesn't stand for Google.

174
00:12:56.240 --> 00:13:00.639
It used to, they claim it
doesn't now because they opened it up.

175
00:13:00.639 --> 00:13:03.360
I think you know, it's just
kind of a wink wink, you know.

176
00:13:03.440 --> 00:13:09.600
Yeah, it's just active re you
know, re acronym, yeah,

177
00:13:09.639 --> 00:13:13.080
reassigning. Yeah, that's pretty funny. So what's new? So the tooling

178
00:13:13.240 --> 00:13:20.360
is new and stable, which makes
me, uh, very glad that well

179
00:13:20.639 --> 00:13:28.000
Visual Studio caught up with everything that
happens in RPC, so now you don't

180
00:13:28.039 --> 00:13:33.919
have like problems with types not being
recognized and stuff like that. Okay,

181
00:13:33.960 --> 00:13:39.480
awesome. Uh. And also you
have like an option in Visual Studio right

182
00:13:39.519 --> 00:13:45.440
click at reference and you'll search and
find the proto file and it will automatically

183
00:13:45.440 --> 00:13:50.799
install some packages for you. And
that's awesome because we want straightforward things.

184
00:13:50.840 --> 00:13:54.879
We do not want to remember what
packages we need to install. And there's

185
00:13:54.919 --> 00:14:00.960
a bunch of them in for the
different places too. Yeah, you talked

186
00:14:00.960 --> 00:14:05.759
about types when you when you generate
a client or a service, you have

187
00:14:05.799 --> 00:14:11.360
to define these types in a in
a protofile, as Richard Rukumo was saying.

188
00:14:11.919 --> 00:14:16.200
And those types don't you know,
if the the actual types like string

189
00:14:16.360 --> 00:14:20.440
in whatever. Some of them map, but a lot of them don't.

190
00:14:20.679 --> 00:14:26.639
And I always find it difficult if
I'm doing anything complex to well, nowadays

191
00:14:26.639 --> 00:14:31.320
I ask chat GPT, but usually
I would go browsing for it. Uh.

192
00:14:31.519 --> 00:14:35.399
You know what is the proto type
that matches, you know, a

193
00:14:35.559 --> 00:14:39.080
double array or something like that.
Well, basically they they try to help

194
00:14:39.159 --> 00:14:46.360
us with something that is called Google
well Known types, which is the common

195
00:14:46.399 --> 00:14:52.039
ground between all languages out there.
But if you need something specific only for

196
00:14:52.120 --> 00:14:56.159
a specific language, you'll have to
mimic and code it yourself. In broad

197
00:14:56.200 --> 00:15:00.840
above. Yeah, you create your
own message type that has whatever. Yeah,

198
00:15:00.960 --> 00:15:05.080
I mean the doc liarly says protocol
buffers well known types. Yeah.

199
00:15:05.840 --> 00:15:07.919
Yeah, I presume as soon as
you go off this list, now you've

200
00:15:07.919 --> 00:15:11.159
got to figure it out. Yeah, but this is what proto buff's all

201
00:15:11.200 --> 00:15:16.159
about, right, Yeah, it's
not a language, it's a code generation

202
00:15:16.519 --> 00:15:22.840
template really yep. So basically the
fact that we're writing and defining the services

203
00:15:22.840 --> 00:15:28.000
and the types in proto buffs and
it makes us understand the new syntax and

204
00:15:28.039 --> 00:15:31.960
new types and all. It's overhead
for us. But you can also have

205
00:15:33.039 --> 00:15:37.639
the option of starting with your own
existing types and feels like code first gRPC

206
00:15:39.360 --> 00:15:45.960
due to a nice library written by
Mark Gravelle, which allows you to reuse

207
00:15:46.120 --> 00:15:50.600
if you have WCS for example and
you have types that are adnotating with data

208
00:15:50.600 --> 00:15:54.919
contracts and stuff like that, you
can get rid of proto buffs. That

209
00:15:56.039 --> 00:15:58.840
was one of the first things that
I wrote as well, and I showed

210
00:15:58.879 --> 00:16:02.279
it on Blazer Train. Back when
I first learned gRPC. It was like,

211
00:16:02.320 --> 00:16:03.480
well, what if I've already got, like, say, an API

212
00:16:03.600 --> 00:16:08.000
layer, I've already got my types
and I have to redo them and now

213
00:16:08.000 --> 00:16:12.360
I've got duplicate code and all that
stuff. So, yeah, it's a

214
00:16:12.399 --> 00:16:21.000
smart idea, just you make a
code generator generator kind of. I'm sorry

215
00:16:21.039 --> 00:16:23.360
when you say it that way.
It doesn't feel like a smart idea anymore.

216
00:16:25.600 --> 00:16:29.600
I know, it's weird. It's
a lot of weirdness. Yeah,

217
00:16:29.639 --> 00:16:33.320
but there's a problem. There's problems
there because you have to you know,

218
00:16:33.519 --> 00:16:38.000
every time that you get a call
or a bunch of variables, you have

219
00:16:38.080 --> 00:16:42.399
to convert them in the service,
right, so there has to be stuff

220
00:16:42.559 --> 00:16:47.960
in there that runs at run time, and you know, you have to

221
00:16:48.120 --> 00:16:52.639
take into account all the types.
It's a lot. Yeah, but basically,

222
00:16:52.759 --> 00:17:00.960
let's be honest, we all kind
of use basic types with our other

223
00:17:00.039 --> 00:17:08.680
types custom ones. So as long
as those are like interoperable where they can

224
00:17:08.960 --> 00:17:15.359
work with NOGS or something else.
Sure, Yeah, back to why do

225
00:17:15.440 --> 00:17:18.319
we build types? Why do we
do this? How does this really save

226
00:17:18.400 --> 00:17:22.279
us pain? It is just because
it's easier to pass in APIs. Basically,

227
00:17:22.359 --> 00:17:26.680
once you start with gRPC, you
have one source of truth, or

228
00:17:26.000 --> 00:17:30.279
you should have, like this protocol
buffers file. And the point of gRPC,

229
00:17:32.000 --> 00:17:36.839
beyond the fact that it uses a
binary serialization, is that now you

230
00:17:36.880 --> 00:17:44.759
can have a c sharp consumer that
talks with an OGS server and the only

231
00:17:44.799 --> 00:17:48.440
thing that these two have in common
is that protocol buffers file. That You're

232
00:17:48.519 --> 00:17:51.839
right, right, And that's kind
of the magical part about it is.

233
00:17:52.039 --> 00:17:56.160
Yeah, this is cross platform without
WS starring a whole lot of XML.

234
00:17:56.319 --> 00:18:00.119
Oh yeah, and performance is amazing. I mean I did some comparisons using

235
00:18:00.160 --> 00:18:07.200
gRPC web in Blazer to download five
thousand records from an API and then from

236
00:18:07.319 --> 00:18:12.880
gRPC, and it was like the
second and a half compared to like two

237
00:18:12.920 --> 00:18:18.640
hundred and fifty milliseconds. It's that
different. Yeah, and that's on the

238
00:18:18.680 --> 00:18:22.079
same sheme. But still, I
mean, that kind of ratio is what

239
00:18:22.119 --> 00:18:26.160
you can expect. And yet how
is the adoption arena, Like I still

240
00:18:26.160 --> 00:18:32.000
don't see the huge amount of tractions
For gRPC, there isn't a huge amount

241
00:18:32.039 --> 00:18:37.519
of traction. What I'm seeing in
my workshops and at the conferences, I'm

242
00:18:37.559 --> 00:18:41.880
hearing people talking about transitioning from WCF
to gRPC. Right, this is the

243
00:18:41.920 --> 00:18:48.119
most common scenario, and simply because
they want to get to Core. Yeah,

244
00:18:48.160 --> 00:18:52.799
and WCF is not going indeed,
and nobody's waiting for the open source

245
00:18:52.839 --> 00:18:59.480
version WCF exactly, and why would
you Anyway, there's a whole lot of

246
00:18:59.519 --> 00:19:03.759
pain. I don't know if you
guys remember, but uh yeah, configuration

247
00:19:03.960 --> 00:19:08.599
nightmare, that's what I remember.
That's why you guys, guys like the

248
00:19:08.680 --> 00:19:15.119
Germans, you know, Angle Grammar
and all those guys who were into WCF,

249
00:19:15.480 --> 00:19:18.799
they made the fortune on helping people
configure their WCF services well. And

250
00:19:19.079 --> 00:19:23.240
it also appeals to the mind with
that kind of precision, like as long

251
00:19:23.279 --> 00:19:26.839
as you do it right, it
works great. The moment you do it

252
00:19:26.880 --> 00:19:32.559
wrong, it's essentially undiagnosable. Yeah, I get that. Where gRPC seems

253
00:19:32.599 --> 00:19:34.519
way more stripped down. It seems
like the best part of dot net remoting,

254
00:19:34.799 --> 00:19:40.559
which I loved, like dot remoting
between two dot net services back in

255
00:19:40.640 --> 00:19:47.400
the day just worked like it was
nothing and it was fast form work with

256
00:19:47.480 --> 00:19:49.400
anybody else. No, So then
they say, hey, you know what

257
00:19:49.400 --> 00:19:55.680
you like more soap? They were
wrong, they were wrong. That was

258
00:19:55.720 --> 00:20:02.680
a lie. Soap did not clean
anything what they were thinking. Yeah,

259
00:20:02.880 --> 00:20:06.920
it wasn't simple, it didn't have
any objects, it didn't provide access,

260
00:20:07.079 --> 00:20:18.079
it wasn't a protocol. The name
was perfect. Oh man, I could

261
00:20:18.079 --> 00:20:23.440
do this all day. So I
know that you're, you know, peer

262
00:20:23.480 --> 00:20:27.599
to peer in the micro services world, so you're not really using the HDP

263
00:20:27.799 --> 00:20:36.039
web version of it. But I
was following the the way that what is

264
00:20:36.160 --> 00:20:42.240
to your what's the deal with HDDB
two and why didn't something work? And

265
00:20:42.319 --> 00:20:47.599
does it work? Now? I'm
sorry for being vague, but I just

266
00:20:47.680 --> 00:20:53.240
remember that there was a problem with
maybe Azure not supporting HDP two or and

267
00:20:53.240 --> 00:20:57.920
that's why gRPC web came around.
I don't know, something like that.

268
00:20:59.359 --> 00:21:06.079
I mean, they added grbc into
like dotnut world in twenty nineteen, but

269
00:21:06.440 --> 00:21:11.240
Asia wasn't supporting that until I don't
know last year or something. So it

270
00:21:11.279 --> 00:21:15.559
has been Oh yeah, it has
been a gap around it. Yeah,

271
00:21:15.559 --> 00:21:18.559
that's what I remember. And it's
not like HGB two is new. We

272
00:21:18.559 --> 00:21:22.680
were using it it's strangely, for
crying out loud, now they're talking HGDP

273
00:21:22.799 --> 00:21:27.720
three. Yeah, so it's not
even new anymore. HGB two is implemented

274
00:21:27.759 --> 00:21:33.119
in twenty eighteen in the Azure App
Service. Yeah, so it's been a

275
00:21:33.119 --> 00:21:37.079
few years. But still they didn't
get to it soon. No, I

276
00:21:37.079 --> 00:21:42.480
don't know why. Yeah, it's
we don't We don't know the cloud problems,

277
00:21:44.039 --> 00:21:45.079
and we don't want to know the
cloud problems. Oh yeah, cloud,

278
00:21:45.440 --> 00:21:49.039
those are hard problems. I don't
envy those guys and our browsers using

279
00:21:49.200 --> 00:21:55.279
HDTP two now, yes, they
are since when for a long time,

280
00:21:55.440 --> 00:22:00.279
for a long time, because it
was easy, relatively speaking. Work on

281
00:22:00.319 --> 00:22:03.400
the server was the hard part,
right, and it was. Yeah,

282
00:22:03.440 --> 00:22:07.960
twenty fifteen was when it was ratified
for twenty eight for browser side. Okay,

283
00:22:07.039 --> 00:22:10.599
So the fact that it took three
years for Azure to get it going

284
00:22:10.680 --> 00:22:11.880
just on app service, like they
still got to do a fund more and

285
00:22:11.920 --> 00:22:15.160
all those other pieces like that makes
sense to me. But you know,

286
00:22:15.200 --> 00:22:18.720
we were battling that ressulcilationship with twenty
thirteen, and one of the one of

287
00:22:18.720 --> 00:22:22.200
the reasons you used, strangely it
was that it did terminate HTP two for

288
00:22:22.279 --> 00:22:26.960
you. So these are little bits
of information that have fallen out of my

289
00:22:26.039 --> 00:22:30.880
ears, and you know, you
don't want to know this stuff like that's

290
00:22:30.000 --> 00:22:34.599
just it. It's it's not a
story worthy, you know. Yeah,

291
00:22:36.359 --> 00:22:40.359
this is the plumbing that makes the
Internet go around. Like once upon a

292
00:22:40.440 --> 00:22:44.920
time the web was just not that
robust and having two connections to a web

293
00:22:44.960 --> 00:22:52.680
server was a lot. So has
the performance or scalability of gRPC improved over

294
00:22:52.720 --> 00:22:57.240
the last year. I don't know
about it being improved, but I just

295
00:22:57.319 --> 00:23:03.039
recently wrote a blog about hosting in
Asia and it was so simple. I

296
00:23:03.160 --> 00:23:07.640
was like, okay, no,
no wonder that it took like three years

297
00:23:07.640 --> 00:23:15.039
for you to get app service and
gRPC workable with each other. So it's

298
00:23:15.160 --> 00:23:19.880
very nice right now. Oh good, So again you're talking too ling as

299
00:23:19.920 --> 00:23:23.400
your support. All of those things
have. It's come into its own.

300
00:23:23.799 --> 00:23:30.200
I don't know why gRPC isn't more
popular because it's certainly it's certainly so usable

301
00:23:30.400 --> 00:23:34.599
in just about every scenario where you
have communication. I think it's hard.

302
00:23:36.279 --> 00:23:38.519
I mean, once you have if
you have a green field app where you

303
00:23:38.599 --> 00:23:42.880
have services that need to talk with
other downstream services and you need some kind

304
00:23:42.920 --> 00:23:48.000
of I don't know request response scenario, then it's fine. But if you

305
00:23:48.079 --> 00:23:53.400
have a huge application that it's already
well established, it's hard in terms of

306
00:23:53.519 --> 00:23:57.200
time to retrofit, so it will
be a while. Yeah. No,

307
00:23:57.319 --> 00:24:00.400
no. And if you're used to
living in a land and then you just

308
00:24:00.559 --> 00:24:06.200
poorted that up to app service,
like you haven't really embraced a different view

309
00:24:06.200 --> 00:24:08.400
of the web. You still kind
of an iis person, yeap, And

310
00:24:08.440 --> 00:24:15.759
you havn't grasped these ideas of reverse
proxying and all of the other mindsets that

311
00:24:15.160 --> 00:24:19.440
other web approaches, you know,
not coming from dot Netland, not coming

312
00:24:19.440 --> 00:24:23.440
from Microsoft Land, embraced years ago. So you know, I still feel

313
00:24:23.440 --> 00:24:26.440
like we're playing catch up in a
lot of respect. You know, the

314
00:24:26.559 --> 00:24:30.519
day I shut off Internet Information Server
was the happiest day of my life.

315
00:24:30.920 --> 00:24:36.599
Dude, dude. You know,
I sent both of my old servers to

316
00:24:36.799 --> 00:24:40.279
the e cyclers to be torn,
you know, taken apart. And that

317
00:24:40.759 --> 00:24:44.880
was a good day. That was
a good I am now purging all racks

318
00:24:44.880 --> 00:24:48.799
out of my life. I want
to see it getting shredded. I'm not

319
00:24:48.000 --> 00:24:52.799
leaving until I see it shredded.
Well, I shredded the drives and then

320
00:24:52.880 --> 00:24:55.759
shut the chassis off. But the
motherboards were for twenty thirteen. I didn't

321
00:24:55.759 --> 00:24:59.160
owe anybody anything. I was on
my third set of fans in those things.

322
00:24:59.200 --> 00:25:03.799
But now I'm with you. You
know, it's a cloud world like

323
00:25:03.160 --> 00:25:08.359
less less is more at home absolutely, Plus you know, never mind that

324
00:25:08.480 --> 00:25:15.799
the security implications of Internet information.
Everything's on by default and yeah, yeah,

325
00:25:15.039 --> 00:25:19.039
it's the it's the Swiss army knife
with all the blades out right.

326
00:25:21.279 --> 00:25:25.960
So what have you been doing in
your day to day life with gRPC?

327
00:25:26.160 --> 00:25:33.839
That's interesting arena basically helping teams that
want to transition from w CF to gRPC.

328
00:25:34.039 --> 00:25:40.319
That's the most common center that I've
found. I currently try to keep

329
00:25:40.359 --> 00:25:45.359
an eye on it just because they
have some bits that really interest me.

330
00:25:45.799 --> 00:25:52.000
And when those bits will be established
and mature enough, I think it will

331
00:25:52.519 --> 00:25:56.720
generate a lot of traction in the
industry around gRPC. And I'm talking about

332
00:25:56.759 --> 00:26:03.000
gRPC transcoding, especially Oh you said
the T word, Oh yeah, all

333
00:26:03.119 --> 00:26:10.119
right, tell us transcoding. So
transcoding is a package that you can install

334
00:26:10.680 --> 00:26:15.960
and allows you to also call your
gRPC service from the browser as you would

335
00:26:17.000 --> 00:26:22.880
do with any other HTTP API.
But and it does the translation from Jason

336
00:26:23.119 --> 00:26:30.599
that you send in the browser to
your gRPC service. Now is this different

337
00:26:30.599 --> 00:26:37.200
from gRPC web kind of? I
mean the thing, yeah, accomplished is

338
00:26:37.240 --> 00:26:41.559
the same thing, indeed, But
it allows you from the browser to also

339
00:26:42.000 --> 00:26:49.599
specify endpoints and to define like routes
can bind variables from the routes. You

340
00:26:49.640 --> 00:26:56.000
can have body that are bound to
different models that you have as a parameter

341
00:26:56.119 --> 00:27:02.079
in your gRPC service. So I
don't power it's yep, indeed, But

342
00:27:02.240 --> 00:27:04.759
now there's a lot of manual work
that you need to do in order for

343
00:27:04.799 --> 00:27:11.559
that to work in a basic scenario. And what it happens currently is that

344
00:27:11.640 --> 00:27:18.480
if you have like an integration project
or a unit testing project for your gRPC

345
00:27:18.640 --> 00:27:23.039
service, and you also want to
add transcoding, bad luck. So nothing

346
00:27:23.079 --> 00:27:30.119
will work anymore, no gRPC for
you. Yeah, so take your mind

347
00:27:30.119 --> 00:27:34.039
off of it, don't go that
way. Yeah, things will be hard,

348
00:27:34.480 --> 00:27:38.160
and we should take a brief break. Yeah, let's do that.

349
00:27:38.279 --> 00:27:41.279
We're gonna pause here for these very
important messages and won't be right back,

350
00:27:45.119 --> 00:27:48.240
and we're back. It's dot net
rock some Carl Franklin, that's Richard Campbell,

351
00:27:48.400 --> 00:27:52.240
Yes, sir, and we're talking
to Arena skirt you about gRPC.

352
00:27:52.680 --> 00:27:59.440
What's new in the last year so
far, it's tooling and Azure support and

353
00:27:59.720 --> 00:28:03.119
training. I don't know if trans
coding is new. It's not necessarily new.

354
00:28:03.519 --> 00:28:08.039
Now it's like way better, way
better, right, improved, yeah,

355
00:28:08.079 --> 00:28:15.519
improved yes? And uh and the
WCF problem that's uh, well,

356
00:28:15.519 --> 00:28:18.599
this really comes to that core issue, like you're doing all these migrations.

357
00:28:18.160 --> 00:28:23.960
What are the typical problems that a
dot net dev coming from WCF have trying

358
00:28:23.960 --> 00:28:27.559
to understand g RPC? Like where
what do you find? You're explaining over

359
00:28:27.599 --> 00:28:33.319
and over again. So I think
the general the I think the concept of

360
00:28:33.440 --> 00:28:40.599
gRPC itself, the fact that it
resides and lives under the HTP two protocol

361
00:28:41.039 --> 00:28:47.920
and you have these small requests that
travel on one single connection. That's the

362
00:28:47.920 --> 00:28:52.920
hard beat that developers don't understand at
first. And then the fact that you

363
00:28:53.000 --> 00:29:02.039
have like different set of heathers poor
gRPC requests. You have that concept that

364
00:29:02.200 --> 00:29:10.279
is named trailers that comes sent as
a response from the server at the end.

365
00:29:11.160 --> 00:29:15.160
So there are a lot of new
concepts. Yeah. I mean you

366
00:29:15.319 --> 00:29:19.039
literally call it headers and then call
it trailers. Yeah, and you work

367
00:29:19.119 --> 00:29:25.839
with one type for both of them. So a dictionary, right, same?

368
00:29:26.160 --> 00:29:29.720
Yeah, So I mean and the
point being there called trailers because they

369
00:29:29.720 --> 00:29:33.200
come after the data. It's the
head of the data. But the type

370
00:29:33.240 --> 00:29:37.279
that we you were you use in
order to actually add key value pairs to

371
00:29:37.319 --> 00:29:45.519
those trailers. It's a metadata type
that you can also use to add headers

372
00:29:45.000 --> 00:29:52.359
that goes before in your RPC requests. So yeah, it's just a naming

373
00:29:52.440 --> 00:29:56.880
problem like the seam streets forward.
And yet the words are complicated. It's

374
00:29:56.920 --> 00:30:02.480
not the first industry to you confuse
headers and trailers. Think of movies,

375
00:30:03.559 --> 00:30:07.200
right, right, you see a
movie trailer is your introduction to the movie?

376
00:30:07.400 --> 00:30:10.680
Why is it called a trailer?
It should be called a header or

377
00:30:10.720 --> 00:30:15.039
an announcement. But it turns out
there's a reason for that because they used

378
00:30:15.039 --> 00:30:19.319
to show these double features and days
in the theater, and the trailers for

379
00:30:19.400 --> 00:30:23.400
the next movie or whatever would come
after the first one, right, And

380
00:30:23.440 --> 00:30:26.400
they just never changed the name.
They just never changed it because it's a

381
00:30:26.440 --> 00:30:32.839
word and everybody knows what it is. Right. So but the point I

382
00:30:32.839 --> 00:30:36.759
think this is your point arena is
like if you work in gRPC metadata,

383
00:30:36.839 --> 00:30:40.720
it's going to generate the headers and
the trailers as needed. No, it's

384
00:30:40.759 --> 00:30:45.960
basically you add some extra concepts to
the concept that you already know. Like

385
00:30:45.079 --> 00:30:51.880
the h protocol protocol it has headers, right, so you can add key

386
00:30:51.920 --> 00:30:57.279
value pairs in there. But underneath
these you also add key value pairs that

387
00:30:57.359 --> 00:31:03.160
are specific to a gRPC request.
And depending on the part where you're adding

388
00:31:03.200 --> 00:31:08.039
those with the gRPC request or with
the gRPC response, they're called differently,

389
00:31:08.720 --> 00:31:17.839
right, So so the header of
a response is called the trailer. Yeah,

390
00:31:18.119 --> 00:31:29.759
no problem, it's fine. I
take off my parachute and okay,

391
00:31:30.279 --> 00:31:33.400
I get it, and it is
all metadata. So it is good to

392
00:31:33.400 --> 00:31:36.720
think in the context of metadata.
Let me tell you about the package I

393
00:31:36.759 --> 00:31:38.880
want to send, and yeah,
some stuff's going to go up front,

394
00:31:38.920 --> 00:31:42.079
some stuffs going to go back.
It doesn't They don't get too sweaty about

395
00:31:42.079 --> 00:31:48.200
that. And even though it's weird
due to the fact that this is implemented,

396
00:31:48.920 --> 00:31:52.799
it's very helpful because you might have
things that don't fit in the message

397
00:31:52.799 --> 00:31:56.759
body basically and the request itself,
so you have to have a place where

398
00:31:56.799 --> 00:32:01.680
to shove those so well, and
I appreciate that you don't have a separate

399
00:32:01.680 --> 00:32:05.559
set of calls for the header and
the trailer and so forth. You just

400
00:32:05.640 --> 00:32:07.279
speak to metadata and you can do
all the things. So in a lot

401
00:32:07.319 --> 00:32:13.480
of ways it's simple. It's just
describing it well. It feels challenging,

402
00:32:13.759 --> 00:32:17.680
right, But there's also a nuance
here if we're talking about different gRPC modes,

403
00:32:17.799 --> 00:32:23.559
like when we have the server streaming
the server streaming modes or types what

404
00:32:23.720 --> 00:32:31.759
sends several GPS responses back to the
client, But only after all those messages

405
00:32:31.799 --> 00:32:37.759
are finished are sent, you'll get
those trailers, right, So this is

406
00:32:37.880 --> 00:32:42.640
the way you'll you'll know that,
Okay, I'm I'm done, I received

407
00:32:42.680 --> 00:32:45.839
all the responses. Here's the trailers. Yeah. Again, it's like the

408
00:32:46.000 --> 00:32:50.240
issue here with gRPC is that it
can be a lot of different things.

409
00:32:50.279 --> 00:32:54.400
It can be you know, a
synchronous streamer or just a messaging and so

410
00:32:54.519 --> 00:32:58.599
the rules are different. So yeah, you gotta be careful about using trailers

411
00:32:58.599 --> 00:33:00.640
and streaming mode because you don't know
when you're going to get them. It

412
00:33:00.839 --> 00:33:04.400
could be a while. Yeah.
Yeah, I like to use gRPC in

413
00:33:04.440 --> 00:33:10.359
place of you know, rest API
calls to controllers in a regular application,

414
00:33:10.480 --> 00:33:15.079
you know, in a Blazer app
for example. That's I really love it

415
00:33:15.200 --> 00:33:16.839
and of course, it wasn't meant
to do that, but it works.

416
00:33:17.079 --> 00:33:21.400
It works great fast, and yeah, I mean it's interesting you say that

417
00:33:21.440 --> 00:33:23.480
called that it wasn't meant to do
that. Yeah, it wasn't built for

418
00:33:23.519 --> 00:33:27.960
that. What is gRPC meant to
do? Like, it's not just about

419
00:33:27.960 --> 00:33:30.039
streaming either. Well, I mean, and we'll take that. I mean

420
00:33:30.039 --> 00:33:35.920
it was built for micro service communication, service to service. Yeah. I

421
00:33:35.960 --> 00:33:40.160
mean we can start like with a
short history. How many of us heard

422
00:33:40.240 --> 00:33:45.880
the term micro services, like I'm
developing micro services, the team develops micro

423
00:33:45.960 --> 00:33:52.759
services, when in fact those are
not are just services that respond with Jason.

424
00:33:52.319 --> 00:33:57.920
Yeah, and they passed that data
to each other with Jason. Yeah.

425
00:33:58.000 --> 00:34:02.960
So people defaulted to something that is
so called REST, like to describe

426
00:34:04.119 --> 00:34:08.039
an API that responds with Jason as
a data foremant, right, which made

427
00:34:08.039 --> 00:34:12.840
all the rest people angry. What
I remember about REST is mostly hearing I

428
00:34:12.880 --> 00:34:15.400
was doing it wrong. I have
so many beefs, and when we were

429
00:34:15.440 --> 00:34:20.119
talking to Grant Barrett about this,
I have so many beefs with people who

430
00:34:20.199 --> 00:34:22.000
use the wrong word for things,
and I just got to learn to let

431
00:34:22.000 --> 00:34:24.280
it go and let them play on
my lawn. It's going to be okay.

432
00:34:24.320 --> 00:34:29.039
You know it's going to be okay, but I still have some Here's

433
00:34:29.079 --> 00:34:35.719
one when people describe the Browning Milliard
reaction that they get on meat, they

434
00:34:35.719 --> 00:34:39.239
say it's caramelizing. No it's not. It's not caramelizing. There's no sugar

435
00:34:39.239 --> 00:34:43.719
in me. Little things like that. But people get a word for something,

436
00:34:44.519 --> 00:34:46.360
and you know, it's popular,
and so then they overuse it and

437
00:34:46.360 --> 00:34:51.199
they put it on everything, and
it's rest and the RESTful, which is

438
00:34:51.239 --> 00:35:00.159
a nuance. I'm happier with rest
dish. I'm not going for perfection your

439
00:35:00.199 --> 00:35:05.199
voice. I'm just trying to get
my wrap to work. Rested, well

440
00:35:05.280 --> 00:35:08.960
rested, it's well rested. Best
to keep it simple. Yeah, we

441
00:35:08.960 --> 00:35:13.920
should just start making up things and
asking people on the show. So how

442
00:35:13.960 --> 00:35:25.079
long do you let that proof?
Well? I use the oiling library oiler

443
00:35:25.519 --> 00:35:34.360
and then I wrap it, oh
man, and then it's only proofed when

444
00:35:34.440 --> 00:35:39.159
doubled, and then you go,
you bacon, let it icd to bake

445
00:35:39.239 --> 00:35:44.760
a bit ye down the pipeline to
the bank. Yeah, we're making work

446
00:35:45.159 --> 00:35:49.599
way way too an extreme that I
really enjoying. This all started with the

447
00:35:49.639 --> 00:35:52.800
metadata conversation in this naming problem,
and now we've promptly painted a worse one.

448
00:35:53.159 --> 00:35:57.400
You know, I'm presuming that the
folks who wrote this, we're trying

449
00:35:57.440 --> 00:36:00.480
to do a good job. And
it's still you know, there's some challenges

450
00:36:00.519 --> 00:36:07.000
here. Yeah, it's a technology
that needs to mature, and it will

451
00:36:07.079 --> 00:36:12.440
mature enough when people will use it, because otherwise it's just a tool out

452
00:36:12.480 --> 00:36:15.679
there that nobody uses and no one
will invest in developing it. Yeah,

453
00:36:16.079 --> 00:36:20.760
and can you make it simpler?
Like it does feel like gRPC is mature

454
00:36:20.840 --> 00:36:23.719
enough that we are looking at some
simplicity down to the tool links better.

455
00:36:23.960 --> 00:36:30.559
Yeah. Yeah, I think we're
we're getting there. It is taken a

456
00:36:30.679 --> 00:36:35.239
while. Oh yeah, I mean
there is a reason for it took for

457
00:36:35.280 --> 00:36:39.159
it to took that amount of time. I mean there was no support in

458
00:36:39.239 --> 00:36:45.000
Asia. I don't know about a
WS, but the only moment where you

459
00:36:45.000 --> 00:36:52.039
could use RPC in a real production
environment was if you had a virtual machine

460
00:36:52.639 --> 00:36:55.679
where you can't run the service.
Yeah. I don't really know how many

461
00:36:55.679 --> 00:36:59.880
people are doing that anymore. Yeah, that's not a reason to run a

462
00:37:00.079 --> 00:37:02.760
VM. Reason running VM is you're
trying to get you know, you're on

463
00:37:02.800 --> 00:37:06.719
your way off of it. Not
that I'm building new things. I need

464
00:37:06.760 --> 00:37:09.840
a VM for it. I fairly
enjoyed a moment where I had to run

465
00:37:12.280 --> 00:37:20.280
APIs as Linux services right machines start
though, see what's happening. I was

466
00:37:20.360 --> 00:37:22.840
very excited to do that. That's
a good way to slow people down from

467
00:37:22.880 --> 00:37:24.400
running a VM. You can run
a VM, but only if it's Linux.

468
00:37:27.519 --> 00:37:32.199
I had to learn if your commands
linux pseudo, make me a sandwich,

469
00:37:37.039 --> 00:37:42.360
Pseudo, make me a pseudo?
What are what is server reflection and

470
00:37:42.400 --> 00:37:46.920
how does that play into all of
this? So server reflection will allow you

471
00:37:47.039 --> 00:37:55.880
to discover what Jersey services you have
available inside an endpoint services operations in fact

472
00:37:58.559 --> 00:38:02.519
and the tooling. I'm going to
talk about tooling, especially about Postman in

473
00:38:02.559 --> 00:38:07.079
here, because now it allows you
to have like an ur L of the

474
00:38:07.119 --> 00:38:12.239
service and your server reflection, and
if you have reflection enable on the server

475
00:38:12.360 --> 00:38:17.480
side, it will discover what can't
you with that swagger for GRPs kind of

476
00:38:17.760 --> 00:38:23.199
kind of yeah yeah, And you
can also execute those because Postman will generate

477
00:38:23.599 --> 00:38:29.239
messages for you domulance, but you
can use those in order to call those

478
00:38:29.320 --> 00:38:34.559
operations. Nice. Would you use
discovery in production or is this really just

479
00:38:34.599 --> 00:38:37.480
a tool when you're developing to make
it easier to get hooked up. I

480
00:38:37.480 --> 00:38:44.360
think it's meant to be used with
an API gateway or something like that,

481
00:38:44.880 --> 00:38:47.800
right, so sort of a self
service discovery. Otherwise I don't see the

482
00:38:47.840 --> 00:38:52.960
point too like, I mean,
I think it kind of should know your

483
00:38:52.079 --> 00:38:55.639
end points right right, and never
if you have with this whole we don't

484
00:38:55.679 --> 00:39:00.639
know where end points are. Yeah, No, because it's g RPC is

485
00:39:00.679 --> 00:39:05.320
meant for point point communication, and
that assumes that you know where you will

486
00:39:05.360 --> 00:39:09.960
make requests and what should look like. Yeah, because you have the protocol

487
00:39:10.000 --> 00:39:16.039
buffers, files and types that describe
basically what you have available. Now you're

488
00:39:16.079 --> 00:39:20.000
twisting my brain. It was like, am I going to generate the proto

489
00:39:20.079 --> 00:39:30.440
buffs on the fly because I've used
discovery to making right now just because you

490
00:39:30.559 --> 00:39:35.480
could do it? Yep? Yeah, all right, I mean, but

491
00:39:35.519 --> 00:39:38.119
I appreciate you want something discoverable,
you know, nothing else, just to

492
00:39:38.239 --> 00:39:43.599
spit out an error message, right
you have a I don't know. This

493
00:39:43.599 --> 00:39:45.920
has been a thing for me lately. I kept trying to write a better

494
00:39:45.000 --> 00:39:50.400
error message because object not found pisses
everybody off. Like I kind of got

495
00:39:50.440 --> 00:39:52.480
this reflexed. If we made a
call and it failed, then I'd like

496
00:39:52.519 --> 00:39:57.320
to invoke the discovery and include it
in the log. So it's like,

497
00:39:57.360 --> 00:40:00.760
hey, you know, I failed
to make this call, but I did

498
00:40:00.760 --> 00:40:04.960
the discovery on it, and this
is what it's actually expecting. Like you've

499
00:40:05.039 --> 00:40:07.920
just shortened everybody's pain up a whole
bunch, right, you know, I

500
00:40:07.000 --> 00:40:09.480
have to go back and look.
It's like at the moment when I made

501
00:40:09.519 --> 00:40:13.000
this call, this is what it
was expecting, and this is what we

502
00:40:13.079 --> 00:40:17.079
SENTENCEDEAD. Yeah, but to be
here reflections So far, for me,

503
00:40:17.400 --> 00:40:22.800
it has been useful just to play
around to discover like what's available on the

504
00:40:22.840 --> 00:40:29.159
path that I know, and with
Postman because it allows you to like load

505
00:40:29.199 --> 00:40:34.639
the live RL and to see what's
there and to invoke it for testing purposes

506
00:40:34.679 --> 00:40:37.039
of course. Nice. Yeah,
and you like those tools, so it

507
00:40:37.079 --> 00:40:39.599
just gives you confidence of what's going
on. Oh yeah, I mean I

508
00:40:39.639 --> 00:40:45.639
always prefer a tool where I can
click three buttons to make sure the thing

509
00:40:45.679 --> 00:40:51.079
that I want it to work works. Then I'll manually create a client try

510
00:40:51.119 --> 00:40:55.599
to debugget see what's the error if
any, so it's easier. Yeah,

511
00:40:55.719 --> 00:41:00.679
I like that. I have a
question for you, a particular question about

512
00:41:00.719 --> 00:41:04.639
streaming in gRPC which I've been doing
for a while, but I'm not really

513
00:41:04.719 --> 00:41:07.320
sure what's going on under the hood. So in your protofile, if you

514
00:41:07.440 --> 00:41:15.800
have an RPC that returns a stream
of you know, some message type that

515
00:41:15.000 --> 00:41:22.320
instead of you know, a repeated
message type, then when you implement that,

516
00:41:22.400 --> 00:41:28.880
you would think that there would be
an I sink enumerable in there somewhere.

517
00:41:29.679 --> 00:41:35.039
But instead what you get is the
request and an I serve stream writer

518
00:41:35.320 --> 00:41:40.239
of your type, you know,
and then a server call context and then

519
00:41:40.360 --> 00:41:45.639
you basically can just await you know, response streamed dot write a sink whatever

520
00:41:45.679 --> 00:41:51.000
your object is in a loop and
it you know, I would I was

521
00:41:51.039 --> 00:41:55.639
expecting an I sink numerable in C
sharp. Is that's what's actually happening under

522
00:41:55.679 --> 00:41:59.440
the hood, To be fair,
I don't know for sure, but to

523
00:41:59.519 --> 00:42:04.719
be fair, I don't think that
is what happening under the food And I

524
00:42:04.760 --> 00:42:09.559
think they allowed us to have that
stream reader writer because you have the both

525
00:42:12.239 --> 00:42:15.920
just to make it as low level
as they can. Yeah. So you

526
00:42:15.000 --> 00:42:20.159
have this stream, your job to
do whatever you want with it. Yeah.

527
00:42:20.239 --> 00:42:22.480
I realized this is an answer I
could easily find by going and looking

528
00:42:22.519 --> 00:42:27.960
at the source code and get hub. But I just wondered if you knew.

529
00:42:28.079 --> 00:42:31.400
I'm sorry, I'm going to air
quote easily. Yeah, easily.

530
00:42:34.159 --> 00:42:37.800
You're right. I can. I
can answer this question myself because I can

531
00:42:37.039 --> 00:42:39.559
go and look at the source code, cut and paste it into get Up

532
00:42:39.559 --> 00:42:43.679
Go. Pilots say what the hell
does this mean? I can't ask chat

533
00:42:43.719 --> 00:42:45.360
jipity. I was just gonna say, or you could ask chat jipity.

534
00:42:45.559 --> 00:42:49.000
Yeah, we all went to the
same thing. Give me a large language

535
00:42:49.000 --> 00:42:52.199
model is going to answer this question
for me? Yeah? Not? Do

536
00:42:52.360 --> 00:42:54.199
I trust it? That's yeah,
Now it wasn't correct. How would you

537
00:42:54.239 --> 00:42:59.400
know? It's like it's a great
summarizer. If it wasn't a great summarizer,

538
00:42:59.599 --> 00:43:04.400
how would you you know? Yeah, sounds good, but always search

539
00:43:04.440 --> 00:43:07.199
and research of the fact that chad
jipt gives you. Yeah. Yeah,

540
00:43:07.239 --> 00:43:12.079
you can say where what what's the
get up page where you found this answer,

541
00:43:12.119 --> 00:43:15.880
and they'll say, I have no
idea where on Google? I'm sorry,

542
00:43:15.880 --> 00:43:20.239
this was derived from a from a
mirror site on four chance, so

543
00:43:20.280 --> 00:43:24.559
it must be correct. Oh my
goodness. Okay, we were talking about

544
00:43:24.599 --> 00:43:30.360
gRPC. I mean because it's good. It's really good. As much as

545
00:43:30.400 --> 00:43:31.519
I think we've been hard on it
today. Yeah, I know, it

546
00:43:31.559 --> 00:43:36.400
really is amazing. Yeah, but
I appreciate tools like Postman, like,

547
00:43:36.480 --> 00:43:39.840
oh okay, yeah, if I
was learning my way around gr PC starting

548
00:43:39.880 --> 00:43:45.000
to play with requests through Postman,
so you can watch the interaction, that's

549
00:43:45.039 --> 00:43:49.280
awesome. That's awesome. Yeah,
that's good stuff and get started. And

550
00:43:49.519 --> 00:43:57.239
it also makes the binary human readable, which is awesome for Postman because at

551
00:43:57.239 --> 00:44:00.400
first that was a show stopper,
like how can I a thing that is

552
00:44:00.519 --> 00:44:06.599
binary? I don't know how to
decipher binary? So this will makes it

553
00:44:06.880 --> 00:44:09.119
way easier. So training is a
big part of what you do. Are

554
00:44:09.199 --> 00:44:13.800
there any regular classes that you teach
online where we could learn this stuff?

555
00:44:14.360 --> 00:44:21.360
Not? Up until now, I'm
basically working on business to business contracts.

556
00:44:21.440 --> 00:44:24.440
So there are companies if they called
me, hey, we need to learn

557
00:44:24.480 --> 00:44:29.559
about this or that, I can
provide them some trainings around it. So

558
00:44:29.679 --> 00:44:32.039
if somebody who's interested in how many
what's the minimum number of people that you'd

559
00:44:32.079 --> 00:44:37.400
want to teach too? Minimum?
I did it for five people because the

560
00:44:37.440 --> 00:44:46.559
company wanted one, right, But
to be honest, I always prefer like

561
00:44:46.639 --> 00:44:52.480
having a bigger group of people.
Sure, so the questions are way easier

562
00:44:52.519 --> 00:44:59.440
to answer because from thirty people or
fifteen people, you'll always find some questions

563
00:44:59.440 --> 00:45:02.639
that are into and they will start
debates. And I always love the interaction

564
00:45:02.719 --> 00:45:07.719
with you put your hands back,
sit back. Now the classes it's called

565
00:45:07.719 --> 00:45:12.159
by itself. See what I started. Yeah, but it's everybody working on

566
00:45:12.159 --> 00:45:15.039
one project and you can get into
a discussion about the project like that's that's

567
00:45:15.079 --> 00:45:21.199
good to do, yeah, without
a doubt. But you also had some

568
00:45:21.480 --> 00:45:28.559
online training stuff too, some videos
maybe oh yeah yeah, yeah, uh,

569
00:45:28.880 --> 00:45:35.239
forget about those. No I'm joking, No, I'm joking. Oh

570
00:45:35.280 --> 00:45:38.159
it was so hard to record record
those. It's a whole new type,

571
00:45:38.239 --> 00:45:46.480
so different. Oh yeah, a
different life. Yeah. So uh oh

572
00:45:46.559 --> 00:45:52.039
yeah it's hard. So uh big
thumbs up for people that are doing this

573
00:45:52.159 --> 00:45:57.440
for a living or full time their
content creators. And to put your cell

574
00:45:57.440 --> 00:46:04.280
phone camera and to speak like coherently. Yeah, it's it's a thing.

575
00:46:04.760 --> 00:46:08.199
Yeah, So coherently coherence comes with
editing though, you know that's the good.

576
00:46:08.440 --> 00:46:15.559
Yeah, if you know how to
like take breaks or have stop words.

577
00:46:15.760 --> 00:46:19.679
And I learned that the hard way. I do that. I subscribe

578
00:46:19.679 --> 00:46:22.840
to the max Headroom style of editing, where everything I just jump cut all

579
00:46:22.880 --> 00:46:27.840
the time. Yeah. As long
as you can hear me and understand me,

580
00:46:27.920 --> 00:46:30.800
you can put up with a twitch
or two. Yeah I think that

581
00:46:30.920 --> 00:46:38.360
and the hard hair. Yeah yeah, exactly my mom up. So if

582
00:46:38.400 --> 00:46:45.280
anyone wants to to learn more about
gRPC, I have a class around four

583
00:46:45.320 --> 00:46:51.320
hours around g RPC from zero to
Hero. You can find the link on

584
00:46:51.360 --> 00:46:55.039
my blog. It's there with a
small discount. Excellent. Yeah cool.

585
00:46:55.079 --> 00:46:59.199
So what's next? What's on your
what's in your inbox? To be here?

586
00:46:59.440 --> 00:47:04.280
In need or want to start a
YouTube channel, I have a gazillion

587
00:47:04.320 --> 00:47:08.719
plans. Man. Oh yeah,
meteor, because I said I did this,

588
00:47:08.760 --> 00:47:14.719
I did the course. It's hard. It might be some learning curve

589
00:47:14.719 --> 00:47:19.159
for me with YouTube tool, but
it might also prove useful. Well.

590
00:47:19.199 --> 00:47:21.599
Feel free to reach out to me
because I've been doing it for a long

591
00:47:21.639 --> 00:47:23.400
time and if I can help in
any way, I will. For sure.

592
00:47:24.280 --> 00:47:29.480
I'm gonna book a slot in your
calendar. You got And of course,

593
00:47:30.079 --> 00:47:31.840
by the time this show comes out, we'll have already been to NDYC

594
00:47:32.000 --> 00:47:35.840
London and back again. But I
will you and I will see each other

595
00:47:35.880 --> 00:47:38.639
in the NDC London. Yep.
Very good. Anything else that we forgot

596
00:47:38.679 --> 00:47:43.920
to talk about arena. Nothing that
crosses my mind. All right. Well,

597
00:47:44.159 --> 00:47:45.920
on that note, let's call it
a show. Thanks very much for

598
00:47:46.000 --> 00:47:50.119
spending this time with us. It's
always great to talk to you same,

599
00:47:50.599 --> 00:47:52.800
Thank you. All right, We'll
talk to you next time on dot net

600
00:47:52.920 --> 00:48:19.000
rocks. Dot net Rocks is brought
to you by Franklin's Net and produced by

601
00:48:19.079 --> 00:48:24.000
Pop Studios, a full service audio, video and post production facility located physically

602
00:48:24.039 --> 00:48:30.000
in New London, Connecticut, and
of course in the cloud online at pwop

603
00:48:30.239 --> 00:48:34.119
dot com. Visit our website at
d O T N E t R O

604
00:48:34.199 --> 00:48:38.599
c k S dot com for RSS
feeds, downloads, mobile apps, comments,

605
00:48:38.800 --> 00:48:43.920
and access to the full archives going
back to show number one, recorded

606
00:48:43.960 --> 00:48:46.880
in September two thousand and two.
And make sure you check out our sponsors.

607
00:48:47.039 --> 00:48:51.679
They keep us in business. Now
go write some code. See you

608
00:48:51.719 --> 00:49:10.760
next time you got javans My is
home, then my Texes in a line. Credit ballh

