WEBVTT

1
00:00:01.080 --> 00:00:03.000
<v Speaker 1>How'd you like to listen to dot net rocks with

2
00:00:03.040 --> 00:00:03.799
<v Speaker 1>no ads?

3
00:00:04.440 --> 00:00:04.799
<v Speaker 2>Easy?

4
00:00:05.360 --> 00:00:08.560
<v Speaker 1>Become a patron for just five dollars a month. You

5
00:00:08.599 --> 00:00:11.320
<v Speaker 1>get access to a private RSS feed where all the

6
00:00:11.359 --> 00:00:14.560
<v Speaker 1>shows have no ads. Twenty dollars a month, we'll get

7
00:00:14.599 --> 00:00:17.679
<v Speaker 1>you that and a special dot net Rocks patron mug.

8
00:00:18.160 --> 00:00:34.320
<v Speaker 1>Sign up now at patreon dot dot NetRocks dot com. Hey,

9
00:00:34.399 --> 00:00:37.079
<v Speaker 1>welcome back to dot net rocks. I'm Carl Franklin at

10
00:00:37.119 --> 00:00:40.679
<v Speaker 1>Amerchard Cabell, and we are gonna be talking to Jimmy

11
00:00:40.719 --> 00:00:44.479
<v Speaker 1>Bogard real quick as you do again, probably for the

12
00:00:44.880 --> 00:00:46.960
<v Speaker 1>what time, maybe eighth or nine?

13
00:00:46.960 --> 00:00:50.479
<v Speaker 2>No, No, it's been a few Yeah, he hangs around,

14
00:00:50.799 --> 00:00:51.399
<v Speaker 2>Yeah he does.

15
00:00:51.759 --> 00:00:55.759
<v Speaker 1>But before that, Richard, let's talk a little bit about

16
00:00:55.840 --> 00:00:58.719
<v Speaker 1>what happened in nineteen forty one. Oh, just this little

17
00:00:58.759 --> 00:01:02.840
<v Speaker 1>thing called Pearl Harbor that geez, yes, yeah, I kind

18
00:01:02.840 --> 00:01:06.439
<v Speaker 1>of mentioned that the US entering the war yeap December seventh,

19
00:01:06.560 --> 00:01:11.760
<v Speaker 1>the date that will live in FAMI. This year was

20
00:01:11.840 --> 00:01:15.120
<v Speaker 1>also marked by widespread conflict, of course, with millions of

21
00:01:15.200 --> 00:01:19.040
<v Speaker 1>casualties and the escalation of the Holocaust. It wasn't a

22
00:01:19.079 --> 00:01:24.200
<v Speaker 1>happy year. But according to the movie nineteen forty one,

23
00:01:24.879 --> 00:01:25.719
<v Speaker 1>High Wood.

24
00:01:26.159 --> 00:01:30.920
<v Speaker 2>It was a romp though. I mean he was starting

25
00:01:30.920 --> 00:01:33.120
<v Speaker 2>to make it a play on the craziness in California

26
00:01:33.159 --> 00:01:36.400
<v Speaker 2>of the risk of the Japanese invading the mainland, which

27
00:01:36.519 --> 00:01:40.359
<v Speaker 2>was definitely a thing. Yeah, yeah, but a fun waste

28
00:01:40.359 --> 00:01:42.319
<v Speaker 2>of two hours. If you want to watch that movie,

29
00:01:42.400 --> 00:01:42.840
<v Speaker 2>maybe I.

30
00:01:42.760 --> 00:01:44.560
<v Speaker 1>Think it was a longer movie, wasn't it.

31
00:01:44.560 --> 00:01:49.000
<v Speaker 2>It was long. Yeah, It's one of Spielberg's very few debacles.

32
00:01:49.040 --> 00:01:53.359
<v Speaker 2>From a box offer's perspective. Sped to fortune and it

33
00:01:53.400 --> 00:01:54.239
<v Speaker 2>didn't make much.

34
00:01:54.319 --> 00:01:57.719
<v Speaker 1>They spent a fortune, mostly on destroying things. I think

35
00:01:57.760 --> 00:02:00.799
<v Speaker 1>it has one of the records for most money spent

36
00:02:00.879 --> 00:02:04.319
<v Speaker 1>on destruction. So daft and John Belushi, of course doesn't.

37
00:02:04.439 --> 00:02:07.920
<v Speaker 1>He doesn't really have that big of a part in it,

38
00:02:08.039 --> 00:02:10.120
<v Speaker 1>but he is kind of funny.

39
00:02:10.639 --> 00:02:11.039
<v Speaker 2>All right.

40
00:02:11.280 --> 00:02:13.319
<v Speaker 1>Well that's what I got for nineteen forty one.

41
00:02:13.319 --> 00:02:16.479
<v Speaker 2>What about you, Richard, I'm gone to talk about Conrad

42
00:02:16.560 --> 00:02:21.080
<v Speaker 2>Zoos Conrad Zeus. Conrad Zoos in nineteen forty one implemented

43
00:02:21.080 --> 00:02:23.759
<v Speaker 2>a computer called the Z three, which is arguably the

44
00:02:23.800 --> 00:02:30.159
<v Speaker 2>first true programmable with software computer in the world. Several

45
00:02:30.280 --> 00:02:34.560
<v Speaker 2>years before von Neuman even defined all the specifications for

46
00:02:34.680 --> 00:02:38.199
<v Speaker 2>what a proper computer would be and it's called the

47
00:02:38.319 --> 00:02:40.680
<v Speaker 2>Z three because it was his third to tenth. He

48
00:02:40.879 --> 00:02:43.800
<v Speaker 2>was working in Nazi Germany, although the Nazis weren't all

49
00:02:43.840 --> 00:02:46.759
<v Speaker 2>that interested in it. It used, it had all the

50
00:02:46.800 --> 00:02:50.039
<v Speaker 2>things you can think of, floating point arithmetic, input and

51
00:02:50.080 --> 00:02:52.919
<v Speaker 2>output device is a control unit, and it stored its

52
00:02:52.960 --> 00:02:55.960
<v Speaker 2>programs on a punch tape reader. But he didn't use

53
00:02:56.000 --> 00:02:58.680
<v Speaker 2>paper because paper was already in short supply. He used

54
00:02:58.800 --> 00:03:03.159
<v Speaker 2>old movie film. Oh wow, So he punched hole they

55
00:03:03.319 --> 00:03:05.120
<v Speaker 2>punched tape rate to punch holes in the movie film

56
00:03:05.199 --> 00:03:07.719
<v Speaker 2>to store his programs. But he only had a few

57
00:03:07.840 --> 00:03:12.800
<v Speaker 2>hundred bytes to work with, right, because it's nineteen forty one, right,

58
00:03:13.800 --> 00:03:17.319
<v Speaker 2>But it was the sort of first complete what Bond

59
00:03:17.319 --> 00:03:19.159
<v Speaker 2>Newman would consider a computer.

60
00:03:19.919 --> 00:03:22.599
<v Speaker 1>And so I imagine this is way before transistors, so

61
00:03:22.800 --> 00:03:24.120
<v Speaker 1>vacuum tubes.

62
00:03:24.319 --> 00:03:27.800
<v Speaker 2>Not even largely mechanical, you know, a bunch of that

63
00:03:27.840 --> 00:03:31.080
<v Speaker 2>stuff was Z one was fully mechanical. This was sort

64
00:03:31.120 --> 00:03:35.879
<v Speaker 2>of a hybrid. But yeah, sixty four words of memory,

65
00:03:36.199 --> 00:03:39.560
<v Speaker 2>so we didn't even have the term bite at that point.

66
00:03:39.639 --> 00:03:42.039
<v Speaker 2>So yeah, so what a word is two bytes? Right?

67
00:03:42.120 --> 00:03:44.800
<v Speaker 2>I think it depends on what you mean. In nineteen

68
00:03:44.879 --> 00:03:48.280
<v Speaker 2>forty one, right, it's complicated, but yeah, it was a

69
00:03:48.319 --> 00:03:52.479
<v Speaker 2>programmable digital computer in nineteen forty one that nobody valued.

70
00:03:52.759 --> 00:03:53.240
<v Speaker 2>So cool.

71
00:03:53.319 --> 00:03:56.439
<v Speaker 1>I had no idea, and he escaped to Switzerland before

72
00:03:56.479 --> 00:03:58.240
<v Speaker 1>the end of the war with a bunch of his

73
00:03:58.319 --> 00:04:01.039
<v Speaker 1>tech and built his fourth machine, called the Z four,

74
00:04:01.680 --> 00:04:06.800
<v Speaker 1>which continued to run in Switzerland till the nineteen nineties. Wow,

75
00:04:07.039 --> 00:04:10.680
<v Speaker 1>no relationship to the Z eighty, which is a xylogue chip, right,

76
00:04:10.840 --> 00:04:14.400
<v Speaker 1>nothing to do with that at all. Yeah, wow, very cool.

77
00:04:15.080 --> 00:04:17.240
<v Speaker 1>All right, Well with that, let's roll the music for

78
00:04:17.319 --> 00:04:18.319
<v Speaker 1>better No a framework?

79
00:04:26.079 --> 00:04:26.920
<v Speaker 2>A man, what do you got?

80
00:04:27.000 --> 00:04:28.560
<v Speaker 1>So this is a kind of a cool blog post

81
00:04:28.560 --> 00:04:31.839
<v Speaker 1>I ran into it's relatively new things you should know

82
00:04:31.879 --> 00:04:34.680
<v Speaker 1>about HTML heading into twenty twenty five.

83
00:04:34.959 --> 00:04:35.439
<v Speaker 2>Interesting.

84
00:04:35.480 --> 00:04:38.759
<v Speaker 1>That's a great thought, right, So it says not all

85
00:04:38.800 --> 00:04:42.680
<v Speaker 1>of this is like absolutely brand spanking new, just dropped

86
00:04:42.680 --> 00:04:45.079
<v Speaker 1>in twenty twenty four stuff. Some of it is, but

87
00:04:45.360 --> 00:04:48.759
<v Speaker 1>generally it's relatively new stuff. That's all pretty great. I'm

88
00:04:48.759 --> 00:04:51.279
<v Speaker 1>pointing things out that I think are really worth knowing about.

89
00:04:51.600 --> 00:04:54.720
<v Speaker 1>It's possible you haven't kept up too much with HTML developments,

90
00:04:54.800 --> 00:04:57.839
<v Speaker 1>as it tends to rightfully move a lot slower than

91
00:04:57.959 --> 00:05:02.199
<v Speaker 1>say CSS or JavaScript. Sure, so I'm just gonna leave

92
00:05:02.240 --> 00:05:05.839
<v Speaker 1>that right there. I've read it and it's it's good.

93
00:05:06.079 --> 00:05:08.560
<v Speaker 1>I learned a lot of stuff. So just head over

94
00:05:08.639 --> 00:05:12.000
<v Speaker 1>to what is this nineteen forty one dot pwop dot

95
00:05:12.120 --> 00:05:15.759
<v Speaker 1>me e, or go to the show notes and get

96
00:05:15.759 --> 00:05:16.079
<v Speaker 1>the link.

97
00:05:16.360 --> 00:05:18.199
<v Speaker 2>It's a good article. So always the first link in

98
00:05:18.240 --> 00:05:20.040
<v Speaker 2>the list HTML. In twenty twenty five.

99
00:05:19.920 --> 00:05:22.079
<v Speaker 1>Yep, So who's talking to us today, Richard?

100
00:05:22.199 --> 00:05:27.439
<v Speaker 2>So this is the seventh show with mister Bogart Panelted

101
00:05:27.560 --> 00:05:29.839
<v Speaker 2>Dipraama a few years back. The very first one was

102
00:05:29.879 --> 00:05:32.920
<v Speaker 2>only in twenty fourteen, which is embarrassing really because as

103
00:05:32.920 --> 00:05:34.639
<v Speaker 2>we all know, he was actually part of the n

104
00:05:34.720 --> 00:05:37.000
<v Speaker 2>hibername mafia. Even though he's one of the quieter ones,

105
00:05:37.040 --> 00:05:38.720
<v Speaker 2>we should have probably been talking to him back then.

106
00:05:39.399 --> 00:05:41.560
<v Speaker 1>Yeah, that says a lot for Jimmy though he was

107
00:05:41.600 --> 00:05:42.120
<v Speaker 1>one of the choir.

108
00:05:42.199 --> 00:05:45.800
<v Speaker 2>It was like the polite alt dot letter right, Yeah,

109
00:05:45.920 --> 00:05:47.639
<v Speaker 2>I mean he wasn't wrong. The guy was doing open

110
00:05:47.639 --> 00:05:50.399
<v Speaker 2>source before it was cool. And as we pointed out

111
00:05:50.439 --> 00:05:52.959
<v Speaker 2>to Jeremy a while ago, actually it's like, you know,

112
00:05:53.000 --> 00:05:57.360
<v Speaker 2>you guys won right like this the core movement taking

113
00:05:57.399 --> 00:06:01.040
<v Speaker 2>away the vitriol, the core movement of use more open source,

114
00:06:01.240 --> 00:06:04.879
<v Speaker 2>not just stuff made by Microsoft. Even Microsoft now thinks

115
00:06:04.920 --> 00:06:06.120
<v Speaker 2>that's a good idea, Like.

116
00:06:06.160 --> 00:06:08.439
<v Speaker 1>Yeah, and Jeremy's like, I'd rather not talk about that.

117
00:06:08.480 --> 00:06:10.199
<v Speaker 2>I'd rather not talk about it, and I just probably

118
00:06:10.240 --> 00:06:12.399
<v Speaker 2>suspend the Jimmy's very much in that same boat. But

119
00:06:12.519 --> 00:06:15.279
<v Speaker 2>jumping back to twenty twenty three episode eighteen sixty two

120
00:06:15.279 --> 00:06:20.680
<v Speaker 2>where we talked about mediator, got this comment from Alex Krause.

121
00:06:20.720 --> 00:06:22.639
<v Speaker 2>He goes on a bit, So I'm going to summarize

122
00:06:22.680 --> 00:06:24.399
<v Speaker 2>because he just say, hey, this is a bit of

123
00:06:24.439 --> 00:06:26.920
<v Speaker 2>a rough feedback, and he's been listening to the show

124
00:06:26.959 --> 00:06:31.560
<v Speaker 2>for a long time, and what he really gets into

125
00:06:31.680 --> 00:06:34.639
<v Speaker 2>it's like, if you the mediator pattern, which of course

126
00:06:34.680 --> 00:06:36.279
<v Speaker 2>is what media is built on, along with a bunch

127
00:06:36.279 --> 00:06:39.040
<v Speaker 2>of other tools along with the coupling, brings a violation

128
00:06:39.079 --> 00:06:42.160
<v Speaker 2>of the explicit dependencies principle, where a class should clearly

129
00:06:42.199 --> 00:06:45.160
<v Speaker 2>indicate what it needs in order to function, and hiding

130
00:06:45.160 --> 00:06:48.759
<v Speaker 2>dependencies backfires was run times errors and more complex call stacks.

131
00:06:49.720 --> 00:06:51.399
<v Speaker 2>It's not like this is the first time's come around.

132
00:06:51.480 --> 00:06:53.600
<v Speaker 2>Serve your locator back in two thousand and four or

133
00:06:53.680 --> 00:06:57.000
<v Speaker 2>so then became an anti pattern. Maybe we're just coming

134
00:06:57.000 --> 00:06:58.759
<v Speaker 2>back around again. He says, don't get me wrong, I've

135
00:06:58.759 --> 00:07:01.199
<v Speaker 2>successfully used the media or on many projects and I'm

