1
00:00:01,080 --> 00:00:05,679
How'd you like to listen to dot
NetRocks with no ads? Easy? Become

2
00:00:05,679 --> 00:00:09,839
a patron For just five dollars a
month, you get access to a private

3
00:00:10,000 --> 00:00:14,439
RSS feed where all the shows have
no ads. Twenty dollars a month will

4
00:00:14,439 --> 00:00:19,039
get you that and a special dot
NetRocks patron mug. Sign up now at

5
00:00:19,039 --> 00:00:23,800
Patreon dot dot NetRocks dot com.
Hey, Carl and Richard here with your

6
00:00:23,920 --> 00:00:28,800
twenty twenty four NDC schedule. Will
be at as many NDC conferences as possible

7
00:00:28,800 --> 00:00:33,280
this year, and you should consider
attending no matter what. Ndcoslow is happening

8
00:00:33,439 --> 00:00:38,560
June tenth through the fourteenth. Get
your tickets at ndcoslow dot com. The

9
00:00:38,600 --> 00:00:43,640
Copenhagen Developers Festival happens August twenty sixth
through the thirtieth. Early bird discount ends

10
00:00:43,679 --> 00:00:51,520
April twenty sixth. Tickets at Cphdevfest
dot com. Ndcporto is happening October fourteenth

11
00:00:51,560 --> 00:00:57,799
through the eighteenth. The early bird
discount ends June fourteenth. Tickets at Ndcporto

12
00:00:57,920 --> 00:01:14,200
dot com. And we'll see you
there, we hope. Hey, welcome

13
00:01:14,200 --> 00:01:18,319
back to dot net rocks. I'm
Carl Franklin and I'm Richard Campbell. I'm

14
00:01:18,519 --> 00:01:23,879
in my studio and Richard is in
Sweden. I am Sweden. I'm at

15
00:01:23,920 --> 00:01:30,439
the Castle komf At in Orbro,
nice just outside of Stockholm. Very nice.

16
00:01:30,599 --> 00:01:34,280
Yeah, and we're going to have
a really good talk today with Gyorgy,

17
00:01:34,920 --> 00:01:47,959
but first let's do better no framework
awesome in Richard, you probably saw

18
00:01:48,000 --> 00:01:55,920
this already, but DARPA revealed that
an experimental X sixty two a AI control

19
00:01:56,159 --> 00:02:02,079
jet successfully faced the human pilot during
an in air dog fight test carried out

20
00:02:02,159 --> 00:02:06,239
last year. Fue huh, yeah, you've probably read about it when it

21
00:02:06,400 --> 00:02:08,400
happened. But yeah, well and
to be clear, and X sixty two

22
00:02:08,680 --> 00:02:12,919
is an F sixteen, Yeah,
it's just customized. Yeah, they were

23
00:02:12,919 --> 00:02:16,479
already fly by wire, so they
just added in this new set of modules

24
00:02:16,479 --> 00:02:22,479
to fly itself. And apparently human
pilots were on board with controls to disable

25
00:02:22,520 --> 00:02:24,879
the AI system, but DARPAS says
the pilots didn't need to use the safety

26
00:02:24,879 --> 00:02:30,199
switch at any point. So isn't
that interesting and a little scary, But

27
00:02:30,360 --> 00:02:37,039
you know, just warfare. I
guess I would rather have something being flown

28
00:02:37,080 --> 00:02:40,719
by wire than flown by a pilot. But you know, for the pilot's

29
00:02:40,759 --> 00:02:46,520
sake. Anyway, Yeah, apparently
recently they put the head of the Air

30
00:02:46,520 --> 00:02:49,039
Force in the backseat of the F
sixteen. They did the same thing.

31
00:02:49,879 --> 00:02:53,479
So oh wow, they're bringing to
light that this is how good the software

32
00:02:53,560 --> 00:02:57,560
is now boys, right, Yeah, it does bring up a little Star

33
00:02:57,639 --> 00:03:00,919
Wars the angst, you know,
sort of, although you know, curiously

34
00:03:00,960 --> 00:03:06,400
they modeled all the Star Wars battles
after World War One air dogfights. So

35
00:03:07,199 --> 00:03:12,319
yeah, I was I was thinking
of Episode one, you know, where

36
00:03:12,360 --> 00:03:17,039
all the all the little drones were
flying around so like like little gnats,

37
00:03:17,639 --> 00:03:22,520
like little mosquitoes, just shooting darts
at people, and I thought, oh

38
00:03:22,560 --> 00:03:25,400
my god, that we have to
look forward to. Well anyway, yeah,

39
00:03:25,479 --> 00:03:30,960
the Air Force has this project called
Loyal Wingman, which is unmanned vehicles

40
00:03:31,120 --> 00:03:37,879
that they that the pilots are flying
with. So things are getting interesting,

41
00:03:38,080 --> 00:03:40,960
Yeah, they certainly are. So
anyway, that's what I got. Who's

42
00:03:40,960 --> 00:03:45,319
talking to us today, Richard Graby
Common top of a show eighteen fifty five,

43
00:03:45,360 --> 00:03:47,840
the one we did with Ted Neward
back in July last year. We

44
00:03:47,680 --> 00:03:52,599
were talking about multiple types of data
stores and called it multimodal. It is

45
00:03:52,680 --> 00:03:55,960
fun and Andy Perth had this somewhat
long comment, but I thought it was

46
00:03:57,000 --> 00:04:00,439
relevant to what we were talking about
today. Says if RM is the Vietnam

47
00:04:00,479 --> 00:04:02,280
of computer science, And of course
we were talking to Ted NewART. That's

48
00:04:02,319 --> 00:04:06,919
a reference to an old show,
old set a blog posts too, And

49
00:04:06,960 --> 00:04:12,199
my repeated trips back to some kind
of RM must make me the US State

50
00:04:12,199 --> 00:04:15,720
Department that would appreciate my citing that
paper When we were discussing how to layer

51
00:04:15,759 --> 00:04:20,199
an API on top of an instantly
complex XML model back around two thousand and

52
00:04:20,279 --> 00:04:25,600
seven, you know, that's the
whole complain about n Hybrid eight was that

53
00:04:25,680 --> 00:04:29,160
the XML was out of control.
Right, So I have to snark at

54
00:04:29,199 --> 00:04:32,560
your comments on the mosing of using
XML to describe XML scheme on two grounds.

55
00:04:32,879 --> 00:04:39,720
The first is XML bodies first tried
non XML formats with DTD. Okay,

56
00:04:39,800 --> 00:04:42,759
that did suck more, That's true, yeah it did. And two,

57
00:04:42,879 --> 00:04:46,040
slipping even further down the rabbit hole
of stuff for XML should be XML.

58
00:04:46,079 --> 00:04:49,079
They went even further to add a
programming language called XSLT, which I

59
00:04:49,160 --> 00:04:53,800
did some work in, which was
written in XML and should cure anyone if

60
00:04:53,800 --> 00:05:00,959
ever complaining about mere semicolons as too
much punctuation because you were usedckets in your

61
00:05:00,079 --> 00:05:05,680
life until you wrote exslt my god. You know. That's why. That's

62
00:05:05,720 --> 00:05:10,240
why we had tools to write that
stuff, because it was not Yeah,

