1:59
Welcome, geeks, to another exciting episode of Rock of the Curled World with .NET Dave
2:07
I'm David McCarter. I'm glad you're back. We were off for two weeks because Simon and I were working on the .NET conference 2022, which was three days
2:19
It was last week, and we had a great time doing it. We had a lot of great sessions, a lot of great speakers, and looking forward to more conferences this year
2:29
Right now, the C Sharp Corner is talking about the Cloud Summit, which hopefully will be in Europe this year because I want to get the heck out of San Diego and go somewhere
2:40
I've been tired of being in my 10-mile bubble for, you know, over two years now
2:46
So anyway, I'm glad you're all here. I have a special, special guest, somebody I've known for a while, Jeremy Clark
2:53
he's the guy on dependency injection threading all this kind of cool stuff
3:03
and so he's going to be on and catch up with him
3:07
because I haven't really talked to Jeremy since he decided to get married and move to Washington
3:12
so it'll be great to catch up we miss him down here
3:16
speaking at conferences and stuff like that so anyway let's get going
3:21
I want to announce next week's show is going to be a very, very special show, probably the most special show since I've been doing this show
3:38
And we're going to celebrate the day before the actual .NET 20th anniversary here on Rocking the Code World
3:47
And I'm going to have a very, very special panel show. So Scott Hunter, you know, number two guy at Microsoft programming land
3:56
Carl Franklin, which you all know, he's been around forever. Him and I used to play guitar at the top of the Marriott Bar every year in San Francisco
4:04
back in the good old days of the late 90s, early 2000s
4:09
And now he does a bunch of stuff with Blazer. He's got the Blazer train
4:16
Long time good friend, Steely Dan fan, as you all know. Joe from Phoenix who runs the Phoenix Desert Code Camp, known him for a long time
4:26
So Joe's going to be on. That's going to be great. Steve Ardella Smith, very, very popular guy is going to be on
4:33
I can't wait to have him back on the show. Carrie Payette
4:37
I'm not sure if I'm pronouncing her name correctly. I'm sorry. I spoke at a conference
4:42
She was helping with her in Minnesota, I think. I remember. I remember she lent me a guitar that I could rock out the geeks before I gave my session
4:56
So I know hopefully she wasn't there and saw what I did with the guitar
5:01
But that's a story for another day. Anyway, I hope you'll be back next week
5:08
It's going to be great. I'm sure I'll find something to give away through C Sharp Corner or myself
5:15
But it's going to be a special show. I have her right now scheduled for an hour and a half
5:21
Hey, from India. And we're going to be talking about, you know, the early beginning days of .NET, you know, the current days of .NET and the future of .NET
5:33
And with these big heavy hitters on the show, it's going to be really fun
5:38
Can you tell I'm excited? I'm very excited. So I hope you'll be back next week
5:45
and join us for this very special show. It's going to be fun
5:51
So those of you in Indian stuff, stay up late. Anyways, speaking of conferences
5:58
and all that kind of cool stuff, last year I helped with the Azure Cloud Summit
6:05
that C Sharp Corner did, which I think had, Simon, correct me if I'm wrong
6:11
we had like close to 300,000 viewers or something like that. It was a crazy number
6:16
It was 11 days long. Oh, 297. Okay, I was close. 297 viewers of that conference, which is incredible numbers, if you ask me
6:29
It beat the previous record, which was my one-day conference, which was, I think, like 64,000, something like that
6:36
So it was a great conference, 11 days. I really don't know how Simon was alive after those 11 days, but luckily he's young and can deal with it
6:50
I'd be dead after a couple of days. But anyway, I finally, I think Simon on purpose sent my gift for helping with the conference last
7:05
because I think he's just messing with me. So anyway, I finally got it a couple of weeks ago
7:12
but I wanted to hold it and open it with all of you and see what Simon and the crew sent me
7:18
for helping on this conference. And speaking of that, I just want to say that
7:23
I really like conferences that really recognize the speakers and the organizers and does something nice for them It something missing from American conferences which I don like speaking at American conference much anymore
7:39
I like speaking at overseas conferences because they take care of the speakers. They reward them
7:44
They at least say thank you. Most conferences I speak at in America, I don't even get a thank you
7:49
You know, so anyway. So let's see what Simon sent me. And you're going to be experiencing this with me the first time. As you see, I'm opening this. I have not seen anything in here yet. So hopefully everything in here I can show on YouTube, Simon. Don't get us kicked off of YouTube
8:14
too. I got to see what Simon's saying. Nope. No plastic. I'm not sure what do you mean by no
8:23
plastic. All right. Well, let's see. First, I got a shirt. T-Sharp Corner shirt. I hope it fits me because they always buy them in Indian sizes and I'm not
8:41
an Indian. I'm a 6'4 tall white guy. So hopefully that'll fit me because no C-sharp
8:49
corner t-shirts I can't wear. Let's see. Oh, and Simon wrapped presents. Did you
9:01
wrap all these presents, Simon? 152 presents. wrapped presents
9:11
I've never seen that before so let's open this see what's in here oh
9:18
taped it up like it's people can't get into it drum roll I wish I had a
9:33
drum roll oh man this box contains all kinds of cool stuff
9:45
looky here i got a nice little cloud summit oh even has my name on it can you see that pretty cool wow thank you that's really
10:00
cool. I got a lot of stickers and Simon knows I like stickers. I put a mover on my cases that I
10:08
bring to conferences and stuff. So I'm always looking out for speakers. I have speakers
10:14
stickers. Let's see. I got another shirt. It looks like it actually will fit me. Awesome
10:21
Cloud Summit 2021. Awesome. Geeks need free t-shirts. All my t-shirts are geek t-shirts
10:30
I got a charger thingy, dongle
10:43
Yep. Okay. Also got a key chain. Awesome. Oh, it's a multi-USB charger
10:53
Okay. Thanks, Simon. And is this your handwritten card here? Oh, I won't read the note that Simon sent me, but he sent a nice handwritten note
11:17
Wow. I didn't know people wrote with their hands anymore. Okay. What else do I have to open
11:29
So much cool stuff. this is taking longer than I thought it would. Sorry. Um
11:36
I'll go faster so we can get Jeremy on the show. Oh, I got my MVP award for 2021. Uh, pretty cool. Huh? Cool
11:46
I like that. I put it on my, I put all my awards on my home entertainment center over there
11:52
Maybe I'll take a picture in the future and show you guys. Um
11:56
and I think this is the last one. Another wrapped present. Boy, Simon, you're really good at wrapping presents
12:05
I'm not near as good. Let's see what's in here. oh it's got a ribbon on it and everything and cloud summit speaker as stickers
12:29
you went all out uh simon let's see what this is ethnic wear
12:41
and you use a lot of tape on this simon you didn't want any customs uh inspectors getting into this i assume um it's okay
12:59
Oh, wow. Oh. Awesome
13:10
I got this Indian shirt. Is that what this is, Simon? Like the one I wore at the conference
13:18
Yeah, cart that. If I'm saying that properly, probably not. I love these shirts
13:25
I have one that I actually bought when I was in India. and I wore it on stage
13:33
The last time I spoke at C Sharp Corner, I think that was the last time I spoke
13:37
was wearing one that I wore in India. And now I have another one
13:42
Can I wear this in America and people not make fun of me? I don't know
13:49
There's something more in here. Oh my God, Simon. What's this? Oh, and pants
14:11
Wow. These are pants. Pajama in Hindi. Is that what? Yes, pajama in Hindi. Wow
14:24
I'll wear these tonight. Wow, Simon, thank you so much. Thank you to Mahesh, C Sharp Corner, the Cloud Summit
14:35
That was the most I ever got from a conference. I thank you so much
14:41
You know, it's the special things. I know this was a lot of work for Simon
14:45
but to me, you know, it's the little things that make speakers want to come back
14:49
and be excited about speaking at a conference. And you know I can wait to come back to India I don think it going to be this year maybe later this year We don know yet But I really want to come back to India I miss India I actually want to go back to Ukraine
15:07
maybe not right now. But anyway, sorry that took so long, but I wanted to show all the cool stuff
15:15
that Simon and the crew does, all the hard work they do, not only putting on the conferences
15:21
but taking care of the speakers too. So thank you, Simon. Thanks to everybody
15:26
And I can't wait to help out with more conferences at G Sharp Corner
15:31
including speaking. I didn't speak at the one last week, but maybe later this year
15:36
I think we're going to have another code quality conference, right, Simon? And I'll be definitely speaking at that one
15:43
And I'll get Jeremy to come on, who's going to be our guest in just a second
15:48
So anyway, sorry, I'm overwhelmed. That's so nice. So this is not my new C-sharp corner article, but it will be in a few days
16:05
So, you know, as I stated at the beginning of the show, Donette turns 20 years old next weekend, next Sunday
16:14
and I wrote an article called A Look at 20YearsOnMicrosoft.net, My First Enterprise Application and More
16:23
I'm going to take you on a little history of all the cool stuff I've been writing with .net
16:29
and all the projects that I liked working on and what I want to see for the future of .net
16:36
And anyway, so that's actually ready. I did my final proof this morning
16:41
and I'm going to be submitting that C-sharp corner. So make sure you go back to C-sharp Corner this week
16:46
Check out my article about 20 years of Microsoft.net. Okay. With that, I'd like to bring on Jeremy
16:56
Jeremy helps developers by sharing his own struggles, mostly in technology, but also with being more social as an introvert, understanding potential for learning and playing banjo
17:07
Yeah, I forgot I was going to get Jeremy to play like ACDC or something, but I forgot to ask
17:13
I forgot to tell him. He has worked as corporate developer as a chief improvement officer at a startup and as a contract developer
17:24
Currently, he teaches developers through online courses, workshops, tech articles, conference talks
17:29
He spends most of his time in C Sharp and has recently ventured into Go, Golang, and Rust to explore some of his favorite topics, which are interfaces, delegates, concurrency, and parallel programming
17:42
He's the expert at that to me in .NET world. So welcome, Jeremy
17:49
Hey, thanks for having me. Hey, sorry, opening the presents took so long
17:55
No worries. I didn't know what was in the box, so I didn't know how long it was going to take
18:01
So welcome to the show. Thanks. I have no agenda today, so I'm going to rely on you to be a great interviewer
18:11
Well, then we're in trouble. Well, you know, so Jeremy gave me some topic ideas when we set up the show
18:25
And so one of his topic ideas, you guys can let us know what we want to talk about
18:30
I know which one I want to talk about. Maybe we'll talk about that first. But he wanted to talk about learning Golang and Rust, learning new languages
18:41
programmers as under-abstractors or over-abstractors. That's the one I kind of want to do first
18:49
Parallel and concurrent programming, which is always a big deal in .NET and how I see most developers do it completely wrong
18:57
So, you know, one of the things I say with that kind of programming is buy a book
19:01
read it about five times before you even start coding because you can really shoot your project
19:07
You can really screw up your project if you don't know what you're doing. and managing complexity as C-sharp language grows and changes
19:19
So anyway, what do you guys want us to talk about first
19:23
So make sure you post your questions and let us know what you want to talk about
19:29
whether it's that or something else. It doesn't matter. This is your show
19:34
It's not my show. So I'd like to, well, I just want to catch up and see how you're liking living up in northern, living up there in the north instead of Southern California, like where I met you
19:51
Yeah, so it's a big change, you know, and I got involved in the Southern California dev community back in 2010
19:58
So that was a long time ago, and I'm sure that's when we first met. Yeah, I remember
20:03
At one of the code camps. Yeah, I remember I forgot to get the video out
20:08
But, you know, playing video on PowerPoint through StreamYard is not that great anyway
20:14
But yeah, I remember that the first time I met you was you were willing to sit down and let me interview you for some video I was doing to promote CodeCamps, I think
20:26
And I think that's the first time I met you. Yeah, it's been a while
20:30
So, yeah, so I moved up to northern Washington on the west coast of the U.S. about five years ago now
20:38
It's getting pretty close to that and way up north. I'm like five miles from or 40 miles from Canada
20:45
So I can I can almost see it. You get your health care up there
20:51
No, I'm kidding. I wish. I know. Don't get me started about about you
20:56
Because I've been going through it recently. I know. I just had to rejoin Covered California and I'm not looking forward to it
21:05
Yeah. I love getting involved with the developer community and, you know, in SoCal, I was really
21:12
active and it was kind of easy to be active in Southern California because there was so
21:19
much traffic that there were user groups everywhere. So I think within like 80 miles of my house, there were 15 .NET user groups
21:28
So as someone who loves to speak and share topics, there were tons of opportunities
21:35
Now, not so much. I live in a rural town. And it took me a while to come to terms with being rural
21:43
But when you drive past cows, cornfields, and chickens on your way to the jack-in-the-box
21:50
yeah, I'm rural. And about an hour and a half from Seattle, about an hour and a half from Vancouver
21:58
so kind of the big cities are you know kind of far away for you know regular travel yeah so um
22:07
yeah not having like a local user group to just go to every month has been like that that's been
22:13
a bit hard on me and as far as the closest one like in seattle yeah so there's two in seattle
22:23
Well I can speak for right now because there was one downtown Seattle and that same group also had a meeting on the Microsoft campus back when people would go to the Microsoft campus
22:39
Yeah. And then there's one in Vancouver, which, again, about the same distance, except it involves a border crossing
22:45
So. Oh, yeah, that's good. And you've got to show your card, your COVID card and stuff nowadays. Yeah
22:50
Yeah, I haven't gone across since they've reopened the border. Yeah, but I've been, again, in the before times, I was kind of on the road like once a month traveling to various conferences
23:07
Again, I love speaking. I love watching people learn. I love talking to new developers or I'll say developers that are new to me, you know, not just people who aren't new
23:18
and that's something that I really miss because it's been two years since I've been to an in-person
23:25
event and it's it's just been really really hard you know so and then I did have something
23:33
scheduled for the end of February that was going to be like woohoo first time on an airplane in a
23:37
while and it just got canceled so yeah I just saw that on your website yeah yeah so right now it
23:43
looks like my first in-person gig is going to be in april and so you know i'm kind of holding out
23:49
until then um you know i love i love the reach that you get with online and the fact that it
23:55
exists and but the interaction just is not the same so i agree i agree in person is in-person
24:03
conferences are so much better you know yeah and there's so much that you get just over over dinner
24:08
or hanging out in the evenings. Or at the speaker's dinner, you know
24:13
Yeah. Yeah. I remember last time, I think you and I were at a speaker's dinner for
24:21
I think that was Southern California. I'm sorry, the Silicon Valley Code Camp
24:26
I think you were there or, yeah, something like that. But yeah, yeah
24:31
The interaction at conferences is what I really miss. And virtual just does not cut it, you know
24:37
Yeah. and yeah you're right with the reach you know including you know the conferences that we do
24:42
here at c-sharp corner or uh my show you know the reach is pretty pretty large but you know i
24:49
definitely don't get as much out of it as i'd like as i do in person you know and yeah and i
24:56
complain all the time about traveling i don't like the traveling part i don't like the getting there
25:01
part i like being there you know yeah especially when you fly to india and places like that
25:07
You know, that's, you know, the getting there part really sucks. But but being there is just that's what I love doing, you know, and I've said this so many times that, you know, most conferences I go to, I don't even go to sessions
25:22
You know, I network, I talk to people, you know, all. And that's where I learn
25:28
You know, I learn more from not in the sessions that I do, you know, you know, doing you like kind of what you were saying, you know
25:36
hanging out at a bar or dinner or just hanging out the hallway
25:40
talking to people, you know, and, and, and being an introvert, I think like you, you know
25:45
I realized during these past two plus years of not speaking is I actually got a
25:52
lot of personal interaction because of that. Right. And, and I'm really feeling the, the, the, the lack of that, you know
26:01
and the isolation kind of creep in really bad because I don't see anybody
26:05
anymore. You know, I, I literally have not, I left, I left my 10 mile bubble once in two and a half
26:13
years, you know, and, uh, it's getting to me. I'm sure it's getting to you too. It's rough. Um
26:20
yeah. I, and it's actually something that I've been, I've been thinking about for a long time
26:25
So if anybody has any ideas, send me Jeremy bites on Twitter, because, um, in the before times
26:33
I actually grabbed a domain name for isolated developer. And the idea was, you know, again, I'm in a rural area
26:46
There are there's no there's not going to be an in-person meetup around
26:50
So is there a way that we can recreate that experience online
26:54
And I've done so much, you know, like like you said, when you're reading reading about me
27:00
one thing that I try to do is encourage people to talk to each other when they're at these
27:06
developer events. And so I've spent a lot of time kind of watching how interactions work in person
27:13
and it just doesn't work over Zoom. I know if I get in a Zoom call with 12 people in it
27:20
it's great that I get to see some people that I haven't talked to for years, but I'm reluctant to speak. And again, I'm an introvert. And so I usually listen
27:29
and in the background. And I think about like how conversations work in a more natural way
27:35
So like, even if you're at a big dinner where maybe there's 15, 20 people all sitting at a table
27:41
really there's a cluster of maybe four to six people around you. And sometimes you're like
27:48
okay, well, I'm over here talking to this circle of people, or I'm over here talking to this circle
27:52
of people and I can go back and forth. And then even like in those hallway conversations at
27:57
conferences like you're talking about, you know, it might start out with a one-on-one
28:01
but then someone else joins and then someone else joins and someone leaves. And it's, it's kind of this fluid thing that happens naturally. You know, I've heard people say
28:09
well, you know, they've got those private rooms in Zoom, but like, how awkward is that
28:14
It's like, Hey, do you, do you want to go to a private area? You know, it's like, no
28:18
I want to have a natural conversation with people. And so if anybody has any ideas
28:25
send them to me because that's something I would love to figure out because, you know
28:32
I feel like when I was in Southern California and, you know, in a metro area, even that that's
28:39
that's a privilege from that kind of interaction, you know, and there's a lot more people that don't
28:45
live in metro areas and how can we have like real human connections because, you know, even just
28:52
attending a regular user group. You know, I had my local user group that I would go to
28:56
and you'd see the same people over the course of two years, once a month, you know, not everybody's
29:01
there every time, but you kind of slowly build these natural relationships. And how do you
29:08
how do you do that if you don't have kind of that little in-person gathering? So I would love to
29:14
hear ideas. Yeah. Well, you know, all my best friends in San Diego are from user groups
29:20
you know that's you know that's actually i i mentioned that very briefly in my article is
29:25
coming up this coming week you know that all of my best friends are geeks or software engineers
29:31
you know and i met i met all of the top my top friends in san diego at a user group meeting you
29:39
know that's where we met you know and uh and uh user and it's not you know i don't even know what's
29:46
going on with the user group down here anymore. And I know things have changed down here in Southern California
29:53
I don't remember the last time we had a code camp here. And so
29:59
yeah, it's, it's, it's tough, you know, this whole COVID thing and the isolation thing
30:04
but like you're saying rural too, it's, it's, and I live alone. And so I have my own challenges
30:09
you know, and living alone, especially during a COVID and, you know, having to deal with COVID
30:16
by yourself and have no one to turn around and talk to, you know, and it's tough. Yeah. It's
30:23
I want to get back out there. You know, I kind of made a crack about American conferences, but
30:29
But I definitely want to get back out during conferences again, and especially conferences in different parts of the world, because that's really where I want to experience those different
30:41
One thing I love doing, I don't know if you like this, but one of the things I really love about how my speaking career has taken off in the last 10 plus years is that I get to go to different states and different cities and different countries
30:56
Right. And I get to meet these other developers that aren't in my local area. Right. And that experience to me is so interesting
31:05
You know, how developers do things in different parts of the country or different parts of the world
31:10
And, you know, for example, like, you know, 40 percent of developers in the Ukraine are women
31:16
You know, we don't have that here in America, you know. And so seeing those kind of things live in person, you know, I think has helped me a lot with my writing and trying to understand developers and trying to come up with topics that developers will like to listen to, you know
31:35
Yeah, definitely. I kind of pulled back on international conferences just because of the travel commitment. It's like, I will do them again eventually kind of for, I'll say, in a focused way. So conferences that are extremely appropriate for me and the type of content I'm interested in, the kind of content I speak about
31:59
um so if something's really focused then then i'll consider it but in um you know it's so much
32:06
easier to travel domestically because you know now basically once you start crossing more than
32:13
four time zones it's like okay well i kind of need a couple days on the front end right and
32:18
and then since i'm traveling all this way i need a couple days on the back end to like
32:24
see some things around here before I go home. Whereas, you know, if there's like a two day event
32:30
that, uh, so for example, I'll, I'll be going to Knoxville, Tennessee, hopefully, hopefully we can
32:36
do this. Yeah. I've spoken there before. Yeah. Yeah. And it's actually one of my favorite
32:41
conferences. It's, you know, community run and, um, and it's a two day, it's a two day event
32:47
you know? And so it's like, I go there the day before I leave the day after. And, um, you know
32:53
now that's a four day commitment rather than, you know, an eight, eight or 10 day commitment
32:59
Yeah. So, uh, you know, as, as much as, as I love it, it's just kind of like, well, you know
33:04
I can do more if I have these shorter ones. And I just love, I love the community conferences
33:12
because like everybody is just so, um, you know, they're not there for them for making money. In
33:19
In fact, most of the things I do are nonprofits. And they're there because they believe in their local community
33:26
So the one in Knoxville, they don't want people coming from all over the country to attend this conference
33:33
They would like speakers to come from all over the country to share knowledge. But it's for the local community
33:38
It's like we have this city, Knoxville, that not too many people think of as a tech hub
33:44
But let's build up this community. And the thing that's interesting is I've met so many people because organizers of other conferences speak at all of these conferences
33:58
So it's like after a while, it's like, oh, you know what? I've been to like 12 conferences in the Midwest part of the United States, which is really far away from where I live
34:09
but because I've, you know, again, developed relationships with the, the communities and
34:15
the speakers and the, and the organizers over the years, it's just kind of like, oh, well
34:20
yeah, you're doing this thing. Of course I want to come and support, you know, and it's
34:25
it's pretty cool. Yeah. I, I always prefer community conferences, you know, community run
34:31
conferences. I, I don't really like the big ones anymore, you know, especially since you guys have
34:36
read my articles, you know, they rip off speakers and, you know, they don't treat us very well
34:41
And it's just a business. It doesn't feel the same, right. It's just making money, you know
34:47
whereas community run conferences are run by people just like you and me, you know, and
34:52
and, you know, programmers actually do programming and not a corporation trying to make money
34:58
you know. And I always, I always steer people towards community run conferences before I do
35:05
any paid conference. That's for sure. Yeah. Yeah. And it's, um, it, the other thing is that I am
35:13
definitely in a privileged position to be able to do that because it's expensive to travel
35:18
especially when you're six foot six. Tell me about it. It's like traveling in a plane. I just
35:25
don't fit in a regular airplane seat. I don't either. It's not possible for me to fit. So it's
35:30
like okay well airplane seats just got more expensive and i have to upgrade all my seats
35:36
yeah i have to upgrade all my seats i have to go business class when i go overseas because i cannot
35:40
fit in those seats when i go yeah it's really it's really sad yeah so i feel like i'm being
35:47
discriminated against because i'm tall you know because i could not fit in normal seats my legs
35:53
will not be happy you know i'll have to get knee surgery after i go in a normal seat you know
36:00
Yeah, I have been there. Yeah. But actually the little planes, the prop planes, oh my God, they're the worst, you know, for the little jet planes that you take for, you know, just for little jaunts, you know, to an airport
36:13
Those are worse. Oh my God. They're terrible for, for people, tall people like you and I, you know. Yeah
36:22
The first time I went to India was through an Asian airline that the conference organized
36:27
And I looked at the seat and I go, no, there's no way I can fit in an Asian airline seat
36:36
They're just not made for a normal American, even a normal American height, you know
36:41
So anyway, we could, let's talk a little bit about programming for the show ends, I guess
36:50
Well, that was about being social and developer community. So that's important
36:55
Well, we need social, you know, it's, it's, we need to be able to fit. You know, and I know I probably talk too much sometimes on the show is because I don't talk to anybody all week
37:04
You know, I do my my couple sentences a day for the scrum meeting and that's basically it, you know
37:12
And, you know, I think I talk to Alexa more than I do a human these days
37:19
So anyway, let's you know, the one thing no one's said what they want you to talk about
37:24
So the thing I was kind of looking at because of something I dealing with right now is just you know I dealing with a code base that is just you know I don even have a word for it you know
37:41
Spaghetti code doesn't even describe it, you know. But, you know, some of the things I've seen people shoot themselves in the foot with is abstractions, you know, and doing it too far
37:52
I've seen whenever something new comes down the pipe, people go, oh, yeah, let's do this everywhere
37:58
No, you do this where it really has impact on your project
38:04
You don't do it everywhere as a blanket statement. So anyway, let's talk about abstraction, too much or too little
38:12
Yeah. So kind of the way I got into this topic is because I talk about interfaces in C Sharp
38:20
I would say that was my first major topic that I got into
38:25
And the reason for that is when I was new to development, and I'll say a fairly late starter, my first professional job, I was 29
38:34
So, you know, I was kind of an early programmer before that
38:38
You know, I was a hobby programmer before that, but my first professional job was at 29
38:43
And I was learning. We were using Delphi at the time. and it has this concept of interfaces in it fairly similar to c-sharp and that's because
38:54
anders heilsberg wrote delphi and then later on oh did he could see i don't know he writes everything
39:00
oh yeah you know well here's the thing so basically um we would go to the borland conferences every
39:05
year and um you know they had all the people that were building the compilers and the doing the
39:10
languages and things like that and then you would kind of go back to the conference the next year
39:15
and there'd be people that were gone and they they would show up at microsoft you know so we
39:22
saw like five or six of these kind of big people that ended up at microsoft and i remember we were
39:27
talking to one we ran into someone at another event we're like so what was this deal about you
39:33
know moving from from borland to microsoft and he's like yeah they just drove up with a pickup
39:40
truck full of money. Okay. I don't know if I should be sharing that story
39:45
No, that's how Facebook is. There was somebody that worked in the Microsoft team that I really
39:49
like. His name was Lucian. He was the guy. Yeah, Lucian Wiscik. He is awesome. I miss him
39:56
He is awesome. And Facebook drove up with a truck of money and he left. That's the way
40:03
it goes, I guess. Whoever has the most money wins. yeah anyway the point is Borland or Delphi has interfaces that are very similar to C-sharp
40:13
interfaces but when I was kind of new to that professional programming I didn't understand why
40:19
I wanted to use these you know I didn't know what they were for why do I want to do this
40:22
and like I said we'd go to the Borland conference every year and it was nice because you know my
40:27
first year they would send the whole team to the conference and I understood maybe five percent of
40:34
what was going on that first time I went. But I did get some information
40:38
It was definitely a growth area. But I remember I went to this talk
40:43
It's like, oh, all about interfaces. And I'm like, okay, this will be good
40:47
I can sit here for 75 minutes and I'll know what these things are for
40:52
And kind of big brain guy gets up on stage and he's like, well, let's say you have an iFoo interface
41:00
and you want to implement it with the bar class. And I was just like, no, don't give me a foobar example
41:06
That's not going to help me. I hate that. Yeah. So it was probably two years before I actually got it, you know, and it was a slow process
41:19
and I was learning a lot of other things at the same time. But kind of once I finally got it, I was like, you know, I have to help other people get
41:26
over this hump because people shouldn't have to go through this long period of what are
41:31
these things for? And so I started talking about it at CodeCamp and writing articles and eventually ended up with a C-sharp interfaces course on Pluralsight
41:40
And it's this thing I've been doing for 12 years, probably 12 years now
41:46
But what happened was kind of when I first, when the Pluralsight course came out, that's kind of when my stuff got recognition
41:55
and um you know i i would kind of get these messages saying oh this is really cool i'm
42:02
going to use it everywhere you know it's like well no you know because there's this tendency of
42:09
you know well here's this thing that i don't understand and kind of my initial goal was let
42:14
me help people understand what this tool is but kind of in that initial iteration i wasn't really
42:20
considering using it appropriately. So, you know, that kind of turned into this other thing where I
42:29
would talk about, you know, appropriate levels of abstraction. And the thing that I find that I
42:35
found interesting is kind of as I was thinking about this, I found that from my observation
42:42
this is not a scientific study, that developers kind of default to be either under abstractors
42:49
or over-abstractors. And so I ended up defaulting to being an under-abstractor. And one of the
42:57
reasons is, again, when I was brand new to professional development, I didn't understand
43:02
interfaces and abstraction very well. And so I kind of stayed away from it. It's like, well
43:06
I'm not going to use something I don't understand. And then to kind of compound that, I was working
43:13
on this multi-year project and the senior developers architected it badly as putting it
43:22
as nicely as possible. So what happened is this, this big project finally releases and I end up as
43:29
the primary support person on this. And it actually made sense because I actually came from the user
43:35
area. And so I had the best contacts with all of, and it was something that spanned the entire
43:40
company, all of the departments. So I had the contacts, I understood the business. So it made
43:45
sense that I would be the one who was supporting this. But like every time I went in there, I'm
43:49
like, I don't even know if this is going to recompile. That's why I am right now with the
43:55
library version might've updated. So again, having something like that happen early in my career
44:02
also kind of makes me like, you know, let's stick with simple. Simple is good. And so I would lean
44:10
towards not having abstraction and hard coding things and things like that. I had a coworker who
44:17
sat next to me and he had, he had like 10 years more experience than I did. And he was the exact
44:24
opposite. He was always thinking about what, how can we, how can we future proof this? You know
44:31
so, so you know, how can I build this plugin architecture for this thing so that, you know
44:38
So two years from now, when they want this thing, we can just, oh, boop, there it is
44:43
And so I kind of ended up with this observation that people tend to go one way or another
44:51
And that's a default state. And so once you get experience and you find out oh yeah what I doing isn working and then you basically swing the other way And then you like oh that totally didn work either
45:05
And then you kind of end up somewhere in the middle. And when I say somewhere in the middle
45:10
it's really kind of having enough experience to know how much abstraction is appropriate
45:16
for any particular application. Right. And I've been burned both ways. So like that under abstraction thing
45:22
the first application that I was, that I did solo, you know, we had a small development team
45:29
It was 12 developers. And so, you know, mostly working on projects with two or three people
45:37
I was given the solo project, which was, you know, not very big. And my manager's like
45:41
hey, Jeremy, do you want to give this a shot? And I'm like, oh, yeah. You know, it was kind of moving a reporting system from an old reporting server system to a new reporting
45:52
server system. And so I was, as all the requirements were there, it's just kind of
45:57
implementing this new server. And a mistake that I made on the front end was I used basically on the
46:06
UI desktop application, I used a tabbed interface where I hid the tabs. And so when you would click
46:14
and say, oh, well, I want to run a report, then it would take you to a parameter collection screen
46:19
which was just a different tab. If I want to maintain a lookup table for a report
46:25
I go to one of the administration screens, which was just another tab. Well, what that ended up
46:30
being was a single form with a lot of code behind. And it wasn't bad in the sense that it worked
46:42
But kind of anytime I had to make a change to it, it was like, oh, where is that code
46:47
You know, like, okay, let me, oh, geez. You know, and I haven't looked at this for six weeks
46:51
And so my brain doesn't remember, you know, what these, where in these 3000 lines of code
46:57
I'm going to find something, you know, and then I would go back to it every so often
47:01
and say, okay, well let's see if I can refactor this a little bit. Right
47:06
And let's split this up into separate screens that each have their own discrete functionality
47:10
And then I'm like, oh, look at these global variables. you know and it's like okay well unfortunately the application didn't need to be changed very
47:19
often and it worked and so um but you know again every time i had to touch it it was like oh yeah
47:27
um so you know i've done the under abstracting very badly um but what i found is that if you
47:36
can find someone who is your your complement on the other side you make an awesome team yeah
47:43
So like I said, there's this guy sat next to me, Dan, 10 years more experience than me, over-abstractor. And there are times where I'd be like, hey, Dan, come over, look at this. And I would be doing some, working on whatever function
48:05
and he'd be like, well, you're kind of hard coding these things
48:09
You should probably think about separating those out. And I'd be like, yeah, okay, I get that
48:14
And then there are times Dan's like, hey, Jeremy, come over here. Take a look at this. And he's got kind of this big plugin architecture mapped out
48:22
And I'm like, so the users want these two things and you're kind of planning on these five things
48:29
that they might want in the future. So let's code for these two things
48:34
leave a space for the abstraction so you don't want to code yourself into a corner so we'll leave
48:39
a space for that but we won't actually implement it until we actually have you know something um
48:45
from from the business area that says this is what we need right because um you know business
48:51
areas always change their mind because business changes right so that's true yeah so so it's it's
48:58
interesting and so you know i have this theory i have no idea if it's true but people kind of
49:02
default one way or the other. And then unfortunately there's no middle that you can say this works
49:09
everywhere. You know, it depends on the application, you know, how big is it? How is it, how is it
49:13
likely to change? Where are the inflection points? Are there inflection points? Is this something
49:19
that has to live for two weeks? Is this something that has to live for 10 years? So, yeah, the
49:25
the project I'm on is definitely over abstracted because, you know, they I don't know the full
49:31
story. But, you know, I think, you know, their unit tests were taking too long. So they decided
49:38
to abstract everything into mocks and fakes and stuff like that. And oh, my God, it is a freaking
49:46
nightmare. You know, if I just even change a spelling, like this happened to me the other
49:53
of thursday you know i changed a spelling mistake on one of the uh uh property names or something
50:01
like that you know they spelled address wrong you know and i go oh we should fix this you know so it
50:07
looks better broke the build nothing would build the unit test wouldn't run everything broke and i
50:13
had to back everything out you know and i i this is what i was doing all week i think i did actually
50:20
two hours of actual coding done this past week. The rest was dealing with stuff like this, right
50:27
It's because they went way too far. And it's a nightmare. I mean, every time I commit, I get PTSD, you know
50:35
because I don't know what's going to happen, right? Because I can't run the unit test locally
50:39
because they don't run locally. They only run on the build server
50:43
And with all this abstraction stuff, it's just, it's crazy. And you also have to balance that out and say, you know, code was written at a point in time, you know, and developers make decisions
50:57
And it might have been a decision that was appropriate at that point in time, you know, and then years later, you know, as the business changes or whatever, then that decision doesn't make as much sense as it did at the time
51:10
So, yeah, it's it's really easy to kind of curse it. Oh, you developer from six months ago
51:17
Oh, wait, that was me. um so i'm sure there was a reason but it doesn't work it whatever that reason is it doesn't work
51:23
now and it's how do we get that you know kind of nicely without having to rewrite right the
51:30
dreaded rewrite because because having a company go oh okay we messed up we're gonna fix it that's
51:36
not gonna happen right i mean yeah it's literally a rewrite at that point you know and uh you're
51:43
Right. You know, we did have one question I want to get to before we go, because we're almost out of time already
51:50
What technical skill has helped you a lot in your career? Technical skill
51:58
Simon asked that so he can expound more on that if he wants to
52:03
you know these days i'm almost seeing that it's it's the the social skills that helped me most in
52:14
my career you know technical skills um i'm i'm kind of a sponge when it comes to learning
52:20
and so um it hard to pick out like any one thing um there there always this idea of you can be a generalist or a specialist and what you know which way do you want to go And I known some people that are security experts
52:36
I knew someone who was a security expert would talk. I would be on phone calls with them
52:42
and they'd start talking with someone else who's a security expert. I had no idea what they were talking about
52:47
And you get this idea that this person's really smart. They must know everything
52:51
But then I got a call one day from this person. It's like, Jeremy, can you help me with this data binding and WPF
52:58
And I'm like, I can totally do that, you know, because I'm a little more of a generalist when it comes to things
53:05
Kind of what I focused on is kind of those things that were difficult for me to learn and became important in my programming career
53:16
So interfaces, I've already talked about that. Another one was dependency injection
53:20
That was something where when I first got it, when I, when I first saw it, I'm like
53:24
I have no idea what this is. And that's because everybody explains it inside out
53:28
They're like, here's a container. Good luck. You know, rather than here's what the dependency injection patterns are and why we're doing this
53:36
And the container helps you with that. So, um, you're the one that got me, you're the one that got me interested in depending
53:43
to dependency injection, you know, and, and I still have a hard time wrapping my head
53:49
around it sometimes, but you're the one. I mean, you used to come to my user group and talk about it
53:55
And you're the one. I remember you showing that form and doing all the different data into it
54:02
Or you changed. I forgot what you did. But yeah, I remember that still to this day
54:07
Yeah. So yeah, you're the one that got me on that one. Async programming has been really important because that was one, like, when task was
54:15
first added to dotnet um i don't remember that when that even was it was a long time ago yeah
54:22
c sharp four three four somewhere in there um i i saw it and i'm like this is really important
54:28
but i would look at it and like oh i don't have time for this there's way too much
54:32
and then this is going back windows 8 came out and everything was asynchronous in in windows 8
54:39
and await is just scattered everywhere and it's like oh i should probably learn what this is
54:45
But then digging into a weight, it's like, well, to really do a weight correctly, you need to understand tasks. Now you don't have to understand all of tasks, right? You probably need to understand 2% of tasks. And then you can go from there, you know, and then that kind of led to parallel programming and things like that
55:06
So those are kind of the worlds that I live in. They're things that it's like, I would approach it and say, oh, this is too big of a hill for me to climb right now
55:16
And then I would get over the hill and be like, okay, how do I make this so it isn't a hill for other people
55:22
So that's kind of been my focus on the topics that I'm doing. Someone asked how you're doing, but I think you answered that at the beginning of the show
55:32
So rewind when we were talking about how Jeremy was doing. I think that's all the questions we have
55:42
You know, the one thing I wanted to ask you real quick before you go, because I don't know the next time I'll be able to talk to you
55:48
is talking about interfaces and abstractions. What do you think? Oops, sorry, I lost my earpiece
55:55
um what do you think about uh you know dot net adding implementation and interfaces
56:02
hate it yeah me too do you want the long story we don't have time for the long story but yeah i
56:10
actually have recordings on my website talking about c sharp 8 interfaces and the new um the
56:16
new features and so i've actually done some presentations at user groups because it's not
56:21
just a fall implementation a whole bunch of other things were changed as well that didn't get
56:25
mentioned. And so I kind of go through, I've done some user group presentations that have turned into
56:31
two hour code fests that talk about it. So if you're curious about the details of how I feel
56:39
go take a look at those. And there's just, there's so many things that you have to watch out for
56:46
that I think it's totally not worth going there unless you have a very specific use case
56:52
Yeah, I agree. I played around with it a little bit, and I think I have one interface that does something
57:00
but that's about it. I've never used it like in a real production app
57:04
I've only used it in my own personal stuff. And it does get confusing at .NET now
57:13
when these lines get so much blurrier, and it becomes more confusing for developers
57:19
That's my big concern. Yeah, because the line between interfaces and abstract classes is really blurry
57:28
And if you actually dig into it, there's still a line there
57:35
One thing is properties work completely different in interfaces than abstract classes
57:39
But, you know, as far as adding abstract members, you can do that
57:43
Adding code, you can do that. Why would you use one versus the other
57:47
That's a little blurrier again. And so, yeah, how to teach this without confusing people has been definitely a challenge
57:56
I don't know how successful I've been. Hopefully I've been kind of OK with it
58:01
Yeah. Yeah. It's I have another article that I'll release after the one about the anniversary
58:09
And it's basically something that has said to me. And so I did an article basically of what all the major differences are between an interface
58:19
a class and a structure, you know, I'm sorry, an inner, um, a structure, a class interface
58:26
and a record. Right. And so I'm going to be talking about all those different things. Cause
58:31
I've never found like just one page that lists all the differences, you know? And, um, and then
58:38
I'm also at the, at the end of it, because I'm big into performance. I talk about before there's big
58:43
performance differences between those and, uh, and those kinds of considerations should come
58:48
into play maybe if you're choosing to do a structure or, I'm sorry, not interfaces
58:54
a structure or a class, right? And yeah, yeah. So lots of different things going on
59:03
But we got to go. Simon's going to get mad at me because he wants to go to bed
59:09
Someone said that you're an awesome teacher. You should do a YouTube channel for C Sharp
59:15
Do you have a YouTube channel? Yes. I am Jeremy Bytes online, B-Y-T-E-S
59:22
If you go out to YouTube slash Jeremy Bytes, you will find videos that are five to ten years old
59:31
I do have videos that I want to do right now, in particular about channels in C Sharp
59:37
as well as about I Async Enumerable. The problem is this pandemic has just, like
59:44
it's killed my motivation. Yeah, yeah. I'm with you on that one
59:48
I will get those done at some point. I really would like to get back into producing videos
59:54
Now, the good news is the videos that are out there are still relevant, so about task and away
59:59
about delegates, about generics. So it's all still relevant, even though it's .NET 4.something
1:00:12
And then I'm actually thinking about going back and just updating those videos
1:00:17
so that they're in .NET 6 or whatnot. Yeah. Okay, I really have to let you go now
1:00:24
But before I let you go, there's always two things I ask my guests before they go
1:00:28
So first is, I kind of know the answer to this, but what do you like to do for fun
1:00:35
Can you see behind me? Yeah. So there's Lego back there. So this is, I don't know if this is for fun, but this is for surviving the pandemic
1:00:49
The other thing that I started doing pretty much after I moved up to Washington is for some reason I started collecting 1970s science fiction books
1:01:00
And I've been reading them. So I have probably 400 books right now
1:01:07
Wow. I've read about half of them. I'm still reading more and still going to thrift stores and used bookstores and things
1:01:16
Do you have a 3D printer? I do not have a 3d printer. Yeah. I've been thinking about getting one
1:01:23
And for some reason the other day I was thinking, man, I can make my own Legos with a 3d printer
1:01:28
I don't know if you'd get the same tolerances. Yeah, I know. I know. I, but I kind of, I, you know
1:01:33
a lot of people have been posting these things they've been building these kits
1:01:37
they've been building, you know, with Legos on, uh, you know, Twitter. And I go, man, back in my days
1:01:43
all we had were blocks and wheels and people that's it. You know
1:01:48
We had to use our imagination back then. Now you just plug them in and boom, there you go
1:01:55
They're still really cool. These are all kits back on my shelf
1:01:59
One thing that's nice is it's kind of, I'll say, a meditation type activity because you're following instructions and putting things together
1:02:09
The other good thing is you learn a lot of building techniques from it. And so I've started fairly recently starting doing, you know, my own creative stuff
1:02:19
So like I modified a castle yesterday, a castle kit yesterday. And, you know, I have some ideas of some other things now that I kind of have a better idea of how some techniques that you can use for building
1:02:32
So I'm probably going to be doing some more creations of my own soon. I need to get more
1:02:36
I need to get back into Legos. I actually getting more into art projects So I actually working on a painting right now that you guys will not believe when I show it to you when it done what the canvas is
1:02:49
I'm not going to have you guess because you won't guess it. Believe me
1:02:54
All right. I got to let you go. Thanks a lot for being on the show
1:02:57
You want to plug your website, jeremybytes.com, right? Yeah, so jeremybytes.com, B-Y-T-E-S
1:03:04
And you can find me on Twitter at Jeremy Bytes. You can find me on YouTube at Jeremy Bytes
1:03:08
and hopefully there'll be some new videos up there sometime soon. Well, it was great catching up with you
1:03:15
and I hope if they have an MVP summit, you're still an MVP, right
1:03:20
Yes. I don't know if I'm going to get renewed this year or not. Well, that's why I've been an MVP for 10 years
1:03:28
and I'm thinking, well, maybe it's time to let it go. We'll see what happens. Well, I hope to see you sometime soon
1:03:34
Yeah. And I missed, well, we all miss our friends during COVID, right
1:03:42
Yeah. All right. Well, if you want to hang out and chat after the show, you can
1:03:46
With that, I better let you go because Simon's going to get yelling at me here any second
1:03:50
So thanks a lot for being on the show. You're welcome to come back anytime you want
1:03:54
Just let me know. I'll put you on the show. Cool. Thanks for having me
1:03:58
Thanks, Jeremy. That was fun. We talk a lot and not a lot about programming, just about dealing with a pandemic and COVID and isolation
1:04:10
And I definitely feel what Jeremy is feeling. That's for sure. So anyway, I'm glad Jeremy was on the show
1:04:18
I hope to get him back. I definitely want to get him back for a future conference here at C Sharp Corner. so
1:04:27
everybody wins a copy of CodeRush from DevExpress for being on the show just go to devexpress.com
1:04:39
slash down at Dave you get a free real copy of CodeRush from DevExpress
1:04:44
CodeRush is the only refactoring tool I've used since Visual Studio came
1:04:49
out I love it it helps me you know get my job done a lot
1:04:53
quicker it helps me learn and, you know, something if you follow me on Twitter
1:04:58
or I've been saying lately is that not only can it run unit tests faster
1:05:02
than Visual Studio can, but it can actually, a lot of times lately
1:05:07
when I go to Visual Studio and say, run this class, it just says, yeah, not going to run it
1:05:14
I go to test runner, which is part of CodeRush, say run it runs fine So I usually use a test run and do my unit testing these days because it works better than whatever Visual Studio is doing
1:05:32
All right. Don't forget, I have a coding standards book out there
1:05:39
If you don't have coding standards at work, you need this book to get you started
1:05:44
So go to Amazon. Pick it up today. I haven't sold any in a couple months
1:05:49
So I hope you go and help my retirement fund. Also, I have a GoFundMe page to help raise money for the kids in India, the orphanage that I visited back in 2019 when I was there
1:06:03
So I've already raised almost $500 with this GoFundMe. So if you want to help out the kids, please go there
1:06:12
I'll donate it to the Voice of Slum or you could just go to thevoiceofslum.org and donate yourself
1:06:18
The kids really need your help. I actually got an email from one of the organizers this week I need to follow up on
1:06:25
And they're doing a lot of great work for the kids in India, the slums in India, which I visited when I visited this orphanage
1:06:33
And so please, please help the kids. All right. Thanks for watching
1:06:38
Next week is the big show, the 20th anniversary of .NET show
1:06:44
It's going to be big and fun. and I'm really looking forward to it
1:06:48
I don't think I'm going to be able to sleep the night before. So Scott Hunter, Carl Franklin, Steve Adalis Smith
1:06:56
Joe and more are going to be on the show. We're going to have a lot of fun and look back at all of .NET in the future
1:07:03
And I can't wait for the show. I know Scott's really excited about it too
1:07:09
So I hope you'll join us all back here next week, 10 a.m. Pacific Standard Time
1:07:16
Please be safe. Listen to your medical professionals about COVID and how to deal with it
1:07:23
You know, we're still the last time I looked on the news, we're still having twenty five hundred deaths a day here in America
1:07:29
We just hit nine hundred thousand deaths in America. So please, please, please be safe
1:07:37
We want you back here to watch the show. We want you back to attend a conference on C Sharp Corner
1:07:42
and if you, most of you have this ability, please, please go donate blood at your local blood bank
1:07:53
All the blood banks around the world are in a shortage right now. They're in dire need of your blood
1:07:59
So please go donate. One donation can help three people live So all it takes is about 30 minutes of your time a stick in the arm and that about it So it free It easy It makes you feel great about helping your fellow human And I always say this
1:08:19
for the, I shouldn't say guys, but the people at home that have to do yard work and stuff like that
1:08:26
in the weekend, if you donate blood, you can't do that for 24 hours. You can sit around and watch
1:08:33
sports if you want. So please, please go donate blood. You know, I'm big into it. I just hit
1:08:39
I think 14 gallons total donated and, and I'm actually donating tomorrow. So I'll be hooked up
1:08:46
to the machine for two hours because I do the super donation stuff. So do that. Please email
1:08:54
I can't talk, email your suggestions, who you want to be on the show, what you like about the show
1:09:02
what you don't like about the show, the rock of the cold world at C sharp corner.com
1:09:06
With that, I'll see you next week for the big show. Thank you. Thank you