136
00:07:01.199 --> 00:07:04.040
<v Speaker 2>not against it. Just the fact that most evs blindly

137
00:07:04.079 --> 00:07:06.720
<v Speaker 2>treated as the only way of good programming makes my

138
00:07:06.879 --> 00:07:09.920
<v Speaker 2>enrobal raise awareness to its downsides. I'm going to leave

139
00:07:09.920 --> 00:07:11.519
<v Speaker 2>that to Jimmy to comment on me, because I think

140
00:07:11.560 --> 00:07:13.680
<v Speaker 2>you know everything comes with a price, without a doubt.

141
00:07:13.680 --> 00:07:17.240
<v Speaker 2>But Alex you wrote, only wrote it a year ago,

142
00:07:17.399 --> 00:07:19.240
<v Speaker 2>But thanks so much for your comment and a copy

143
00:07:19.240 --> 00:07:20.519
<v Speaker 2>of music co buy. It's on its way to you,

144
00:07:20.560 --> 00:07:22.199
<v Speaker 2>and if you'd like a copy music Cobe. I wrote

145
00:07:22.199 --> 00:07:23.879
<v Speaker 2>a comment on the website at dot at rocks dot

146
00:07:23.920 --> 00:07:25.800
<v Speaker 2>com ra on the facebooks. We publish every show there,

147
00:07:26.000 --> 00:07:27.319
<v Speaker 2>and if you comment there and I read in the show,

148
00:07:27.319 --> 00:07:28.920
<v Speaker 2>we'll send your copy music code.

149
00:07:28.639 --> 00:07:30.959
<v Speaker 1>And of course music to code by has a Brandy

150
00:07:31.120 --> 00:07:33.759
<v Speaker 1>spank in New Well about a month old now track

151
00:07:34.680 --> 00:07:37.720
<v Speaker 1>twenty two, So did you get it? Music tooco by

152
00:07:37.800 --> 00:07:40.800
<v Speaker 1>dot net You can get that by itself, the entire

153
00:07:40.839 --> 00:07:45.079
<v Speaker 1>collection as MP three wave or flak.

154
00:07:46.279 --> 00:07:47.000
<v Speaker 2>So there you go.

155
00:07:47.680 --> 00:07:49.480
<v Speaker 1>And also you can get us all on the social

156
00:07:49.519 --> 00:07:52.720
<v Speaker 1>media's of of course, we've been on ex Twitter forever,

157
00:07:53.480 --> 00:07:57.560
<v Speaker 1>We're on Macedon and also Blue Sky some form of

158
00:07:57.800 --> 00:08:00.360
<v Speaker 1>at Carl Franklin and at Rich Campbell you'll find.

159
00:08:00.240 --> 00:08:02.680
<v Speaker 2>Out that's right. You can generally find us there, yep.

160
00:08:03.680 --> 00:08:08.480
<v Speaker 1>So officially, let me introduce Jimmy Bogard as if he

161
00:08:08.519 --> 00:08:11.000
<v Speaker 1>needs an introduction by now. He's a superstar, but he

162
00:08:11.120 --> 00:08:14.199
<v Speaker 1>is the creator and maintainer of the popular open source

163
00:08:14.319 --> 00:08:21.600
<v Speaker 1>libraries Auto Mapper and mediator Meedia t capital R. Jimmy

164
00:08:21.639 --> 00:08:24.759
<v Speaker 1>is an independent software consultant based in Austin, Texas. He's

165
00:08:24.800 --> 00:08:29.439
<v Speaker 1>received the Microsoft Most Valuable Professional Award or the MVP

166
00:08:29.560 --> 00:08:33.559
<v Speaker 1>Award every year since two thousand and nine. Jimmy, how

167
00:08:33.679 --> 00:08:37.120
<v Speaker 1>you doing and how do you respond to that comment?

168
00:08:37.279 --> 00:08:41.679
<v Speaker 3>Well? I was doing well. I should mention, though, I

169
00:08:42.080 --> 00:08:44.519
<v Speaker 3>have a very strict policy on negative feedback from my

170
00:08:44.559 --> 00:08:47.399
<v Speaker 3>open source and must be submitted in writing with a

171
00:08:47.440 --> 00:08:54.240
<v Speaker 3>self dress stamped envelope to po box. Not kidding, I

172
00:08:54.240 --> 00:08:56.200
<v Speaker 3>mean I've heard that a lot. It's all software's all

173
00:08:56.240 --> 00:08:58.279
<v Speaker 3>trade offs. I tend to shy away from these kind

174
00:08:58.320 --> 00:09:02.320
<v Speaker 3>of like hard and fast principles of software development because

175
00:09:02.320 --> 00:09:06.720
<v Speaker 3>it's just like someone's opinion, man, yep, And so to me,

176
00:09:06.799 --> 00:09:08.799
<v Speaker 3>it's it's it's all about that sort of trade off

177
00:09:08.799 --> 00:09:11.559
<v Speaker 3>and really, to me, the patterns that enables are more

178
00:09:11.559 --> 00:09:14.799
<v Speaker 3>interesting than like that that strict thing, that strict sort

179
00:09:14.840 --> 00:09:17.240
<v Speaker 3>of thing. So in other other kind of frameworks, I

180
00:09:17.279 --> 00:09:19.279
<v Speaker 3>just do different stuff. I don't know if you've had

181
00:09:19.279 --> 00:09:23.519
<v Speaker 3>the fast end points folks on, but they've got a

182
00:09:23.679 --> 00:09:27.840
<v Speaker 3>similar kind of thing that doesn't use like this, uh

183
00:09:28.200 --> 00:09:30.120
<v Speaker 3>doesn't have the kind of design issues. So I don't

184
00:09:30.120 --> 00:09:31.919
<v Speaker 3>care about that sort of stuff. I just look at, well,

185
00:09:31.919 --> 00:09:34.480
<v Speaker 3>what is does this enable the kind of development, the

186
00:09:34.559 --> 00:09:37.039
<v Speaker 3>kind of patterns I want? Otherwise I don't get too

187
00:09:37.080 --> 00:09:38.080
<v Speaker 3>hung up on that sort of stuff.

188
00:09:38.159 --> 00:09:42.559
<v Speaker 1>Yeah, we pretty much rail against absolutism because only siths

189
00:09:42.960 --> 00:09:44.159
<v Speaker 1>speak in absolutes.

190
00:09:44.320 --> 00:09:47.000
<v Speaker 3>And as we know, I mean at the end of

191
00:09:47.000 --> 00:09:48.960
<v Speaker 3>the day, like I'm just I'm there to ship features

192
00:09:48.960 --> 00:09:51.159
<v Speaker 3>for the customer and all the other stuff like they

193
00:09:51.159 --> 00:09:53.320
<v Speaker 3>don't care. They don't care about that stuff like can

194
00:09:53.320 --> 00:09:55.879
<v Speaker 3>I ship features today and can I continue to ship

195
00:09:55.879 --> 00:09:59.360
<v Speaker 3>feezer features fast going forward? That's really what they care about.

196
00:09:59.559 --> 00:10:01.799
<v Speaker 2>And not to focus on mediator because we've already done

197
00:10:01.879 --> 00:10:05.200
<v Speaker 2>that show. But there are particular scenarios where the mediator

198
00:10:05.240 --> 00:10:06.159
<v Speaker 2>approach makes sense.

199
00:10:06.360 --> 00:10:06.879
<v Speaker 1>Absolutely.

200
00:10:07.039 --> 00:10:11.679
<v Speaker 3>Yeah, it's it's it's just name pattern with known benefits

201
00:10:11.679 --> 00:10:14.799
<v Speaker 3>and drawbacks. You just you just understand when it's when

202
00:10:14.840 --> 00:10:16.960
<v Speaker 3>it's helpful, when when you don't want those drawbacks. And

203
00:10:17.080 --> 00:10:17.879
<v Speaker 3>that's pretty much.

204
00:10:17.799 --> 00:10:20.600
<v Speaker 2>It, right, And it's true most things.

205
00:10:20.840 --> 00:10:24.320
<v Speaker 3>Yep, as my hair has gotten gray or I start

206
00:10:24.360 --> 00:10:26.519
<v Speaker 3>to care less about that sort of stuff.

207
00:10:26.480 --> 00:10:29.799
<v Speaker 2>Yeah, yep. You know. The more you know, you more

208
00:10:29.799 --> 00:10:34.919
<v Speaker 2>you realize no one right way on anything. All right, Well,

209
00:10:34.960 --> 00:10:38.200
<v Speaker 2>congratulations on version fourteen of Automapper. I don't know how

210
00:10:38.240 --> 00:10:38.919
<v Speaker 2>that happened.

211
00:10:39.000 --> 00:10:40.480
<v Speaker 3>It's a teenager. It's all growed up.

212
00:10:40.799 --> 00:10:42.919
<v Speaker 2>Yeah, no kidding, it's like thinking about driving.

213
00:10:43.360 --> 00:10:44.720
<v Speaker 1>What year did that come out?

214
00:10:44.840 --> 00:10:48.919
<v Speaker 3>Automapper The first first release was on CodePlex, where you

215
00:10:48.919 --> 00:10:52.279
<v Speaker 3>had to download it manually from whatever downloads tab on

216
00:10:52.320 --> 00:10:55.279
<v Speaker 3>that website in two thousand and nine, but it originally

217
00:10:55.360 --> 00:10:57.840
<v Speaker 3>started in two thousand and eight. It was an internal

218
00:10:58.879 --> 00:11:02.720
<v Speaker 3>internal library for a client project I was on. And

219
00:11:02.759 --> 00:11:06.159
<v Speaker 3>then after about six months of being internal, we were like, okay,

220
00:11:06.480 --> 00:11:10.320
<v Speaker 3>now it's time to graduate to open source. I guess

221
00:11:11.320 --> 00:11:13.320
<v Speaker 3>put it up on CodePlex.

222
00:11:14.360 --> 00:11:15.879
<v Speaker 1>That was the place it was.

223
00:11:15.919 --> 00:11:16.720
<v Speaker 3>It was I place.

224
00:11:16.799 --> 00:11:17.799
<v Speaker 2>Yeah, back in the day.

225
00:11:18.000 --> 00:11:20.159
<v Speaker 3>Choice was that or source Forge, yeah.

226
00:11:20.159 --> 00:11:24.320
<v Speaker 2>Source right, it was the less hostile to Microsoft. Source Forge,

227
00:11:24.360 --> 00:11:26.120
<v Speaker 2>althoughmittedly Coplex owned by Mind.

228
00:11:26.200 --> 00:11:29.000
<v Speaker 1>Yeah, we liked CodePlex and Sarah was in charge of

229
00:11:29.000 --> 00:11:31.639
<v Speaker 1>it back then, remember, yeah, yeah, we interviewed it.

230
00:11:31.720 --> 00:11:34.600
<v Speaker 2>It was a long time ago. So wow.

231
00:11:34.720 --> 00:11:36.840
<v Speaker 1>So and you became an MVP in two thousand and

232
00:11:36.919 --> 00:11:40.440
<v Speaker 1>nine obviously because of the work you did with Automapper

233
00:11:40.440 --> 00:11:42.320
<v Speaker 1>and its instant popularity.

234
00:11:42.440 --> 00:11:44.399
<v Speaker 3>Well I know, you say obviously, but they don't tell

235
00:11:44.440 --> 00:11:46.120
<v Speaker 3>you why you get the thing. It's like I put

236
00:11:46.120 --> 00:11:47.799
<v Speaker 3>all the stuff in a spreadsheet, I sent it out

237
00:11:47.799 --> 00:11:50.639
<v Speaker 3>and maybe something sticks. But at the time I was

238
00:11:50.639 --> 00:11:53.679
<v Speaker 3>at the also co authors of the NVC and Action

239
00:11:53.720 --> 00:11:57.039
<v Speaker 3>books with with Jeffrey Palermo as well. I assume that

240
00:11:57.120 --> 00:11:59.279
<v Speaker 3>was it, but who knows, because like back then, automapper

241
00:11:59.320 --> 00:12:02.120
<v Speaker 3>had like, you know, thirty downloads and like most of

242
00:12:02.159 --> 00:12:03.039
<v Speaker 3>it was me.

243
00:12:04.320 --> 00:12:06.879
<v Speaker 1>I was thinking that it was an instant viral hit.

244
00:12:07.000 --> 00:12:09.159
<v Speaker 3>No, I want to say, it's a good five years

245
00:12:09.240 --> 00:12:13.320
<v Speaker 3>or so before Microsoft even recognize open source as a

246
00:12:13.320 --> 00:12:14.480
<v Speaker 3>community contribution for.

247
00:12:14.519 --> 00:12:16.720
<v Speaker 2>MVP award Wow right yeah wow.

248
00:12:16.919 --> 00:12:18.600
<v Speaker 3>Or then it was like, oh that's fine.

249
00:12:18.879 --> 00:12:22.840
<v Speaker 2>Those that transition time was weird, right, Yeah.

250
00:12:22.840 --> 00:12:24.759
<v Speaker 3>That was an interesting time, So let's write a book

251
00:12:24.759 --> 00:12:25.080
<v Speaker 3>about it.

252
00:12:25.200 --> 00:12:31.080
<v Speaker 2>Yeah, save me. I mean, yeah, Coplex, they thought they

253
00:12:31.120 --> 00:12:36.720
<v Speaker 2>shed their own source forage, and then Guthrie saw it

254
00:12:36.720 --> 00:12:39.639
<v Speaker 2>as a way to ship versions of silver Light out

255
00:12:39.639 --> 00:12:42.679
<v Speaker 2>of the box, right, Like that was his main problem was,

256
00:12:42.799 --> 00:12:46.399
<v Speaker 2>I can't wait for new versions of dot Net and

257
00:12:46.440 --> 00:12:48.240
<v Speaker 2>new versions of Studio to come along. I need to

258
00:12:48.240 --> 00:12:50.240
<v Speaker 2>move quickly on this, and he did, right. I mean,

259
00:12:50.279 --> 00:12:52.519
<v Speaker 2>they touched up four versions in two years. Like it

260
00:12:52.600 --> 00:12:55.039
<v Speaker 2>was really fast. Although I mean I would argue the

261
00:12:55.080 --> 00:12:59.600
<v Speaker 2>biggest thing that came up the Coplex interaction was the

262
00:12:59.720 --> 00:13:03.480
<v Speaker 2>re that jQuery showed up in twenty ten because the

263
00:13:03.600 --> 00:13:06.399
<v Speaker 2>MVC guys were on the path. They're building their own

264
00:13:06.600 --> 00:13:09.840
<v Speaker 2>dom tree navigator and they actually pushed the initial bits

265
00:13:09.879 --> 00:13:12.960
<v Speaker 2>out through Complex and the community went, what are you doing?

266
00:13:14.080 --> 00:13:19.840
<v Speaker 2>You should use jQuery and they did. And jQuery in

267
00:13:19.840 --> 00:13:22.440
<v Speaker 2>Student twenty ten was a big deal because it shipped

268
00:13:22.440 --> 00:13:24.840
<v Speaker 2>in the box with its original license with an MIT

269
00:13:25.039 --> 00:13:27.240
<v Speaker 2>license and they provided tech support for Yeah.

270
00:13:27.240 --> 00:13:29.120
<v Speaker 3>That was the huge one, the support thing.

271
00:13:29.200 --> 00:13:31.320
<v Speaker 2>Yeah, yeah, you're supporting a product you didn't right.

272
00:13:31.519 --> 00:13:36.840
<v Speaker 1>I also remember those silver Light interim bill days as