63
00:05:10,399 --> 00:05:15,079
it was sorry for you the tool
for my sins. I used to teach

64
00:05:15,120 --> 00:05:20,160
a multi day course on the W
three XML schema to geologists and mining engineers.

65
00:05:20,519 --> 00:05:27,319
That insanely complex model encompass geos basically
located or bodies described as full three

66
00:05:27,360 --> 00:05:30,920
D structures somewhere in Australia. Wow. It also included laboratory essay results for

67
00:05:31,360 --> 00:05:35,480
a sampling chorus drill if to find
such bodies. All that as salted with

68
00:05:35,519 --> 00:05:41,600
a dash of Sarbanes Oxley traceability on
top. And that experience taught me two

69
00:05:41,680 --> 00:05:45,000
things. One never try to get
scientists from different disciplines to agree on a

70
00:05:45,079 --> 00:05:49,519
definition. And two, XML camera
respect complex object graphs. Liberal use of

71
00:05:49,560 --> 00:05:56,000
the ID attribute is the key.
Amazing extensible results are possible. So keep

72
00:05:56,040 --> 00:05:59,879
the government theme and borrow a sentiment
from Winston Churchill. I'd like to romose

73
00:06:00,079 --> 00:06:04,720
that XML is the democracy of data
structures. Well DBL liked it, but

74
00:06:04,800 --> 00:06:11,720
even he backed off eventually. Oh
man, yeah, I love it,

75
00:06:11,759 --> 00:06:15,519
but yeah, Andy, you're a
true believer. I like it. And

76
00:06:15,600 --> 00:06:16,800
so a copy of music Coba is
on its way to you. And if

77
00:06:16,839 --> 00:06:18,800
you'd like a copy of music,
go buy. I write a comment on

78
00:06:18,800 --> 00:06:23,360
the website at dot Netwrocks dot com
or on the facebooks. We publish every

79
00:06:23,399 --> 00:06:25,720
show there, any of the comment
there and everything in the show. We'll

80
00:06:25,759 --> 00:06:28,720
send your copy of music go by. Hey did I tell you that Code

81
00:06:28,759 --> 00:06:30,839
in a Castle is back on this
year? I heard rumor. Yeah,

82
00:06:30,920 --> 00:06:34,639
so it's going to be the last
week of September. Uh and it's in

83
00:06:34,720 --> 00:06:40,639
the same castle in Tuscany. So
if you missed out and you've you know

84
00:06:40,800 --> 00:06:44,480
you you regretted it, go check
it out Code in a Castle. And

85
00:06:44,560 --> 00:06:46,800
also the video from last year is
up there. So anyway, that's all

86
00:06:46,800 --> 00:06:50,279
I want to say about that.
So all right, let's bring Georgy on.

87
00:06:50,439 --> 00:06:56,839
Giorgi Dala kish Philly is a software
developer with more than a decade of

88
00:06:56,920 --> 00:07:00,680
experience. He works mainly with c
sharp as Peanut, Core rest, Maui,

89
00:07:00,879 --> 00:07:05,199
zamorin and any framework, Core AWS
and SQL server. So you know,

90
00:07:05,439 --> 00:07:09,079
just a couple of couple of interests
here and there, just a couple

91
00:07:09,120 --> 00:07:13,279
of things. He has also worked
with many other frameworks in systems such as

92
00:07:13,319 --> 00:07:16,279
graf ql, aspen at, NBC, as pnut, web API, w

93
00:07:16,439 --> 00:07:21,079
CF, Avalonia, wind Forms,
Oracle, and others. In short,

94
00:07:21,120 --> 00:07:25,120
he doesn't know what he wants to
be when he grows up. Nice Giorgi

95
00:07:25,279 --> 00:07:29,240
is an open source author and contributor
on GitHub and a member of the dot

96
00:07:29,279 --> 00:07:34,519
Net Foundation. Welcome Giorgy, thanks
for relining me to NERO. I have

97
00:07:34,639 --> 00:07:40,399
been listening to it since ten years, so, Ladie, I think.

98
00:07:40,480 --> 00:07:43,920
So it's a pleasure to be on
the show. Awesome. Yeah, well

99
00:07:43,959 --> 00:07:47,199
you're welcome. It's it's great to
have you here. We are really getting

100
00:07:47,279 --> 00:07:53,199
used to a lot of the people
that spent their career listening to dot net

101
00:07:53,319 --> 00:07:58,120
rocks now being guests. So it's
very cool. It's very cool to have

102
00:07:58,199 --> 00:08:03,160
you. So you're you're here to
talk about e F queries and debugging them

103
00:08:03,240 --> 00:08:07,279
visually. So that caught my interest. What do you what do you mean

104
00:08:07,319 --> 00:08:16,560
by that? Uh? Yeah,
so one of the biggest uh uh well,

105
00:08:16,600 --> 00:08:20,720
not not disadvantages, but one of
the biggest downsides of using the using

106
00:08:20,759 --> 00:08:26,279
an O n uh and any kind
of O M probably not just a framework

107
00:08:26,319 --> 00:08:33,879
qure is that it's it hides the
squirl behind the uh leak queries and uh

108
00:08:33,600 --> 00:08:39,399
m hmm. It's it tries to
obstruct or all the database related stuff behind

109
00:08:39,480 --> 00:08:46,519
the strongly typed quarries and C sharp
which is very comfortable, definitely, but

110
00:08:46,559 --> 00:08:52,360
it also can can cause some performance
issues if you are not careful biting your

111
00:08:52,440 --> 00:09:00,879
queries and uh and some people think
that you can just uh learnf core and

112
00:09:01,120 --> 00:09:07,200
you don't need to look at the
aneratedescul or scular is an old language and

113
00:09:07,399 --> 00:09:11,360
we don't need it anymore. But
yeah, it's kind of like if your

114
00:09:11,440 --> 00:09:15,279
car is going along fine and then
it just starts going very slow and you

115
00:09:16,120 --> 00:09:18,480
think, oh, this car stinks. I'm going to bring it into the

116
00:09:18,519 --> 00:09:22,559
shop, rather than you know,
having a look under the hood and actually

117
00:09:22,879 --> 00:09:26,159
trying to see what's going on,
you might discover the problem. Yeah,

118
00:09:26,159 --> 00:09:33,759
and actually it's not as frightening as
some people probably think, so for me

119
00:09:33,879 --> 00:09:41,559
personally. For me personally, when
I started programming about fifteen or seventeen years

120
00:09:41,600 --> 00:09:48,120
already ago, see, there was
no oren so if you needed to interrupt

121
00:09:48,120 --> 00:09:52,879
to this database, you've had to
write your as an ad hoc ascol in

122
00:09:54,360 --> 00:10:01,600
C shop code or storage procedures which
was even more in full and ye,

123
00:10:01,840 --> 00:10:09,279
so yeah, ants to framework is
definitely nice, but you should also definitely

124
00:10:09,600 --> 00:10:16,320
understand the s qol behind it,
and it will change change the way you

125
00:10:16,360 --> 00:10:22,679
write your framework queries and it will
also make your code and your application more

126
00:10:22,840 --> 00:10:30,519
performance definitely. So is it easy
to discover what SQL or sequel is being

