How'd you like to listen to dot NetRocks with no ads? Easy? Become
a patron For just five dollars a month, you get access to a private
RSS feed where all the shows have no ads. Twenty dollars a month will
get you that and a special dot NetRocks patron mug. Sign up now at
Patreon dot dot NetRocks dot com. Hey, Carl and Richard here with your
twenty twenty four NDC schedule. Will be at as many NDC conferences as possible
this year, and you should consider attending no matter what. Ndcoslow is happening
June tenth through the fourteenth. Get your tickets at ndcoslow dot com. The
Copenhagen Developers Festival happens August twenty sixth through the thirtieth. Early bird discount ends
April twenty sixth. Tickets at Cphdevfest dot com. Ndcporto is happening October fourteenth
through the eighteenth. The early bird discount ends June fourteenth. Tickets at Ndcporto
dot com. And we'll see you there, we hope. Hey, welcome
back to dot net rocks. I'm Carl Franklin and I'm Richard Campbell. I'm
in my studio and Richard is in Sweden. I am Sweden. I'm at
the Castle komf At in Orbro, nice just outside of Stockholm. Very nice.
Yeah, and we're going to have a really good talk today with Gyorgy,
but first let's do better no framework awesome in Richard, you probably saw
this already, but DARPA revealed that an experimental X sixty two a AI control
jet successfully faced the human pilot during an in air dog fight test carried out
last year. Fue huh, yeah, you've probably read about it when it
happened. But yeah, well and to be clear, and X sixty two
is an F sixteen, Yeah, it's just customized. Yeah, they were
already fly by wire, so they just added in this new set of modules
to fly itself. And apparently human pilots were on board with controls to disable
the AI system, but DARPAS says the pilots didn't need to use the safety
switch at any point. So isn't that interesting and a little scary, But
you know, just warfare. I guess I would rather have something being flown
by wire than flown by a pilot. But you know, for the pilot's
sake. Anyway, Yeah, apparently recently they put the head of the Air
Force in the backseat of the F sixteen. They did the same thing.
So oh wow, they're bringing to light that this is how good the software
is now boys, right, Yeah, it does bring up a little Star
Wars the angst, you know, sort of, although you know, curiously
they modeled all the Star Wars battles after World War One air dogfights. So
yeah, I was I was thinking of Episode one, you know, where
all the all the little drones were flying around so like like little gnats,
like little mosquitoes, just shooting darts at people, and I thought, oh
my god, that we have to look forward to. Well anyway, yeah,
the Air Force has this project called Loyal Wingman, which is unmanned vehicles
that they that the pilots are flying with. So things are getting interesting,
Yeah, they certainly are. So anyway, that's what I got. Who's
talking to us today, Richard Graby Common top of a show eighteen fifty five,
the one we did with Ted Neward back in July last year. We
were talking about multiple types of data stores and called it multimodal. It is
fun and Andy Perth had this somewhat long comment, but I thought it was
relevant to what we were talking about today. Says if RM is the Vietnam
of computer science, And of course we were talking to Ted NewART. That's
a reference to an old show, old set a blog posts too, And
my repeated trips back to some kind of RM must make me the US State
Department that would appreciate my citing that paper When we were discussing how to layer
an API on top of an instantly complex XML model back around two thousand and
seven, you know, that's the whole complain about n Hybrid eight was that
the XML was out of control. Right, So I have to snark at
your comments on the mosing of using XML to describe XML scheme on two grounds.
The first is XML bodies first tried non XML formats with DTD. Okay,
that did suck more, That's true, yeah it did. And two,
slipping even further down the rabbit hole of stuff for XML should be XML.
They went even further to add a programming language called XSLT, which I
did some work in, which was written in XML and should cure anyone if
ever complaining about mere semicolons as too much punctuation because you were usedckets in your
life until you wrote exslt my god. You know. That's why. That's
why we had tools to write that stuff, because it was not Yeah,
it was sorry for you the tool for my sins. I used to teach
a multi day course on the W three XML schema to geologists and mining engineers.
That insanely complex model encompass geos basically located or bodies described as full three
D structures somewhere in Australia. Wow. It also included laboratory essay results for
a sampling chorus drill if to find such bodies. All that as salted with
a dash of Sarbanes Oxley traceability on top. And that experience taught me two
things. One never try to get scientists from different disciplines to agree on a
definition. And two, XML camera respect complex object graphs. Liberal use of
the ID attribute is the key. Amazing extensible results are possible. So keep
the government theme and borrow a sentiment from Winston Churchill. I'd like to romose
that XML is the democracy of data structures. Well DBL liked it, but
even he backed off eventually. Oh man, yeah, I love it,
but yeah, Andy, you're a true believer. I like it. And
so a copy of music Coba is on its way to you. And if
you'd like a copy of music, go buy. I write a comment on
the website at dot Netwrocks dot com or on the facebooks. We publish every
show there, any of the comment there and everything in the show. We'll
send your copy of music go by. Hey did I tell you that Code
in a Castle is back on this year? I heard rumor. Yeah,
so it's going to be the last week of September. Uh and it's in
the same castle in Tuscany. So if you missed out and you've you know
you you regretted it, go check it out Code in a Castle. And
also the video from last year is up there. So anyway, that's all
I want to say about that. So all right, let's bring Georgy on.
Giorgi Dala kish Philly is a software developer with more than a decade of
experience. He works mainly with c sharp as Peanut, Core rest, Maui,
zamorin and any framework, Core AWS and SQL server. So you know,
just a couple of couple of interests here and there, just a couple
of things. He has also worked with many other frameworks in systems such as
graf ql, aspen at, NBC, as pnut, web API, w
CF, Avalonia, wind Forms, Oracle, and others. In short,
he doesn't know what he wants to be when he grows up. Nice Giorgi
is an open source author and contributor on GitHub and a member of the dot
Net Foundation. Welcome Giorgy, thanks for relining me to NERO. I have
been listening to it since ten years, so, Ladie, I think.
So it's a pleasure to be on the show. Awesome. Yeah, well
you're welcome. It's it's great to have you here. We are really getting
used to a lot of the people that spent their career listening to dot net
rocks now being guests. So it's very cool. It's very cool to have
you. So you're you're here to talk about e F queries and debugging them
visually. So that caught my interest. What do you what do you mean
by that? Uh? Yeah, so one of the biggest uh uh well,
not not disadvantages, but one of the biggest downsides of using the using
an O n uh and any kind of O M probably not just a framework
qure is that it's it hides the squirl behind the uh leak queries and uh
m hmm. It's it tries to obstruct or all the database related stuff behind
the strongly typed quarries and C sharp which is very comfortable, definitely, but
it also can can cause some performance issues if you are not careful biting your
queries and uh and some people think that you can just uh learnf core and
you don't need to look at the aneratedescul or scular is an old language and
we don't need it anymore. But yeah, it's kind of like if your
car is going along fine and then it just starts going very slow and you
think, oh, this car stinks. I'm going to bring it into the
shop, rather than you know, having a look under the hood and actually
trying to see what's going on, you might discover the problem. Yeah,
and actually it's not as frightening as some people probably think, so for me
personally. For me personally, when I started programming about fifteen or seventeen years
already ago, see, there was no oren so if you needed to interrupt
to this database, you've had to write your as an ad hoc ascol in
C shop code or storage procedures which was even more in full and ye,
so yeah, ants to framework is definitely nice, but you should also definitely
understand the s qol behind it, and it will change change the way you
write your framework queries and it will also make your code and your application more
performance definitely. So is it easy to discover what SQL or sequel is being
created under the hood and sent to the SQL server engine with the NITY framework.
Yeah, so even without the extensions that I wrote that we will be
talking about in a couple of minutes, it's it's still very easy with ANSTI
framework with a nicer I think it's two as quils drink building message in activity
framework. That's to to get the SQL and use the SQL or you can
just also logging in your application and when you develop your application, you if
I use the generative s q in the output window of visual Studio. Let's
go back to to SQL string. Is that extension available on the connection on
the dB set on the Yeah, it's it's available on on a on I
queriableuble as far as I remember. So you just take your query and call
this too. It's called two query strength. If if I remember it correctly
and you will get the query strength programmatically or as I said, you can
configure logging and you kind of use all the escubal statements in the output window
of visuals to deal right. You also hinted at a tool that you wrote
that makes it much easier, so let's talk about that. That sounds fun.
Yeah, So so my two goes a little bit beyond just cutting the
squal query. So this is Visuals to Do extension you downloaded and the stop
directly from the marketplace. We tend to it tirely inside Visuals Studio without linnk
it and just searching for it in the extensions. And essentially it's a debugger
visualizer. So a depoper visualizer is a kind of extension that lets you visualize
the objects when you have are your mouse pointer on the on the variable nice
so just just just like you can we all see string or XML or Jason
in a nicely formatted way in visual Studio. When you when you have your
mouth your pointer on the eige qualiable variable inside visual Studio and your items will
hear in the over lave or whatever it is called in vigosty and it will
say query plan visualizer. So when you click on it, the extension will
actually fetch the query ecution plan from the database and display it in a nice
graphical HTML format it inside the web you, so you can use the query
itself, and also you can use the plan that's the database it well as
you can use the plans that the database generated to your query under the hood.
Can you tell us one more time what that visual studio extension is called.
Yeah, it's called theF core dot visualizer, okay, and it is
this using your Enerity framework dot exceptions library under the hood. Which is the
next thing I'd like to talk about. No, no, it is,
It doesn't. It's separately. That's a separate library. Okay. So my
experience has been if you've got a problem with an NDY framework call that,
you should just rewrite it to call a store procedure like that. That's that's
the work around. Like I really really appreciate what you're doing here that Yeah,
I've written an expression in link and that translates into this query and sequel
server and it's a table scan So it's sucking. But the I mean,
I guess the question is is someone actually going to modify the database to make
this perform better, or do we just switch to a store procedure and then
the DBA can optimize the store procedure. Well, Richard, you're getting in.
You're opening a can of worms here, man, wouldn't it first time?
We're going back to the Ornini versus Ted Neward's SmackDown here? Yeah?
What do you think anyway? Kirogi, what do you think? Yeah?
Well, well, no, you don't necessarily out of town anything to start
to put it, Jude Saint Scott, you can u Well, in most
cases it's it's either a missing index from your table, or or your query
is just written in a way that can't utilize the existing indexes on the table.
Or maybe in some cases you just have to redesign your table because it's
it's not design the most optical way. So your queries are going to be
slow nowhere, no no matter how hard and no matter what you try.
Yeah, I just question, is I didn't write that query, anity framework
wrote it? If it's not utilized my index as well? What are my
choices here? Like? What what do you what are you actually able to
do? So the most the most common reasons that I have seen that your
playery does not use indexes is for example, so this is there's a term
sargeble or surgeible queries. I think. So if you have a condition like
there is a date of purse, for example, in the database table,
and you want to find all the records where the year is, for example,
two thousands, and if you just uh she just call the date parts
function in a school sell or date dot year in C sharp and compare it
to two thousands, then it's it's it's impossible for the database to use an
existing in depths even if it's there, because for for every record it has
to calculate the year from the dates on the fly, and it can't use
the intepts. Yeah. Yeah, so it's now going to process every road
to do that for you. Yeah. Whereas if you gave it a range,
you know, then it could actually write a better where it could be
in it. So yeah, So in this case, for example, the
solution will be to find our records where data perse is more end two thousand
first January and less oi equal than two thousand December thirty one. And in
this case you don't have any more calpulations on the fly. You just give
the range as you said that you want all the records where the data pairth
value is from this value until this value, and as long as the indexes
on the table, it will use the index ent. It will be a
lot faster because it will just scan the subset of zeros that it needs to
return your results. That's the most common mistake I think I have seen.
And it's also easy to make that mistake because when you are started writing your
query, it's natural to write. It's like I said, if you don't
think what's going on under the hood. So that's one of the reasons why
it's important to understand what's going when you wright to acquirying c shape which and
you can't also blames it develop us always because if you have just one hundred
or one thousand dollars in your test database, it is going to be fust
so they can't even notice that there's a problem on Dozi quotes no, And
then you have a million rows and you notice right away. Yeah, and
you could still blame the developers, let's face it, but I could see.
You know, setting a date range is kind of a nuisance because like,
do you really go you know, greater than equal to two thousand and
one oh one oh one, and you need time to those zeros zero zero
and less than you know, twelve thirty one and twenty three fifty nine fifty
nine point nine ninety nine or you know, or that'd be less than equal
to Like Richard, we said we weren't going to quote code on this show.
We weren't going to read code. But it's such a dead thing to
say, hey, if the year in this date is two two thousand,
get it. Yeah, just not understanding that you just defeated all in,
Like the index doesn't have a chance because it's not sargable because Georgy pulled that
one out today, it's the correct but not everybody knows it. But yeah,
okay, but I mean that there lies The point here is you're presumably
as a developer, you're also responsible to the database and you're just trying to
figure out why. And so you've assembled all the bits together to say,
this is the query that's generated, here's the query plan that it did.
Yeah, now go figure it out. Like you've now got the ingredients to
say, can I can I write this as an expression that will query more
effectively or do I have to go to all the other approaches. Yeah,
another thing to consider is if we use this saying example, like, if
you're searching for records data versus larger than here two thousands, then it can
I use index even if you write it's quietly. But if see if the
condition changes and you want records, for example, from now fifty and it
turns out that like ninety five percent of your records in your database have data
perse which is higher than ninety fifty or ninety twenty or whatever, then the
database may decide that it doesn't make sense to use the indepths because I have
to return all the almost all the records that are in the table, So
why bos are with the index. So it will still not use the index
because it's faster to just scan the whole table and step the indext So you
have to be careful with it because depending on the type of data and depending
on the conditions that you are putting in the work close, it may decides
to use the indevxce in one situation and not use an index in another situation
on a different type of records. Sure, so databases are tricky, Yeah,
it always is, And like I love the one where they go you
know, greater than January first and less than December thirty first. It's like,
you know, you just left off all of this number thirty first people.
Yeah, yeah, so it's probably better to just write less than one
Genuary of two thousand and one and you yeah, we have anyone. Noah.
I hate date math I hate it. I had a date math bug
in one of my in my websites just recently about listing gigs, like the
day before the gig. It disappeared from the site. Like, no,
just a plus instead of a minus or less than instead of a greater than.
Yeah, I love it. I know it's and it's these are the
things we chase around, so, you know, being able to see into
the data set and answer a bunch of questions. Did I write the link
query wrong, did the actual output query being correct? Or just badly perform
it? Like how you have a bunch of choices on how to fix it.
If you tweak the database, you tweak your expression, you could switch
over to a different methodology, you know, like you have a bunch of
choices, but at least you know, you know that's that's that's that's the
problem. Yeah. Yeah, so this this extension supports simple seller and postcus
so you can you'll see graphical quaripulin fall for post of these databases. M
hmm, it's cool. Yeah, you can see if there are any table
scans which which will make your query slow. Yeah, if it's using indepsies,
is its doing in deep scan or indepsy or things like sets like reading
and understanding quarduplants is a separate science. Probably don't set of skills. Although
the documentation is better than it ever was, it's it's easier now than it
used to be used to be. Really, you had to know what query
plan statements were. Like, I can sense thousands of document database users listening
now, going, ah, sucks to be you. Yeah, if we
don't have to write any four loops there, kiddo. Sometimes you need to
look for data in your docum in store too, right. Yeah. Now,
if there was one right way to do this, everybody would do it.
The reality is there's a bunch of ways to be successful, and there's
a bunch of ways to get into trouble, and it's good to have tuling.
It will help you go down the right path. True, So I
know you said it before. It's just an extension. But when you were
explaining it how to use it, I was thinking, what's the name off
it? Again? So can you go over like one more time, just
how how you would use this? It shows up as an extension. Where
does it manifest itself in visual Studio? Yeah you can. Uh. So
once you'll install it, you start debugging your runs debubble as you would in
any other case. You power over your equeriable variables. So it's the equery
and police a thins. You can't. You can't use a query plan.
You need to have an eye queriable and when you holler your mouse on the
ee queriable variable in the in visual Studio, you can. You will see
a query plant visualizer under the magnifying class that Visual Studio shows whenever you are
trying to inspect variables. Yeah, very cool. And when you click on
the quare plant visualizer, it will it will open a new window. It
will take a second or two to actually fetch the plan from the database,
and it will render the planning in an imbedded wheew control. That's very cool.
If see database connection is slow or the query takes more than five seconds,
then it will time out because that's the hard timeout limits by the visuals
to do itself, so that's one thing to keep in mind. That's great,
and also it's uh, it's not very helpful for queries where you have
first or default dacing or COUNTYCIN or similar queries which just materialize the results immediately
and you don't have an equerable because for such queries you don't have an equalable
variable. So's you could remote the calls to the two first and count or
some and so on, but it's it's not the same query now because you
are fetching the coal least, not just count or some or first titan.
So it's nice to be able to debug what you're actually using rather than have
to piece the debugger just to see it. That's cool. I guess maybe
it's time to take a break. When we come back, can we talk
about the Enterity Framework exceptions library. Yeah, just one thing that I wanted
to add is that this extension uses existing libraries to render the cirquel server and
postlus quibulence. So I wanted to say thanks to the source of those libraries,
because without those products, I wouldn't be able to build this extension.
So yeah, good point cents again for buildings, a schools, sever and
postcuss visualizer libraries. Cool. Excellent, all right, hold that thought.
We'll be right back after these very important messages. And we're back. It's
dot net Rocks. I'm Carl Franklin, that's Richard Campbell there, hey,
and that is Georgy Dolla Kish Philly, and we're talking about Nity framework and
what's going on under the hood. And he's got a great visual studio extension
that you can use to see what's going on with your queries under the hood.
And I want to bring up this other a couple other actually really great
GitHub reposts that you have. One is Nity framework exceptions and the other is
duc dB dot net. But let's talk about the extensions exceptions right now.
A new framework exceptions thing. Tell us about that. So this is a
libraries that started. I guess most libraries start from an internal usage because some
something that I found copying from one project to another, and I decided,
so we're a bit in a library and publish thinking that others would find it
useful. So what it does is, again when using anti framework, and
let's say you have a table with a unique constraint, for example, email
address is a unique constraint in your table, and you are inserting customers or
whatever in your table, and if you try to insert a record with the
saying email, the database will throw an error because the unique constraint is violated.
And when in anti framework, this means that you will get an t
B updates exception in your c sharp code. That think with that is that
TB update exception doesn't really tell you whether this was the unique constraint violation or
the save the insert fild because of some other error in the database detail somewhere.
Yeah, so you you have to get the iner exception of this TB
update exception and gets the innermost exception, the deepest one. It's the start
of the whole thing, right, Like, that's the one that's all the
way and is the one with the original error, and then it cascades outwards.
Yeah that's that's yeah. Usually that's the most interesting one, which gives
you the lowest level. Thank you first, yeah, same time, definitely,
now you're back. So yeah, it's the it's the lowest level exception,
the one that started all yeah. Yeah, so the lowest level in
the inner exception has h if you are if it's sent a skull several database
Senitulian sc exception. If it's a postcast database, it will be entergy or
whatever it's called exception. And defending on the on the database, you have
to reject either the error number property or the error code property or whatever the
library user puts there. And then again depending on the database, the error
number made the different between different database engines. So if you want to find
the root cause, and if you want to know that it's a unique constraint
violation, we have to dig deeper and write some database specific code in your
anti framework code where you are trying to abstruct over the database implementation. So
so what this library does is that it adds an interceptor to your anti framework
dep context and whenever there is an exception generated from safe changes, it will
dig into the innermost exception and translate the database specific error in a and the
in different type of exceptions that is probably by this library. So you can
just change your code to catch unique constraint exception and if your code hits that
catch block, you now know for sure that this catch block was caught because
this catch block was hit because of the unique constraint violation. In the database.
And even if you switch between databases, and if you go from Siquel
Sellers to oralclor myuscule or any other major databases, your trackage stases insane because
the database obstructed because the at framework solution's library obstructs it along between all the
databases. So you don't have to update your code, and you you you
just put your exception handling code in the in the touch block, and the
expectation is that all the other stuff that's in the exception handling block is just
residual of the initial error. Yeah, you can. You can show that
this email addresses already in use or whatever whatever you need. Yeah. So
yes. Apart apart from unique constraints, it handles some other cases like when
you exceed the length of the column for example, or you provide a now
value for the columns that does not allow now and so on. You you
will get a strong type exception in these cases instead of generic w update exception.
Right, Okay, should we move on to duc dB. First of
all, what is duc dB and why do we need a duct dB dot
net for it? Yeah? Deb is a embedded database just like syquol lights.
So you don't you don't need to set up any database sever or uh
complex configuration. Now complex configuration is needed. It's relatively new, but it's
becoming popular in the data science work, especially in the Python community, I
think because Python is uh frequently used for data science and data and mancuation and
things in these types of projects. See The main difference between dough deb andscularity
is that uscularity is uh transceptional OLI tip oriented database and stuff. Debe is
all of database more peered for analytical queries and analytical processing. It's is it
all in in memory or is it can it persist? To imagine if it's
a memory can persist, well, it can. It can persist to a
disc as well. It has its own database format. It can also run
queries on top of CS three files, which is very cool, very cool.
The old old CSV files suddenly become queriable. It can also run queries
on top of Parket files. And what's also coool is that you can run
queries on top of Jason files. And you can also run quarryspond files that
are stored in S three buckets in AWS, so you don't yeah, and
if if you are if you have Parket files in S three, it will
just fetch the part of the file that is needed to answer your queries by
using the HTTP range headers. How do you pass the S three credentials to
It has its own secret store, I think, where you can sell your
credentials and for for development purposes. It can also use your a WS credentials
from your home directory where your store the dotaland and the all the temporary credentials
that you're using. That's cool. So set's shorts over you of w B.
It's it's very fast for analytical queries. And if you compare it to
panders, which is very popular library in Python, or ollars, which is
also a popular library for data manipulation in r r UH, it's it's lastising,
it's it's very fast compared to them. And so doc TB dot net
is an ad O provider for doc TB. Yes, yes, that's right.
It's an IDEO dot net provider for f t B. And you can
query uh f B databases, uh CSV files, parkt files basically whatever DOTB
supports, you can do it from a dot net. You can also write
to the B tables and doctor B also has these very helpful commands for exporting
the database to CSV or PARKT or whatever style you need. So you can
just use this provider to write to B and then should see copy command and
it will copy to CSV or PARKT or whatever formats you specify. That's very
cool. So you have your hands and a lot of different technologies, which
is you know, kind of typical of people that you know do open source
work and stuff these days, but you also have been doing open source and
working on other repos as well, and especially as you remember the dot net
foundation. Can you can you tell me what's what's going on in the world
of open source as you see it right now? What's hot? Well,
I think the usual problem, which is Microsoft in most cases versus the open
source community. Well, well maybe maybe it's really verses, but uh,
sometimes people expect Microsofts to provide all the libraries they need. Yeah, sometimes
sometimes they they are angry when the Microsoft comes. How is new library beclose?
It kills the sound existing open source source library. So the usual the
usual complaints, the usual complaints, right, and the usual complaints from users
who stepped support for free for open source libraries. How's your experience been with
these? I mean you say in your notes here that you received some sponsorship
from AWS dot net for TB dot net. That's pretty cool. Huh yeah,
it happened this March, so yeah, it's probably useful library if a
w S thinks that it's worth the sponsorship, right, so do they find
that people on using it on a WS in the cloud? Actually, one
of the members of the committee who picked these libraries was asking on Twitter which
library to consider for sponsorship and I mentioned my projects. It didn't get picked
that mass but uh but up to a couple of mass layte got this supprise
from a w list So wow, was that a one time payment or is
it recurring? So it's the client payment of five hundred dollars uh one,
yeah, so twote payments. Wow, that's great. Congratulations, thank you.
Yeah no, no, no, you're not gonna retire on that.
But it's nice to at least take some conversation for it. That's cool.
But it also shows, like you said, that it's an indication that they
find it valuable, right mm hmm. And so my question is, you
know, why, why is this like something that AWS wants to put the
you know, their support behind, and not because it doesn't deserve it,
but do they find that their customers are using it in the cloud, Like,
is duc dB something that you would use in the cloud as opposed to
I don't know, a SEQL server or document database to save time and money.
Well, it's it's not an alternative for simple server, but it can
be UH useful for for example, UH just recently I needed to use it's
in my UH in my work projects, so I was I'm a little bit
biased, I guess, but one one one of our vendors is UH sending
a patch of parpet files UH daily when data changes on their side, which
we need to import in our data base. Sure, so so we we
set up in a w S lambda which uses f B and there's the codes
to quality parpet files from S three. So they approat the parpet files to
shared three bucket and the LAMPTA will run in response to the new file and
use aptybus to to read the profit files and safe to potrous database. So
so yeah, I think it can be useful in h in different use cases.
And and to be honest, I won't be surprised if one day aws
U comes out with a new service which uses doctably under the hood, because
they have done it frequently with many different open source projects like elastic search and
but this is also I think if I'm not mistaken, and probably some other
services as well. Yeah, I know your numbers are excellently clearly you're building
stuff that helps people when they're starring and forking and contributing. So that's pretty
cool. Yeah, do you get a lot of contributors on some of these
projects. I'm just going to take a peek and think, because you kind
of do that one on your own. The visualizer, like they're fairly unique
products. Takes work. Yeah, So for TB that net I got,
I think it's the project with most contributors. I'm not sure in terms of
source code how is it, but I think it's at like ten or fifteen
contributors. Some of the contributions may be small, but I remember one or
two contributors who contributed quite a significant portion of the code, right. And
it's definite to help because when you are coding alone all the time these projects,
it can become boring sometimes or if can become tired, which is obvious,
and it's nice to have a person who who helps even from time to
time because we get tired. Also, sure, sure. I can't write
the same encode every day, you know, gets old after a while.
Yeah, indeed, Yeah, that's that's probably one one more reasons why why
the sponsorship is important, because it's it's it's it's a show. It's a
way to say same kyoto the person who who spends their own time or people
on something for me? Is there anything that we missed in these projects that
you'd want to want to mention on? Entity framework exceptances is the most popular
project open source projects that I held with h more than a million downloads in
case of Siquo, sellulent postcars and more than one thousand stars. Don't get
up. That's great. And what's your role that foundation? Do you sit
on some committees? No? No, I just wanted to join it.
Remember what was Yeah? What was going on? Remember? But you sound
like someone who's you know, doing serious working open source, so you could
have some good conversations there. They're all trying to get better. Yeah,
well, what are you working on now? Or is there anything new that
that you can share? Uh? In the works, it's uh, it's
the sill features to thew dot nets library say they have supports for composite types
like leasts and stops and uh net and so on. So currently you can't
insert those data types from dot nets and looking towards making it possible to write
those types to the database from the dot net code. Nice right, sounds
like you're a busy guy. Is it that you You must really love doing
this? Do you and do you have a life outside of programming or is
this like your twenty four to seven obsession. It's a lot of projects.
Yeah, yeah, yeah. There is this joke when so software engineer goes
on vacation and finally I can work on my projects now. Oh yeah,
all right, so this is it's been great talking to you, and wow,
what a jam. This is great stuff. People need to spend some
time in these repositories and take a look around and some tools that can help
you. Absolutely. Yeah. So what one one thing that I I think
I found it on Twitter aple a couple of weeks have always sought towards The
discussion was why do so engineers write code after work end? But why do
they spend their time on something that's uh that they do as a job And
and one of the comments was that engineers like solving problems. They enjoy it
and they work on h so they spend time after the work. People say
enjoy solving the problems. So they are just doing what they was they enjoy.
So yeah, I think that's a good explanation, and it's true,
It's absolutely true. And yeah, sometimes I find it hard to explain to
other people, like why are you doing a tense I just yeah, yeah,
I did too, and I do it for fun, you know,
when I'm looking around and saying, you know, I got a little lull
here, Shall I like learn some new music on guitar? Yeah, no,
I'm going to write some code, Yeah for sure. All right,
Georgie. Great talking to you, and thanks for thanks for sharing the time
with us. Thanks again, all right, and we'll talk to you next
time on dot net rocks. Dot net Rocks is brought to you by Franklin's
Net and produced by Pop Studios, a full service audio, video and post
production facility located physically in New London, Connecticut, and of course in the
cloud online at pwop dot com. Visit our website at d O T N
E t R O c k S dot com for RSS feeds, downloads,
mobile apps, comments, and access to the full archives. Going back to
show number one recorded in September two thousand and two. And make sure you
check out our sponsors. They keep us in business. Now go write some
code. See you next time you got jamdavans to the Nest area.