273
00:13:36.879 --> 00:13:41.159
<v Speaker 1>being particularly heinous to oh dude developers who were trying

274
00:13:41.200 --> 00:13:44.559
<v Speaker 1>to find the latest version because all the blog posts

275
00:13:44.600 --> 00:13:47.039
<v Speaker 1>typically didn't have dates on them, and every one of

276
00:13:47.080 --> 00:13:49.159
<v Speaker 1>them said use this version.

277
00:13:49.279 --> 00:13:52.600
<v Speaker 2>Right, and they were all wrong, right, and we're all wrong. Yeah,

278
00:13:52.639 --> 00:13:55.440
<v Speaker 2>but that's when we did that is software development two

279
00:13:55.480 --> 00:13:56.720
<v Speaker 2>complex panel.

280
00:13:56.919 --> 00:14:02.840
<v Speaker 1>Yes, that's right, and out of that grew new get Hey,

281
00:14:03.039 --> 00:14:05.799
<v Speaker 1>what if we had an RSS feed for these things

282
00:14:06.279 --> 00:14:08.960
<v Speaker 1>so we could always know which one is the most recent?

283
00:14:09.279 --> 00:14:12.360
<v Speaker 2>Well and really an MPM alternative, right, Yeah, that's what

284
00:14:12.519 --> 00:14:15.000
<v Speaker 2>that was. The mandate that Hack was given was go

285
00:14:15.120 --> 00:14:17.720
<v Speaker 2>forth and build GEMS or NPM or like.

286
00:14:17.720 --> 00:14:19.720
<v Speaker 3>Well, no one likes to download zip files from a

287
00:14:19.799 --> 00:14:21.120
<v Speaker 3>random website.

288
00:14:21.639 --> 00:14:24.279
<v Speaker 1>I wouldn't downloading zip filef I knew was the right file.

289
00:14:27.039 --> 00:14:29.080
<v Speaker 2>All you knew for sure was it probably not the

290
00:14:29.159 --> 00:14:29.679
<v Speaker 2>right file.

291
00:14:29.799 --> 00:14:33.080
<v Speaker 1>Yeah, those were hard times, but you know, if you

292
00:14:33.120 --> 00:14:37.000
<v Speaker 1>could keep up with Scott Guthrie's silver Light, you know

293
00:14:37.879 --> 00:14:41.440
<v Speaker 1>it installs updates, then it was it was good sailing.

294
00:14:41.639 --> 00:14:42.840
<v Speaker 2>And what was happening to them VC?

295
00:14:43.120 --> 00:14:45.679
<v Speaker 3>And you know there was actually an autumn opper for

296
00:14:45.720 --> 00:14:49.840
<v Speaker 3>silver Light at one point. It's unlisted now, but.

297
00:14:50.000 --> 00:14:55.399
<v Speaker 2>Yes, yes, And the only reason we're angry about silver

298
00:14:55.480 --> 00:14:58.480
<v Speaker 2>Light is because they'd ever built us a bridge out right,

299
00:15:00.399 --> 00:15:02.240
<v Speaker 2>just stopped.

300
00:15:01.840 --> 00:15:03.480
<v Speaker 3>No they said, they just set it on fire.

301
00:15:03.600 --> 00:15:08.759
<v Speaker 2>That's fine, liking Fune put it into maintenance. Oh, it's

302
00:15:08.759 --> 00:15:11.279
<v Speaker 2>supportive for the next ten years. It's like, yeah, but

303
00:15:11.360 --> 00:15:17.039
<v Speaker 2>there's one way out. Yeah anyway. Anyway, it's strange how

304
00:15:17.080 --> 00:15:20.440
<v Speaker 2>who's still angry about that? Like, there's fewer people angry

305
00:15:20.480 --> 00:15:23.639
<v Speaker 2>about that. I know, I can find today angry about

306
00:15:23.720 --> 00:15:29.000
<v Speaker 2>like the old europinicious monopoly m you know, dollar sign

307
00:15:29.399 --> 00:15:31.399
<v Speaker 2>than silver, like because there's a ten year gap between

308
00:15:31.440 --> 00:15:34.000
<v Speaker 2>the two, right, it was two thousand with that stuff,

309
00:15:34.000 --> 00:15:37.440
<v Speaker 2>and those folks have moved on. But there's still folks

310
00:15:37.440 --> 00:15:39.960
<v Speaker 2>that are plenty angry about twenty ten, twenty eleven.

311
00:15:40.080 --> 00:15:42.320
<v Speaker 3>Yeah, I was just angry about having to release a

312
00:15:42.360 --> 00:15:45.679
<v Speaker 3>separate package for people just for some light. It was

313
00:15:45.720 --> 00:15:49.240
<v Speaker 3>compiled separately those the days before, like net Standard and

314
00:15:49.279 --> 00:15:51.279
<v Speaker 3>all that sort of like multi targeting, So you had

315
00:15:51.320 --> 00:15:54.320
<v Speaker 3>to create something completely separate to support different run times.

316
00:15:54.440 --> 00:15:56.799
<v Speaker 2>And you're also the guy who sort of pioneered all

317
00:15:56.879 --> 00:16:04.000
<v Speaker 2>of the abuse that maintainers take what you got there first.

318
00:16:04.000 --> 00:16:06.360
<v Speaker 2>That's why he's got That's why he's got the po box.

319
00:16:06.480 --> 00:16:08.440
<v Speaker 2>Richard self addressed staff downvelope.

320
00:16:08.600 --> 00:16:11.840
<v Speaker 3>Yes, No, I know, I usually joke at my like

321
00:16:12.200 --> 00:16:15.840
<v Speaker 3>introduce introducing myself for like conference talks. Whatever I say,

322
00:16:16.480 --> 00:16:19.919
<v Speaker 3>Jimmy Buguart, author of bottom mapper, So I'm sorry or

323
00:16:19.919 --> 00:16:20.440
<v Speaker 3>you're welcome.

324
00:16:20.879 --> 00:16:24.080
<v Speaker 2>Yes, No, I don't know which you said.

325
00:16:24.080 --> 00:16:28.200
<v Speaker 1>It was about five years before automapper really took off.

326
00:16:28.279 --> 00:16:30.600
<v Speaker 1>What do you remember that moment?

327
00:16:30.960 --> 00:16:36.799
<v Speaker 3>No, because it was it was something that I had

328
00:16:36.799 --> 00:16:39.279
<v Speaker 3>built for a specific problem we're having on a on

329
00:16:39.320 --> 00:16:42.279
<v Speaker 3>a project back in two thousand and eight, so a

330
00:16:42.360 --> 00:16:47.200
<v Speaker 3>long time ago, like some almost graduated high school this code,

331
00:16:47.559 --> 00:16:50.399
<v Speaker 3>and I just wrote a blog post of like, here's

332
00:16:50.679 --> 00:16:52.720
<v Speaker 3>you know, here's this problem we're trying to solve that

333
00:16:52.919 --> 00:16:54.759
<v Speaker 3>I guess was a common problem other people had, but

334
00:16:54.840 --> 00:16:57.360
<v Speaker 3>it's something that we said, you know this, we're having

335
00:16:57.360 --> 00:17:03.200
<v Speaker 3>this specific problem, and uh, we knew we needed something

336
00:17:03.399 --> 00:17:05.640
<v Speaker 3>to address it. And so that was the that was

337
00:17:05.680 --> 00:17:08.640
<v Speaker 3>the solution. But then after that I got out of

338
00:17:08.640 --> 00:17:11.440
<v Speaker 3>web development for three or three or so years doing

339
00:17:11.519 --> 00:17:13.440
<v Speaker 3>just like right a back end junk and so this

340
00:17:13.559 --> 00:17:17.440
<v Speaker 3>it was growing just kind of unbeknownst to me, and

341
00:17:17.480 --> 00:17:19.240
<v Speaker 3>then coming back to web to be like, oh, this

342
00:17:19.359 --> 00:17:22.960
<v Speaker 3>is the way people build these things now, I I

343
00:17:23.240 --> 00:17:25.680
<v Speaker 3>wasn't paying attention. I was, you know, back and doing

344
00:17:26.400 --> 00:17:28.440
<v Speaker 3>back in APIs and messaging apps and stuff.

345
00:17:28.519 --> 00:17:30.599
<v Speaker 1>Were you tracking downloads right, I mean.

346
00:17:30.480 --> 00:17:33.480
<v Speaker 3>As much as you could on coplex, which was to

347
00:17:33.519 --> 00:17:36.640
<v Speaker 3>say not at all, not so much. But really, once

348
00:17:36.839 --> 00:17:39.519
<v Speaker 3>once new get hits, it made it much easier to

349
00:17:39.559 --> 00:17:43.119
<v Speaker 3>consume packages, consuming libraries than every you know, every like

350
00:17:43.200 --> 00:17:46.640
<v Speaker 3>everything was taking off. I still don't know why this

351
00:17:46.720 --> 00:17:50.960
<v Speaker 3>took off exactly. I mean I didn't do conference talks

352
00:17:51.000 --> 00:17:55.079
<v Speaker 3>on it. My my talks and posts were mainly about experience,

353
00:17:55.119 --> 00:17:57.079
<v Speaker 3>things like here's what I'm doing on my projects, and

354
00:17:57.119 --> 00:17:59.640
<v Speaker 3>here's problems I solved the projects, and the autom mapp

355
00:17:59.720 --> 00:18:01.599
<v Speaker 3>was a soution for some of those things, but I didn't.

356
00:18:02.039 --> 00:18:05.079
<v Speaker 3>I never like just straight up advertised it. So no,

357
00:18:05.200 --> 00:18:06.279
<v Speaker 3>it's it's kind of a mystery.

358
00:18:06.279 --> 00:18:06.759
<v Speaker 2>Well it's that.

359
00:18:06.920 --> 00:18:09.680
<v Speaker 1>That's kind of way it grows is by the community

360
00:18:09.720 --> 00:18:11.599
<v Speaker 1>taking hold of it and telling each other about it,

361
00:18:12.160 --> 00:18:15.480
<v Speaker 1>so that that's the best. That's the best endorsement you

362
00:18:15.480 --> 00:18:16.720
<v Speaker 1>can get, right, Yeah.

363
00:18:16.640 --> 00:18:19.559
<v Speaker 3>It was, even there was a few years in. It's

364
00:18:19.559 --> 00:18:22.480
<v Speaker 3>like some Raindow emailed me even like a logos that hey,

365
00:18:22.519 --> 00:18:24.279
<v Speaker 3>you should have a logo. I was like, I probably should,

366
00:18:24.279 --> 00:18:26.279
<v Speaker 3>and I can't draw, so thank you for that.

367
00:18:26.920 --> 00:18:29.000
<v Speaker 2>He literally handed you a logo and says, what about this.

368
00:18:29.119 --> 00:18:31.960
<v Speaker 3>Yeah, here's a here's a file with some weird extension.

369
00:18:31.960 --> 00:18:34.039
<v Speaker 3>I even recognize what that extension with a file was,

370
00:18:34.079 --> 00:18:36.440
<v Speaker 3>like dot ai or something. I have no idea what

371
00:18:36.480 --> 00:18:38.880
<v Speaker 3>it is. It's a photoshop file, so who knows.

372
00:18:39.200 --> 00:18:42.559
<v Speaker 2>Yeah, I love there's still all old blog posts like

373
00:18:42.599 --> 00:18:45.519
<v Speaker 2>one from two thousand and nine and twenty ten, not you,

374
00:18:45.839 --> 00:18:48.319
<v Speaker 2>somebody else. I'll leave them namelessing. Here's how you get

375
00:18:48.359 --> 00:18:49.319
<v Speaker 2>started with automapper.

376
00:18:51.279 --> 00:18:54.759
<v Speaker 3>That has been one of the biggest challenges though, because

377
00:18:54.799 --> 00:18:57.119
<v Speaker 3>it's been around for so long that the API has

378
00:18:57.200 --> 00:18:59.480
<v Speaker 3>changed over the years. So it's the kind of classic

379
00:18:59.519 --> 00:19:02.559
<v Speaker 3>thing of like you answer stack overflow posts, but there's

380
00:19:02.720 --> 00:19:04.880
<v Speaker 3>there's needs to be an expiration date almost of like

381
00:19:04.920 --> 00:19:07.200
<v Speaker 3>this is only good for five years, then it's probably wrong.

382
00:19:08.759 --> 00:19:10.680
<v Speaker 3>I guess it's a kind of a common promise sack overflow.

383
00:19:10.720 --> 00:19:14.200
<v Speaker 3>I don't trust anything. If it's a jobscript question, then

384
00:19:14.240 --> 00:19:16.319
<v Speaker 3>if it's older than two years, it's certainly wrong.

385
00:19:16.519 --> 00:19:19.599
<v Speaker 1>I really got happy the day that the search engines

386
00:19:20.079 --> 00:19:23.839
<v Speaker 1>added that little filter you know, sort by most recent

387
00:19:24.039 --> 00:19:26.880
<v Speaker 1>oh yeah, or you know, only things that have been

388
00:19:26.880 --> 00:19:30.440
<v Speaker 1>written in the last year or month or whatever. That's

389
00:19:30.480 --> 00:19:33.000
<v Speaker 1>been invaluable to me because that was a huge problem

390
00:19:33.000 --> 00:19:34.519
<v Speaker 1>on the search engines before they did that.

391
00:19:34.720 --> 00:19:36.960
<v Speaker 3>So this is that's no different that you know, people

392
00:19:37.359 --> 00:19:39.200
<v Speaker 3>still have these to this day, Like, oh, I tried

393
00:19:39.240 --> 00:19:41.119
<v Speaker 3>to copy the code from this post and it didn't work.

394
00:19:41.160 --> 00:19:43.400
<v Speaker 3>I'm like, oh gosh, you need to go through about

395
00:19:43.400 --> 00:19:46.480
<v Speaker 3>five upgrade guides and then it'll work.

396
00:19:46.640 --> 00:19:48.759
<v Speaker 1>And it still infuriates me when I read a blog

397
00:19:48.759 --> 00:19:51.599
<v Speaker 1>post that doesn't have a date on it, it just

398
00:19:51.680 --> 00:19:54.119
<v Speaker 1>infuriates me. It's like, why wouldn't you put that.

399
00:19:54.240 --> 00:19:57.240
<v Speaker 2>Just means don't trust it, right, yeah, or just.

400
00:19:57.200 --> 00:19:58.920
<v Speaker 1>You know, view the source and try to find out

401
00:19:58.920 --> 00:19:59.920
<v Speaker 1>when it was written, you.

402
00:19:59.839 --> 00:20:01.799
<v Speaker 3>Know, way back. Sometimes I do that too.

403
00:20:02.240 --> 00:20:04.920
<v Speaker 2>Yeah, yeah, if you if you you can find that

404
00:20:05.000 --> 00:20:07.319
<v Speaker 2>an archive dot org in twenty ten, you should probably

405
00:20:07.319 --> 00:20:10.359
<v Speaker 2>not read it. Anything you find an archive not a

406
00:20:10.400 --> 00:20:14.200
<v Speaker 2>good idea. That game. Again, that's the issue of it's

407
00:20:14.200 --> 00:20:17.440
<v Speaker 2>been around for more more than a decade.

408
00:20:17.640 --> 00:20:19.440
<v Speaker 3>So yeah, it's crazy.

409
00:20:19.519 --> 00:20:21.759
<v Speaker 1>And so I mean, you're going to have access documentation

410
00:20:22.079 --> 00:20:25.200
<v Speaker 1>it is what it is. How how often did you

411
00:20:26.000 --> 00:20:29.519
<v Speaker 1>add well, you've obviously added features to it fourteen times,