127
00:10:31,879 --> 00:10:35,759
created under the hood and sent to
the SQL server engine with the NITY framework.

128
00:10:35,879 --> 00:10:39,320
Yeah, so even without the extensions
that I wrote that we will be

129
00:10:39,440 --> 00:10:46,200
talking about in a couple of minutes, it's it's still very easy with ANSTI

130
00:10:46,279 --> 00:10:52,279
framework with a nicer I think it's
two as quils drink building message in activity

131
00:10:52,440 --> 00:10:58,440
framework. That's to to get the
SQL and use the SQL or you can

132
00:10:58,600 --> 00:11:05,799
just also logging in your application and
when you develop your application, you if

133
00:11:05,840 --> 00:11:11,759
I use the generative s q in
the output window of visual Studio. Let's

134
00:11:11,759 --> 00:11:16,440
go back to to SQL string.
Is that extension available on the connection on

135
00:11:16,480 --> 00:11:22,879
the dB set on the Yeah,
it's it's available on on a on I

136
00:11:22,039 --> 00:11:28,879
queriableuble as far as I remember.
So you just take your query and call

137
00:11:28,000 --> 00:11:33,159
this too. It's called two query
strength. If if I remember it correctly

138
00:11:33,960 --> 00:11:39,559
and you will get the query strength
programmatically or as I said, you can

139
00:11:39,639 --> 00:11:45,200
configure logging and you kind of use
all the escubal statements in the output window

140
00:11:45,360 --> 00:11:48,440
of visuals to deal right. You
also hinted at a tool that you wrote

141
00:11:50,200 --> 00:11:54,200
that makes it much easier, so
let's talk about that. That sounds fun.

142
00:11:54,360 --> 00:11:58,240
Yeah, So so my two goes
a little bit beyond just cutting the

143
00:12:00,159 --> 00:12:07,039
squal query. So this is Visuals
to Do extension you downloaded and the stop

144
00:12:07,120 --> 00:12:13,559
directly from the marketplace. We tend
to it tirely inside Visuals Studio without linnk

145
00:12:13,600 --> 00:12:20,879
it and just searching for it in
the extensions. And essentially it's a debugger

146
00:12:20,960 --> 00:12:28,759
visualizer. So a depoper visualizer is
a kind of extension that lets you visualize

147
00:12:30,200 --> 00:12:35,000
the objects when you have are your
mouse pointer on the on the variable nice

148
00:12:35,279 --> 00:12:43,200
so just just just like you can
we all see string or XML or Jason

149
00:12:43,840 --> 00:12:48,879
in a nicely formatted way in visual
Studio. When you when you have your

150
00:12:50,159 --> 00:12:54,519
mouth your pointer on the eige qualiable
variable inside visual Studio and your items will

151
00:12:54,559 --> 00:13:01,120
hear in the over lave or whatever
it is called in vigosty and it will

152
00:13:01,159 --> 00:13:07,480
say query plan visualizer. So when
you click on it, the extension will

153
00:13:07,600 --> 00:13:13,919
actually fetch the query ecution plan from
the database and display it in a nice

154
00:13:15,080 --> 00:13:20,919
graphical HTML format it inside the web
you, so you can use the query

155
00:13:20,960 --> 00:13:28,399
itself, and also you can use
the plan that's the database it well as

156
00:13:28,960 --> 00:13:33,919
you can use the plans that the
database generated to your query under the hood.

157
00:13:35,000 --> 00:13:39,080
Can you tell us one more time
what that visual studio extension is called.

158
00:13:39,200 --> 00:13:43,960
Yeah, it's called theF core dot
visualizer, okay, and it is

159
00:13:43,039 --> 00:13:48,279
this using your Enerity framework dot exceptions
library under the hood. Which is the

160
00:13:48,279 --> 00:13:52,720
next thing I'd like to talk about. No, no, it is,

161
00:13:52,200 --> 00:13:58,720
It doesn't. It's separately. That's
a separate library. Okay. So my

162
00:14:00,000 --> 00:14:05,279
experience has been if you've got a
problem with an NDY framework call that,

163
00:14:05,399 --> 00:14:11,080
you should just rewrite it to call
a store procedure like that. That's that's

164
00:14:11,120 --> 00:14:15,679
the work around. Like I really
really appreciate what you're doing here that Yeah,

165
00:14:15,759 --> 00:14:18,799
I've written an expression in link and
that translates into this query and sequel

166
00:14:18,879 --> 00:14:26,840
server and it's a table scan So
it's sucking. But the I mean,

167
00:14:26,879 --> 00:14:28,960
I guess the question is is someone
actually going to modify the database to make

168
00:14:30,000 --> 00:14:33,080
this perform better, or do we
just switch to a store procedure and then

169
00:14:33,120 --> 00:14:37,600
the DBA can optimize the store procedure. Well, Richard, you're getting in.

170
00:14:37,639 --> 00:14:41,720
You're opening a can of worms here, man, wouldn't it first time?

171
00:14:41,000 --> 00:14:46,919
We're going back to the Ornini versus
Ted Neward's SmackDown here? Yeah?

172
00:14:48,000 --> 00:14:50,600
What do you think anyway? Kirogi, what do you think? Yeah?

173
00:14:50,720 --> 00:14:54,879
Well, well, no, you
don't necessarily out of town anything to start

174
00:14:54,960 --> 00:15:00,559
to put it, Jude Saint Scott, you can u Well, in most

175
00:15:00,559 --> 00:15:07,480
cases it's it's either a missing index
from your table, or or your query

176
00:15:07,559 --> 00:15:13,039
is just written in a way that
can't utilize the existing indexes on the table.

177
00:15:13,639 --> 00:15:20,799
Or maybe in some cases you just
have to redesign your table because it's

178
00:15:22,039 --> 00:15:26,879
it's not design the most optical way. So your queries are going to be

179
00:15:26,159 --> 00:15:31,159
slow nowhere, no no matter how
hard and no matter what you try.

180
00:15:31,360 --> 00:15:35,159
Yeah, I just question, is
I didn't write that query, anity framework

181
00:15:35,279 --> 00:15:39,519
wrote it? If it's not utilized
my index as well? What are my

182
00:15:39,679 --> 00:15:43,320
choices here? Like? What what
do you what are you actually able to

183
00:15:43,360 --> 00:15:48,440
do? So the most the most
common reasons that I have seen that your

184
00:15:48,480 --> 00:15:54,200
playery does not use indexes is for
example, so this is there's a term

185
00:15:54,639 --> 00:15:58,720
sargeble or surgeible queries. I think. So if you have a condition like

186
00:16:00,080 --> 00:16:03,679
there is a date of purse,
for example, in the database table,

187
00:16:03,960 --> 00:16:10,120
and you want to find all the
records where the year is, for example,

188
00:16:10,799 --> 00:16:15,279
two thousands, and if you just
uh she just call the date parts

189
00:16:17,720 --> 00:16:23,559
function in a school sell or date
dot year in C sharp and compare it

190
00:16:23,639 --> 00:16:30,639
to two thousands, then it's it's
it's impossible for the database to use an

191
00:16:30,000 --> 00:16:34,720
existing in depths even if it's there, because for for every record it has

