Rockin' The Code World with dotNetDave ft. Mads Torgersen - Show 3
3K views
Nov 9, 2023
Join us in the third episode with host David and Guest of the show Mads Torgersen, who is the Principal Program Manager at Microsoft and Lead Designer of C#. C# Corner - Global Community for Software and Data Developers https://www.c-sharpcorner.com #csharpcorner #microsoft #liveshow #csharp #dorner
View Video Transcript
0:00
hey welcome everybody to the third show of rocking the code world with Donna Dave I'm
0:13
David McCarter I'm really glad you're here it's an awesome beautiful day in Southern California
0:19
right now so I hope you have nice weather where you are I know some parts of at least America are
0:25
kind of getting hit hard with some hurricanes and stuff. So please stay safe out there
0:31
And I'm really happy that, you know, today's guest is going to be Mads Torgerson. He's the
0:37
lead of C Sharp now. And so I'm really excited to catch up with Mads, asking some questions
0:44
and get your questions ready. Because if you want to know what's happening in C Sharp
0:51
and down at five and C sharp, this is the guy to ask. So get your questions ready
0:57
There's no dumb questions. Just post them and we'll get to as many as we can
1:03
Okay. So can you put up my slide deck? There we go. So
1:09
there we go. So those of you who don't know me, I'm David McCarter. I'm a Microsoft and
1:20
C Sharp Corner MVP, award-winning developer, architect, consultant. There's all my email
1:26
and handles and stuff like that. And I'm a consultant and I'm actually on the hunt for
1:32
a new consulting gig. So if you know of any out there, let me know. And that's about me
1:39
So welcome to the third show. I'm really glad you guys are here again. And I want to say again
1:50
that this show is for you. It's not for me. It's not for C Sharp Corner
1:55
Well, I guess it is kind of for C Sharp Corner, but it's really for you, the developer out there
2:00
especially you, the junior and intermediate developers learning, wanting to learn all the greatest things
2:06
about programming that I can teach you in my 30 years of programming nowadays
2:12
So I've been programming longer than some people on my team at work
2:16
So it makes me feel old, really old. But anyway, please email me your suggestions for the show, what you'd like us to talk about, what guests you might want to have on the show
2:29
If you like the show, if you have any comments for improvement, no email will be ignored
2:35
So please email me. This is the third show and I've yet to get a single email
2:40
So somebody please email me. Let me know if you like the show or not
2:44
Right. And as you know, it's every Saturday at 10 o'clock. Pacific Standard Time, because that's where I live on the West Coast of America
3:00
So, you know, one subject that, you know, kind of hit me yesterday for some reason is
3:05
you know, I know we're all locked in right now. A lot of us are locked in. You know, I've barely left my home since March. I haven't seen any of my family
3:16
You know, I haven't gone on any dates or anything. So it's been tough
3:23
So I know a lot of people are using that time to learn programming, which I definitely recommend
3:28
But I also like to, you know, kind of bring up, especially to the younger developers, is there's more to life than programming
3:36
You know, programming is just part of your life. And so it's easy to forget, especially now that we're locked up and, you know, stuck in our homes, you know, until we get a COVID-19 vaccine
3:51
It's easy to kind of get sucked into just, you know, programming, programming all the time
3:57
And so don't forget to take some time out, you know, for yourself or your family
4:00
and for me, you know, I, you know, a lot of things that I like to do, which I'm going to share a few
4:10
of them is, you know, and someone asked me this at the C-sharp corner once, at the conference once
4:16
you know, most of my things I do outside of programming all wrap around something creative
4:23
and um so you know for me here's just some of the things i do i play my guitars and actually during
4:32
the pandemic i've been playing my guitars a lot more and um i'm actually working uh if you guys
4:38
have tuned into the last two shows you know that i'm working on a intro song for this show
4:43
um and i'm going to world premiere part of that i'm at the end of the show today so i hope you'll
4:49
hang out for that. But so anyway, I'm working, you know, with four other musicians to come up with
4:54
the intro song for this show. And we're getting that, you know, we're bringing, getting that all
5:00
together right now. So I do that. And I've also been working on writing new songs, just myself
5:05
and recording. I do all my recording here in my home. And so I don't need to, you know, rent time
5:12
at a recording studio. You know, something else I do a lot and I really enjoy and I haven't really
5:18
been doing, unfortunately, a lot during the pandemic is photography. I'm an award-winning
5:22
photographer, and I love doing photography. And I specialize in doing photography of concerts
5:31
music concerts, of course, because you all know I love music. So I actually work for a lot of rock
5:37
bands, rock bands you've heard of. And when they come into town, they said, hey, Dave, come take
5:41
pictures of our show. And I go, okay. And I go hang out with them sometimes, have dinner with them
5:48
hang out the, you know, backstage with them. And then I do my photos. And so that's what I really
5:54
enjoy doing. You know, also during the pandemic, I've been writing a lot more. And yeah, that's
5:59
programming related, but it's still creative to me. And a lot more. And so, you know, one thing I
6:06
want to share to the world for the first time, no one's ever, no one has seen this in its final form
6:12
But, you know, I've been doing art ever since grade school. I was in special art classes
6:19
I even won my first book award in like fifth or sixth grade
6:24
And so I really love doing things artistic. And, you know, even that intro countdown video today, I did that for the show
6:34
So I love doing that stuff. So I want a world premiere of my new artwork
6:40
No one has seen this in his final form. And so please be kind because like all artists, we're very shy of showing our artwork
6:53
I think that's something with artists is we're our own worst critic
6:58
And I'm definitely that for sure. So I hope you like it
7:03
I have a little video to show you this art project because I thought that would be a little cooler
7:08
because not only is this art, but it also involves music and basically all the things
7:14
I love in my life right now. So I going to show that to you now so what do you think um that my art project and i literally literally been working on it
7:48
since February or March. And that's the final, my first art project
7:56
I'm going to hang in my own home. And everything in that art project
8:02
is stuff I had laying around my house. And so I'm repurposing stuff laying around
8:08
and trying to make some art into it. So I don't see any comments
8:13
So I don't know if anybody liked it. But so that's some of the stuff I do
8:17
to kind of keep my creative juices flowing because I said this at the C Sharp Corner Conference
8:23
is that I do all these other creative things because that feeds into programming, right
8:29
Because programming is creative. And to be a really good programmer, you have to be creative or think creatively
8:36
And so everything I do basically is wrapped around creativity somehow. So anyway, I hope you liked it
8:44
I want to mention real quick, And I'm mentioning it this week because I finished a brand new recipe for the Hello World Cookbook
8:53
I've unit tested it a couple of times and I think it's done. So I started a project last year after my visit to the Voice of Slum in one of the slums in Delhi, India
9:06
And since that time, I've been giving all the profit from one of my books to the Voice of Slum monthly
9:14
And but now I'm doing a whole book on cooking from recipes from technical people like yourselves
9:22
So I have a bunch. I have some sent into me, but not near as many as I need to actually produce a book
9:29
But once I do the book, 100 percent of everything will go to the voice of Slum
9:34
So no matter what country you're in, you can you can go to Hello World Cookbook dot com
9:40
And not only am I looking for recipes, but I'm looking for unit testers
9:45
I'm looking for editors. I'm looking for graphic artists. So there's lots of other people that I'm looking for than just submitting a recipe
9:52
So please go to the site because this will all go to the kids that I met at the Voice of Slum last year
9:59
And especially right now during this pandemic, they really need your help
10:03
So I hope you help out this endeavor. so as promised we have giveaways they haven't changed in the three shows so far
10:14
so I have a $50 Amazon gift card I'm going to give away today at the end
10:20
and I'm going to give away a C Sharp Corner swag first which includes a backpack t-shirts and
10:26
whatever else C Sharp Corner wants to give you and then for years at residence only I have a
10:31
a Dave swag pack to give you. And I hope somebody answers the question
10:37
because no one has won it yet. So this is the third show
10:42
I want to give away this to somebody in the States. And so please do that
10:49
And then at the very end, everybody will win a free copy of CodeRust from DevExpress
10:56
CodeRust is the only refactoring tool I've ever used in Visual Studio
11:00
and so you can get your own free .NET Dave copy at the very end of the show
11:06
So I hope you'll stay tuned. So let's give away the C Sharp Corner swag pack, okay
11:14
You got your fingers on the keyboard. You're ready to type the answer
11:20
I tried to make them easier this week, but let's see if I made the questions easier
11:25
Ready? what are the three main pillars of object-oriented programming? Okay
11:35
And the reason I bring this up is because I was actually helping someone on my team yesterday
11:41
do object-oriented programming in Java. And I've never written Java. and even though I knew this
11:55
yesterday I saw for real that object-only programming has nothing to do with the language
12:03
It's a methodology that I swear by. And I learned it really early in my career
12:11
I still use it. I will always use it in my programming career because I know it makes better applications
12:17
and better code. So what are the three main pillars of object-only programming
12:23
It looks like someone won already. So I'm going to go on to the next slide
12:28
So also, if you didn't know, the show at the end of this month is on Halloween
12:36
And I don't know where you are, if you celebrate Halloween or not, but we do in America from
12:41
the little kids going around and getting candy. not this year, but usually I remember taking my kids to get candy and adults have adult parties
12:51
and stuff like that. So for this year, I decided since it does fall on Halloween
12:58
and I really never do anything for Halloween anymore because my kids are older now
13:03
I wanted to dress up for Halloween. So I decided to make a contest out of it
13:10
So if you take this picture that I've tweeted every week in the last few weeks of me written by the Reverend Geek, I mean done by the Reverend Geek
13:20
If you take that picture and make kiss like makeup and draw it on the picture and then post it to Real Donet Dave and Rockin Code World, I will pick a winner and you will get a C Sharp Corner swag swag pack
13:39
So no one has submitted one yet. So if someone submits, you might be the only one
13:46
So you'll win. So somebody out there with a little bit of artistic juices flowing through them
13:53
please design my makeup. And I promise to wear it on the Halloween show
14:01
Okay. Okay. So now before I bring on my very special guest today, I'm going to give away the Donna Dave swag pack, which includes stickers, lapel pins, and I'll throw in a book. How about that
14:19
So this is actually the same question from last week because no one got it
14:25
And if someone doesn't get it live, if you tweet me the answer later, if you watch the recording, I'll also send you it
14:33
You don't have to do this one live. Okay, ready? What year did I start as a Microsoft MVP
14:41
Where's the logo? Anyway, supposed to be a logo there. Okay, I've been a Microsoft MVP for a while now
14:48
And it's one of my things I really love doing. And so what year did I become a Microsoft MVP It not hard to Google and find out okay Oh there And if it after the show tweet your answer to Rockin Code World
15:06
and RealDunitDave and whoever does it first. It's not 1945, Rod. So whoever answers it first
15:15
we'll get the Dunit Dave swag pack, okay? So my very special guest today
15:24
is Mads Torgensen. He's the principal program manager of Microsoft. But before I bring Mads on
15:31
before we bring him into the show, the two talking heads, I want to kind of share a little bit
15:37
on how I met Mads and some fun we had in India. So I met Mads two years ago at the C Sharp Corner
15:47
conference. And I was really, really lucky to actually spend two whole days with Mads touring
15:54
India. We had such a blast. And we really became friends during these two days. And you can see
16:01
her, all the sites that we visited in India. And I had so much fun. And there's us at the
16:10
India Gate. And there's us getting kind of mobbed at the India Gate. We couldn't get people to stop
16:17
wanting to take pictures with us. And so I really appreciated doing this with Mads
16:25
and getting to know him, and especially since he's such a big VIP at Microsoft
16:29
So, you know, it's always good to have a good network and to help you out in your career and stuff like that
16:39
And to get guests on the show, right? So there's us at the hotel after we got done
16:45
touring Delhi for the second day. And there's some clips of me that same day or the next day playing guitar, getting lifted up by the C Sharp Corner people, which is one of my favorite moments ever
16:58
And there's us having dinner at the very end of the conference. And so that's where I got to know Mads
17:05
Mads, and I'm really glad he did because not only is Mads, he's a really nice guy and really fun to hang out with
17:13
But, you know, he's one of the important people at Microsoft. So with that, let's bring Mads on
17:22
Hey. Hey, Mads. How's it going? How are you doing? I'm doing okay
17:26
Well, it sounds like you have better weather in San Diego than I have up here in Seattle, which is typical Seattle fall weather now with a little bit of drizzle and a lot of gray
17:39
It's supposed to be 1030 in the morning, but it feels like the sun's barely up because the layer of cloud is so thick
17:47
But I'm not going to let myself be bugged out by that. You should be used to it by now, right
17:54
Yeah, that's true. you know the uh october is the start of your raining season right that's true that's the old
18:01
seattle joke you know what what do you call the first sunny day after a period of rain
18:05
april yeah that's a good one day that's what we usually say
18:11
because by the night of april it rains like almost every day right that's true yeah yeah
18:18
see in southern california simon and i were talking about this before you joined uh he's he's
18:23
goes, he's going, how's the winter going there? And I go, we don't have winter here. You know, in San Diego, we don't have winter. You know, we have summer and kind of summer
18:33
That's it. You know, we don't really have a fall. We don't really have a winter
18:39
So anyway, well, I'm really glad you're here. You know, I'm glad you took some time out to
18:45
speak with not only me, because I haven't, you know, like really talked to you very much since
18:50
I was up in Seattle. And also for people to ask you questions on what's coming out in Donut5
18:59
So thanks for being on the show. Thanks for having me. It's great to have an excuse to get
19:05
back together virtually. We've seen each other a couple of times since the C Sharp Corner Conference
19:10
in 2018. But it's, I mean, there's a little bit of distance and we didn't have an MVP summit this
19:16
year and so on. So, uh, uh, yeah, it's kind of fun that we're together here on C sharp corner again
19:22
since that's, that was sort of where we got to know each other in the beginning
19:26
So yeah. Yeah. Closing the circle. Yeah. Full circle. Right. Yep. So, um, so I, you know, I kind of want to, uh, you know
19:37
leave as much time as we can, you know, for questions and stuff like that. I don't see any yet. So I'm kind of, I'm kind of
19:43
kind of get the ball rolling to hopefully some people will start asking you some questions
19:47
not be shy. So I thought of one last night for you. And so .NET 5 is coming out. And .NET 5 is a
19:59
big change to the .NET ecosystem because all of .NET is merging into one framework now called .NET 5
20:07
There's no more .NET Core. There's no more .NET Framework. There's no more Xamarin. It's all one system
20:14
I know you've probably been working on this for a couple of years now
20:21
The first question I have for you is, out of everything coming out of .NET 5
20:27
and since you're also a developer, I hope, ish, so everything coming
20:37
out of .NET 5, no matter how obscure your answer is, what is your favorite feature of .NET 5
20:44
The number one thing, if you could pick one thing. Well, that's a
20:55
tough one. So to be clear, I don't even know everything that's coming into .NET 5
21:01
So it's going to be a bit of a weasel answer, but I think that the
21:08
the unification that you allude to, that we've sort of been astray for many years
21:16
with many different .NETs because each of them didn't really fulfill all the scenarios where people wanted to use C Sharp
21:23
and use them and be part of the .NET ecosystem. And being able to bring that all back together
21:30
which, you know, .NET 5 starts that and .NET 6 is sort of what the last things
21:34
are meant to come back, come together in this wave of .NET 5, .NET 6
21:40
And that unification in and of itself, I think, is really the biggest feature in my mind
21:45
and the one that I'm most happy about. It means so much in terms of
21:53
well, it's just easier for everyone, but it also means that we have a much easier time
22:01
at evolving C Sharp and .NET together and we can sort of set
22:08
we can put full speed on the evolution, on the innovation, which, you know, we've spent a lot of resources
22:17
and developers out there have spent a lot of resources just dealing with there being these many different variants
22:22
and on the sort of core we spent as you alluded to a lot of effort just bringing these things together And so once that complete in particular when you know with 6 when we sort of finish that movement
22:38
to me, that sort of opens up a whole new world of, okay, now we have the platform that we always dreamt we had
22:47
that where all the moving parts are in, you know, in one stack and we can evolve things in the best way possible
22:55
That is, you know, that opens up so many possibilities. And I'm really excited about that
22:59
And we're definitely starting to think about, well, okay, what should we do then? Even though GANET 6 is still over a year out, we're definitely, and certainly on the language side, we're starting like, okay, okay, we can tinker with the runtime now
23:11
We can mess with the type system in the runtime, and it'll be for everyone
23:15
You know, how can we make the most of that? So it's really, someone who's, like, very engaged in the innovation aspect of things, this is such a turning point
23:23
Like this, this removes so many of the obstacles that have been around pretty much forever
23:28
Yeah. Yeah, I think that's my favorite thing. You know, I'm, you know, I've been using Microsoft products long enough that I usually do a wait and see kind of thing
23:39
But, you know, to see what really pans out in the end. But, you know, I really like the direction and, you know, and especially being a speaker and, you know, a writer and things like that
23:51
you know, it's going to make it a lot easier for me, you know, because I don't have to
23:55
you know, do you, so are you talking about the .NET framework? Are you talking about .NET
23:59
core? Are you talking about .NET standard? Are you talking about Xamarin? I mean, now we all just
24:03
have one thing, right, in the end. And so, and I, you know, I think it'll help drive, you know
24:10
you know, the, you know, more adoption of .NET and more adoption of Azure and things like that
24:17
And now that you can write C-sharp code that runs in the browser, I mean, it's pretty freaking amazing, right
24:23
We don't even need JavaScript anymore. Well, we do. We do kind of
24:28
But, I mean, we don't need to write it, right? Right. No, I think that, yeah, that's, I think the whole .NET core wave was really successful in broadening out, because it's cross-platform
24:42
platform and broadening out C-sharp and .NET to many more platforms. And we've definitely seen a strong uptake in just the number of developers on .NET
24:52
It's just the absolute, the count of all .NET developers has really been growing at a very
25:00
healthy clip over the last several years. But what's sort of been missing, so we've had a lot of breath and we've grown to have
25:06
a lot of breath. And what's sort of been missing is, you know, stitching all that together and having it be
25:11
one product instead of several different products and bringing in samarin as well um as you know
25:17
a fully merged part of dot net will also you know have a be part of that effect so we have one one
25:25
net that that is for all these things that's going to be great yeah for some reason that kind of
25:30
reminded me of um you know back in the late 90s you know early 2000s uh you know when you know
25:36
when I was working with, you know, Visual Basic 5 and Visual Basic 6, you know, and I would even say this sometime in conferences that, you know, at the time, you know, there were more Visual Basic developers in the world than all the other developers put together, you know
25:54
And that kind of shows you, at least with Visual Basic, people can hate Visual Basic as much as they can
26:03
But what it did was it allowed a lot of developers, including myself, to get into programming pretty easily
26:12
With Bill Gates basically stopping the release of Visual Basic in the early days until the components were put in
26:21
Right. You know, third, you know, the third party, not only the components for Visual Basic, but that opened up the third party market, too
26:28
Right. And so, you know, Visual Basic brought a lot of developers into the system
26:34
And and and then that came out. And, you know, I think things were a little more fragmented
26:41
And then with Microsoft kind of going off in different directions, that didn't help anything
26:45
So, yeah, I hope this all brings everybody back together and we get more .NET developers
26:51
You know, right. Well, you know, I was thinking about it this morning before the show that, you know, it's going to talk about object oriented programming and, you know, me helping my teammate, you know, with a Java program and and watching
27:07
And she's she's new to using the Java tools. But, you know, when we were going through it yesterday, she kept going, oh, man, this, you know, she was going, man, I wish I had Visual Studio
27:18
I wish I had Visual Studio, you know, because where's the, she kept saying over and over again in the meeting
27:24
where's the IntelliSense? Where's the, you know? Yeah, it's funny how I think that we've
27:34
in the programming language world, we've been always kind of thinking, well, there has to be, there's got to be some revolution around the corner
27:44
where programs stop being just files full of text. You know, there's got to be some like graphical revolution
27:53
or something in programming. And there's been some of that, but really at the core
28:00
programming is still about text and where the revolution has been is in how you interact with that text
28:06
And, you know, instead of having structural editors or visual editors, We have that as sort of like helper tools instead where you're not building up your program by drawing graphs and stuff
28:21
But the tool increasingly, like if people have been programming over like one or two decades and have been using tools
28:28
you will have essentially if you think back to how well did the tool get your program
28:34
How well did it understand what you were doing 20 years ago, 10 years ago today
28:38
There's really been a marvelous revolution there where now you can have these very, you know, your tool is full of high fidelity refactorings and all these things that you trust
28:49
You trust your tool to understand your code and do right by it
28:52
And you let it do more things on your behalf because it's so good at it
28:58
And that's really been where the revolution has been and where the productivity boost has come from in terms of coding
29:03
Yeah. And I, you know, and, and, you know, using Visual Studio for like, what, 20 years now, I guess, you know, you know, having one tool to kind of do everything, you know, is kind of, I think is really awesome
29:19
Yeah. I don't know if there's another tool out there like Visual Studio that does as much as Visual Studio does, you know, and, and, and, you know, I know a long time ago, especially in the early days of .NET, you know, that the, the goal of, you know, the people, you know, running Visual Studio
29:33
where to keep the programmer in Visual Studio all day, you know, and that's why they added, you know
29:40
the ability to do SQL Server stuff and Azure stuff and you can do, and then they added the news, you know
29:48
feed every time you brought up Visual Studio. And now that's coming back, I hear
29:52
because a lot of people liked it. And so they're bringing it back
29:55
But I love Visual Studio and when I, you know, You know, I complain about it, too, but as overall, I think it's the best tool out there to do programming to me
30:09
I mean, I think when you look at sort of the IDE abbreviation, it's Integrated Development Environment, right
30:17
And that really says it all for that. That's that philosophy where everything you want to do as a developer, you can do from in there
30:25
You're in an environment and it's integrated, right? And you're a developer
30:28
So that's sort of all those three components are important to that experience. But I do want to call out that even as, you know, Visual Studio has become very dominant
30:38
And I'm happy about that because I work for the company that builds it. And I think we're doing a great job with it
30:43
But, of course, a lot of people don't use integrated tools. And I want to say that there's a vast set of editors out there
30:53
Like even when you think about just the program editing part, there's much more diversity of tooling out there
31:00
I mean, OK, we have Visual Studio Code, which is just an editor and which also does a great job of that
31:05
But that's an area that in general has grown a lot. And that's what I find the most fascinating, because, as I said, I'm only a developer-ish
31:14
And I don't mostly do actual software development. I write programs for the purpose of designing language features
31:27
So I'm a little different there. And I'm very fascinated by that interplay between the user interactions and the language and the code
31:33
I think that's a fascinating space. And it's one that we've been, I don't know how many people know, but we started a project about a decade ago that it took a long time to finish called the Rosslyn Project
31:47
which was about bringing the C Sharp implementation itself to C Sharp
31:53
It was in C++ before, but also turning it from being sort of like a black box compiler on the one hand
32:02
and then a completely separate code base that was sort of the IDE support for C Sharp
32:06
We turned it into this API, the full fidelity API, that is sort of like a language engine that can be used for both
32:14
and that really exposes the syntax and semantics of the code for everyone to use
32:21
And it itself is open source, so people can contribute more semantics to it and more new features and so on
32:27
And that sort of revolutionized this whole interplay between tooling and language
32:35
in a way that I haven't really seen in major programming languages before
32:39
that gave us an enormous boost when you think about the C Sharp tooling
32:46
even in Visual Studio, before and after Roslyn. There's really been a hockey stick
32:50
in terms of the amount of language-based functionality, but also the quality of it
32:59
like the trust that you can put in what the editor does with your code
33:02
Because we were able to create this high-fidelity language engine. And it's been very, the process of writing that, designing and writing, implementing that API, that language engine was really, has been informing a lot, not everything, but a lot of what happened in the C Sharp language sense
33:26
That was such a journey for us. That was really the compiler team's first and biggest C-sharp project, right
33:35
Because we've been writing in C++ before. Right, right. And we learned so much that it's been feeding into how we design the language since
33:47
Yeah, yeah. And I think, isn't Kathleen Dollard really big into Rosalind
33:53
Is that true? Oh, yeah. Yeah. Yeah. Yeah, she's like Kathleen Dollard, who's my teammate and has been with Microsoft now for several years
34:04
She came from a background of having done lots of meta programming, right
34:08
Of programs, manipulating programs, if you will. And Roslyn is that, right
34:15
It's a meta programming facility, essentially, right? You write some C sharp that consumes or produces C sharp
34:22
You write a refactoring, it reads some C-sharp, and it spits out some other C-sharp
34:26
It's metaprogramming. And she was really big into that, and she's continued to be a big contributor in that space
34:32
And she's also on my language design team as well. Even as she's also in charge of Visual Basic, she's on the C-sharp language design team and a big contributor there
34:44
So she's one of the people who's bridging the gap between the tooling and the language itself in a very big way
34:50
Yeah. And she's going to be my guest on December 5th. Ah, so those of you who want to come back and talk more about Rosalyn, you know, you can ask Kathleen on December 5th
35:01
And she's supposed to be on next week, but she had to move some things around
35:06
So she'll be on December 5th. And so I'm really looking forward to catching up with her, too, because I haven't talked to her in a while, you know, because the MVP summit wasn't this year
35:16
And, you know, quite frankly, just on a personal note, I'm really glad, you know, that I saw a Microsoft MVP get hired, you know, in that team
35:27
Right. Because then I felt better, especially working with her for so long on the because my, you know, my specialty and my MVP award used to be Visual Basic
35:36
That's when I that was what I originally got it for. And and so Kathleen and I have known each other since the 90s, actually
35:46
And and and so, you know, knowing her for so long and then, you know, sitting in, you know, day in, day out meetings, you know, at Microsoft with her, you know, and then you guys hired
35:57
I was going, yay. I was really happy. You know, that was really that was a scoop for us that we were able to get Kathleen
36:06
Yeah. Yeah. She's she's absolutely great. Yeah, I think so, too. So I can't wait to catch up with her at the beginning
36:13
Let's hope she's not watching this. out. You'll be blessed. Make our head burn, right? So let's move on to my second question
36:22
because I don't think anybody's asked questions yet. Come on, guys. Where's your questions for
36:26
Matt? Ask some questions. Ask some questions. So my second question for you, which is something
36:36
that I'm wondering too, because I have been in the VB.net world almost my entire programming
36:43
life. And, you know, we've gotten, you know, us older programmers that have been around since the beginning of .NET, at least, you know
36:52
we've gotten used to the way some things work. And I quite frankly is kind of
36:57
I'm quite frankly happy with, you know, the way that things work
37:02
And, but one of the big changes you guys are doing in .NET 5
37:09
is you're bringing implementation to interfaces. So, you know, back when I first started teaching interfaces, you know, I would teach my students
37:19
and other people at conferences you know you know an interface is just a contract right That basically why I described it to them It just a contract It a way you know to create types that you know can interact with other types that have the same contract and you know blah blah blah
37:36
So now you're you're giving the you know, you're giving the ability to do implementation kind of like abstract classes, you know
37:46
And so, you know, why the switch? And, you know, yeah, kind of explain the switch a little bit
37:54
and then explain what led you to that decision in the C Sharp team
38:00
Sure. And actually, this is not .NET 5 timeframe. It's already out
38:05
Oh, I thought it was .NET 5. Yeah, no, it's in C Sharp 8, which came out last November
38:10
So, yeah, it's too late to change my mind. I'm behind. But, yeah, so the idea is, and this is one of those, you know, sometimes C Sharp, we try to be the ones who do the deep innovation
38:25
And sometimes we just pilfer features from other languages. And this is definitely in the pilfering category where an increasing number of languages around us have provide some way for interfaces to give you a default implementation of an interface member
38:46
Like Java did this several years ago, for instance, which is otherwise a language that we try to pride ourselves on being ahead of in many ways
38:54
But it's actually, you know, there's really sound reasoning behind allowing that, even though it breaks with many people's sort of the purest view of what an interface should be
39:11
It should be pure contract. And I get that. And I actually applaud that
39:15
I think it's a great ideal. but one of the things that we're realizing is that you don't we've known this for a long time
39:24
but we're increasingly trying to account for in code is the fact that code evolves over time you
39:30
know and when you have public contracts in in the shape of pure interfaces you're really sort of
39:37
in in the old world you were really barred from evolving those interfaces in any meaningful way
39:43
because you have implementers of those interfaces out there who will be broken if you add another member, for instance
39:50
You say, okay, actually, these should, it would be really convenient if all of these had this method as well
39:57
But so you're doing all the consumers of the interfaces, which might, it's probably like 90 some percent
40:05
You're doing them all a favor by making the interface more rich in this way
40:08
But you can't because you're breaking the implementers And you should really not break people when you have public API, right
40:16
So that's been a sort of a hard line and a conundrum for a while
40:21
And I think this idea of providing a default implementation gives you the right knob where you're saying, okay, I can add new members as long as I provide a default implementation for them
40:32
I just say, hey, if you're not implementing this member, then this is what it should do
40:37
And then that can be some default functionality in terms of the other members of the interface
40:42
and it's really mostly meant for the situation where the existing implementers are then not
40:50
broken. They just transparently inherit that default implementation in terms of the members
40:56
that they do implement, and everything keeps working, and nobody gets broken, and that's
41:01
sort of the key scenario. Now, we've been sitting on this idea for a while and not doing it after
41:09
Java at it because we were like, yeah, sounds good, but it requires changes in the runtime
41:15
Well, two things happened. We made the full move to the .NET Core stack and said, from now on
41:22
C Sharp only needs to run on .NET Core. The new C Sharp features only need to run on .NET Core
41:31
And so in .NET Core, it's easier for us to change the runtime than it was back in the .NET
41:36
framework where the runtime was a Windows component, right? We couldn't just say, oh, there's a new runtime and expect that everybody has it
41:45
Whereas with .NET Core, it's a completely different deployment model. If people don't have the latest runtime, we can just install it
41:52
Right. And so that gave us the ability to do it. And at the same time, in the Samaritan space, you know, Samaritan targets iOS and it targets Android
42:08
And both in Java and in Swift, they have features like this
42:14
And they were starting to expose their APIs, making use of this feature
42:18
And so we were like, we're having a hard time bridging the C Sharp code to the APIs or in those other language spaces because we don't have this feature
42:26
And so we got both the ability and the motivation to do it around the C Sharp 8 timeframe
42:33
And that's why it happened there. So my general advice is don't overuse that feature, but it can save you in a tight spot, right
42:42
It can really give you the, oh, I wish we had added this member to the interface
42:46
It gives you the out for that. Yeah. I'm glad you brought up don't overuse a feature because, you know, unfortunately, that's a lot of people do
42:55
I mean, I'm not talking about just about this change, but, you know, whenever something new comes out, everybody goes, oh, we're going to do everything like this
43:02
No, no, stop, wait, you know, wait a minute, you know. And, you know, I remember, was it 10 years or so ago when some new async stuff came out in .NET
43:14
And, you know, asynchronous programming has always been difficult to implement. And, you know, it's gotten easier, you know, through, you know, the last 20 years
43:28
But, you know, it's still basically what I'm trying to say is usually when I talk to people about async programming
43:35
I tell them, please go buy a book and read it like three times before you even sit down and do it
43:41
Right. Because I've seen over and over again, you know, at places I've worked where something new comes out like async and they go, oh, let's do all this
43:51
and then it completely slows down the program, right? Or I remember I was working at a company 10 years ago
43:57
and the release was late, you know, because they implemented all this async programming stuff
44:03
and they didn't know what was causing the problem and it took them months to figure it out, you know
44:08
And so, yeah, don't, just don't do, make sure you do things for the right reasons
44:13
And for me, it's always with the future in mind, you know
44:18
Yes, yeah. Yeah. And I think the example you bring up with async is a great example, right, where it's one of those features that it was, you know, you got to ask yourself whether you even want to add it or not
44:32
Isn't it a good thing that async programming is so hard that almost no one does it
44:35
But there was kind of an inflection point where smartphones were starting to not really
44:45
they weren't really a thing yet, but they were starting to become one and tablets and so on
44:50
And also the cloud. And so the amount of async programming that needed to happen was just skyrocketing And one of the things we always try to do in C Sharp is keep an eye on when there are these inflection points in the developer world where that shift the center of gravity
45:09
or there are these new fronts that open up, then it's important to think about
45:14
is the language good enough for that? And we looked at async programming. We said, okay, it's really complex
45:19
But when you look closer, There are two distinct kinds of complexity with async programming right now
45:27
One of them is what you can call inherent complexity, which is these are things that just come from it being async in the first place
45:36
OK, if you have something that's async, then you're going to have interleaving of different program activities happen over time
45:44
And you're going to have a hard time keeping track of your state and so on
45:49
And that's just the consequence of async programming in a mutable world
45:53
Right. But there's also the accidental complexity, which is the complexity of even stringing together the async control flow
46:02
which you had to do by signing up callbacks. So you're sort of saying
46:07
here's a delegate to tell you what happens after this thing completes
46:11
And the structure of your code gets all messed up by that. Like you try to make a loop where something happens asynchronously and people are starting to build libraries that would string together lambdas for you so that you would have something that vaguely resembled a normal control flow
46:26
And we're like, stop. That's not good. Right. We have control over this one
46:31
We can fix this one. Right. We can fix the accidental complexity. and by, you know, we can win back proper imperative programming
46:41
that is, you know, the strength of languages like C Sharp by putting this async await feature in
46:50
where if you need to wait for something, you just do it with a keyword
46:54
and then everything that happens after that, even if it's looping around and doing the same code again
47:00
becomes the callback transparency. behind the scenes. And that took away the accidental complexity and made async more
47:06
approachable. But it doesn't take away the inherent complexity. And now many more people
47:10
are able to get to the point where they have to deal with that. And that causes its own problems
47:17
And so in a sense, we made it too easy. But on the other hand, once you get it
47:22
you have a shot at actually writing maintainable, clean and beautiful async code. You just have to
47:28
understand the additional ingredients that go in and the inherent complexity of the problem
47:34
Yeah. And, you know, while you're saying that, what I was thinking was
47:40
you know, I think this is a good recommendation for anybody using anything in programming
47:46
in their programming life, is that, yeah, you can write syntax and, you know, press run and it runs
47:53
Right. But, you know, if you really don't understand what's happening underneath the covers, right, then you're just spitting out code and you're going to get yourself into a mess
48:03
You know, I've seen this happen over and over and over again. Right. Where people don't understand what's happening. Right
48:09
And even with, you know, the improvements with async and await and things like that, it's still happening. Right
48:14
And so when it comes to things like that, people, please, please read some books, take Pluralsight courses, something before you sit down and start doing it
48:24
Because async, multi-threading programming is still, I mean, takes a lot more thinking than I think a lot of people realize
48:35
So we got our first question. Finally, because I was going to have to ask you another one
48:48
Are there any push for properties to be async? We haven't looked at that
48:56
I guess we could. I think that the closest you get is
49:02
like if you want to write an async property, first of all, they would have to be getter only properties
49:09
Yeah. There's no, it doesn't make sense to have a property that async
49:14
asynchronously computes its output, but also takes input, I think. Yeah. So for an
49:24
and you can't, so you can make an async getter only property today in a sense
49:29
It's not supported by the syntax and we could make it supported. That's maybe something to consider. But the way that you then do it is that you have a property that returns task of T and task of the result
49:41
And then you produce that task in the body of the property
49:47
But, yeah, I guess we could make that a little more supported
49:52
We haven't really had much of an ask for it, so we haven't gone for it. Well, John, even though we're running kind of short on time, John, if you want to post in the comments why you're looking at having an async property, because quite frankly, I've never even thought of doing an async property
50:10
Because whenever I think of async, I just think of methods. And so I'd be interested to know why John needs that
50:17
Right. If you don't get to it here, chase me down on Twitter. You can see my Twitter handle right there on the screen
50:22
And I'll follow up, too, if you put your reason, too. So I don't know if you're going to know this question
50:32
I just was curious about this. And the only reason I'm asking you is because I forgot to ask Scott Hunter
50:40
So, you know, there's a new compile switch in .NET Core that allows you to create single DLL packages, right
50:52
um it takes all the references and sticks them all into one dll right and i haven't played around
50:58
with that yet but since um since i'm like for example you know every quarter i release a new
51:05
ver officially release a new version of my open source and my nuget packages so that's coming up
51:10
here in three weeks or so um so does does that work with like nuget packages too or is it just
51:17
Just for like EXEs. I'm not the right person to answer that
51:22
I haven't followed where we landed with that in the .NET 5 timeframe. So I'll probably just say something
51:29
I haven't really researched it. I just was wondering, you know, because I haven't heard anybody say that
51:35
Right. Okay. Right. It's a great question. Yeah. WPF VM challenges. Changes
51:44
Yeah. Okay. I can kind of see that for WPF. Oh, yeah, that makes sense. Yeah, that's a good scenario. Yeah
51:51
So since I don't do a lot of WPF, that's probably why I never thought of it
51:55
Right. I do more back end programming these days. You know, I had to move away from front end, even though I still do it
52:04
So your last question, because we're running, you know, we're short on time and I got a couple more slides to go over
52:10
So my last question for you is, besides being the head of the C-sharp language nowadays
52:17
and what do you do for fun? It's a good question. I have four kids and up until very recently at least a large subset of them were staying with us And so I felt like family time took up all the life side of my work balance
52:39
So we're still trying to figure it out. We moved to the city
52:43
We're now in Seattle as opposed to in one of the suburbs after the last kids left home
52:49
and we were really looking forward to explore and go out to shows and things
52:57
We moved in at the end of January of this year. So we had about a month of looking around
53:03
and everything locked down. But other than that, there's hiking. I still play a little bit of music
53:10
though I haven't kept up. I used to play the piano in a band and everything, but that's many years ago
53:15
Oh, really? But I still I feel like I haven't really found myself a hobby, like a thing I do consistently
53:25
That's I'm still getting used to, especially with, you know, with the with the pandemic, you know, some subset of the kids kept coming back and staying with us for a while and so on
53:34
So still figuring that out. I think the this like third phase of life after the after kids life is still being figured out
53:44
Yeah. Yeah. I'm a little ahead of you. So I've already gotten that done a while ago, you know, so because my kids are older now, as you know, and I have three grandkids now
53:54
And and so I'm out of all that. And unfortunately, I haven't seen any of them for a while now because of COVID
54:01
And, you know, and even, you know, I was really happy this early this week
54:09
My daughter's graduating from school next month or beginning of December. And she's completing her school to be an occupational therapist
54:21
And she invited me to Texas. That's where all my kids live and my grandkids
54:26
And I'm not sure if I'm going to go because I'm not ready to take a plane yet
54:29
you know and for me to go there it'd be like three days there and three days back so
54:34
i we'll see what happens but i'm not sure if that's going to happen but um i know the empty
54:42
nest feeling yeah yeah yeah you kind of go because all of a sudden you have an empty house and go
54:48
okay what am i going to do with myself now you know yeah yeah yeah yeah no i know the feeling
54:53
well let's see what time it is three minutes yeah so thanks Mads
54:58
I hope you'll stick around to the very end to hear the world premiere of our
55:04
intro song absolutely and I'm really glad you came and I'm really I can't wait
55:10
to see you in person as soon as we can and to
55:14
keep our friendship going I really appreciate you being in my life
55:18
yeah likewise this has been great yeah well thank you very much
55:22
for being brave enough to be my third guest. And if you send me your address
55:30
you will get a one-of-a-kind Rockin' the Cold World Donna Dave t-shirt
55:35
that the only one in existence will be yours. As soon as I'm off screen
55:40
I'll go send you the address. That sounds very cool. Okay. I didn't want you to forget
55:44
because Scott's getting one, so I don't want you guys to be fighting over the Rockin' Donna Dave culture
55:48
No, no, I'll get my own. I'll make sure of that. All right. Thanks, Dave. All right. Let's put my slides back up. I'm really happy that I got to catch up with Mads
56:01
We only had one question. So next week, you'll see my guest is really popular
56:06
So make sure you have questions for her. I'll announce her in a second
56:12
So now let's give away the $50 Amazon gift card. And I made this one pretty easy because it's not really about programming
56:21
This morning, I decided, well, let's make this easy. Let's make giving away an Amazon gift card tied to Amazon
56:30
So if you answer this question quickly, you'll get a $50, excuse me, Amazon gift card
56:36
Ready? What year was Amazon founded? That should be very easy for you to figure out because I figured it out this morning
56:46
Okay. What year was Amazon founded? You need to have the exact year, not the actual date, but the exact year. Okay. All right
56:57
So, and like I promised, everybody wins a free copy of the .NET Dave version of CodeRush from DevExpress
57:07
CodeRust is a refactoring tool. Yes, Visual Studio has refactoring built into it
57:12
but it's nothing like what you get with CodeRust from DevExpress. And as I mentioned in the early in the show
57:22
that it's the only refactoring tool I've ever used in Visual Studio
57:26
and I love it. And I'm actually going to have the guy who is in charge of that company
57:31
on the show in a couple weeks. So there you go. Everybody gets a copy
57:39
Go to that link and download it now. All right. So a couple more things
57:46
So thanks again for watching the third show. We're still working out some kinks, especially with the announcements on the C-Shirt Corner website
57:55
And so please be patient with all that. My very, very special guest is, again, somebody I've known for a long time
58:03
And Julie Lerman, Julie Lerman, if you guys know her, you should know her
58:08
She's, I call her the queen of any of the frameworks. She knows everything about any framework
58:14
And she's also a Microsoft MVP. And so I hope you'll come next week and ask her your any of the framework core questions for her
58:25
And so I can't wait to catch up with her and learn what I don't know what's in any framework right now
58:31
Also, please, please be safe out there when it comes to COVID-19 pandemic
58:38
Our numbers are rising in America. I know India is right behind us now
58:43
So please, please listen to your medical professionals. Stay safe. Wear your mask until we get a vaccine, because I want to see you not only back on this show
58:54
but I want to see you back at the C Sharp Corner Conference once we can do those again. Okay
58:58
And as I mentioned a couple of times in the show, that I'm working with my fellow geek musicians for a Donet Dave Rock in the Cold World intro music, which I'm going to put to video
59:17
So this week, the drummer, who actually is in multiple bands here in Southern California, and is a software engineer
59:26
He used to work for Quicken, sorry, Intuit. And he's also a really great guy
59:36
But I got his drum track yesterday. So I'm gonna play for you a very short clip of the beginning of the song
59:43
Which just features him on the drums and me with the demo track on guitar. So
59:50
It's very short, but I kind of want to hear what you guys think. All right, ready
59:59
You that's all you get so we're still working on it i wish i could have played the end because the end
1:00:20
got one of those big gongs at the end i had uh jeff at the very end so hopefully next week maybe
1:00:27
maybe the week after we'll have the final song for you guys to hear it's going to include you
1:00:31
know multiple guitar players alan has been speaking at the c-sharp corner on bass jeff my friend on
1:00:38
drums me on guitar of course and my friend who's watching the show right now doing some little
1:00:42
big keyboard work so um hopefully i'll have that done and uh please please please please email me
1:00:49
with your suggestions about the show who you'd like to see on the show i haven't gotten a single
1:00:54
email yet. So somebody please send me an email and say, Hey Dave, I'll watch your show. I like it
1:01:00
Something. All right. And with that, that's the end of this week's show. And I hope to see you
1:01:05
back here next week where I interviewed Julie Lerman. Thanks a lot and take care
1:01:12
David, you forgot to announce the winners. No, you were supposed to announce the winners
1:01:17
Okay. So we end the show. Huh? So, okay, we go ahead and announce it, right? So, we have a few answers coming from the viewers
1:01:27
And I think many people have answered John has answered And then we have Santosh We have Shweta And we also have Rajesh And many people are answering it But I think many people have answered John has answered Then we have Santosh We have Shweta And we also have Rajesh And many people answering it But I think someone who has been very consistent
1:01:39
You have to pick the first one who answers. Okay. Okay. The first one who answers is John Peter
1:01:48
He says with 1994. And I think that's the right answer. That is the right year
1:01:53
That's the right year for Amazon. Who answered the first one for the C-sharp corner one with object-oriented programming
1:02:01
I think I have to go around. I have to find it out
1:02:07
C-sharp. See, we're still working on the kinks, guys. I think for your MVP award, it was Shweta
1:02:16
She answered that you received MVP award in the year 2016. Oh, somebody actually got it
1:02:22
It's 2006. right and shweta also got the amazon answer right so even that's true shweta i think also answered
1:02:29
encapsulation in the end of polymorphism one person won all three prizes no i'm just letting
1:02:35
you know i'm just letting you know i mean not everyone won it so we just could actually
1:02:41
just give away your goodies and that's how we do it all right thank you thank you everyone thank
1:02:46
you david thank you mad sir i think you both put up an amazing show i am looking forward to the next
1:02:51
week, Thursday and Friday. And I think we have this .NET virtual conference coming
1:02:56
We almost like seven to eight hours each day. And thank you so much
1:03:00
And have a great weekend ahead. And see you soon. See you later, guys
#Windows & .NET