412
00:20:29.599 --> 00:20:31.759
<v Speaker 1>but yeah, you know what were the what were they

413
00:20:31.799 --> 00:20:33.519
<v Speaker 1>bug fixes? Were they little features?

414
00:20:33.599 --> 00:20:33.839
<v Speaker 2>Is it?

415
00:20:33.960 --> 00:20:36.839
<v Speaker 3>You know? Well, there's a period of time when I

416
00:20:36.880 --> 00:20:40.359
<v Speaker 3>was just happy that people noticed it that I was

417
00:20:40.400 --> 00:20:43.720
<v Speaker 3>accepting every pole request that came through the door, not

418
00:20:43.799 --> 00:20:46.920
<v Speaker 3>realizing that you have to support everything that you're merging

419
00:20:46.960 --> 00:20:50.119
<v Speaker 3>to your code base. And so there's yeah, some things

420
00:20:50.119 --> 00:20:52.039
<v Speaker 3>that were in there and that I wound up taking

421
00:20:52.039 --> 00:20:56.640
<v Speaker 3>you out. But some of the things were like big

422
00:20:56.680 --> 00:21:00.279
<v Speaker 3>things or performance related. So the I and the whole

423
00:21:00.319 --> 00:21:06.200
<v Speaker 3>idea behind the libraries, I've got a dto data transfer object.

424
00:21:06.519 --> 00:21:09.880
<v Speaker 3>Usually that's exposed to an API or to the web.

425
00:21:10.039 --> 00:21:13.200
<v Speaker 3>If you go to render on htmail and it's a

426
00:21:13.279 --> 00:21:16.880
<v Speaker 3>simplified version of a more complex data model or EF model,

427
00:21:16.920 --> 00:21:18.599
<v Speaker 3>You've got going behind the scenes.

428
00:21:18.559 --> 00:21:21.519
<v Speaker 1>Right, you don't want to expose everything to the client

429
00:21:21.599 --> 00:21:23.160
<v Speaker 1>that's in your data model.

430
00:21:23.240 --> 00:21:25.200
<v Speaker 3>And I think everyone's done this too, where like they

431
00:21:25.720 --> 00:21:29.200
<v Speaker 3>expose an EF model on an endpoints and then not

432
00:21:29.240 --> 00:21:32.240
<v Speaker 3>realizing people can do navigation properties and like suddenly things

433
00:21:32.279 --> 00:21:34.960
<v Speaker 3>start breaking. It's like no, no, no, just only the data

434
00:21:34.960 --> 00:21:37.720
<v Speaker 3>you need, nothing else, nothing more. And then autom Apple

435
00:21:37.839 --> 00:21:39.680
<v Speaker 3>is just a tool to say, well, if the thing

436
00:21:39.720 --> 00:21:41.400
<v Speaker 3>on the left looks like the thing and the rights,

437
00:21:41.680 --> 00:21:43.359
<v Speaker 3>then go ahead and stuff the thing on the left

438
00:21:43.359 --> 00:21:46.079
<v Speaker 3>with the stuff on the rights. But initially behind the

439
00:21:46.119 --> 00:21:50.319
<v Speaker 3>scenes was using the slow reflection API, which was easy

440
00:21:50.359 --> 00:21:54.680
<v Speaker 3>to program against but terrible performance wise. So one big

441
00:21:54.680 --> 00:22:01.480
<v Speaker 3>thing was converting that all to expression tree compilation, yeah,

442
00:22:01.480 --> 00:22:04.519
<v Speaker 3>which is like you you don't have a full programming language,

443
00:22:04.599 --> 00:22:06.359
<v Speaker 3>but you have like the worst part of every world,

444
00:22:06.440 --> 00:22:09.880
<v Speaker 3>except it compiles into like native code and runs really

445
00:22:09.880 --> 00:22:13.319
<v Speaker 3>fast after that, So that was a big thing. Another

446
00:22:13.319 --> 00:22:17.759
<v Speaker 3>big thing we did was you can we could make

447
00:22:17.799 --> 00:22:21.440
<v Speaker 3>other targets for this kind of mapping, and so one

448
00:22:21.440 --> 00:22:25.400
<v Speaker 3>of the other mappings we did was going from you know,

449
00:22:25.480 --> 00:22:28.359
<v Speaker 3>the source complex model to the dt O. Instead of

450
00:22:28.359 --> 00:22:31.720
<v Speaker 3>that being an end memory expression compilation, it can also

451
00:22:31.759 --> 00:22:35.960
<v Speaker 3>push that expression tree over to something that translates that

452
00:22:36.039 --> 00:22:39.720
<v Speaker 3>expression tree to SQL. Right, so I can push that

453
00:22:39.759 --> 00:22:43.960
<v Speaker 3>translation to NITY framework. And when you do any framework,

454
00:22:44.440 --> 00:22:46.799
<v Speaker 3>you know, blow out include but include and if you

455
00:22:46.880 --> 00:22:50.119
<v Speaker 3>dot dot select, then it own. And then if we

456
00:22:50.200 --> 00:22:53.240
<v Speaker 3>do that select in any framework, it pushes that all

457
00:22:53.279 --> 00:22:56.119
<v Speaker 3>the way down to the database and only selects the

458
00:22:56.160 --> 00:22:59.759
<v Speaker 3>data at the database level too, so it makes it

459
00:22:59.759 --> 00:23:02.200
<v Speaker 3>it allows for much more efficient queries in fact, you

460
00:23:02.200 --> 00:23:04.000
<v Speaker 3>don't even need the dot includes anymore. You can just

461
00:23:04.000 --> 00:23:07.039
<v Speaker 3>say that select. So we extended to say, well, what

462
00:23:07.119 --> 00:23:09.759
<v Speaker 3>if automatic could do that for you? Because it's that's

463
00:23:09.759 --> 00:23:12.559
<v Speaker 3>what you're trying to do, is tak complex data model

464
00:23:12.799 --> 00:23:14.640
<v Speaker 3>and stuff into this. Why don't we push that down

465
00:23:14.640 --> 00:23:17.000
<v Speaker 3>to the SQL level and then have it figured out

466
00:23:17.039 --> 00:23:20.279
<v Speaker 3>just because like the shape looks like it should, you know,

467
00:23:20.440 --> 00:23:22.599
<v Speaker 3>just trimming out the stuff you don't need.

468
00:23:22.799 --> 00:23:25.319
<v Speaker 2>Yeah, I know, that's and that goes faster. I'm just

469
00:23:25.359 --> 00:23:31.759
<v Speaker 2>thinking about the the convolutions you've gone through in fifteen years,

470
00:23:31.880 --> 00:23:34.279
<v Speaker 2>because that means you also jumped across the core too,

471
00:23:34.400 --> 00:23:38.319
<v Speaker 2>which you know so much your reflection like surprise.

472
00:23:38.880 --> 00:23:43.799
<v Speaker 3>Yeah, I've ridden the whole ride of like d nx

473
00:23:44.240 --> 00:23:47.799
<v Speaker 3>kd id XC, all those like very early iterations of

474
00:23:47.880 --> 00:23:50.400
<v Speaker 3>dot net Core I had to deal with because like

475
00:23:50.480 --> 00:23:52.640
<v Speaker 3>people were using it and wanting to use my library.

476
00:23:52.720 --> 00:23:55.640
<v Speaker 3>So I got to learn what did David Fowler come

477
00:23:55.720 --> 00:24:01.799
<v Speaker 3>up with today? Okay, you'll put that there. Yeah, that's

478
00:24:01.799 --> 00:24:04.359
<v Speaker 3>the that's the least fun part of open sources. You know,

479
00:24:04.440 --> 00:24:08.440
<v Speaker 3>every three years, the way to do builds and deploys changes,

480
00:24:08.519 --> 00:24:11.359
<v Speaker 3>so you got to go right update the boring stuff

481
00:24:11.359 --> 00:24:14.200
<v Speaker 3>for all that, but well it these days it's pretty seamless.

482
00:24:14.319 --> 00:24:17.079
<v Speaker 2>You're building tools for developers, and they always want to

483
00:24:17.160 --> 00:24:20.160
<v Speaker 2>use the new gadget. So it's like K is alpha alpha,

484
00:24:20.240 --> 00:24:22.519
<v Speaker 2>but why does the maper work with it? What's wrong

485
00:24:22.599 --> 00:24:22.920
<v Speaker 2>with you?

486
00:24:23.079 --> 00:24:25.440
<v Speaker 3>Oh? Yeah, exactly, which is why I had that the

487
00:24:25.559 --> 00:24:28.839
<v Speaker 3>silver Life because like people ask for it, and you know,

488
00:24:28.880 --> 00:24:30.759
<v Speaker 3>again like at the time like sure, yeah, I'll do this,

489
00:24:30.839 --> 00:24:32.599
<v Speaker 3>and then I go, look, I just look at the

490
00:24:32.599 --> 00:24:36.000
<v Speaker 3>download cup five thousand, five thousand downloads.

491
00:24:35.519 --> 00:24:37.799
<v Speaker 2>Of the silver Light edition, the Silver Life version.

492
00:24:37.880 --> 00:24:40.519
<v Speaker 3>How much work did I put into that thing for

493
00:24:40.839 --> 00:24:41.440
<v Speaker 3>ten people?

494
00:24:42.680 --> 00:24:45.319
<v Speaker 2>And you're talking over the duration of silver Light then,

495
00:24:45.400 --> 00:24:50.200
<v Speaker 2>so yeah, exactly, yeah, yeah means yeah, if you look

496
00:24:50.200 --> 00:24:51.559
<v Speaker 2>at it that way, Jimmy, you're just going to make

497
00:24:51.599 --> 00:24:52.200
<v Speaker 2>yourself sad.

498
00:24:54.119 --> 00:24:54.319
<v Speaker 4>Yeah.

499
00:24:54.440 --> 00:24:56.920
<v Speaker 3>I don't. I never had, I never. This is one

500
00:24:56.960 --> 00:25:01.000
<v Speaker 3>of my lessons learned too from open sources. You know,

501
00:25:01.039 --> 00:25:04.799
<v Speaker 3>it's it's good to provide features strictly for the community,

502
00:25:04.880 --> 00:25:08.279
<v Speaker 3>but because you have to support them forever, then you

503
00:25:09.079 --> 00:25:11.640
<v Speaker 3>need that level of commitment if you're going to bring

504
00:25:11.640 --> 00:25:14.119
<v Speaker 3>that stuff on. So for me, ninety five percent of

505
00:25:14.119 --> 00:25:17.039
<v Speaker 3>the open source work I do is client driven like

506
00:25:17.119 --> 00:25:21.519
<v Speaker 3>something my paying customers need, right, and I want to

507
00:25:22.519 --> 00:25:25.200
<v Speaker 3>use it on future things. So I make an open

508
00:25:25.240 --> 00:25:27.119
<v Speaker 3>source library and then boom, there we go.

509
00:25:27.319 --> 00:25:27.559
<v Speaker 2>Yeah.

510
00:25:27.599 --> 00:25:32.960
<v Speaker 3>I don't do the hobbyist aspirational open source anymore. I

511
00:25:33.039 --> 00:25:35.839
<v Speaker 3>just you know, don't have time for that dot gift

512
00:25:36.000 --> 00:25:36.519
<v Speaker 3>sort of thing.

513
00:25:36.680 --> 00:25:39.599
<v Speaker 2>Yeah. Yeah, but I mean the conversation we've had with

514
00:25:39.640 --> 00:25:42.759
<v Speaker 2>minus targets and he thinks almost exactly the same way. Yes,

515
00:25:42.839 --> 00:25:44.880
<v Speaker 2>I could add that feature to c sharp, but how

516
00:25:44.920 --> 00:25:46.480
<v Speaker 2>many people are going to use it? And we have

517
00:25:46.519 --> 00:25:47.599
<v Speaker 2>to support it forever?

518
00:25:48.039 --> 00:25:48.920
<v Speaker 3>Right records?

519
00:25:49.440 --> 00:25:51.200
<v Speaker 2>Right, it can never take it out.

520
00:25:51.480 --> 00:25:52.920
<v Speaker 3>Yeah, And there's only so much you can do with

521
00:25:53.000 --> 00:25:55.480
<v Speaker 3>a just sort of an upgrade guide to say, yeah,

522
00:25:55.920 --> 00:25:58.400
<v Speaker 3>lots of things change and here's a wiki doc to

523
00:25:59.039 --> 00:26:01.880
<v Speaker 3>fix things now, people and go, you know, for for

524
00:26:01.960 --> 00:26:07.039
<v Speaker 3>a more gradual approach. You Yeah, yeah, they're lucky and lucky.

525
00:26:07.079 --> 00:26:09.400
<v Speaker 3>I gave an upgrade guy, you know, like, just figure

526
00:26:09.400 --> 00:26:09.680
<v Speaker 3>it out?

527
00:26:10.400 --> 00:26:15.160
<v Speaker 2>Did you want your money back? There? I mean, c

528
00:26:15.319 --> 00:26:17.960
<v Speaker 2>Shark has been very resistant about redeprecating features. Ever, they

529
00:26:18.000 --> 00:26:20.200
<v Speaker 2>never wanted to break anybody's code. But have you deprecated

530
00:26:20.200 --> 00:26:23.440
<v Speaker 2>features like taking stuff away down and breaking in fourteen versions?

531
00:26:23.440 --> 00:26:24.839
<v Speaker 2>I must have yeah, absolutely.

532
00:26:25.119 --> 00:26:28.039
<v Speaker 3>Yeah, there's there's definitely things so you mentioned, like just

533
00:26:28.079 --> 00:26:31.599
<v Speaker 3>the people abusing or features I wouldn't use. That's something

534
00:26:31.599 --> 00:26:34.119
<v Speaker 3>that initially i'd see, Okay, I can see your use case.

535
00:26:35.000 --> 00:26:38.680
<v Speaker 3>That seems interesting, But you know, because that's not my

536
00:26:39.160 --> 00:26:41.359
<v Speaker 3>day job to consider other people's features, I just kind

537
00:26:41.400 --> 00:26:43.359
<v Speaker 3>of rubber stamp it and let it go right, And

538
00:26:43.359 --> 00:26:47.000
<v Speaker 3>then only after a year or two have been the

539
00:26:47.119 --> 00:26:49.720
<v Speaker 3>crazy follow up feature requests, I'm like, oh no, that

540
00:26:50.039 --> 00:26:52.480
<v Speaker 3>was actually a mistake. I shouldn't have allowed that.

541
00:26:52.720 --> 00:26:54.039
<v Speaker 2>Yeah, yeah, you opened the door.

542
00:26:54.319 --> 00:26:57.319
<v Speaker 3>So there's definitely features where I see like, okay, maybe

543
00:26:57.319 --> 00:26:59.319
<v Speaker 3>it could work in simple use cases, but because it

544
00:26:59.359 --> 00:27:01.759
<v Speaker 3>may fall in its face on anything more complex, it's

545
00:27:01.759 --> 00:27:04.279
<v Speaker 3>not even worth having. So I'm just gonna take it out.

546
00:27:04.599 --> 00:27:05.079
<v Speaker 2>Yeah.

547
00:27:05.119 --> 00:27:08.839
<v Speaker 3>There's also in cases where instead of me completely taking

548
00:27:08.880 --> 00:27:12.640
<v Speaker 3>out the feature or deleting it entirely, I will take

549
00:27:12.680 --> 00:27:15.799
<v Speaker 3>it out and put it into a separate package, and

550
00:27:15.839 --> 00:27:18.799
<v Speaker 3>then as someone opens an issue, I make them an administrator,