192
00:16:34,759 --> 00:16:40,799
to calculate the year from the dates
on the fly, and it can't use

193
00:16:40,840 --> 00:16:42,960
the intepts. Yeah. Yeah,
so it's now going to process every road

194
00:16:44,000 --> 00:16:47,799
to do that for you. Yeah. Whereas if you gave it a range,

195
00:16:48,080 --> 00:16:51,679
you know, then it could actually
write a better where it could be

196
00:16:51,679 --> 00:16:55,320
in it. So yeah, So
in this case, for example, the

197
00:16:55,360 --> 00:17:00,639
solution will be to find our records
where data perse is more end two thousand

198
00:17:00,960 --> 00:17:07,119
first January and less oi equal than
two thousand December thirty one. And in

199
00:17:07,160 --> 00:17:11,359
this case you don't have any more
calpulations on the fly. You just give

200
00:17:11,440 --> 00:17:18,039
the range as you said that you
want all the records where the data pairth

201
00:17:18,119 --> 00:17:22,759
value is from this value until this
value, and as long as the indexes

202
00:17:23,319 --> 00:17:27,720
on the table, it will use
the index ent. It will be a

203
00:17:27,720 --> 00:17:33,400
lot faster because it will just scan
the subset of zeros that it needs to

204
00:17:33,599 --> 00:17:40,119
return your results. That's the most
common mistake I think I have seen.

205
00:17:40,240 --> 00:17:45,000
And it's also easy to make that
mistake because when you are started writing your

206
00:17:45,079 --> 00:17:48,759
query, it's natural to write.
It's like I said, if you don't

207
00:17:48,119 --> 00:17:52,240
think what's going on under the hood. So that's one of the reasons why

208
00:17:52,279 --> 00:18:00,319
it's important to understand what's going when
you wright to acquirying c shape which and

209
00:18:00,799 --> 00:18:04,920
you can't also blames it develop us
always because if you have just one hundred

210
00:18:06,079 --> 00:18:10,039
or one thousand dollars in your test
database, it is going to be fust

211
00:18:10,200 --> 00:18:14,400
so they can't even notice that there's
a problem on Dozi quotes no, And

212
00:18:14,400 --> 00:18:17,440
then you have a million rows and
you notice right away. Yeah, and

213
00:18:17,480 --> 00:18:21,200
you could still blame the developers,
let's face it, but I could see.

214
00:18:21,279 --> 00:18:25,400
You know, setting a date range
is kind of a nuisance because like,

215
00:18:25,480 --> 00:18:29,880
do you really go you know,
greater than equal to two thousand and

216
00:18:29,920 --> 00:18:33,440
one oh one oh one, and
you need time to those zeros zero zero

217
00:18:33,559 --> 00:18:41,119
and less than you know, twelve
thirty one and twenty three fifty nine fifty

218
00:18:41,200 --> 00:18:45,960
nine point nine ninety nine or you
know, or that'd be less than equal

219
00:18:45,000 --> 00:18:48,160
to Like Richard, we said we
weren't going to quote code on this show.

220
00:18:49,079 --> 00:18:52,079
We weren't going to read code.
But it's such a dead thing to

221
00:18:52,119 --> 00:18:56,640
say, hey, if the year
in this date is two two thousand,

222
00:18:56,759 --> 00:19:00,079
get it. Yeah, just not
understanding that you just defeated all in,

223
00:19:00,559 --> 00:19:07,799
Like the index doesn't have a chance
because it's not sargable because Georgy pulled that

224
00:19:07,839 --> 00:19:14,400
one out today, it's the correct
but not everybody knows it. But yeah,

225
00:19:14,480 --> 00:19:17,319
okay, but I mean that there
lies The point here is you're presumably

226
00:19:17,599 --> 00:19:21,119
as a developer, you're also responsible
to the database and you're just trying to

227
00:19:21,119 --> 00:19:23,640
figure out why. And so you've
assembled all the bits together to say,

228
00:19:23,839 --> 00:19:26,839
this is the query that's generated,
here's the query plan that it did.

229
00:19:27,599 --> 00:19:32,559
Yeah, now go figure it out. Like you've now got the ingredients to

230
00:19:32,599 --> 00:19:34,880
say, can I can I write
this as an expression that will query more

231
00:19:34,880 --> 00:19:38,400
effectively or do I have to go
to all the other approaches. Yeah,

232
00:19:38,440 --> 00:19:44,119
another thing to consider is if we
use this saying example, like, if

233
00:19:44,119 --> 00:19:49,799
you're searching for records data versus larger
than here two thousands, then it can

234
00:19:49,839 --> 00:19:56,119
I use index even if you write
it's quietly. But if see if the

235
00:19:56,279 --> 00:20:02,240
condition changes and you want records,
for example, from now fifty and it

236
00:20:02,319 --> 00:20:07,000
turns out that like ninety five percent
of your records in your database have data

237
00:20:07,039 --> 00:20:11,960
perse which is higher than ninety fifty
or ninety twenty or whatever, then the

238
00:20:11,039 --> 00:20:17,240
database may decide that it doesn't make
sense to use the indepths because I have

239
00:20:17,359 --> 00:20:21,440
to return all the almost all the
records that are in the table, So

240
00:20:22,000 --> 00:20:25,440
why bos are with the index.
So it will still not use the index

241
00:20:25,480 --> 00:20:30,119
because it's faster to just scan the
whole table and step the indext So you

242
00:20:30,240 --> 00:20:37,400
have to be careful with it because
depending on the type of data and depending

243
00:20:37,440 --> 00:20:41,680
on the conditions that you are putting
in the work close, it may decides

244
00:20:41,680 --> 00:20:45,519
to use the indevxce in one situation
and not use an index in another situation

245
00:20:45,599 --> 00:20:51,240
on a different type of records.
Sure, so databases are tricky, Yeah,

246
00:20:51,319 --> 00:20:53,519
it always is, And like I
love the one where they go you

247
00:20:53,559 --> 00:20:57,680
know, greater than January first and
less than December thirty first. It's like,

248
00:20:57,720 --> 00:21:02,000
you know, you just left off
all of this number thirty first people.

249
00:21:02,160 --> 00:21:06,160
Yeah, yeah, so it's probably
better to just write less than one

250
00:21:06,200 --> 00:21:11,359
Genuary of two thousand and one and
you yeah, we have anyone. Noah.

251
00:21:11,799 --> 00:21:15,920
I hate date math I hate it. I had a date math bug

252
00:21:17,119 --> 00:21:22,200
in one of my in my websites
just recently about listing gigs, like the

253
00:21:22,279 --> 00:21:23,720
day before the gig. It disappeared
from the site. Like, no,

254
00:21:26,160 --> 00:21:29,279
just a plus instead of a minus
or less than instead of a greater than.

255
00:21:29,960 --> 00:21:32,759
Yeah, I love it. I
know it's and it's these are the

256
00:21:32,759 --> 00:21:36,039
things we chase around, so,
you know, being able to see into

257
00:21:36,119 --> 00:21:38,880
the data set and answer a bunch
of questions. Did I write the link

258
00:21:38,960 --> 00:21:47,400
query wrong, did the actual output
query being correct? Or just badly perform

