1:59
Hey, Geeks. Welcome to another exciting episode of Rockin' the Code World with Donet Dave
2:08
I'm David McCarter. I'm really glad you're all back. I hope you watched the first episode of season four a couple weeks ago with Mads Torgensen
2:19
And that was a really fun episode, and I really enjoyed myself, especially getting to see Mads
2:24
He's one of my favorite people at Microsoft. And so I hope he got to see that
2:30
Anyway, today I have Eric Jensen all the way from Denmark, you know, where I was last month
2:38
And sorry, my screen, something's going on with my lighting. I'll fix it for the next show, I guess
2:44
And the cool thing, Eric also is the maintainer of the NAD Framework Core Power Tools, which is, you know, when I use NAD Framework, I have to install the Power Tools
3:00
It does so many cool things. And so we'll have an opportunity to talk to Eric about that
3:06
And anything else you want to ask Eric about, you know, any framework, SQL client, or being an OSS maintainer
3:15
So start sending your questions now because they take a couple minutes to come through
3:19
And we'll get those questions answered as soon as I can with Eric, which will be up in just a few minutes
3:27
so I'm getting really excited because I'm almost done with my presentations
3:33
with the latest performance metrics from .NET 8 next month, November 15th through 17th
3:41
I'll be in Lithuania at the Build Stuff conference I've never been to Lithuania before
3:47
so anybody have any tips on what to do and anything there, please let me know
3:54
And so I'm really looking forward to going over there and teaching the software engineers about code performance
4:02
Let's see if we can beat the numbers from the developers festival
4:06
because I had a huge number in my session then. And something else I'm going to be doing at Build Stuff
4:13
is something I've been wanting to do for a while. And so Build Stuff is the first conference I'm actually going to be able to do this
4:19
I'm actually going to do a globalization workshop at Build Stuff a three-hour workshop where you're going to bring in your code from work on your laptop
4:29
and we're going to start fixing it to work with any kind of locale or language that your
4:35
application needs to support. Because in today's mobile world, I guarantee you, your application
4:41
is going to have to support multiple languages and multiple locales. And I can tell you also
4:46
100% of the projects I'm hired to work on don't do any of it or very, very, very little
4:54
And so there comes a point in the future momentum of the project where going back later and doing it is, number one, very costly and number two, very time consuming
5:10
And so if you just do it while you're coding, that's not an issue
5:14
And so I'm going to jumpstart these developers at the Build Stuff conference
5:18
So if you're going to Build Stuff, make sure you go to the description of my session and look at the pre things I need you to do before coming to it, like bringing your laptop and bringing your code from work
5:32
And it's a couple more things. So please, please go to the information and see what I need you to do before you come in so we can get the maximum output from those three hours
5:46
I have a lot to go over in three hours. And it's not nearly everything with globalization, localization
5:54
So I'm really excited that Build Stuff is allowing me to do this for the very first time
6:00
And so I'm really looking forward to that. in tech news C sharp nears Java in popularity. I mean, C plus, yeah, C sharp is, is nearing Java
6:13
in popularity. I'm really, I'm really glad about that, of course, because I've been using .NET
6:20
since before it came out and which kind of also goes along with a tweet I did earlier this week
6:29
And that's this one here because I was looking at job postings and I see all these job postings for back end developers, which I tend to be more of these days
6:41
And they want to write their APIs in Node.js and these other languages that I just don't think are as performing as C Sharp is
6:52
And C Sharp in .NET 5 was 10 times faster than Node.js
7:00
And so I hope more people get the clue, especially in some of the things I've been seeing in .NET 8
7:08
There's dramatic, again, there's dramatic performance increases in .NET 8, which I think is going to blow away that 10 times number
7:16
as soon as it's officially released next month. I think it's November 14th
7:21
So get ready. Also this is the time of year when there a lot of layoffs I know there one big company here Qualcomm that laying off a thousand plus people
7:36
And also LinkedIn is laying off a whole bunch of their IT staff
7:42
So this is unfortunately the time of year when these things happen
7:46
And so to be prepared, or if you think you're getting laid off in the next couple of months, please go get a copy of my book, Surviving the Technical Interview
7:59
It's made for you to help you prepare for the technical interview, because if you don't get past that, you're not getting a job
8:06
And so it's the most important piece of the interview process if you ask me for software developers
8:11
So go pick up your copy. It's available wherever Amazon ships books
8:16
and I appreciate that. I need to save up for retirement. Okay, with that, I want to bring on Eric
8:26
Eric manages a number of open source data access tools and libraries, including EF Power Tools
8:33
one of my favorites for Visual Studio. He has been part of the .NET community
8:37
for more than 15 years and has been awarded the Microsoft MVP
8:41
for 15 years in a row, too. He also enjoys helping others with advice
8:46
blog posts, samples, tools, and in the .NET data access domain. Welcome, Eric
8:56
Hi, Dave. Thanks for having me on the show. Yeah. It's a pleasure to be here
9:01
Because I know it's kind of in the evening time for you
9:05
and so I appreciate you taking time. Yeah, no worries. Always happy to appear. Yeah
9:13
Yeah. And so how are you doing? I'm doing great, thanks. Looking forward to the release of .NET 8 and the EF Core 8
9:24
So I'm working on keeping my tools up to date. So it's like a yearly cycle of getting up to speed with all the new releases
9:36
So it's an exciting time coming up here in November. So I'm looking forward to that
9:41
I've been working on updating some of my books too. And this yearly release thing is really just too much for me
9:51
And so, you know, after all the work I've been doing on one book
9:56
you know, this summer and into the fall, you know, I'm only going to do books now on the official long-term support releases
10:04
Yeah, exactly. You know, this yearly thing is just too much, you know
10:09
and and and yeah you know maintaining an open source library is hard enough but you know doing
10:16
a book every year is just insane you know and so yeah so um yeah sorry everybody i don't know why my
10:26
camera is doing this weird glitchy thing but you know don't look at me just look at eric and
10:31
everything will be okay um yeah so uh i was talking to you before the show started and how
10:38
How far do you live from Copenhagen? I live like 40 kilometers north of Copenhagen
10:45
And yeah, so I often visit customers in and around Copenhagen for work, of course
10:54
because we have a very good public transport system, so it's easy to get everywhere in the Copenhagen area
11:03
Yeah, most countries have a good public transit system except for America. You know
11:07
I know. It's also a question about the distances. They're slightly bigger in between places in America compared to small Denmark, small densely populated Denmark
11:23
So, yes. Yeah. I, you know, my hotel in Copenhagen was, you know, about a, you know, very, very close to the train station
11:33
And I went over there and I've never seen so many bicycles at a train station in my life
11:42
And so that's, you know, that's one thing I really liked about Denmark is I felt that, you know, you guys are really into, you know, using public transportation more than, you know, driving your own cars
11:56
Absolutely. Absolutely. And also using bikes for commuting is highly encouraged. And there's bike paths everywhere
12:07
And there's like a priority for bikes. So they get priority lights and so on
12:14
So it's really a high profile, particularly in the Copenhagen area. Absolutely
12:21
I saw more bikes on the street than I did cars. Yeah, exactly
12:26
We also have the advantage of being a very flat country. So that helps with the bike adoption
12:34
Yeah, that's true. I live in kind of a hilly area. So even coming up my street is a little difficult for me at the last little piece of it
12:46
But I really like you guys really into sustainability. Your water seems very, very clean
12:51
And, you know, I thought it was really cool that, you know, the hotel I stayed in, you know, my key card was made out of bamboo
13:01
Was that? Yeah. Okay. That's very sustainable. Yeah. Okay. Yeah. Yeah. I thought that was really cool
13:08
I kept it because, you know, I've never seen a bamboo key card before
13:12
No. No. But, yeah, I like that. You know, ever since I was a little kid, I've been into, you know, ecology and saving the planet and, you know, and cleaning up trash and things like that
13:27
And so I was really impressed how much, how well Denmark, I mean, at least Copenhagen area has done so well at that
13:35
Yeah. So everybody out there, if you have questions, please send them in now
13:43
you know Eric I don't usually get a lot of questions because of the time of day but
13:48
no but so what do you want to talk about first you want to talk about the power tools or yeah
13:55
let's just start with a with a little roundup of what I think are my important contributions
14:00
in this area so like power tools is certainly one of them so I think my main contributions
14:11
are the SQLite toolbox, which is a Visual Studio extension for working with SQLite inside Visual Studio
14:19
Think of it a little bit if you know a SQL Server Management Studio or similar
14:25
but you can just work with the SQLite embedded database inside Visual Studio instead
14:31
It's quite a popular extension. It has more than 1 million installs. Wow
14:37
Yeah, so it's kind of daunting to consider releasing a new update to that extension
14:44
because you know, whatever you do, you're going to break someone, but yeah
14:50
But I really I really chuffed that it has all this adoption and that people find it useful if they working with the SQLite embedded database And then of course there EF Core Power Tools The main feature of that is
15:11
workflow that I call database model first, where you are defining your database in SQL scripts
15:17
or you have a live database you can either have the you can have either and then you can point
15:26
you the tool to your scripts or to your live database and generate them context DB context
15:35
which is what ties everything together and classes that represent your tables based on
15:43
on each table gets its own class with properties representing the columns in the table
15:51
And you get all the mapping from the data types in your relational database to the common C sharp data types
16:01
And once you've done that, and you can do that within a couple of minutes
16:05
then you can immediately start working with your database, interacting with it with the EF Core
16:11
and do link queries and add new entities and so on. It gets pretty powerful
16:20
And I don't know if you know, but EF Core team itself provides command line based tooling
16:28
that you need to install and then run from a terminal. Whereas EF Power tools is a visual tool, of course
16:36
where you get options to select tables. and it will store the database connections you have for you
16:45
And also the tables that you selected last time will be stored in a configuration file
16:50
So it's easy for you to add new tables or add columns
16:54
and then rerun the tool. And then you get those columns included
16:59
in your code base right away. Yeah. That's one thing I've always really liked
17:05
about NAD framework. And, you know, I was I started using any framework before it was officially released
17:14
And, you know, I I I never went back, you know, because unless I had to, because I was working at a company because, you know, things are so much easier
17:24
And but, you know, I do want to ask you, maybe, you know, some information about this because I haven't kept I haven't kept up the date
17:32
But one of the issues when I talk about any framework and how much I like it or some other ORM, right
17:42
People always say, well, that hurts performance. So do you know of any metrics on how close to SQL performance any of the framework is
17:54
Yeah, actually, this is quite an interesting discussion because a lot of people say
17:59
well i want to use a tool like for example dapper where you can actually where you have to type
18:08
the sql statement yourself and make sure that it's and also be smart enough to make sure that
18:14
it's properly parameterized so you don't risk if the pit sorry sql injection right or don't risk
18:23
is thrashing the server with hard-coded parameter values. So if you're smart enough to do that
18:31
then you can certainly use a tool like Dapper. But there has been some really
18:36
really powerful improvements in the latest versions of EF Core that brings the performance for serializing
18:46
like taking 10,000 rows from a database and serializing those into C-Sharp objects
18:55
more or less the same performance as a tool like Dapper, which can essentially do the same thing
19:02
And the only difference until EF Core 8 was that you actually had to define those classes
19:09
that you serialized into had to be part of your DB context
19:13
So they had to be a DB set. But with EF Core 8, that is no longer the case
19:18
It can actually take any arbitrary class in your code, and then you can serialize into that with a SQL statement
19:27
Oh really? Which is basically the same that DAPA does. There are some extensions to DAPA that can do other things
19:38
but essentially EF Core can now do the same thing that DAPA does
19:42
more or less at the same performance metrics as DAPA. And it will, you can always discuss whether a dependency more or less is an advantage
19:58
Personally, I think it is. But so then that means if you're using EF Core and also want to just do arbitrary queries into C Sharp classes
20:08
you can actually do that without bringing in DAF and get similar performance
20:14
Yeah. Yeah. I haven't. Yeah. I've been because of my my latest positions at work. I haven't been able to use anything framework in a while. So no, but certainly a lot of work has been done in the performance area in the EF Core recently also for doing updates and which in in like in the entity framework classic timeframe was really, really slow because what happened was that if you
20:44
wanted to insert like eight entities. If you have six would actually issue six
20:53
individual insert statements against the database. So it didn't batch those. So it had a lot of conversation over the wire
21:01
with the database. Whereas EF Core will now do that in a single round trip
21:06
And that of course has a huge performance impact, particularly if you are in a cloud environment
21:13
where there is usually some more latency than in an on-premises environment
21:19
where your storage system and your database server are extremely close to each other
21:25
Yeah, yeah. That's one tip I give in, I don't know what session or what book I wrote it in
21:33
but one thing I've been saying for as long as I can remember
21:37
is that you want to minimize the amount of trips you go across the wire
21:42
And that can really, really make a huge impact on performance. You can do a lot of other things in code
21:51
and use the correct collection types and things like that. But those things are, of course, also beneficial
22:01
But if you're talking about database access, minimizing the number of round trips has a huge impact on performance
22:09
Yeah, that is definitely something you can sit and measure yourself doing really informal testing
22:15
Yeah I recently updated an article about so the first like real project I did with any framework was back in I don know late 2000s 2010 timeframe something like that
22:36
I think it appeared in 2009 or something like that. Yeah, yeah
22:43
You were a very early adopter. I was. I was usually WCF data services and everything
22:49
And, and, but, you know, the one thing that I did, because, you know, I, for this company here in San Diego, I wrote their first public API system for partners. So we could start, so partners could start adding value and doing other things. And then towards the end, when I was leaving, you know, I was actually, you know, I rolled into the system a way that, you know, whenever a partner would sell something through our app, we would get a cut of that, right
23:19
And so we were testing in that. But, you know, one of the things I wrote in the article was because of this going across the wire thing, you know, going across the network, you know, one thing that I did was, you know, any partner that wanted to use our backend had to submit their code to me
23:37
right and it i don't care what what languages was written in really but you know they had to submit
23:43
their code to me because the thing i was looking for was making sure because i read i wrote in the
23:49
documentation exactly how to do batching back then right and and i said you know you have to
23:56
do batching against the system i'm not going to let you go across the wire 100 times when you can
24:01
it one time trash the system right right and and i also rolled into the system where one one mouse
24:09
click i can turn them off right if i if i if i detect that they're abusing the system right yeah
24:15
because i don't want them bringing down everybody else because they're they're stupid code right
24:20
so yeah so very very important to not go across the wire what we're saying here about
24:26
about avoiding round trips to the database from your back-end server code that will also
24:33
apply to a JavaScript-based front-end. Same thing that will also, if you have to do 50 API calls in order to render a page compared
24:47
to a single API call, that will also have a huge impact on the performance, i.e. user
24:54
experience in that scenario. So it's definitely something you should always think about
25:02
Yeah. Yeah. That's why a lot of pages are slow because they do so many calls
25:06
So many calls. So many calls just to get the data where they really should be bundling up into one, right
25:12
Or a couple even, but not like 20 or 30 calls in one page load
25:18
I mean, that's just crazy, right? No, exactly. Yeah. Yeah. Yeah. Yeah
25:23
So. Well, what else do you want to talk about? Or are we done talking about that part
25:32
Yeah. So, of course, the next version of EF Core Power Tools I'm working on
25:37
and it will be supporting EF Core 8. Not surprising. But I'm also working on, I also currently have in preview
25:48
a command line edition of the reverse engineering part of VF Core Power Tools because some people for whatever reason, maybe because they're
25:59
on a different platform than Windows, maybe because the company is using some other development
26:05
tools than Visual Studio, they won't have access to this extension because it only runs inside
26:12
Visual Studio 2022. So I made a command line edition of the tool available as well
26:19
It's currently in preview, but I hope to make it releasable around the same time that EF Core 8 appears
26:30
And there you get all the benefits of the additional customization options that's included with Power Tools, but from the command line
26:41
Yeah, that's cool. I, you know, I, I converted my dev tool for developers into a global tool, basically, right
26:51
Yeah, exactly. Yeah. And, and one of the reasons, there are two reasons I wanted to do that
26:57
One is I just am tired of dealing with UI stuff because it seems to change like every year
27:02
Right. And, and, you know, I kept waiting for Maui to come out and then Maui came out and I'm going, I don't know, you know, and then, you know, so I find that
27:13
gave up and just did a command line tool so i wouldn't have to deal with you know ui too much
27:17
but um the other reason i did it was because i wanted it to be run i so it could be run by from
27:25
visual studio or wherever else you want to run it right and so like in my in my projects you know i
27:33
you know i run it you know from visual studio like every time i build every time i build my tool runs
27:39
yeah and uh so then it's really nice it's a command line too yeah yeah yeah yeah yeah and it's uh i i
27:46
had the same i i looked back and suddenly realized i had like 15 issues i had abruptly closed uh
27:53
asking for well can you support um rider can you support uh my visual studio from mac can you
28:02
support uh with your studio code yeah yeah and so on and i said i know i can't i just don't have the
28:11
the band bandwidth to do that but then what is the lowest common denominator that's definitely
28:18
a like a dot net global tool and if somebody feels that they want to build something else
28:25
a UI on top of that, then they're most welcome to contribute doing that, but I'm not doing it
28:34
No, not especially when you're not getting paid, right? Exactly. Exactly. So yeah, you want to minimize the amount of work you do for nothing
28:43
Yeah, indeed, indeed, indeed. And focus on the core value that you hope you're adding
28:49
So definitely. Yeah, yeah. Yeah. Command line works for everything pretty much
28:53
It does. It does. Yeah. So, yeah. So, so the third thing I wanted to highlight is
29:02
is a little bit different. It's actually brings, brings us back to the good old days of Entity
29:09
Framework Classic. So it sounds like you, you haven't worked a lot with EF Core
29:15
I have, but not for a number of years. Not recently. EF Core on the surface looks similar to the product that was called Entity Framework
29:30
but it's a completely different beast. If you ask the team, their vision for EF Core is more to bring forward the ease of use and the niceness of another API called link to SQL, which came around the same time as link to entities or link entity frame with SQL
29:59
link with the entity framework right and link to sql was completely tied to sql server of course
30:08
but on the other hand it had some really really nice features and the the link provider in link
30:13
to sql was a very high quality link provider maybe compared to the one in in ef6
30:21
partly because ef6 actually was originated from a project about relating to a new operating system
30:32
for microsoft where they also wanted an object sorry object-oriented file system and then oh
30:40
yeah i remember the tool was actually meant to be like the search interface to this object-oriented
30:48
a file system and then it for various reasons this always never happened but it no parts of it
30:56
then appeared as a vis the operating system known as windows vista
31:04
and then they repurposed or some of the intellectual property for this uh with entity
31:10
framework so um you can see from the from birth it wasn't really particularly designed to work
31:18
with relational databases in any way it was kind of retrofitted into it whereas link to sql speak
31:25
to that from the ground up so so those two products even though they look similar on the
31:31
surface they have each have a db context then they have classes representing the tables they
31:37
don't really have a lot in common yeah so for entity framework six you can actually run that
31:45
under dot net also new.net which used to be called dot net core so a lot of people have investments
31:53
in the entity framework sounds like you have done your parts of applications in entity framework
32:00
and so they're often asking themselves okay now i have this dot net framework 4.678 based application
32:11
but I actually would like to move forward towards .NET, but I'm a little bit reluctant to rip all my data access code apart
32:21
and start completely from scratch with EF Core, which just explained is completely different beast. Yeah
32:28
But then the EF Entity Framework team has actually made a version
32:34
of EF 6 available that allows you to run. It's a .NET standard 2.1 compatible DLL now
32:40
DLL now. So you can run it with .NET 6, 7 or 8
32:48
There's only one issue with the current implementation is that it's depending on the SQL server driver called system data SQL client
32:59
And that driver is no longer maintained except for really high risk security issues
33:10
And that in turns mean that if you want to use some of the new features of Azure SQL or SQL Server with Entity Framework 6 on that framework, you're basically stuck
33:24
So it's things like there's something called always encrypted. You can't use that with this older provider
33:30
There's a lot of newer ways to authenticate against the Azure SQL database using Azure Active Directory methods like interactive authentication with multifactor authentication, for example, or using something called managed identity, just a little bit like a service account, but within the Azure ecosystem
33:54
those options are not available to you using that old driver. Microsoft maintains a modern version of the SQL Server driver. It's called Microsoft Data SQL
34:09
Client and it's open source and it's available for both .NET Framework and .NET 6, 7 and 8
34:19
So what I have done is I have taken the current code base that was used to communicate with SQL Server and created a new driver that uses Microsoft Data SQL client
34:37
So then that will enable you to use to modernize your application and maybe even port it to Azure and take advantage of the new authentication methods there
34:49
but without having to completely rewrite your app, but do a gradual migration
34:56
So this could be considered like the first step towards a migration to EF Core
35:01
is to gently move your code to .NET 6.7.8 and then think about what to do with your data access layer
35:11
after the fact. And do you, have you written, I'm assuming you've done this
35:18
but have you written like a blog post on how to migrate? On how to migrate
35:25
Yes, I have. From framework to like EF6. Yeah, I have some advice on how to use the driver
35:32
You can actually also use it with .NET framework. So, yeah. So, the first step could actually be to just adopt the driver
35:40
and then convert your code base to .NET framework. So, .NET, I mean
35:47
Microsoft has some really, really good tooling these days, Visual Studio extension for actually converting your applications
35:55
from .NET framework to .NET. So I always point people that want to migrate in the direction of that tooling
36:05
But I think the first step could be that now I'm using this old driver
36:11
but I want to run my .NET framework app in Azure, and I want to use modern authentication methods
36:19
but I don't want to change anything else. I just want to move my existing.net framework
36:24
app into an Azure App Service on Windows. My library enabled you to do exactly that
36:32
You could do a gradual migration towards some modern.net versions. I get all the performance benefits and
36:40
continuous improvements and features that are added to .NET compared to .NET framework, which is now completely stale
36:51
and nothing new is happening in that area, as we all know. So maybe I missed it, but does like EF6
37:00
does it use the new Microsoft driver or the old one? No, EF6 currently uses the old one. Yeah
37:08
I mean, I'm sorry, EF8. EF8 uses a new one. EF Core from day one used the new driver. Okay
37:19
All right. Yeah. Because they needed a driver that worked also on Linux and Mac and so on Yeah And of course the system data SQL client driver which is part of the net framework it only works on Windows
37:35
Right, right, right. Well, that's cool. And, you know, when you were just describing that
37:42
how do you find time to actually work for real? You maintain so many
37:49
that driver is it's it's it's it's it's done it's it's there it's just it's just it's i hope it's
37:58
i i have a feeling it's making people things easier for a lot of people yeah and that's and
38:06
i don't do a lot of maintenance on that because it's it's complete yeah so how many open source
38:14
libraries do you maintain right now? About six, approximately six. Yeah. Wow. So I have the SQL
38:25
iToolbox and then I have this EF Core Power Tools and the command line edition as well. And also
38:33
EF Core Power Tools also has spawned some Nougat packages that are related to it
38:39
like for example a nugget package so you can create you can use if core command line tooling
38:47
with a duck pack i don't think do you in many of your viewers may not know what dark pack is but
38:54
it's a it's a special project inside visual studio or inside azure data studio these days
39:01
where you can define the structure of your database via sql scripts and then you can build it and it
39:08
the output of that build is a duck pack. And then Microsoft has tooling to deploy that
39:17
desired state for your database against a production database. So I have tooling that can look inside
39:23
the duck pack and generate the EF core DB context and related classes based on a duck pack, not a
39:31
like database, but a DACPAC file. Wow. Yeah, that's pretty cool. And I'm behind
39:38
I also maintain a tool not originally created by me, but I keep it alive and have updated it from .NET framework to .NET
39:48
called SQL query stress, which is a tool for stress testing your SQL servers or your Azure SQL database for that matter
39:58
Wow. So you can say you can create a query that you wanted to run
40:03
and then you can say I wanted to run so many iterations
40:08
and then you can see how your server is responding to that amount of traffic
40:14
Yeah, yeah. That's, you know, tools like that are really important to me because
40:19
you know, I mean, we all design databases, but until tens of thousands of people get on it, you know. Absolutely
40:27
And this tool exactly gives you opportunity to say, okay, what happens if I have like 5,000 concurrent sessions running this query against my database
40:37
Will it die or will it survive? Yeah, exactly. So, yeah, so I have a lot of downloads on that one as well
40:45
So, yes. Wow, that's pretty cool. um i i you just had me think of a steve steadman has a uh what's he call his tool on the sequel
40:58
steve steadman he's an mvp2 and and he has a tool called something like the sequel
41:04
something monitor why am i forgetting it because i really like it but the one the one thing i i
41:12
really like about his tool is that um it kind of tells you what's wrong with your database
41:17
you know it you know it yzes your database it does a lot of things like watching your your
41:23
query speeds happening in live real time and things like that but when i think one thing i
41:29
really like is that it will yze your database and tell you what's wrong with it and then yeah
41:35
and then it'll tell you yeah and then it will tell you how long it's going to take to fix and how
41:40
much it's going to cost right you know okay i have to have a look at that yeah yeah it's pretty
41:47
cool. And Steve Stedman, yeah. Whenever I'm using SQL Server, I always have his tool on hand because
41:55
it helps me with those kind of things, you know? Yeah. Yeah. And it's free too. I mean, I think
42:01
there's a paid version of it also, but there's a free version of it too, which for me, because I'm
42:07
not a DBA or anything, is good enough for me. Yeah. To me, as long as I can see how long the
42:13
queries are taking, that's one of the biggest things to me. That's definitely important, yes
42:19
Yeah, I remember even back in the early days of Unity Framework, you know, where, you know
42:27
I never really wanted to learn, you know, the Unity Framework language itself
42:34
So I just use, you know, a link to Unity Framework. And especially in the early days, I spent a lot of time looking how I was creating the link queries in .NET and then what SQL that turned into, what SQL was sent over to the database
42:56
and then I would change my link query, you know, to try to get the best performance I could out of any of the framework, right
43:04
By just moving things around or using different methods or things like that
43:09
And so, yeah, in the early days, I did a lot of that work, just watching things happen, right
43:14
Yeah, yeah. That's kind of remind me of the early days of .NET
43:18
where I spent a lot of time watching the garbage collector, you know
43:22
because it was important. well i it was i never used a you know a system like that before and so i really wanted to learn
43:31
exactly what the heck it's doing and how it's doing it and when it gets rid of things and when
43:37
it doesn't get rid of things and yeah and and that's that's why i and i even had you know
43:43
the guy who uh one of the guys who wrote that who wrote the garbage collector at my user group twice
43:49
and um and so i got a lot of insight from him yeah right too and uh and uh but yeah i think in
44:00
the early days of anything you spend a lot of time trying to figure out what it's doing
44:04
you know because no one really knows because there's not a lot of documentation or or posts
44:10
about it or anything like that right and uh so uh so i guess my point everybody out there is you
44:16
You know, don't be afraid to, you know, look what's going on underneath the covers
44:22
You know, that's one thing I say in my technical interview book is that, you know, there's a difference between coders and professional software developers
44:29
And the professional software developers are the ones who knows how it works
44:33
Right. Who spends time doing, you know, things like that, like you and I do that to not only understand how any framework work
44:42
I mean, how how to use it, but actually how it works underneath the covers. Correct. Yeah
44:47
Oh, someone's asking, sorry, I missed your, the only comment we got is what are your social
44:54
handles So I assuming the one that up on the screen is your It is actually just Eric EJ on Twitter and it Eric EJ on Stack Overflow
45:05
and it's Eric EJ on GitHub. Okay. I was there very early, so I could claim everything
45:15
That's usually what I do. When some new thing comes out, I immediately go to it
45:19
Not that I'm going to use it, but just claim it. Just claim my name before someone else takes it
45:24
because, you know, I really, really wanted... I don't know if it's DavidMcCarter.com
45:32
or McCarter.com or something like that, but McCarter.com, my last name is taken by..
45:38
And I didn't know this until I was trying to do it, was there's a theater where they have plays and stuff
45:46
on the east side of the country that's called the McCarter Theater
45:50
and so they took it, you know? So I can't use my last name because of that
45:56
But yeah, I try to do that just to kind of, you know, even on Macedon, I did that, but I don't like Macedon
46:06
Yeah, I think that died in a couple months. I don't think most people use it anymore
46:13
So we got a couple minutes left. So do you want to talk a little bit about being an OSS maintainer and what do you like
46:22
Yeah, actually, as we kind of have concluded, I'm maintaining quite a few relatively popular extensions and Nougat packages
46:34
And I think I find it really rewarding to do that most of the time
46:38
like 90, some over 97% of the time, I find it really rewarding
46:46
And I get a lot of good feedback from people that actually find value in my tools and my libraries
46:53
So that is definitely one of the perks of being an unpaid OSS maintainer
47:00
just to get some good feedback and be aware that people appreciate what you're doing
47:08
But I think there's also like a backside, I don't want to know what you call that in English, but there's also some disadvantages. Sometimes you are opposed by people that forget that you are providing something for free in your own spare time
47:31
because you think it's I also do it too like you say I also do to become a more professional
47:40
developer to better understand what is going on under the covers so I also do it for myself
47:47
to understand the the dark dark magic of entity framework core on the dark magic of Visual Studio
47:57
extensibility and so on yeah i think i find those topics interesting but sometimes people come and
48:04
ask why haven't you done this yet why is that feature feature x still missing um
48:17
and that is that's something that you have to just count to 10 and then write a polite reply
48:26
and say, listen, if you're willing to pay me my daily rates
48:33
I will be happy to implement it right away for you. So we can always arrange something
48:39
But other than that, remember that this is free tools. And if there's something that on the surface seems pretty straightforward
48:49
but is missing from whatever product or library, that's probably a good reason for it
48:55
Maybe because it's not as simple as it sounds on paper. Yeah
49:01
So there's that. But as I said, it's just a small fraction of the overall experience
49:11
And I'm getting slightly older and more mellow, so I don't get so agitated about it as I sometimes used to get
49:21
and maybe people sometimes users don't really do it in bad will but they just tend to forget that this is actually
49:33
a piece of free software supplied by somebody in their spare time
49:37
yeah I think people might be a little more agitated or something
49:45
because they're trying to work on something they need to get done right
49:49
away and then there's something missing and oh my gosh, why isn't it there
49:53
I need to get this done. Well, you know, my reply to all of them would be you do it and submit a pull request
50:02
Exactly. That's what I often apply to say. If they're asking for something that I haven't even thought about, well, either that I say
50:10
okay, that's completely out of scope. Or if it sounds interesting, be my guest, create a pull request and I'll be happy to
50:18
have a look at it. Yeah, yeah. And then mostly you hear crickets after that
50:28
Yeah, of course, because they want to do it, right? Yeah, that's. Yeah
50:35
So one of the things I've been doing this summer and is I've been doing a lot of small blog posts on my site about
50:46
explaining more in detail than Microsoft does these code yzer violations, right
50:55
And not only why you have the violation, but how do you fix it
51:00
And here's the setting for the editor config file. So I've been writing, I don't know how many of those things I've written
51:07
I've lost count, right? And so, you know, I usually use to come up with that data and come up with sample code
51:19
I usually use projects where I used to work. But I kind of ran out of stuff on that
51:24
And so I pulled down a copy of EF Core. And I started applying my editor config file, which is the most comprehensive of anybody, to EF Core
51:36
and I'm finding some perf stuff. And so one of my plans
51:44
as soon as I get done probably with... You should do a pull request
51:48
Yeah. I think when I get back from Lithuania, I'm going to start doing pull requests
51:55
and start fixing these little perf thingies that Microsoft just never did for some reason
52:01
And I'm just going to say, yeah, I want any framework faster
52:05
and so I'm going to make the change myself. One piece of advice
52:10
if you want to do that and don't want to get it
52:13
rejected right away, you have to provide a benchmark.net piece of code that
52:21
demonstrates the performance difference. Yeah okay That a good thing Yeah And that what I use Yeah but of course Yeah just so you know it because otherwise it will just say well prove it
52:37
That's your claim. That's your claim. Prove it. Yeah, yeah, yeah. Well, no, I mean, like, the one I'm thinking off the top of my head is there's sometimes when you're looking for a string
52:51
And I forget the actual method off the top of my head
52:55
I don't know if it's contains or something. But, you know, a lot of people, if they're looking for like the letter A, right, they put the letter A in double quotes on both sides
53:07
Yeah, it's much easier, better to use a char. Right, or char or single quotes, right
53:14
Yeah. And it's actually, you know, it is a performance difference, right
53:20
And so those are the little things that, you know, I've been finding in any framework is those little, you know, things here and there
53:27
Yeah. Yeah. Yeah. So anybody out there, if I will keep an eye on, give some thumbs ups to your pull request
53:36
I'm a little worried because I've only worked on one. I actually did work
53:41
I think I only did a couple of things on it for the the BB driver for any of the framework
53:50
But I never got back to that. And I never had to go through the whole pull request process
53:56
I was working with the guy, the PM from the team or something, and so I didn't have to do all that
54:02
But yeah, I've got to figure out how to properly do all this
54:06
so Microsoft won't reject my pull requests and everything. Yeah, I have a lot of pull requests accepted
54:13
but you need to add, particularly if it's performance pull requests, They want you to prove that it's actually making a difference
54:25
Yeah, yeah. No, I agree. They don't want to introduce something that, you know
54:30
has no benefit if they can't prove it, right? Exactly. Yeah, yeah
54:35
And that's, you know, that's why, you know, I tell everybody that, you know, if you haven't used benchmark.net
54:41
you need to start learning how to use it. And because that's really the only way to tell how code you're real
54:48
how fast your code is really running, right? Without doing something like, you know
54:56
monitoring the live site or something like that, right? Yeah. And so, and I even, and to make it easy on people
55:06
I actually have a library for benchmark.net, you know? Yeah, okay, like to make it even easier
55:12
Yeah, to make benchmark.net even easier. And because basically what I did was all the common, you know, I was starting to write benchmarks for multiple projects
55:25
And I'm going, well, I'm doing the same thing over and over again. So why not just make a library out of it
55:31
So, you know, in my library, I actually have a class called Benchmark that has all the attributes that I use and all my tests
55:39
And, you know, basically everything is rolled up in there. for me to you know to do get a benchmark project started now is just so easy now you know well
55:51
i better let you go that was a great discussion i i enjoy talking about any framework i don't
55:55
it's been a long time since i've talked about any framework and so i'm i'm glad to talk about it
56:00
again because it's like i said it's one of my favorite tools that uh microsoft has come out
56:05
with in the last you know 15 years or whatever has been now that's that long already that and and
56:13
that together with link is really that makes a big difference for dotnet i think so yeah link link
56:20
is was another dramatic difference in dotnet yeah you're right so um is there anything else you want
56:27
want to plug before we go? I've done my best. I don't think I can do anything. Okay. So before
56:36
I let you go, I'll ask the question I ask you on my first-time guests because I ask this because
56:41
there's more to life than coding or maintaining an open source library. So what do you do for fun
56:48
that's none of those things? Well, if you look behind you, I don't know if you can see it. I
56:55
collect and read comic books. Oh, cool. Yeah. So that's part of what I do in my spare time
57:04
So, yeah, and I really enjoy that. There's always something new coming
57:09
up. So, yeah. Yeah. Have you watched the Amazon show Generation V
57:18
Is that what it's called? Generation V? No, I don't have Amazon. It's crazy
57:23
Oh, my gosh. I like any superhero show where they curse, right
57:30
That's my favorite thing. Most comic books, yeah, they don't curse. There's no sex
57:39
There's a lot of cursing, a lot of sex in this. I'm not sure if I should be saying that on my show
57:45
Now you did. Oh, well. All right. Well, thanks. You can hang out afterwards if you want
57:52
But I really appreciate you being on the show for the first time and hope to have you back sometime in the future and talk about whatever you're up to
58:03
Thanks a lot. And thanks for having me. Yeah, thank you so much. All right. That was a great discussion
58:10
Like I said, I kind of miss any of the framework. I haven't used it in a while
58:14
And I think I was actually thinking a week or two ago that I need to come up with something so I can use any framework again
58:22
but we'll see. All right. That was a great session with Eric. I enjoyed that
58:29
So here's a geek humor for today. I actually was watching a show, a new show on Apple TV about
58:36
chemists. And so this kind of reminded me of that where, you know, the scientists or chemists
58:42
sir, it finally worked. Great job. Now we need to figure out why. That's exactly how science works
58:47
right? Programmers, sir, it finally worked. It's a miracle. Don't ever touch it again
58:52
Yeah, that is so true in our world. I thought it was funny
58:58
I don't know if you guys do, but I think that's funny. All right
59:03
As usual, help me help the kids from Delhi and India. I visited the Voice of Slum a year ago, now last year, and brought computers and hung out
59:18
with the kids and Dave and Chandy. And, you know, Dave and Chandy do a wonderful job
59:23
help supporting these kids with not only clothing and food and school
59:29
but also vocational training that some of the support from my book
59:33
has helped out with. And so if you can, please go to voiceofslum.org
59:38
and, you know, donate whatever you can. You can donate money. You can buy school supplies
59:44
things like that. But, you know, please go and help them because there's a lot happening in this world
59:51
and everybody needs our help and this is one of the ways you can help
59:56
And if you do, I'll be really happy I really like that organization
1:00:04
All right. Thanks for watching. My next show in a couple of weeks will be November 4th with Maddie Ledger, as probably
1:00:11
you guys know her more from Microsoft. I'm excited to have her on
1:00:17
I've been trying to get her and actually someone else I'm having on in December for a while
1:00:23
So I'm really glad that I've been able to get them on. And as always, please donate blood at your local blood bank
1:00:30
I did a couple of weeks ago and actually November 1st, I'm going to be participating in the study where I get hooked up to a machine and both my arms get needles put in it
1:00:42
And they go through my blood for three hours and pull out white blood cells, which they're testing in very serious cancer patients with really, really great results
1:00:55
And so I'm really happy I can help out with that. It's not an easy thing to be strapped to a chair for three hours and not be able to move or drink or eat or anything
1:01:05
But, you know, what they're getting out of this is amazing. And so I'm always willing to help out with things like that
1:01:17
All right. Always email your suggestions, including who you want me to have on the show, how you like the show
1:01:24
what you want me to talk about on the show, please send those ideas to DonnaDave at live.com
1:01:30
And with that, I'll see you in a couple of weeks. Simon must be in the bathroom Simon