551
00:27:19.200 --> 00:27:21.920
<v Speaker 3>right like, now it's your problem there, you can fix this.

552
00:27:24.400 --> 00:27:26.160
<v Speaker 2>So you have you have a separate package. What do

553
00:27:26.200 --> 00:27:28.279
<v Speaker 2>you call something like automapp or evil.

554
00:27:30.720 --> 00:27:35.319
<v Speaker 3>Automa Rapper did go after yourself. I don't. It's either

555
00:27:35.400 --> 00:27:37.440
<v Speaker 3>when I completely delete it, but like, if there's enough

556
00:27:37.480 --> 00:27:39.160
<v Speaker 3>people that want it, Like.

557
00:27:39.279 --> 00:27:41.200
<v Speaker 2>If you're going to depend on this evil, I'll give

558
00:27:41.240 --> 00:27:42.240
<v Speaker 2>you a place for the evil.

559
00:27:42.839 --> 00:27:45.599
<v Speaker 3>Yeah, I mean the one example of that that was

560
00:27:46.920 --> 00:27:48.880
<v Speaker 3>it was actually a friend of mine the submitted pole request,

561
00:27:48.920 --> 00:27:53.680
<v Speaker 3>who directly support data reader, which I didn't quite understand.

562
00:27:53.680 --> 00:27:56.799
<v Speaker 3>But it was the idea that you could map from

563
00:27:56.880 --> 00:28:01.039
<v Speaker 3>data reader to a dt O. And the only reason

564
00:28:01.119 --> 00:28:04.240
<v Speaker 3>that exists is because no other micro ORMs exist, Like,

565
00:28:04.279 --> 00:28:06.480
<v Speaker 3>there was no dapper at the time, right, which does

566
00:28:06.519 --> 00:28:10.599
<v Speaker 3>basically that it just maps from SQL to code to

567
00:28:10.720 --> 00:28:13.559
<v Speaker 3>dt O and gets rid of the rum junk. It

568
00:28:13.599 --> 00:28:15.640
<v Speaker 3>didn't exist, so that thing exists on some like.

569
00:28:15.640 --> 00:28:18.119
<v Speaker 2>And you're talking about dapper d a p p e

570
00:28:18.240 --> 00:28:19.880
<v Speaker 2>R as opposed to Dapper d a.

571
00:28:19.960 --> 00:28:22.799
<v Speaker 3>P R Yes, sorry not DAPR. Yes.

572
00:28:23.240 --> 00:28:25.559
<v Speaker 2>Just you know, we usually end up talking about da PR,

573
00:28:25.640 --> 00:28:27.400
<v Speaker 2>so it's nice to be talking about DAPPER.

574
00:28:27.680 --> 00:28:30.160
<v Speaker 1>I have way more experience with d a p p

575
00:28:30.279 --> 00:28:31.880
<v Speaker 1>e R than I do d A p R.

576
00:28:32.559 --> 00:28:32.799
<v Speaker 2>Yes.

577
00:28:33.519 --> 00:28:36.880
<v Speaker 3>Pro tip open source people that want to or people

578
00:28:36.920 --> 00:28:39.279
<v Speaker 3>that are aspired to be open source developers is pick

579
00:28:39.400 --> 00:28:42.640
<v Speaker 3>names that don't conflict with other already existing names in

580
00:28:42.680 --> 00:28:45.160
<v Speaker 3>the universe. Yeah, that would be nice. Yeah, so that's

581
00:28:45.200 --> 00:28:47.680
<v Speaker 3>like automapper did not exist as a name thing before.

582
00:28:48.400 --> 00:28:50.799
<v Speaker 3>Although my kid does tell me that there's some automapper

583
00:28:50.839 --> 00:28:54.759
<v Speaker 3>for Minecraft or something that will I don't know.

584
00:28:55.000 --> 00:28:56.720
<v Speaker 2>Oh my god, that has nothing to do with me.

585
00:28:56.839 --> 00:28:59.960
<v Speaker 3>That's like, will automatically map out a terrain on something?

586
00:29:00.240 --> 00:29:02.839
<v Speaker 1>Well, they should automatically send you a royalty check, is

587
00:29:02.839 --> 00:29:08.359
<v Speaker 1>what they share. Let's take a quick break. We'll be

588
00:29:08.440 --> 00:29:11.599
<v Speaker 1>right back after these very important messages. Did you know

589
00:29:11.720 --> 00:29:14.720
<v Speaker 1>you can lift and shift your dot Net framework apps

590
00:29:14.759 --> 00:29:19.119
<v Speaker 1>to virtual machines in the cloud. Use the elastic beanstalk

591
00:29:19.279 --> 00:29:23.440
<v Speaker 1>service to easily migrate to Amazon EC two with little

592
00:29:23.559 --> 00:29:27.799
<v Speaker 1>or no changes. Find out more at aws dot Amazon

593
00:29:27.880 --> 00:29:36.480
<v Speaker 1>dot com, slash elasticbeanstock. And we're back. It's dot need Rocks.

594
00:29:36.519 --> 00:29:39.880
<v Speaker 1>I'm Carl Franklin. That's Richard Campbell. Hello, that's our friend

595
00:29:39.960 --> 00:29:44.759
<v Speaker 1>Jimmy Boguard. Automapper turned fourteen, and we're sort of going

596
00:29:44.799 --> 00:29:47.359
<v Speaker 1>through the history of it, and you know, the bumps

597
00:29:47.400 --> 00:29:51.720
<v Speaker 1>and cracks along the way, and how much time Jimmy

598
00:29:51.759 --> 00:29:53.359
<v Speaker 1>wants to spend on it, you know.

599
00:29:54.720 --> 00:29:57.039
<v Speaker 2>Yeah, I mean you've already. This was a tool you

600
00:29:57.119 --> 00:30:01.759
<v Speaker 2>built for yourself working on with your cloud allience, and

601
00:30:02.039 --> 00:30:04.200
<v Speaker 2>that's how features generally get at it. I guess other

602
00:30:04.240 --> 00:30:07.079
<v Speaker 2>people have contributed as well for their features for their

603
00:30:07.119 --> 00:30:10.720
<v Speaker 2>clients where it's made sense. Yeah, yeah, it's not. This

604
00:30:10.799 --> 00:30:14.240
<v Speaker 2>is not a for profit business, no, and.

605
00:30:14.240 --> 00:30:16.079
<v Speaker 3>This is I mean, this is obviously a challenge for

606
00:30:16.359 --> 00:30:20.599
<v Speaker 3>any open source maintainers, just the sort of the economics

607
00:30:20.599 --> 00:30:21.839
<v Speaker 3>of it all, Like, how do you how do you

608
00:30:21.880 --> 00:30:23.400
<v Speaker 3>pay for the time for this sort of thing.

609
00:30:23.559 --> 00:30:26.519
<v Speaker 1>Well, here's a simple question, is did it get you

610
00:30:26.599 --> 00:30:28.880
<v Speaker 1>any business that you otherwise wouldn't have had?

611
00:30:29.680 --> 00:30:32.880
<v Speaker 3>I don't think so, because it's not something I generally

612
00:30:32.920 --> 00:30:33.519
<v Speaker 3>consult on.

613
00:30:33.880 --> 00:30:37.160
<v Speaker 1>You're a consultant, though, yes I am so. H So

614
00:30:37.480 --> 00:30:39.680
<v Speaker 1>that's a nice little resume to have out there. Somebody

615
00:30:39.799 --> 00:30:41.880
<v Speaker 1>uses automapper and says, oh, we need somebody to do

616
00:30:41.920 --> 00:30:44.359
<v Speaker 1>it back end. Oh that Jimmy Bogart guy's pretty smart.

617
00:30:44.440 --> 00:30:45.359
<v Speaker 1>Let me call him, I know.

618
00:30:45.440 --> 00:30:48.880
<v Speaker 3>And it's actually it was many years before I even

619
00:30:48.920 --> 00:30:51.359
<v Speaker 3>started letting people know that I was the author of it,

620
00:30:51.519 --> 00:30:56.440
<v Speaker 3>because I just it wasn't part of my like persona.

621
00:30:55.839 --> 00:30:57.519
<v Speaker 1>I should we call auto mapper.

622
00:30:57.759 --> 00:31:01.119
<v Speaker 3>I am not a I'm not like I pretend to

623
00:31:01.119 --> 00:31:03.240
<v Speaker 3>be like very arrogant, but actually I don't. I don't

624
00:31:03.279 --> 00:31:05.039
<v Speaker 3>like that kind of attentiones. So for the longest time,

625
00:31:05.079 --> 00:31:07.880
<v Speaker 3>I didn't like advertise myself as the author of it

626
00:31:08.359 --> 00:31:10.640
<v Speaker 3>because it's a shamed or anything. It's just realizing, oh,

627
00:31:10.680 --> 00:31:13.319
<v Speaker 3>people don't know that I made that thing, right, because

628
00:31:13.319 --> 00:31:16.319
<v Speaker 3>I just don't do like talks on it.

629
00:31:16.640 --> 00:31:18.000
<v Speaker 2>I don't think I've ever seen you do a talk

630
00:31:18.039 --> 00:31:18.720
<v Speaker 2>on autobapper.

631
00:31:19.200 --> 00:31:23.200
<v Speaker 1>No, your name. Your name's on the product though, right, oh.

632
00:31:23.160 --> 00:31:25.599
<v Speaker 3>Yeah, yeah, yeah it is. But in terms of like

633
00:31:25.640 --> 00:31:33.680
<v Speaker 3>getting uh incoming business, that's just not the The recording

634
00:31:33.720 --> 00:31:37.240
<v Speaker 3>we did on modernization of dot net, migrating from Framework

635
00:31:37.720 --> 00:31:41.680
<v Speaker 3>eight migration that gives you know, eight thousand times more business,

636
00:31:41.680 --> 00:31:44.519
<v Speaker 3>because that's a big problem people have than So.

637
00:31:45.319 --> 00:31:46.839
<v Speaker 2>I didn't make that show to get you business to

638
00:31:47.000 --> 00:31:49.079
<v Speaker 2>be I made that show because lots of people have

639
00:31:49.200 --> 00:31:51.960
<v Speaker 2>that problem. You know, you really do know your way

640
00:31:51.960 --> 00:31:52.720
<v Speaker 2>around solving it.

641
00:31:54.119 --> 00:31:57.079
<v Speaker 3>No, I know, it's uh yeah, I mean that. My

642
00:31:57.440 --> 00:31:59.680
<v Speaker 3>blogging and talking has always been about here's what projects

643
00:31:59.720 --> 00:32:01.359
<v Speaker 3>have worked on in the past one or two or

644
00:32:01.359 --> 00:32:05.759
<v Speaker 3>three years, and sharing lessons learned. And I'm not there's

645
00:32:05.799 --> 00:32:08.160
<v Speaker 3>not just that many lessons learned I've had from just

646
00:32:08.160 --> 00:32:12.279
<v Speaker 3>strictly autom apple. It's always like, h just whatever random

647
00:32:12.279 --> 00:32:14.559
<v Speaker 3>project I've been working on. So yeah, I know, I

648
00:32:14.799 --> 00:32:17.680
<v Speaker 3>maybe that's true, Carl, because I don't like, I know,

649
00:32:17.759 --> 00:32:19.400
<v Speaker 3>marketing is such a weird thing of like how many

650
00:32:19.440 --> 00:32:22.279
<v Speaker 3>touch points do you get before someone comes into the door.

651
00:32:23.200 --> 00:32:26.160
<v Speaker 3>So I'm sure that didn't hurt anything, But I don't

652
00:32:26.160 --> 00:32:28.960
<v Speaker 3>get like, hey, can you help me fix this problem

653
00:32:29.119 --> 00:32:31.599
<v Speaker 3>related to automapp It's just not a thing.

654
00:32:31.799 --> 00:32:33.839
<v Speaker 2>Yeah, And to me, the main conversation we have about

655
00:32:33.880 --> 00:32:36.720
<v Speaker 2>automappers are the dues and dots of maintaining a popular

656
00:32:36.920 --> 00:32:39.680
<v Speaker 2>open source library. Mostly don'ts.

657
00:32:41.279 --> 00:32:45.240
<v Speaker 3>Don't accept every poll request. You do actually test the

658
00:32:45.960 --> 00:32:48.079
<v Speaker 3>release before you push it out onto new gets too.

659
00:32:48.519 --> 00:32:49.720
<v Speaker 2>Yeah, that's a good one.

660
00:32:49.839 --> 00:32:51.000
<v Speaker 3>Unsuspecting masses.

661
00:32:51.279 --> 00:32:53.319
<v Speaker 1>Yeah, do you read through the code and make sure

662
00:32:53.319 --> 00:32:55.839
<v Speaker 1>it's not calling out to China or something?

663
00:32:56.440 --> 00:32:57.799
<v Speaker 3>You know? I do get that every once in a

664
00:32:57.839 --> 00:32:59.799
<v Speaker 3>while of someone coming up like do you have any

665
00:32:59.880 --> 00:33:04.400
<v Speaker 3>not own security vulnerabilities? Like no, I don't. I mean

666
00:33:04.440 --> 00:33:05.680
<v Speaker 3>maybe there's unknown ones, but.

667
00:33:07.440 --> 00:33:12.880
<v Speaker 2>No ship with a dozen vulnerabilities for your viewing pleasure.

668
00:33:14.440 --> 00:33:15.839
<v Speaker 1>Security features.

669
00:33:15.640 --> 00:33:19.079
<v Speaker 2>It's a tool that devs use to generate code. Right,

670
00:33:19.119 --> 00:33:21.839
<v Speaker 2>it lives in the dev environment. You don't deploy it anywhere,

671
00:33:21.960 --> 00:33:22.759
<v Speaker 2>like that's not a thing.

672
00:33:23.039 --> 00:33:24.799
<v Speaker 3>No, it runs in production.

673
00:33:25.000 --> 00:33:26.799
<v Speaker 2>It's not a okay, so it is part of the

674
00:33:26.799 --> 00:33:27.559
<v Speaker 2>production code.

675
00:33:27.680 --> 00:33:29.920
<v Speaker 3>Yeah. Yeah, So that something that's different from like a

676
00:33:29.920 --> 00:33:33.400
<v Speaker 3>T four template style or co generations is this does

677
00:33:33.799 --> 00:33:37.480
<v Speaker 3>at runtime generate the mappings for you. And the main

678
00:33:37.519 --> 00:33:40.440
<v Speaker 3>reason for that is no one ever asked me to

679
00:33:40.480 --> 00:33:42.920
<v Speaker 3>do the co generator version and wanted to pay for it.

680
00:33:43.160 --> 00:33:46.400
<v Speaker 3>So it's just stayed like that until someone wants it

681
00:33:46.440 --> 00:33:48.480
<v Speaker 3>and wants to pay for it. That's like any major

682
00:33:48.480 --> 00:33:50.680
<v Speaker 3>feature in the open source it's like someone has to

683
00:33:50.720 --> 00:33:53.319
<v Speaker 3>put the bill initially, and if no one does, then

684
00:33:53.400 --> 00:33:54.480
<v Speaker 3>it's just not going to get done.

685
00:33:54.640 --> 00:33:57.000
<v Speaker 2>Well, it's usually your customer, right, I'm just looking on

686
00:33:57.079 --> 00:34:00.680
<v Speaker 2>new Get it's like seven hundred and sixty million down loads.

687
00:34:01.640 --> 00:34:04.559
<v Speaker 3>Well, I mean I do have a very extensive botnets

688
00:34:04.680 --> 00:34:08.440
<v Speaker 3>that is working over time to pump those numbers.