259
00:21:47,440 --> 00:21:49,240
it? Like how you have a
bunch of choices on how to fix it.

260
00:21:49,759 --> 00:21:53,480
If you tweak the database, you
tweak your expression, you could switch

261
00:21:53,519 --> 00:21:56,200
over to a different methodology, you
know, like you have a bunch of

262
00:21:56,319 --> 00:22:00,279
choices, but at least you know, you know that's that's that's that's the

263
00:22:00,319 --> 00:22:07,480
problem. Yeah. Yeah, so
this this extension supports simple seller and postcus

264
00:22:07,680 --> 00:22:11,839
so you can you'll see graphical quaripulin
fall for post of these databases. M

265
00:22:12,000 --> 00:22:15,880
hmm, it's cool. Yeah,
you can see if there are any table

266
00:22:15,920 --> 00:22:22,480
scans which which will make your query
slow. Yeah, if it's using indepsies,

267
00:22:22,799 --> 00:22:27,960
is its doing in deep scan or
indepsy or things like sets like reading

268
00:22:29,079 --> 00:22:33,880
and understanding quarduplants is a separate science. Probably don't set of skills. Although

269
00:22:33,880 --> 00:22:37,519
the documentation is better than it ever
was, it's it's easier now than it

270
00:22:37,599 --> 00:22:41,799
used to be used to be.
Really, you had to know what query

271
00:22:41,839 --> 00:22:48,359
plan statements were. Like, I
can sense thousands of document database users listening

272
00:22:48,359 --> 00:22:52,960
now, going, ah, sucks
to be you. Yeah, if we

273
00:22:52,960 --> 00:22:57,559
don't have to write any four loops
there, kiddo. Sometimes you need to

274
00:22:57,559 --> 00:23:03,960
look for data in your docum in
store too, right. Yeah. Now,

275
00:23:03,160 --> 00:23:06,640
if there was one right way to
do this, everybody would do it.

276
00:23:06,680 --> 00:23:10,319
The reality is there's a bunch of
ways to be successful, and there's

277
00:23:10,319 --> 00:23:11,720
a bunch of ways to get into
trouble, and it's good to have tuling.

278
00:23:11,759 --> 00:23:15,799
It will help you go down the
right path. True, So I

279
00:23:15,839 --> 00:23:19,480
know you said it before. It's
just an extension. But when you were

280
00:23:19,599 --> 00:23:22,799
explaining it how to use it,
I was thinking, what's the name off

281
00:23:22,839 --> 00:23:26,640
it? Again? So can you
go over like one more time, just

282
00:23:26,000 --> 00:23:30,720
how how you would use this?
It shows up as an extension. Where

283
00:23:30,720 --> 00:23:34,319
does it manifest itself in visual Studio? Yeah you can. Uh. So

284
00:23:34,400 --> 00:23:41,880
once you'll install it, you start
debugging your runs debubble as you would in

285
00:23:41,920 --> 00:23:47,920
any other case. You power over
your equeriable variables. So it's the equery

286
00:23:47,960 --> 00:23:51,759
and police a thins. You can't. You can't use a query plan.

287
00:23:51,880 --> 00:23:56,799
You need to have an eye queriable
and when you holler your mouse on the

288
00:23:57,160 --> 00:24:02,839
ee queriable variable in the in visual
Studio, you can. You will see

289
00:24:02,880 --> 00:24:08,039
a query plant visualizer under the magnifying
class that Visual Studio shows whenever you are

290
00:24:08,079 --> 00:24:12,519
trying to inspect variables. Yeah,
very cool. And when you click on

291
00:24:12,599 --> 00:24:18,359
the quare plant visualizer, it will
it will open a new window. It

292
00:24:18,400 --> 00:24:22,160
will take a second or two to
actually fetch the plan from the database,

293
00:24:22,480 --> 00:24:29,880
and it will render the planning in
an imbedded wheew control. That's very cool.

294
00:24:30,000 --> 00:24:36,759
If see database connection is slow or
the query takes more than five seconds,

295
00:24:36,799 --> 00:24:42,400
then it will time out because that's
the hard timeout limits by the visuals

296
00:24:42,440 --> 00:24:48,759
to do itself, so that's one
thing to keep in mind. That's great,

297
00:24:48,920 --> 00:24:55,240
and also it's uh, it's not
very helpful for queries where you have

298
00:24:55,880 --> 00:25:04,279
first or default dacing or COUNTYCIN or
similar queries which just materialize the results immediately

299
00:25:04,759 --> 00:25:11,920
and you don't have an equerable because
for such queries you don't have an equalable

300
00:25:12,000 --> 00:25:19,640
variable. So's you could remote the
calls to the two first and count or

301
00:25:19,640 --> 00:25:23,960
some and so on, but it's
it's not the same query now because you

302
00:25:25,039 --> 00:25:30,400
are fetching the coal least, not
just count or some or first titan.

303
00:25:30,680 --> 00:25:34,039
So it's nice to be able to
debug what you're actually using rather than have

304
00:25:34,119 --> 00:25:40,119
to piece the debugger just to see
it. That's cool. I guess maybe

305
00:25:40,160 --> 00:25:41,119
it's time to take a break.
When we come back, can we talk

306
00:25:41,160 --> 00:25:47,000
about the Enterity Framework exceptions library.
Yeah, just one thing that I wanted

307
00:25:47,039 --> 00:25:52,799
to add is that this extension uses
existing libraries to render the cirquel server and

308
00:25:52,920 --> 00:25:59,960
postlus quibulence. So I wanted to
say thanks to the source of those libraries,

309
00:26:00,119 --> 00:26:04,359
because without those products, I wouldn't
be able to build this extension.

310
00:26:04,400 --> 00:26:10,000
So yeah, good point cents again
for buildings, a schools, sever and

311
00:26:10,160 --> 00:26:15,640
postcuss visualizer libraries. Cool. Excellent, all right, hold that thought.

312
00:26:15,680 --> 00:26:22,920
We'll be right back after these very
important messages. And we're back. It's

313
00:26:22,920 --> 00:26:27,519
dot net Rocks. I'm Carl Franklin, that's Richard Campbell there, hey,

314
00:26:27,799 --> 00:26:33,640
and that is Georgy Dolla Kish Philly, and we're talking about Nity framework and

315
00:26:33,680 --> 00:26:40,319
what's going on under the hood.
And he's got a great visual studio extension

316
00:26:40,319 --> 00:26:42,160
that you can use to see what's
going on with your queries under the hood.

317
00:26:42,839 --> 00:26:48,279
And I want to bring up this
other a couple other actually really great

318
00:26:49,559 --> 00:26:56,839
GitHub reposts that you have. One
is Nity framework exceptions and the other is

319
00:26:56,039 --> 00:27:02,039
duc dB dot net. But let's
talk about the extensions exceptions right now.

320
00:27:02,039 --> 00:27:06,160
A new framework exceptions thing. Tell
us about that. So this is a

321
00:27:06,240 --> 00:27:14,599
libraries that started. I guess most
libraries start from an internal usage because some

322
00:27:14,599 --> 00:27:18,799
something that I found copying from one
project to another, and I decided,