689
00:34:09.960 --> 00:34:13.679
<v Speaker 2>Well, and the current before fourteen, the thirteen oh one,

690
00:34:13.880 --> 00:34:17.559
<v Speaker 2>which is the you know the that's eight eight and

691
00:34:17.599 --> 00:34:19.840
<v Speaker 2>a half million of those, Like that's a that's a

692
00:34:19.840 --> 00:34:22.199
<v Speaker 2>big version. That's what people are. It's nice to see

693
00:34:22.199 --> 00:34:23.400
<v Speaker 2>people are up to date. Yeah.

694
00:34:23.880 --> 00:34:27.440
<v Speaker 3>Yeah. We had a lot of questions internally too, of

695
00:34:27.480 --> 00:34:30.280
<v Speaker 3>just like support, like what do we want to support

696
00:34:30.880 --> 00:34:33.639
<v Speaker 3>in terms of dot net versions? So at some point

697
00:34:33.639 --> 00:34:37.760
<v Speaker 3>we're like, we'll lock ourselves to LTS Microsoft, but again

698
00:34:38.039 --> 00:34:41.320
<v Speaker 3>that takes work to do. So these days it's mainly

699
00:34:41.360 --> 00:34:43.320
<v Speaker 3>what my clients are. My clients are all doinit eight.

700
00:34:43.400 --> 00:34:44.880
<v Speaker 3>So I support dot Nite eight.

701
00:34:45.280 --> 00:34:47.159
<v Speaker 2>Sure that's the current LTS version.

702
00:34:47.239 --> 00:34:50.719
<v Speaker 3>Yeah exactly. I think six just stops or.

703
00:34:50.880 --> 00:34:53.360
<v Speaker 2>Six just came out. That's what people people are freaking

704
00:34:53.360 --> 00:34:54.920
<v Speaker 2>out about. But you're still going to put a security

705
00:34:54.920 --> 00:34:56.760
<v Speaker 2>patches for dot net sake. It's like, yeah, they just

706
00:34:56.840 --> 00:35:01.440
<v Speaker 2>call it dot net eight, but don't worry, it's patch.

707
00:35:01.519 --> 00:35:04.519
<v Speaker 3>But even we even dropped support for framework just because

708
00:35:04.519 --> 00:35:06.760
<v Speaker 3>we were annoyed of having to to deal with it.

709
00:35:06.760 --> 00:35:07.800
<v Speaker 2>It's just for four.

710
00:35:08.599 --> 00:35:11.639
<v Speaker 3>Yeah, for for anything, right, I say, we it's me,

711
00:35:11.880 --> 00:35:16.880
<v Speaker 3>there's me and another roy Yeah exactly. Yeah, today what

712
00:35:16.920 --> 00:35:18.440
<v Speaker 3>do we feel? You know, what do we have time

713
00:35:18.480 --> 00:35:22.119
<v Speaker 3>to support? And uh, I only have only have time

714
00:35:22.159 --> 00:35:24.039
<v Speaker 3>for the one. Plus I switched to Mac and it's

715
00:35:24.039 --> 00:35:26.400
<v Speaker 3>hard to code framework on the Mac.

716
00:35:26.360 --> 00:35:28.920
<v Speaker 2>So pretty card Yeah, and again, it's the logical thing

717
00:35:28.960 --> 00:35:32.760
<v Speaker 2>is you don't have customers, yeah running the four or

718
00:35:32.800 --> 00:35:33.679
<v Speaker 2>five too, right, So.

719
00:35:34.000 --> 00:35:37.360
<v Speaker 3>Yeah, exactly, Well it's funny, but I did that, you know,

720
00:35:37.360 --> 00:35:40.199
<v Speaker 3>I did the thing about migrating from framework to to

721
00:35:40.360 --> 00:35:43.559
<v Speaker 3>core eight, so like that that decision did come back

722
00:35:43.599 --> 00:35:45.159
<v Speaker 3>to bite me of not supporting its, like, oh now

723
00:35:45.199 --> 00:35:48.400
<v Speaker 3>I got to kind of do an adjacent version to

724
00:35:48.440 --> 00:35:50.800
<v Speaker 3>make sure the framework code and dot net eight code

725
00:35:50.840 --> 00:35:54.840
<v Speaker 3>can both co exist together. So I probably could have

726
00:35:54.840 --> 00:35:57.800
<v Speaker 3>gone back and put in support, but I was like whatever.

727
00:35:58.599 --> 00:36:00.840
<v Speaker 2>Right, it's a it's a bad I without a doubt.

728
00:36:00.960 --> 00:36:02.199
<v Speaker 3>I mean the God of the days though, where I

729
00:36:02.199 --> 00:36:04.880
<v Speaker 3>would support, like I used to try to support every

730
00:36:05.159 --> 00:36:09.280
<v Speaker 3>framework that existed, so it was like a silver light

731
00:36:09.599 --> 00:36:12.280
<v Speaker 3>Windows Phone. There was like two or three versions of

732
00:36:12.360 --> 00:36:13.840
<v Speaker 3>Window Phone I think at the time.

733
00:36:14.320 --> 00:36:17.559
<v Speaker 2>Unity well, because seven, eight, and ten had nothing to

734
00:36:17.599 --> 00:36:20.239
<v Speaker 2>do with each other, you basically had to redeploy everything.

735
00:36:20.719 --> 00:36:22.760
<v Speaker 3>Yes, so there's like, if you go to look at

736
00:36:22.760 --> 00:36:24.880
<v Speaker 3>the nugodbergs, there's one that just like takes all the

737
00:36:25.000 --> 00:36:28.000
<v Speaker 3>framework boxes, and that was yeah at that point, is like, yeah,

738
00:36:28.400 --> 00:36:31.079
<v Speaker 3>let everyone use it. And then again someone opens a

739
00:36:31.079 --> 00:36:33.519
<v Speaker 3>bug and I'm like I can't debug Windows Phone seven.

740
00:36:33.639 --> 00:36:34.760
<v Speaker 3>I'm sorry, I don't know.

741
00:36:35.320 --> 00:36:37.519
<v Speaker 2>No way, yeah, yeah, no way.

742
00:36:37.719 --> 00:36:40.559
<v Speaker 3>So I just gave up, like, well, just some of

743
00:36:40.559 --> 00:36:42.679
<v Speaker 3>the things that I actually know how to run. And

744
00:36:42.760 --> 00:36:44.360
<v Speaker 3>I'm not going to try to support you know, random

745
00:36:44.400 --> 00:36:46.079
<v Speaker 3>iOS something or other.

746
00:36:46.199 --> 00:36:49.079
<v Speaker 2>I know, yeah, you need to you need to own

747
00:36:49.119 --> 00:36:52.079
<v Speaker 2>more phones and more deployment methods, and oh.

748
00:36:51.920 --> 00:36:54.320
<v Speaker 3>God, I'm trying to simplify my life, not making more

749
00:36:54.400 --> 00:36:56.960
<v Speaker 3>complic Yeah kidding.

750
00:36:58.239 --> 00:37:00.599
<v Speaker 2>Have we even talked about what's new in fourteen?

751
00:37:01.039 --> 00:37:02.880
<v Speaker 3>I don't. Well, I have to go look at the

752
00:37:02.880 --> 00:37:04.199
<v Speaker 3>release notes. I mean a lot of these. A lot

753
00:37:04.239 --> 00:37:08.519
<v Speaker 3>of the reasons these days are like quality of life improvements.

754
00:37:09.159 --> 00:37:09.280
<v Speaker 2>Right.

755
00:37:09.519 --> 00:37:12.239
<v Speaker 3>One of the big things of automapper is because it

756
00:37:12.480 --> 00:37:16.440
<v Speaker 3>doesn't generate code at compile time, you don't get compile

757
00:37:16.519 --> 00:37:19.360
<v Speaker 3>time errors if something doesn't match up. Right, This is

758
00:37:19.400 --> 00:37:23.639
<v Speaker 3>an intentional decision on our part. Is early on, I

759
00:37:23.679 --> 00:37:26.199
<v Speaker 3>had used those kind of cogeneration frameworks like T four

760
00:37:26.199 --> 00:37:30.119
<v Speaker 3>templates and things like that, and there's always just something

761
00:37:30.199 --> 00:37:33.199
<v Speaker 3>missing from those that maybe want to just throw them allway.

762
00:37:33.239 --> 00:37:36.280
<v Speaker 3>So I don't really use cogeneration for anything. Like some

763
00:37:36.280 --> 00:37:39.000
<v Speaker 3>people love the ef scaffolding, I don't like it. I

764
00:37:39.079 --> 00:37:42.079
<v Speaker 3>prefer just like I am adding this column to this database,

765
00:37:42.320 --> 00:37:43.920
<v Speaker 3>so I'm going to put the property here and put

766
00:37:43.960 --> 00:37:46.000
<v Speaker 3>the thing there and then I know everything lines up.

767
00:37:46.039 --> 00:37:48.440
<v Speaker 3>Not something just kind of magically do it for me.

768
00:37:48.920 --> 00:37:51.679
<v Speaker 3>So we it was an intentional decision in my part

769
00:37:51.800 --> 00:37:54.840
<v Speaker 3>not to do cojin. But the tradeoff means you don't

770
00:37:54.920 --> 00:37:57.559
<v Speaker 3>hit problems at compile time, you hit a run time.

771
00:37:58.079 --> 00:38:00.360
<v Speaker 3>So the quality of life thing was, well, let's make

772
00:38:01.159 --> 00:38:06.119
<v Speaker 3>a configuration validator that says make sure that all the

773
00:38:06.159 --> 00:38:09.440
<v Speaker 3>things on the left can be mapped to from the

774
00:38:09.480 --> 00:38:13.119
<v Speaker 3>things on the right. If you had a com if

775
00:38:13.159 --> 00:38:15.679
<v Speaker 3>you had a compiler, then it could usually show you like, oh,

776
00:38:15.719 --> 00:38:18.360
<v Speaker 3>this thing is misspelled, so it's not going to map

777
00:38:18.440 --> 00:38:21.840
<v Speaker 3>up for us. We said, okay, because we're doing a

778
00:38:21.960 --> 00:38:24.239
<v Speaker 3>run time, then we'll have something this checks to make

779
00:38:24.239 --> 00:38:26.239
<v Speaker 3>sure that if you put something on the left, it

780
00:38:26.320 --> 00:38:28.599
<v Speaker 3>should have something on the right, and if it doesn't

781
00:38:28.639 --> 00:38:32.599
<v Speaker 3>match up, then like you're doing something, something's wrong, something's off,

782
00:38:32.639 --> 00:38:35.239
<v Speaker 3>and see you have to tell us about it. So

783
00:38:35.280 --> 00:38:37.519
<v Speaker 3>we A lot of the stuff we do these days

784
00:38:37.559 --> 00:38:42.920
<v Speaker 3>is around making that validation process more comprehensive to catch

785
00:38:42.920 --> 00:38:46.159
<v Speaker 3>as many things as we can, which would be even

786
00:38:46.159 --> 00:38:48.679
<v Speaker 3>beyond what compilers can check, because compilers don't actually try

787
00:38:48.679 --> 00:38:51.800
<v Speaker 3>to execute things necessarily. We do like dry runs and

788
00:38:51.840 --> 00:38:55.280
<v Speaker 3>make sure like nothing's their dependencies are missing, that sort

789
00:38:55.280 --> 00:38:57.880
<v Speaker 3>of thing. It's like, make sure that it can take

790
00:38:58.000 --> 00:39:00.119
<v Speaker 3>it to the best of our abilities we can. We

791
00:39:00.559 --> 00:39:03.079
<v Speaker 3>think it can run at runtime too, right, So I

792
00:39:03.119 --> 00:39:04.480
<v Speaker 3>think that was one one of the big ones of

793
00:39:04.519 --> 00:39:07.000
<v Speaker 3>the last one was a bit of an overhaul of

794
00:39:07.039 --> 00:39:09.679
<v Speaker 3>the validation to make sure that we get everything together,

795
00:39:09.920 --> 00:39:11.639
<v Speaker 3>get a nice and pretty for you so that you

796
00:39:11.679 --> 00:39:14.440
<v Speaker 3>can fix whatever problems you have going on there.

797
00:39:15.079 --> 00:39:18.440
<v Speaker 2>Yeah. I'm looking through the things in the fourteen milestone,

798
00:39:19.519 --> 00:39:21.639
<v Speaker 2>the closed off ones, and it does look like, hey,

799
00:39:21.679 --> 00:39:25.280
<v Speaker 2>we fix this OLP, we fix those naming conventions targeting

800
00:39:25.280 --> 00:39:28.760
<v Speaker 2>dot net nine obviously, I mean you you are pushing

801
00:39:28.760 --> 00:39:30.920
<v Speaker 2>out a version pretty much in sync with new versions

802
00:39:30.920 --> 00:39:32.000
<v Speaker 2>of dot net. It seems.

803
00:39:32.199 --> 00:39:35.239
<v Speaker 3>Yeah, I do try to have I do have this

804
00:39:35.320 --> 00:39:37.519
<v Speaker 3>question like what's your support policy? And like this is

805
00:39:38.480 --> 00:39:39.920
<v Speaker 3>so this is a Wendy's.

806
00:39:40.000 --> 00:39:43.559
<v Speaker 2>Yeah, it's a library.

807
00:39:43.800 --> 00:39:45.679
<v Speaker 3>There's no.

808
00:39:48.079 --> 00:39:50.119
<v Speaker 2>That's a great question, right, It's like, what do people

809
00:39:50.199 --> 00:39:52.239
<v Speaker 2>expect from this because it's a dev tool built by

810
00:39:52.239 --> 00:39:53.679
<v Speaker 2>a dev for the other devs.

811
00:39:53.679 --> 00:39:57.800
<v Speaker 3>So, I mean, obviously people expect a lot, but what

812
00:39:57.840 --> 00:40:02.159
<v Speaker 3>I've always said is before we had stack overflow, you know,

813
00:40:02.159 --> 00:40:03.840
<v Speaker 3>we would try to get those things through the complex

814
00:40:03.960 --> 00:40:06.440
<v Speaker 3>issues or GitHub issues. But these days, I push as

815
00:40:06.519 --> 00:40:09.440
<v Speaker 3>much as I can't to stack overflow because it's like

816
00:40:09.519 --> 00:40:12.239
<v Speaker 3>gamified over there, and people get you know, fake Internet

817
00:40:12.280 --> 00:40:14.719
<v Speaker 3>points for answering questions. So I go over you know,

818
00:40:14.760 --> 00:40:18.039
<v Speaker 3>that's people and it's often me or one of the

819
00:40:18.039 --> 00:40:20.639
<v Speaker 3>other maintainers that actually answers the questions over there. But

820
00:40:20.679 --> 00:40:23.880
<v Speaker 3>it's way more searchable, way more you know, tag things and.

821
00:40:23.719 --> 00:40:25.679
<v Speaker 2>Even if you're going to answer the question you answered

822
00:40:25.719 --> 00:40:27.639
<v Speaker 2>on stack overflow so that other people will find it.

823
00:40:27.719 --> 00:40:29.480
<v Speaker 3>Yeah, and then and then I get to fake Internet

824
00:40:29.519 --> 00:40:32.000
<v Speaker 3>points as well, which.

825
00:40:31.800 --> 00:40:34.480
<v Speaker 2>Is awesome, right. Yeah.

826
00:40:34.719 --> 00:40:38.719
<v Speaker 3>So yeah, other than we like the versions, you know,

827
00:40:38.800 --> 00:40:41.559
<v Speaker 3>try to do yearly releases at the minimum if there's

828
00:40:41.559 --> 00:40:43.840
<v Speaker 3>but you know, if I critical bugs, then you know,

829
00:40:43.960 --> 00:40:45.559
<v Speaker 3>I'm going to try to fix it if I you know,

830
00:40:45.719 --> 00:40:47.480
<v Speaker 3>as quick as I can, because I've been on the

831
00:40:47.519 --> 00:40:50.840
<v Speaker 3>other side of that, right I've used some library downloaded,

832
00:40:51.000 --> 00:40:54.239
<v Speaker 3>breaking production and you know, if I can submit the

833
00:40:54.239 --> 00:40:57.480
<v Speaker 3>poor request, great, But I try to be you know,

834
00:40:58.239 --> 00:40:59.280
<v Speaker 3>try to be flexible.

835
00:40:59.440 --> 00:41:02.000
<v Speaker 2>I see the pattern here too, which is generally it's

836
00:41:02.000 --> 00:41:05.800
<v Speaker 2>an version. Sometimes it's an one version, so that must

837
00:41:05.800 --> 00:41:08.519
<v Speaker 2>be okay, got it out there, and a month later

838
00:41:08.559 --> 00:41:10.119
<v Speaker 2>it's like damn and fixed.

839
00:41:10.840 --> 00:41:12.800
<v Speaker 3>A month I'm like, sometimes it's hours.

840
00:41:12.840 --> 00:41:15.920
<v Speaker 2>I get people like, oh my god, yeah, thirteen and

841
00:41:16.000 --> 00:41:22.159
<v Speaker 2>thirteen oh one, two days.

842
00:41:21.039 --> 00:41:23.199
<v Speaker 3>Oh gosh, I'm surprised they didn't unlist the old I

843
00:41:23.280 --> 00:41:25.519
<v Speaker 3>usually unlist the old one because they're.

844
00:41:25.320 --> 00:41:29.679
<v Speaker 2>All closed, push up into the close. But you know,

845
00:41:29.760 --> 00:41:33.320
<v Speaker 2>I know where to look. I know the detritus of

846
00:41:33.360 --> 00:41:35.000
<v Speaker 2>your failures lives, mister bo.

847
00:41:35.400 --> 00:41:37.039
<v Speaker 3>There's you know, if you go if you did my

848
00:41:37.159 --> 00:41:39.519
<v Speaker 3>fart up, there's like even further mistakes of like oh

849
00:41:39.519 --> 00:41:42.719
<v Speaker 3>one o two oh three, No, it.

850
00:41:42.559 --> 00:41:44.679
<v Speaker 2>Gets worse, of more versions back we go.

851
00:41:46.400 --> 00:41:49.440
<v Speaker 3>Yeah yeah, but even these I don't even do like

852
00:41:49.679 --> 00:41:53.079
<v Speaker 3>alpha beta versions. I used to do that too, but

853
00:41:53.119 --> 00:41:55.639
<v Speaker 3>now there's you know that you can make separate Nougat feeds,

854
00:41:55.639 --> 00:41:57.719
<v Speaker 3>so I just do that instead and just say if

855
00:41:57.719 --> 00:42:00.199
<v Speaker 3>you want the latest and greatest build, you know, can

856
00:42:00.199 --> 00:42:03.679
<v Speaker 3>go over here. Otherwise, you know, I just it's not

857
00:42:04.159 --> 00:42:05.440
<v Speaker 3>worth it for me to do that.

858
00:42:05.480 --> 00:42:10.280
<v Speaker 2>I perfectly willing to share your experimental yeah bits you know,

859
00:42:10.400 --> 00:42:12.840
<v Speaker 2>you use it your own risk, but I'm not going

860
00:42:12.920 --> 00:42:16.079
<v Speaker 2>to make anything formal in that, you know, just this

861
00:42:16.119 --> 00:42:19.480
<v Speaker 2>is where it lives. Yeah, that's cool exactly now I

862
00:42:19.480 --> 00:42:21.960
<v Speaker 2>think again, it's like I still feel like I'm doing

863
00:42:22.000 --> 00:42:23.599
<v Speaker 2>the right thing. Looking to you for a way to

864
00:42:23.639 --> 00:42:26.960
<v Speaker 2>look at open source in contemporary styles, like look how

865
00:42:27.000 --> 00:42:29.760
<v Speaker 2>stripped down this is now as to how you go

866
00:42:29.920 --> 00:42:34.079
<v Speaker 2>about building versions and managing people's expectations. It's pretty lean,

867
00:42:34.239 --> 00:42:35.679
<v Speaker 2>man like, it's very efficient.

868
00:42:35.920 --> 00:42:39.920
<v Speaker 3>I well, that's the that's that I try to minimize

869
00:42:39.960 --> 00:42:42.000
<v Speaker 3>the boring parts of the open source stuff of like

870
00:42:42.079 --> 00:42:44.760
<v Speaker 3>pushing our releases even you know, release notes now are

871
00:42:44.880 --> 00:42:47.079
<v Speaker 3>so simple these days, like get hub. Let's you just say,

872
00:42:47.280 --> 00:42:50.000
<v Speaker 3>generate release notes and just spits them out from all

873
00:42:50.039 --> 00:42:52.559
<v Speaker 3>the closed issues. Like I used to have to go

874
00:42:52.599 --> 00:42:54.719
<v Speaker 3>back and like I used to write that stuff, create

875
00:42:54.800 --> 00:42:58.199
<v Speaker 3>milestones and assigned issues like it was a whole you know,

876
00:42:58.559 --> 00:43:01.960
<v Speaker 3>just paperwork of it. That is just way to it. Now.

877
00:43:02.000 --> 00:43:05.239
<v Speaker 3>I just push a tag and then everything goes from there,

878
00:43:05.280 --> 00:43:08.400
<v Speaker 3>as long as I remember to update the apike for

879
00:43:08.519 --> 00:43:12.559
<v Speaker 3>nugats which expires, then everything gets published correctly.

880
00:43:14.039 --> 00:43:16.639
<v Speaker 2>And what's your protections around the APIQ expirings is just

881
00:43:16.639 --> 00:43:18.719
<v Speaker 2>an entry in Gmail calendar.

882
00:43:19.960 --> 00:43:22.960
<v Speaker 3>Well, they do tell you know, I do good notification. Hey,

883
00:43:23.000 --> 00:43:24.920
<v Speaker 3>your API key is about to aspire. I'm like, I'll

884
00:43:24.960 --> 00:43:28.360
<v Speaker 3>get to that later, of course, later as the day

885
00:43:28.360 --> 00:43:29.159
<v Speaker 3>I'm trying to release.

886
00:43:29.360 --> 00:43:31.679
<v Speaker 2>Yes, now you're on fire.

887
00:43:31.880 --> 00:43:32.519
<v Speaker 1>Could be worse.

888
00:43:33.280 --> 00:43:37.079
<v Speaker 2>Yeah, you got good problems. So what's it? What's coming

889
00:43:37.119 --> 00:43:40.079
<v Speaker 2>for fifteen friend? Yeah, what's new? I guess waiting for

890
00:43:40.119 --> 00:43:41.199
<v Speaker 2>the next version of dot net.

891
00:43:41.760 --> 00:43:44.760
<v Speaker 3>Well, there's I mean, yeah, I always I try to

892
00:43:44.760 --> 00:43:48.599
<v Speaker 3>have the minimum yearly releases to keep up with just

893
00:43:48.679 --> 00:43:51.400
<v Speaker 3>package releases and dot releases from Microsoft.

894
00:43:51.639 --> 00:43:52.360
<v Speaker 2>Yeah.

895
00:43:52.400 --> 00:43:54.880
<v Speaker 3>But yeah, because it's such a reactive library, or at

896
00:43:54.920 --> 00:43:58.639
<v Speaker 3>least it was it has been. It's it's still driven

897
00:43:58.679 --> 00:44:02.199
<v Speaker 3>by what folks are asking for in what time I

898
00:44:02.239 --> 00:44:04.960
<v Speaker 3>have available to work on it. But that is one

899
00:44:05.000 --> 00:44:07.800
<v Speaker 3>thing that has changed a lot with my open sources.

900
00:44:08.360 --> 00:44:12.639
<v Speaker 3>I used to work for a consulting company for thirteen

901
00:44:12.719 --> 00:44:16.480
<v Speaker 3>years or so, and they were the unbeknownst to me,

902
00:44:16.760 --> 00:44:18.760
<v Speaker 3>and I figured this out after the fact that they

903
00:44:19.440 --> 00:44:23.719
<v Speaker 3>were actually sponsoring my open source like in fact, wow,

904
00:44:24.440 --> 00:44:27.960
<v Speaker 3>because we were the open source libraries were being used

905
00:44:28.280 --> 00:44:31.280
<v Speaker 3>for the clients and used to help deliver our projects

906
00:44:31.360 --> 00:44:35.000
<v Speaker 3>better faster or stronger or whatever. Okay, then it was

907
00:44:35.039 --> 00:44:38.159
<v Speaker 3>something like, oh, we see we've copied this code four

908
00:44:38.199 --> 00:44:41.920
<v Speaker 3>times amongst different clients. Let's create a package out of it,

909
00:44:42.039 --> 00:44:45.639
<v Speaker 3>Like why don't copy code everywhere? You know, just pulled

910
00:44:45.639 --> 00:44:47.920
<v Speaker 3>on to a new good package and you know, graduate

911
00:44:48.079 --> 00:44:51.079
<v Speaker 3>shared code to now share package and now it can

912
00:44:51.119 --> 00:44:54.679
<v Speaker 3>just more easily use it going forwards like Mediator for example,

913
00:44:54.719 --> 00:44:56.800
<v Speaker 3>came exactly from that. It was three or four clients

914
00:44:56.800 --> 00:45:00.000
<v Speaker 3>I copied the same code and then my boss is like, Jimmy,

915
00:45:00.199 --> 00:45:01.800
<v Speaker 3>make that a new good package. But at the time

916
00:45:01.880 --> 00:45:04.159
<v Speaker 3>I was still annoyed with automapper of dealing with that,

917
00:45:04.880 --> 00:45:07.199
<v Speaker 3>I was like automapp or silver Light days. I'm like, oh,

918
00:45:07.320 --> 00:45:10.639
<v Speaker 3>not more open source stuff, but other hey whatever, I'll

919
00:45:11.159 --> 00:45:14.239
<v Speaker 3>push that out as well. So that's that is what

920
00:45:14.360 --> 00:45:17.320
<v Speaker 3>that That was what almost all my open source was

921
00:45:17.320 --> 00:45:21.280
<v Speaker 3>was the you know, clients asking for stuff and the

922
00:45:21.320 --> 00:45:23.719
<v Speaker 3>company giving me the time to work on it if

923
00:45:23.760 --> 00:45:24.800
<v Speaker 3>I had time between clients.

924
00:45:25.280 --> 00:45:27.320
<v Speaker 2>This is back in the head Spring days, yeah exactly,

925
00:45:27.360 --> 00:45:30.199
<v Speaker 2>head Spring Days. Yeah, okay, which what happened They got

926
00:45:30.199 --> 00:45:37.480
<v Speaker 2>acquired by Accenture, Yeah, acquired by centurewent one.

927
00:45:37.039 --> 00:45:40.639
<v Speaker 3>And I had left just before then, and so one

928
00:45:40.639 --> 00:45:44.159
<v Speaker 3>of the things I noticed was I lost my primary

929
00:45:44.159 --> 00:45:47.920
<v Speaker 3>sponsor on the open source, which I didn't effectively. I

930
00:45:47.920 --> 00:45:51.000
<v Speaker 3>didn't realize that, oh right, when I had time off

931
00:45:51.079 --> 00:45:53.440
<v Speaker 3>between projects, I could just work an open source because

932
00:45:53.480 --> 00:45:56.679
<v Speaker 3>there was a full marketing sales. You know, there's a

933
00:45:56.719 --> 00:46:00.920
<v Speaker 3>whole organization around the company to to go to business.

934
00:46:01.000 --> 00:46:02.760
<v Speaker 2>Yeah, they're going to bring you the next project. You

935
00:46:02.800 --> 00:46:03.719
<v Speaker 2>don't have to think about it.

936
00:46:03.960 --> 00:46:08.079
<v Speaker 3>Yeah. So now my big challenge is being independent consultant.

937
00:46:08.199 --> 00:46:10.639
<v Speaker 3>When I have time between projects, I'm just working on

938
00:46:10.679 --> 00:46:13.599
<v Speaker 3>getting new projects. I'm not like, right, let me do

939
00:46:13.679 --> 00:46:16.519
<v Speaker 3>this big new feature for open source like that that

940
00:46:16.599 --> 00:46:18.639
<v Speaker 3>doesn't go by it like doesn't pay the bills. So

941
00:46:18.719 --> 00:46:22.440
<v Speaker 3>I'm no, you yeah, trying to find how to find

942
00:46:22.440 --> 00:46:24.079
<v Speaker 3>that time now, yeah, exactly.

943
00:46:23.800 --> 00:46:27.400
<v Speaker 2>Yeah, no, no kidding. I mean, you got fourteen out,

944
00:46:28.199 --> 00:46:31.519
<v Speaker 2>but it's been a few years since Headspring now, like

945
00:46:31.920 --> 00:46:34.119
<v Speaker 2>you need you're in a new workflow entirely.

946
00:46:34.639 --> 00:46:39.440
<v Speaker 3>Yeah. Yeah, I'm just curious as I hit five years

947
00:46:39.679 --> 00:46:43.000
<v Speaker 3>being independent in January and when looked at my contribution

948
00:46:43.119 --> 00:46:47.000
<v Speaker 3>graph for open source and was like and then went independent,

949
00:46:47.320 --> 00:46:50.199
<v Speaker 3>it's just flat lined. Look after that and It's not

950
00:46:50.280 --> 00:46:52.880
<v Speaker 3>something I noticed because I felt like I was still

951
00:46:52.880 --> 00:46:58.559
<v Speaker 3>doing stuff and then like the numbers didn't like Oh no, I.

952
00:46:58.480 --> 00:47:01.039
<v Speaker 2>Mean the luxury of having a whole week to work

953
00:47:01.079 --> 00:47:03.320
<v Speaker 2>on your open source project, much less than a month.

954
00:47:03.920 --> 00:47:06.440
<v Speaker 3>Yeah, yeah it was. It was great. I could, you know,

955
00:47:06.480 --> 00:47:09.960
<v Speaker 3>experiment with you, like the whole I rewrote the entire

956
00:47:10.599 --> 00:47:16.000
<v Speaker 3>underlying configuration model and execution model to be expression tree compilation.

957
00:47:16.519 --> 00:47:20.440
<v Speaker 3>Plus I made a static API, which was a mistake, Like,

958
00:47:20.480 --> 00:47:23.599
<v Speaker 3>don't do static stuff. It's it makes things so much

959
00:47:23.599 --> 00:47:26.880
<v Speaker 3>difficult to deal with. H and every wrote all that,

960
00:47:27.000 --> 00:47:29.679
<v Speaker 3>but that was like a month and a half between

961
00:47:29.719 --> 00:47:32.519
<v Speaker 3>projects that I could like dedicate to like, Okay, this

962
00:47:32.559 --> 00:47:34.360
<v Speaker 3>is a problem. I got to fix this. Like no,

963
00:47:34.480 --> 00:47:37.199
<v Speaker 3>clients are really complaining that it's slow, but I know

964
00:47:37.280 --> 00:47:40.079
<v Speaker 3>it's slow, so I need to fix I need to

965
00:47:40.119 --> 00:47:42.239
<v Speaker 3>fix this and do it, do it proper underneath the covers.