323
00:27:18,920 --> 00:27:25,640
so we're a bit in a library
and publish thinking that others would find it

324
00:27:25,799 --> 00:27:30,599
useful. So what it does is, again when using anti framework, and

325
00:27:30,599 --> 00:27:36,200
let's say you have a table with
a unique constraint, for example, email

326
00:27:36,240 --> 00:27:45,039
address is a unique constraint in your
table, and you are inserting customers or

327
00:27:45,079 --> 00:27:48,559
whatever in your table, and if
you try to insert a record with the

328
00:27:48,680 --> 00:27:53,680
saying email, the database will throw
an error because the unique constraint is violated.

329
00:27:53,880 --> 00:28:00,079
And when in anti framework, this
means that you will get an t

330
00:28:00,160 --> 00:28:03,680
B updates exception in your c sharp
code. That think with that is that

331
00:28:03,799 --> 00:28:10,559
TB update exception doesn't really tell you
whether this was the unique constraint violation or

332
00:28:10,640 --> 00:28:17,759
the save the insert fild because of
some other error in the database detail somewhere.

333
00:28:17,839 --> 00:28:22,319
Yeah, so you you have to
get the iner exception of this TB

334
00:28:22,440 --> 00:28:27,599
update exception and gets the innermost exception, the deepest one. It's the start

335
00:28:27,599 --> 00:28:30,759
of the whole thing, right,
Like, that's the one that's all the

336
00:28:30,759 --> 00:28:33,039
way and is the one with the
original error, and then it cascades outwards.

337
00:28:33,119 --> 00:28:37,720
Yeah that's that's yeah. Usually that's
the most interesting one, which gives

338
00:28:37,759 --> 00:28:41,680
you the lowest level. Thank you
first, yeah, same time, definitely,

339
00:28:42,319 --> 00:28:45,799
now you're back. So yeah,
it's the it's the lowest level exception,

340
00:28:47,160 --> 00:28:49,759
the one that started all yeah.
Yeah, so the lowest level in

341
00:28:49,839 --> 00:28:56,240
the inner exception has h if you
are if it's sent a skull several database

342
00:28:56,400 --> 00:29:03,920
Senitulian sc exception. If it's a
postcast database, it will be entergy or

343
00:29:03,920 --> 00:29:07,880
whatever it's called exception. And defending
on the on the database, you have

344
00:29:08,000 --> 00:29:15,640
to reject either the error number property
or the error code property or whatever the

345
00:29:15,640 --> 00:29:21,319
library user puts there. And then
again depending on the database, the error

346
00:29:21,400 --> 00:29:26,880
number made the different between different database
engines. So if you want to find

347
00:29:26,920 --> 00:29:30,759
the root cause, and if you
want to know that it's a unique constraint

348
00:29:30,200 --> 00:29:37,359
violation, we have to dig deeper
and write some database specific code in your

349
00:29:38,039 --> 00:29:45,440
anti framework code where you are trying
to abstruct over the database implementation. So

350
00:29:45,759 --> 00:29:53,240
so what this library does is that
it adds an interceptor to your anti framework

351
00:29:55,000 --> 00:30:03,440
dep context and whenever there is an
exception generated from safe changes, it will

352
00:30:03,799 --> 00:30:12,720
dig into the innermost exception and translate
the database specific error in a and the

353
00:30:14,799 --> 00:30:18,119
in different type of exceptions that is
probably by this library. So you can

354
00:30:18,279 --> 00:30:25,599
just change your code to catch unique
constraint exception and if your code hits that

355
00:30:25,880 --> 00:30:32,079
catch block, you now know for
sure that this catch block was caught because

356
00:30:33,359 --> 00:30:38,039
this catch block was hit because of
the unique constraint violation. In the database.

357
00:30:38,759 --> 00:30:44,759
And even if you switch between databases, and if you go from Siquel

358
00:30:44,799 --> 00:30:56,119
Sellers to oralclor myuscule or any other
major databases, your trackage stases insane because

359
00:30:56,160 --> 00:31:07,519
the database obstructed because the at framework
solution's library obstructs it along between all the

360
00:31:07,640 --> 00:31:14,160
databases. So you don't have to
update your code, and you you you

361
00:31:14,400 --> 00:31:19,279
just put your exception handling code in
the in the touch block, and the

362
00:31:19,319 --> 00:31:26,119
expectation is that all the other stuff
that's in the exception handling block is just

363
00:31:26,279 --> 00:31:29,759
residual of the initial error. Yeah, you can. You can show that

364
00:31:30,000 --> 00:31:36,440
this email addresses already in use or
whatever whatever you need. Yeah. So

365
00:31:36,599 --> 00:31:42,680
yes. Apart apart from unique constraints, it handles some other cases like when

366
00:31:42,680 --> 00:31:48,440
you exceed the length of the column
for example, or you provide a now

367
00:31:49,160 --> 00:31:53,559
value for the columns that does not
allow now and so on. You you

368
00:31:53,599 --> 00:32:00,160
will get a strong type exception in
these cases instead of generic w update exception.

369
00:32:00,519 --> 00:32:04,519
Right, Okay, should we move
on to duc dB. First of

370
00:32:04,559 --> 00:32:07,480
all, what is duc dB and
why do we need a duct dB dot

371
00:32:07,559 --> 00:32:14,960
net for it? Yeah? Deb
is a embedded database just like syquol lights.

372
00:32:15,880 --> 00:32:21,799
So you don't you don't need to
set up any database sever or uh

373
00:32:22,400 --> 00:32:29,599
complex configuration. Now complex configuration is
needed. It's relatively new, but it's

374
00:32:29,640 --> 00:32:36,799
becoming popular in the data science work, especially in the Python community, I

375
00:32:36,839 --> 00:32:44,960
think because Python is uh frequently used
for data science and data and mancuation and

376
00:32:45,200 --> 00:32:51,319
things in these types of projects.
See The main difference between dough deb andscularity

377
00:32:51,400 --> 00:32:59,920
is that uscularity is uh transceptional OLI
tip oriented database and stuff. Debe is

378
00:33:00,799 --> 00:33:08,279
all of database more peered for analytical
queries and analytical processing. It's is it

379
00:33:08,319 --> 00:33:14,480
all in in memory or is it
can it persist? To imagine if it's

380
00:33:14,480 --> 00:33:16,480
a memory can persist, well,
it can. It can persist to a

381
00:33:16,559 --> 00:33:22,079
disc as well. It has its
own database format. It can also run

382
00:33:22,839 --> 00:33:25,480
queries on top of CS three files, which is very cool, very cool.

383
00:33:25,519 --> 00:33:34,000
The old old CSV files suddenly become
queriable. It can also run queries

384
00:33:34,039 --> 00:33:39,599
on top of Parket files. And
what's also coool is that you can run

385
00:33:39,680 --> 00:33:45,240
queries on top of Jason files.
And you can also run quarryspond files that

386
00:33:45,319 --> 00:33:52,759
are stored in S three buckets in
AWS, so you don't yeah, and

387
00:33:53,759 --> 00:33:59,720
if if you are if you have
Parket files in S three, it will

388
00:33:59,839 --> 00:34:04,480
just fetch the part of the file
that is needed to answer your queries by

389
00:34:04,559 --> 00:34:09,159
using the HTTP range headers. How
do you pass the S three credentials to

390
00:34:09,239 --> 00:34:16,719
It has its own secret store,
I think, where you can sell your

391
00:34:16,719 --> 00:34:25,679
credentials and for for development purposes.
It can also use your a WS credentials

392
00:34:25,679 --> 00:34:35,480
from your home directory where your store
the dotaland and the all the temporary credentials

393
00:34:35,480 --> 00:34:42,320
that you're using. That's cool.
So set's shorts over you of w B.

394
00:34:42,519 --> 00:34:47,400
It's it's very fast for analytical queries. And if you compare it to

395
00:34:49,039 --> 00:34:53,920
panders, which is very popular library
in Python, or ollars, which is

396
00:34:54,039 --> 00:35:05,239
also a popular library for data manipulation
in r r UH, it's it's lastising,

397
00:35:05,559 --> 00:35:08,039
it's it's very fast compared to them. And so doc TB dot net

398
00:35:08,159 --> 00:35:13,239
is an ad O provider for doc
TB. Yes, yes, that's right.

399
00:35:13,559 --> 00:35:19,320
It's an IDEO dot net provider for
f t B. And you can

400
00:35:19,920 --> 00:35:27,960
query uh f B databases, uh
CSV files, parkt files basically whatever DOTB

401
00:35:28,559 --> 00:35:34,079
supports, you can do it from
a dot net. You can also write

402
00:35:34,159 --> 00:35:42,599
to the B tables and doctor B
also has these very helpful commands for exporting

403
00:35:43,159 --> 00:35:47,119
the database to CSV or PARKT or
whatever style you need. So you can

404
00:35:47,360 --> 00:35:52,960
just use this provider to write to
B and then should see copy command and

405
00:35:53,119 --> 00:36:00,440
it will copy to CSV or PARKT
or whatever formats you specify. That's very

406
00:36:00,440 --> 00:36:06,320
cool. So you have your hands
and a lot of different technologies, which

407
00:36:06,360 --> 00:36:10,000
is you know, kind of typical
of people that you know do open source

408
00:36:10,000 --> 00:36:16,480
work and stuff these days, but
you also have been doing open source and

409
00:36:16,559 --> 00:36:23,079
working on other repos as well,
and especially as you remember the dot net

410
00:36:23,119 --> 00:36:28,360
foundation. Can you can you tell
me what's what's going on in the world

411
00:36:28,400 --> 00:36:30,719
of open source as you see it
right now? What's hot? Well,

412
00:36:30,760 --> 00:36:39,400
I think the usual problem, which
is Microsoft in most cases versus the open

413
00:36:39,480 --> 00:36:45,960
source community. Well, well maybe
maybe it's really verses, but uh,

414
00:36:45,360 --> 00:36:51,840
sometimes people expect Microsofts to provide all
the libraries they need. Yeah, sometimes

415
00:36:52,000 --> 00:36:57,000
sometimes they they are angry when the
Microsoft comes. How is new library beclose?

416
00:36:57,039 --> 00:37:02,800
It kills the sound existing open source
source library. So the usual the

417
00:37:02,880 --> 00:37:09,960
usual complaints, the usual complaints,
right, and the usual complaints from users

418
00:37:09,960 --> 00:37:16,840
who stepped support for free for open
source libraries. How's your experience been with

419
00:37:17,000 --> 00:37:22,880
these? I mean you say in
your notes here that you received some sponsorship

420
00:37:22,360 --> 00:37:28,880
from AWS dot net for TB dot
net. That's pretty cool. Huh yeah,

421
00:37:29,320 --> 00:37:35,599
it happened this March, so yeah, it's probably useful library if a

422
00:37:35,800 --> 00:37:39,599
w S thinks that it's worth the
sponsorship, right, so do they find

423
00:37:39,599 --> 00:37:44,599
that people on using it on a
WS in the cloud? Actually, one

424
00:37:44,599 --> 00:37:50,239
of the members of the committee who
picked these libraries was asking on Twitter which

425
00:37:50,280 --> 00:37:59,719
library to consider for sponsorship and I
mentioned my projects. It didn't get picked

426
00:38:00,199 --> 00:38:06,599
that mass but uh but up to
a couple of mass layte got this supprise

427
00:38:06,920 --> 00:38:09,920
from a w list So wow,
was that a one time payment or is

428
00:38:09,960 --> 00:38:17,880
it recurring? So it's the client
payment of five hundred dollars uh one,

429
00:38:19,079 --> 00:38:23,519
yeah, so twote payments. Wow, that's great. Congratulations, thank you.

430
00:38:23,760 --> 00:38:25,679
Yeah no, no, no,
you're not gonna retire on that.

431
00:38:25,719 --> 00:38:29,559
But it's nice to at least take
some conversation for it. That's cool.

432
00:38:29,679 --> 00:38:34,599
But it also shows, like you
said, that it's an indication that they

433
00:38:34,639 --> 00:38:37,599
find it valuable, right mm hmm. And so my question is, you

434
00:38:37,639 --> 00:38:43,920
know, why, why is this
like something that AWS wants to put the

435
00:38:44,159 --> 00:38:46,280
you know, their support behind,
and not because it doesn't deserve it,

436
00:38:46,320 --> 00:38:51,199
but do they find that their customers
are using it in the cloud, Like,

437
00:38:52,280 --> 00:38:54,840
is duc dB something that you would
use in the cloud as opposed to

438
00:38:55,639 --> 00:38:59,840
I don't know, a SEQL server
or document database to save time and money.

439
00:39:00,760 --> 00:39:06,280
Well, it's it's not an alternative
for simple server, but it can

440
00:39:06,320 --> 00:39:14,239
be UH useful for for example,
UH just recently I needed to use it's

441
00:39:14,280 --> 00:39:21,280
in my UH in my work projects, so I was I'm a little bit

442
00:39:21,320 --> 00:39:27,639
biased, I guess, but one
one one of our vendors is UH sending

443
00:39:27,760 --> 00:39:34,000
a patch of parpet files UH daily
when data changes on their side, which

444
00:39:34,039 --> 00:39:38,199
we need to import in our data
base. Sure, so so we we

445
00:39:38,239 --> 00:39:44,559
set up in a w S lambda
which uses f B and there's the codes

446
00:39:44,599 --> 00:39:51,480
to quality parpet files from S three. So they approat the parpet files to

447
00:39:51,880 --> 00:39:58,440
shared three bucket and the LAMPTA will
run in response to the new file and

448
00:39:58,719 --> 00:40:06,719
use aptybus to to read the profit
files and safe to potrous database. So

449
00:40:07,960 --> 00:40:14,039
so yeah, I think it can
be useful in h in different use cases.

450
00:40:14,159 --> 00:40:19,199
And and to be honest, I
won't be surprised if one day aws

451
00:40:19,519 --> 00:40:24,159
U comes out with a new service
which uses doctably under the hood, because

452
00:40:24,800 --> 00:40:32,639
they have done it frequently with many
different open source projects like elastic search and

453
00:40:34,000 --> 00:40:37,199
but this is also I think if
I'm not mistaken, and probably some other

454
00:40:37,480 --> 00:40:40,639
services as well. Yeah, I
know your numbers are excellently clearly you're building