966
00:47:42.880 --> 00:47:44.360
<v Speaker 3>So yeah, I don't I don't know I'll be able

967
00:47:44.400 --> 00:47:46.199
<v Speaker 3>to capture that again, but it's something I'm trying to

968
00:47:46.199 --> 00:47:49.559
<v Speaker 3>figure out. Yeah, how do I get that flexibility back?

969
00:47:50.360 --> 00:47:51.000
<v Speaker 3>So I don't know.

970
00:47:51.519 --> 00:47:56.039
<v Speaker 2>Yeah, well dude, you you're talking the open source matra here, right, Yeah,

971
00:47:56.039 --> 00:48:00.159
<v Speaker 2>it's a popular new complaint. Yeah, that you've been supporting

972
00:48:00.199 --> 00:48:03.960
<v Speaker 2>for years and years, and now how do you keep

973
00:48:03.960 --> 00:48:06.400
<v Speaker 2>this going when the situation is different?

974
00:48:06.519 --> 00:48:09.519
<v Speaker 3>Yeah? So yes, features like that. I do have ideas

975
00:48:09.519 --> 00:48:11.599
<v Speaker 3>for features, but the challenge like how do I find

976
00:48:11.719 --> 00:48:14.519
<v Speaker 3>someone that wants to pay pay for that sort of thing?

977
00:48:14.599 --> 00:48:17.679
<v Speaker 3>Like sure, I would love to do a sorce generate

978
00:48:17.880 --> 00:48:20.480
<v Speaker 3>version of it as well, So people that want the

979
00:48:20.480 --> 00:48:23.760
<v Speaker 3>compile time or AOT is another big thing, right, AOT

980
00:48:24.320 --> 00:48:28.880
<v Speaker 3>cannot do run time compilation. Expression Tree cannot do it.

981
00:48:29.760 --> 00:48:33.000
<v Speaker 3>None of my libraryes support that because like, I don't

982
00:48:33.039 --> 00:48:35.960
<v Speaker 3>have clients asking for its, but people are asking for its.

983
00:48:36.079 --> 00:48:36.360
<v Speaker 2>Yeah.

984
00:48:36.480 --> 00:48:40.039
<v Speaker 1>Have you come close to a customer saying will pay

985
00:48:40.159 --> 00:48:41.440
<v Speaker 1>you to add this feature?

986
00:48:41.800 --> 00:48:46.239
<v Speaker 3>No, that's part of the I guess maybe it's just

987
00:48:46.280 --> 00:48:49.079
<v Speaker 3>a problem of how I market myself. But I love

988
00:48:49.199 --> 00:48:52.280
<v Speaker 3>long term projects where I ship things, and that's not

989
00:48:52.440 --> 00:48:54.400
<v Speaker 3>often a thing people ask for in those kind of things,

990
00:48:54.440 --> 00:48:57.239
<v Speaker 3>Like I spent two and a half years migrating dot

991
00:48:57.280 --> 00:49:00.559
<v Speaker 3>net framework projects to the core. Had no point was

992
00:49:00.599 --> 00:49:02.199
<v Speaker 3>anyone like, hey, can you add this new autom Apple

993
00:49:02.239 --> 00:49:04.960
<v Speaker 3>feature in that project? Like no, I'm just focusing on

994
00:49:05.039 --> 00:49:09.199
<v Speaker 3>Like oh gosh, signal there is different in these two versions.

995
00:49:09.239 --> 00:49:12.440
<v Speaker 3>How do I manage those two totally different models or whatever?

996
00:49:12.559 --> 00:49:14.840
<v Speaker 2>It's not you didn't make Automapper features, but you define

997
00:49:14.880 --> 00:49:16.519
<v Speaker 2>them based on the work you were doing.

998
00:49:17.039 --> 00:49:17.119
<v Speaker 3>That.

999
00:49:17.159 --> 00:49:20.000
<v Speaker 2>Hey, I can save myself time if I add this capability.

1000
00:49:20.159 --> 00:49:23.400
<v Speaker 3>Yeah, I would say purely selfish, but it's pretty selfish.

1001
00:49:23.599 --> 00:49:28.320
<v Speaker 2>Yeah, it ultimately does benefit the customer. Yeah, you just do. Hey,

1002
00:49:28.320 --> 00:49:31.320
<v Speaker 2>I'm repeating this process, so I'll add it to autom

1003
00:49:31.320 --> 00:49:33.960
<v Speaker 2>apport it's built, you know.

1004
00:49:34.159 --> 00:49:36.559
<v Speaker 3>Ye. Well that's the other thing is that's why I

1005
00:49:36.599 --> 00:49:39.440
<v Speaker 3>have a hard time with poll requests from random people.

1006
00:49:40.280 --> 00:49:43.519
<v Speaker 3>If it's not a use case that I have ever

1007
00:49:43.639 --> 00:49:46.599
<v Speaker 3>seen and don't envision seeing, how can I know if

1008
00:49:46.639 --> 00:49:49.159
<v Speaker 3>I'm doing this right or wrong. I don't know if

1009
00:49:49.159 --> 00:49:52.119
<v Speaker 3>it's done unless I have some connection to the end

1010
00:49:53.039 --> 00:49:55.840
<v Speaker 3>this sort of end use case available, And if I

1011
00:49:55.840 --> 00:49:57.760
<v Speaker 3>don't have that, then it's kind of guessing.

1012
00:49:58.639 --> 00:50:01.599
<v Speaker 2>YEA knowing the obligation you're adding to your life for

1013
00:50:01.719 --> 00:50:04.719
<v Speaker 2>putting that feature in. Yeah, that's a lot new stack

1014
00:50:04.719 --> 00:50:06.440
<v Speaker 2>over full posts that I need to happen.

1015
00:50:07.159 --> 00:50:09.119
<v Speaker 3>I mean, there were features like I mentioned that the

1016
00:50:09.119 --> 00:50:11.800
<v Speaker 3>whole link projection. I could see that like oh, this

1017
00:50:11.880 --> 00:50:15.199
<v Speaker 3>could be really helpful. And so I saw no one,

1018
00:50:15.320 --> 00:50:17.320
<v Speaker 3>no client was asking for it, but I saw it

1019
00:50:17.360 --> 00:50:20.480
<v Speaker 3>off clients with that problem, right, said Okay, I can

1020
00:50:20.519 --> 00:50:23.480
<v Speaker 3>see this solution could could address that problem. And then

1021
00:50:23.480 --> 00:50:25.800
<v Speaker 3>I go backfail too. I would go backfell clients and say, okay,

1022
00:50:25.840 --> 00:50:27.280
<v Speaker 3>let me go try to put this back into your

1023
00:50:27.280 --> 00:50:29.679
<v Speaker 3>code base and see if it actually fixed the stuff.

1024
00:50:30.000 --> 00:50:31.639
<v Speaker 3>I wouldn't necessarily like submit it back up to the

1025
00:50:31.639 --> 00:50:33.800
<v Speaker 3>client because they weren't paying for that time, but just

1026
00:50:33.800 --> 00:50:36.599
<v Speaker 3>to validate and say, hey, did this help in these

1027
00:50:36.679 --> 00:50:38.400
<v Speaker 3>use cases and figure that out.

1028
00:50:38.480 --> 00:50:41.480
<v Speaker 1>Are you talking about like serializing and de serializing a

1029
00:50:41.519 --> 00:50:43.320
<v Speaker 1>link query an iquery?

1030
00:50:43.800 --> 00:50:45.599
<v Speaker 3>Ooh boy, that's even crazier.

1031
00:50:45.960 --> 00:50:48.119
<v Speaker 2>No, but that's that's impossible.

1032
00:50:48.280 --> 00:50:51.960
<v Speaker 1>I've I tried looking at it. It's been attempted many times,

1033
00:50:52.000 --> 00:50:54.880
<v Speaker 1>and none of them weren't because it's code.

1034
00:50:54.960 --> 00:50:55.480
<v Speaker 2>Essentially.

1035
00:50:55.639 --> 00:51:01.320
<v Speaker 3>My very first n DC OSLO talk was something with

1036
00:51:01.360 --> 00:51:05.000
<v Speaker 3>external dsls, and what we did there was we translated

1037
00:51:05.159 --> 00:51:10.199
<v Speaker 3>re translated a text expression into both SQL and C

1038
00:51:10.360 --> 00:51:12.679
<v Speaker 3>sharp expression trees, so we could execute your code at

1039
00:51:12.679 --> 00:51:15.679
<v Speaker 3>the sequel or in memory. That's the closest I've gotten.

1040
00:51:16.280 --> 00:51:19.400
<v Speaker 3>But this part, this automatic thing is what. It merely

1041
00:51:19.519 --> 00:51:22.559
<v Speaker 3>generates an expression and then hands it off to the

1042
00:51:22.639 --> 00:51:26.119
<v Speaker 3>query provider to translate. It translates the expression, but it

1043
00:51:26.159 --> 00:51:28.639
<v Speaker 3>needs that expression. So we would say here, here you go.

1044
00:51:28.679 --> 00:51:31.639
<v Speaker 3>Here's the fully built expression of how to do the

1045
00:51:31.719 --> 00:51:34.159
<v Speaker 3>select part of SQL. Basically, I give it the select

1046
00:51:34.199 --> 00:51:37.360
<v Speaker 3>part and link and then it goes from there. So

1047
00:51:37.400 --> 00:51:40.000
<v Speaker 3>you don't write the select. You say, give the select

1048
00:51:40.079 --> 00:51:43.000
<v Speaker 3>to it, and it will regardless of the query provider.

1049
00:51:43.039 --> 00:51:45.239
<v Speaker 3>I mean we've used it a Mango and raven to

1050
00:51:45.320 --> 00:51:49.679
<v Speaker 3>be and EF of course all sorts of things. And

1051
00:51:49.719 --> 00:51:51.960
<v Speaker 3>if it can handle the expression, then it's like yep,

1052
00:51:52.079 --> 00:51:56.159
<v Speaker 3>I can translate it directly to your query. For the

1053
00:51:56.239 --> 00:51:57.400
<v Speaker 3>database of choice.

1054
00:51:57.400 --> 00:52:00.360
<v Speaker 1>I built a filter tool that I can pay from

1055
00:52:00.360 --> 00:52:03.159
<v Speaker 1>an API to a server to get a response that

1056
00:52:03.920 --> 00:52:07.079
<v Speaker 1>just you know, it breaks down exactly what you're looking for.

1057
00:52:07.239 --> 00:52:10.920
<v Speaker 1>You're looking for an expression within and uh you know,

1058
00:52:11.000 --> 00:52:13.320
<v Speaker 1>a string, a string within a string, or it begins

1059
00:52:13.320 --> 00:52:15.760
<v Speaker 1>with starts with ends with equals, and what are the

1060
00:52:15.880 --> 00:52:18.639
<v Speaker 1>what are the data types? And you know the parameters

1061
00:52:18.679 --> 00:52:20.679
<v Speaker 1>and all that stuff, and you just ship all that

1062
00:52:20.800 --> 00:52:24.719
<v Speaker 1>off over an API I call and then you know everything.

1063
00:52:24.719 --> 00:52:27.239
<v Speaker 3>Wait, did you invent o data no, no, no, I'm

1064
00:52:27.280 --> 00:52:31.960
<v Speaker 3>kidding data more like no data.

1065
00:52:32.039 --> 00:52:34.079
<v Speaker 1>This was it was for a customer, you know. It

1066
00:52:34.119 --> 00:52:36.480
<v Speaker 1>was a simple thing that they wanted to do. But

1067
00:52:36.679 --> 00:52:40.039
<v Speaker 1>ultimately what they wanted to do was serialize and de

1068
00:52:40.159 --> 00:52:44.159
<v Speaker 1>serialize a link query, you know, an iqueriable. And I

1069
00:52:44.239 --> 00:52:46.119
<v Speaker 1>tried it, and I tried and I looked, and it

1070
00:52:46.239 --> 00:52:49.039
<v Speaker 1>just could can't be done because and fundamentally it can't

1071
00:52:49.039 --> 00:52:51.400
<v Speaker 1>be done because there's code there, it's not data.

1072
00:52:51.760 --> 00:52:52.000
<v Speaker 3>Yeah.

1073
00:52:52.199 --> 00:52:55.920
<v Speaker 1>So I just turned you know, created a data you know,

1074
00:52:56.280 --> 00:52:58.119
<v Speaker 1>a data objects.

1075
00:52:57.719 --> 00:53:00.320
<v Speaker 3>And Microsoft was really mean and took away our buyinary

1076
00:53:00.320 --> 00:53:01.920
<v Speaker 3>format or where we could binary.

1077
00:53:01.599 --> 00:53:03.559
<v Speaker 2>Serialize right.

1078
00:53:05.440 --> 00:53:07.239
<v Speaker 3>Stick with security problems.

1079
00:53:07.119 --> 00:53:10.039
<v Speaker 2>I know, what's up with that? Trying to protect us?

1080
00:53:10.320 --> 00:53:12.800
<v Speaker 2>What are they thinking? What's the matter with those people?

1081
00:53:13.760 --> 00:53:16.079
<v Speaker 1>All Right, well, guys, I gotta go because I gotta

1082
00:53:16.159 --> 00:53:17.239
<v Speaker 1>keep working on O data.

1083
00:53:21.000 --> 00:53:22.960
<v Speaker 3>I mean that's what I meant.

1084
00:53:23.039 --> 00:53:26.920
<v Speaker 1>Yes, Jimmy, it's been a pleasure talking to you. It

1085
00:53:26.920 --> 00:53:29.880
<v Speaker 1>always is, and hopefully I'll catch up with you somewhere

1086
00:53:30.239 --> 00:53:32.000
<v Speaker 1>out there in one of these places.

1087
00:53:32.159 --> 00:53:33.440
<v Speaker 3>Thanks for having me. Appreciate it.

1088
00:53:33.480 --> 00:53:36.079
<v Speaker 2>You got it to talk you bred, all right, and we'll.

1089
00:53:35.840 --> 00:54:13.679
<v Speaker 5>Talk to you next time on dot net rocks.

1090
00:53:59.360 --> 00:54:02.119
<v Speaker 1>Dot net Rock is brought to you by Franklin's net

1091
00:54:02.199 --> 00:54:06.159
<v Speaker 1>and produced by Pop Studios, a full service audio, video

1092
00:54:06.199 --> 00:54:10.280
<v Speaker 1>and post production facility located physically in New London, Connecticut,

1093
00:54:10.559 --> 00:54:15.360
<v Speaker 1>and of course in the cloud online at PWOP dot com.

1094
00:54:15.519 --> 00:54:17.679
<v Speaker 4>Visit our website at d O T N E t

1095
00:54:17.920 --> 00:54:21.920
<v Speaker 4>R O c k S dot com for RSS feeds, downloads,

1096
00:54:22.079 --> 00:54:25.760
<v Speaker 4>mobile apps, comments, and access to the full archives going

1097
00:54:25.800 --> 00:54:29.159
<v Speaker 4>back to show number one, recorded in September.

1098
00:54:28.639 --> 00:54:29.480
<v Speaker 2>Two thousand and two.

1099
00:54:30.079 --> 00:54:32.440
<v Speaker 1>And make sure you check out our sponsors. They keep

1100
00:54:32.519 --> 00:54:35.679
<v Speaker 1>us in business. Now go write some code, See you

1101
00:54:35.719 --> 00:54:36.159
<v Speaker 1>next time.

1102
00:54:37.039 --> 00:54:38.880
<v Speaker 4>You got Javans

1103
00:54:40.960 --> 00:54:47.440
<v Speaker 2>And