455
00:40:40,639 --> 00:40:46,000
stuff that helps people when they're starring
and forking and contributing. So that's pretty

456
00:40:46,000 --> 00:40:50,039
cool. Yeah, do you get
a lot of contributors on some of these

457
00:40:50,039 --> 00:40:53,400
projects. I'm just going to take
a peek and think, because you kind

458
00:40:53,400 --> 00:40:59,199
of do that one on your own. The visualizer, like they're fairly unique

459
00:40:59,199 --> 00:41:04,920
products. Takes work. Yeah,
So for TB that net I got,

460
00:41:06,519 --> 00:41:13,519
I think it's the project with most
contributors. I'm not sure in terms of

461
00:41:13,800 --> 00:41:21,239
source code how is it, but
I think it's at like ten or fifteen

462
00:41:21,440 --> 00:41:27,159
contributors. Some of the contributions may
be small, but I remember one or

463
00:41:27,199 --> 00:41:34,400
two contributors who contributed quite a significant
portion of the code, right. And

464
00:41:34,480 --> 00:41:39,360
it's definite to help because when you
are coding alone all the time these projects,

465
00:41:39,400 --> 00:41:45,519
it can become boring sometimes or if
can become tired, which is obvious,

466
00:41:46,119 --> 00:41:52,880
and it's nice to have a person
who who helps even from time to

467
00:41:52,960 --> 00:41:59,719
time because we get tired. Also, sure, sure. I can't write

468
00:41:59,760 --> 00:42:01,400
the same encode every day, you
know, gets old after a while.

469
00:42:01,559 --> 00:42:07,320
Yeah, indeed, Yeah, that's
that's probably one one more reasons why why

470
00:42:07,440 --> 00:42:13,079
the sponsorship is important, because it's
it's it's it's a show. It's a

471
00:42:13,119 --> 00:42:20,320
way to say same kyoto the person
who who spends their own time or people

472
00:42:20,360 --> 00:42:24,159
on something for me? Is there
anything that we missed in these projects that

473
00:42:24,199 --> 00:42:31,639
you'd want to want to mention on? Entity framework exceptances is the most popular

474
00:42:31,639 --> 00:42:38,920
project open source projects that I held
with h more than a million downloads in

475
00:42:39,199 --> 00:42:45,360
case of Siquo, sellulent postcars and
more than one thousand stars. Don't get

476
00:42:45,480 --> 00:42:50,400
up. That's great. And what's
your role that foundation? Do you sit

477
00:42:50,519 --> 00:42:54,880
on some committees? No? No, I just wanted to join it.

478
00:42:55,440 --> 00:43:00,320
Remember what was Yeah? What was
going on? Remember? But you sound

479
00:43:00,400 --> 00:43:04,400
like someone who's you know, doing
serious working open source, so you could

480
00:43:04,440 --> 00:43:07,679
have some good conversations there. They're
all trying to get better. Yeah,

481
00:43:07,719 --> 00:43:12,000
well, what are you working on
now? Or is there anything new that

482
00:43:12,000 --> 00:43:16,320
that you can share? Uh?
In the works, it's uh, it's

483
00:43:16,519 --> 00:43:25,400
the sill features to thew dot nets
library say they have supports for composite types

484
00:43:25,480 --> 00:43:32,960
like leasts and stops and uh net
and so on. So currently you can't

485
00:43:34,320 --> 00:43:40,800
insert those data types from dot nets
and looking towards making it possible to write

486
00:43:40,800 --> 00:43:46,239
those types to the database from the
dot net code. Nice right, sounds

487
00:43:46,280 --> 00:43:50,960
like you're a busy guy. Is
it that you You must really love doing

488
00:43:50,960 --> 00:43:53,239
this? Do you and do you
have a life outside of programming or is

489
00:43:53,280 --> 00:43:59,119
this like your twenty four to seven
obsession. It's a lot of projects.

490
00:43:59,440 --> 00:44:05,519
Yeah, yeah, yeah. There
is this joke when so software engineer goes

491
00:44:05,559 --> 00:44:14,719
on vacation and finally I can work
on my projects now. Oh yeah,

492
00:44:14,880 --> 00:44:17,360
all right, so this is it's
been great talking to you, and wow,

493
00:44:17,519 --> 00:44:21,880
what a jam. This is great
stuff. People need to spend some

494
00:44:21,920 --> 00:44:24,039
time in these repositories and take a
look around and some tools that can help

495
00:44:24,079 --> 00:44:30,239
you. Absolutely. Yeah. So
what one one thing that I I think

496
00:44:30,280 --> 00:44:35,719
I found it on Twitter aple a
couple of weeks have always sought towards The

497
00:44:35,760 --> 00:44:43,199
discussion was why do so engineers write
code after work end? But why do

498
00:44:43,280 --> 00:44:50,519
they spend their time on something that's
uh that they do as a job And

499
00:44:50,519 --> 00:44:55,920
and one of the comments was that
engineers like solving problems. They enjoy it

500
00:44:57,239 --> 00:45:04,199
and they work on h so they
spend time after the work. People say

501
00:45:04,400 --> 00:45:07,920
enjoy solving the problems. So they
are just doing what they was they enjoy.

502
00:45:07,039 --> 00:45:14,280
So yeah, I think that's a
good explanation, and it's true,

503
00:45:14,760 --> 00:45:19,000
It's absolutely true. And yeah,
sometimes I find it hard to explain to

504
00:45:19,039 --> 00:45:23,920
other people, like why are you
doing a tense I just yeah, yeah,

505
00:45:24,280 --> 00:45:28,039
I did too, and I do
it for fun, you know,

506
00:45:28,159 --> 00:45:30,400
when I'm looking around and saying,
you know, I got a little lull

507
00:45:30,480 --> 00:45:36,639
here, Shall I like learn some
new music on guitar? Yeah, no,

508
00:45:37,199 --> 00:45:42,599
I'm going to write some code,
Yeah for sure. All right,

509
00:45:42,719 --> 00:45:45,119
Georgie. Great talking to you,
and thanks for thanks for sharing the time

510
00:45:45,159 --> 00:45:47,880
with us. Thanks again, all
right, and we'll talk to you next

511
00:45:47,960 --> 00:46:13,599
time on dot net rocks. Dot
net Rocks is brought to you by Franklin's

512
00:46:13,639 --> 00:46:17,599
Net and produced by Pop Studios,
a full service audio, video and post

513
00:46:17,599 --> 00:46:22,320
production facility located physically in New London, Connecticut, and of course in the

514
00:46:22,400 --> 00:46:29,280
cloud online at pwop dot com.
Visit our website at d O T N

515
00:46:29,320 --> 00:46:32,880
E t R O c k S
dot com for RSS feeds, downloads,

516
00:46:34,039 --> 00:46:37,000
mobile apps, comments, and access
to the full archives. Going back to

517
00:46:37,039 --> 00:46:42,639
show number one recorded in September two
thousand and two. And make sure you

518
00:46:42,719 --> 00:46:45,440
check out our sponsors. They keep
us in business. Now go write some

519
00:46:45,440 --> 00:47:07,159
code. See you next time you
got jamdavans to the Nest area.
