WEBVTT

1
00:00:01.040 --> 00:00:01.560
<v Speaker 1>M hmmm.

2
00:00:06.879 --> 00:00:09.759
<v Speaker 2>Hello and welcome to another episode of Adventures in dot Net.

3
00:00:09.800 --> 00:00:12.560
<v Speaker 2>I'm Sean Klobo and with me today is your co

4
00:00:12.679 --> 00:00:16.920
<v Speaker 2>host Wylou And happy birthday, Caleb. Since you're not here,

5
00:00:17.000 --> 00:00:20.199
<v Speaker 2>you're not having fun, So it's not gonna make it today.

6
00:00:21.359 --> 00:00:23.640
<v Speaker 3>Dressed up today, he's got to get dressed up.

7
00:00:25.000 --> 00:00:27.239
<v Speaker 2>Well, at least he can go out. You know, he's

8
00:00:27.280 --> 00:00:30.160
<v Speaker 2>got vaccinated and all that kind of stuff. So hopefully

9
00:00:30.399 --> 00:00:32.479
<v Speaker 2>everything getting is good down in New Orleans.

10
00:00:32.799 --> 00:00:35.000
<v Speaker 3>Another thing untill I dressed up, and it also have

11
00:00:35.039 --> 00:00:35.759
<v Speaker 3>to wear a suit.

12
00:00:36.520 --> 00:00:40.719
<v Speaker 2>I no, no, I met his wife really to say,

13
00:00:41.000 --> 00:00:43.280
<v Speaker 2>you know, is he gonna make you know? How how

14
00:00:43.359 --> 00:00:45.840
<v Speaker 2>fancy is a dress up gonna be tonight? So it

15
00:00:45.880 --> 00:00:46.960
<v Speaker 2>depends on all.

16
00:00:46.960 --> 00:00:50.399
<v Speaker 3>The traditions in New Orleans? Maybe yes, anyway, so.

17
00:00:52.280 --> 00:00:57.679
<v Speaker 2>They got weird traditions in New Orleans. So it's strange,

18
00:00:57.479 --> 00:01:01.399
<v Speaker 2>right right, Caleb. Oh yeah, you can't tell me. So

19
00:01:01.520 --> 00:01:03.759
<v Speaker 2>why today on this show? I think we're going to

20
00:01:03.840 --> 00:01:05.560
<v Speaker 2>go back to school. I heard what we're talking about.

21
00:01:05.560 --> 00:01:09.760
<v Speaker 2>Notebook notebooks, you know, I remember those in college or

22
00:01:09.799 --> 00:01:13.120
<v Speaker 2>maybe that. Maybe it's not that kind of notebook today.

23
00:01:13.599 --> 00:01:18.000
<v Speaker 2>Notebook computers now not notebook computers why don't welcome our guest,

24
00:01:18.120 --> 00:01:20.920
<v Speaker 2>Eric Potter. Welcome Erek, Thanks guys, great to be on

25
00:01:20.959 --> 00:01:21.319
<v Speaker 2>the show.

26
00:01:21.599 --> 00:01:22.840
<v Speaker 1>Looking forward talking to you guys.

27
00:01:23.840 --> 00:01:25.680
<v Speaker 2>What kind of notebooks are we talking about today.

28
00:01:25.879 --> 00:01:28.200
<v Speaker 1>Let's start with a little background, because this is one

29
00:01:28.239 --> 00:01:31.640
<v Speaker 1>of those concepts that became big in another part of

30
00:01:31.680 --> 00:01:34.200
<v Speaker 1>the developer world and is starting to make its way

31
00:01:34.239 --> 00:01:36.879
<v Speaker 1>into the dot net world. But there was this idea

32
00:01:37.239 --> 00:01:42.079
<v Speaker 1>that really started in the Python space with a tool

33
00:01:42.159 --> 00:01:46.079
<v Speaker 1>called Jupiter Notebook notebooks, and the idea is that you

34
00:01:46.120 --> 00:01:51.840
<v Speaker 1>can have an interesting mix of code and text, so

35
00:01:51.920 --> 00:01:55.120
<v Speaker 1>you can have a document this this Jupiter Notebook document

36
00:01:55.519 --> 00:01:59.040
<v Speaker 1>where you can alternate back and forth between having text

37
00:01:59.439 --> 00:02:04.799
<v Speaker 1>in marked and your Python code. And the code is

38
00:02:04.799 --> 00:02:07.599
<v Speaker 1>actually organized into these little cells, and each cell is

39
00:02:08.120 --> 00:02:11.840
<v Speaker 1>defined independently, so you could just have like eight lines

40
00:02:11.840 --> 00:02:13.520
<v Speaker 1>of code and you could run those eight lines of

41
00:02:13.520 --> 00:02:16.800
<v Speaker 1>code independently. And in the Python space, this kind of

42
00:02:16.800 --> 00:02:20.960
<v Speaker 1>became big in the data community because you might have

43
00:02:20.960 --> 00:02:23.400
<v Speaker 1>a few lines of code where you pull in a

44
00:02:23.400 --> 00:02:26.439
<v Speaker 1>bunch of data from a CSV and then you take

45
00:02:26.439 --> 00:02:28.800
<v Speaker 1>that data and run it through a charting library, or

46
00:02:28.840 --> 00:02:30.719
<v Speaker 1>maybe just want to blow it out and filter it

47
00:02:30.719 --> 00:02:33.319
<v Speaker 1>in a table, or maybe you want to do some

48
00:02:33.360 --> 00:02:36.000
<v Speaker 1>aggregations on it, but as you're doing it, you can

49
00:02:36.039 --> 00:02:40.360
<v Speaker 1>be documenting what you're doing, and then that documentation either

50
00:02:40.400 --> 00:02:45.120
<v Speaker 1>then lives for you or lives on for someone else

51
00:02:45.319 --> 00:02:48.159
<v Speaker 1>to take over this notebook in the future. But either way,

52
00:02:48.240 --> 00:02:51.520
<v Speaker 1>we now have a way to have a much more

53
00:02:51.560 --> 00:02:56.520
<v Speaker 1>interactive experience than a historical Python programming experience where you

54
00:02:56.759 --> 00:02:59.120
<v Speaker 1>would write the Python file and then just execute it.

55
00:02:59.400 --> 00:03:03.199
<v Speaker 1>So this concept is making its way into the dot

56
00:03:03.240 --> 00:03:07.439
<v Speaker 1>net space with these dot net notebooks. And so there's

57
00:03:07.479 --> 00:03:09.919
<v Speaker 1>a couple of terms here. There is the Visual Studio

58
00:03:09.919 --> 00:03:13.400
<v Speaker 1>Code notebooks, which that is what allows you to have

59
00:03:13.439 --> 00:03:17.000
<v Speaker 1>these notebooks in visual studio code, and then there are

60
00:03:17.039 --> 00:03:20.159
<v Speaker 1>a couple of different variations on that. So there you

61
00:03:20.159 --> 00:03:24.080
<v Speaker 1>can have the c sharp sharp and JavaScript notebooks. There's

62
00:03:24.120 --> 00:03:27.000
<v Speaker 1>actually another kind of notebook for SQL, and so you

63
00:03:27.000 --> 00:03:31.039
<v Speaker 1>can have these different interactive environments right in Visual studio code.

64
00:03:31.360 --> 00:03:34.479
<v Speaker 1>It used to be, I think in Python you kind

65
00:03:34.479 --> 00:03:38.240
<v Speaker 1>of had to have a larger tool called Anaconda installed

66
00:03:38.400 --> 00:03:41.159
<v Speaker 1>to be able to create Python notebooks or Jupidter notebooks,

67
00:03:41.360 --> 00:03:43.520
<v Speaker 1>and there had been an earlier version where you could

68
00:03:43.719 --> 00:03:46.879
<v Speaker 1>run sea sharp in an Anaconda notebook but now they've

69
00:03:46.879 --> 00:03:48.759
<v Speaker 1>got it, so you can do it all in visual

70
00:03:48.800 --> 00:03:52.599
<v Speaker 1>Studio code with the visual Studio code extension for dot

71
00:03:52.639 --> 00:03:54.479
<v Speaker 1>net notebooks.

72
00:03:53.520 --> 00:03:55.120
<v Speaker 2>So go ahead.

73
00:03:55.159 --> 00:03:59.319
<v Speaker 3>Why so it actually runs the code it so it's

74
00:03:59.479 --> 00:04:02.560
<v Speaker 3>kind of a white to I guess, start notepadding, stop

75
00:04:02.599 --> 00:04:05.960
<v Speaker 3>documenting something, but by putting code that actually runs.

76
00:04:06.120 --> 00:04:06.360
<v Speaker 2>Yeah.

77
00:04:06.400 --> 00:04:11.599
<v Speaker 1>So let's say that you are exploring or documenting something

78
00:04:11.800 --> 00:04:16.120
<v Speaker 1>in a new Newgate package, so maybe something like system

79
00:04:16.240 --> 00:04:18.680
<v Speaker 1>dot text dot Jason, and you want to see how

80
00:04:18.720 --> 00:04:24.199
<v Speaker 1>that serializes your objects. First of all, there is a

81
00:04:24.279 --> 00:04:29.360
<v Speaker 1>special syntax for pulling new GET packages in, so you know,

82
00:04:29.360 --> 00:04:32.319
<v Speaker 1>with one line of code in your notebook you can

83
00:04:32.319 --> 00:04:34.360
<v Speaker 1>pull down a new GET package and start working with it.

84
00:04:34.639 --> 00:04:37.519
<v Speaker 1>And so then you could define your object and then

85
00:04:37.600 --> 00:04:40.480
<v Speaker 1>you could serialize and de serialize it right in the notebook,

86
00:04:40.519 --> 00:04:42.439
<v Speaker 1>and you could see the string output that you're getting

87
00:04:42.920 --> 00:04:45.879
<v Speaker 1>when you serialize it. And if you want to play

88
00:04:45.879 --> 00:04:51.680
<v Speaker 1>around with the different serialization options, right, you just have

89
00:04:51.720 --> 00:04:54.000
<v Speaker 1>a blocker code that's like setting those options differently. You

90
00:04:54.040 --> 00:04:55.720
<v Speaker 1>can run it like, okay, I want to see what

91
00:04:55.759 --> 00:04:57.920
<v Speaker 1>happens when I serialize it with this option on. Okay,

92
00:04:57.959 --> 00:04:59.279
<v Speaker 1>now I want to see what I'm going to change

93
00:04:59.279 --> 00:05:00.959
<v Speaker 1>the option. I want see how serializes with this set

94
00:05:00.959 --> 00:05:04.160
<v Speaker 1>of options. And so it's very interactive in terms of,

95
00:05:04.519 --> 00:05:07.000
<v Speaker 1>you know, having chunks of code that that you can run.

96
00:05:07.439 --> 00:05:10.839
<v Speaker 1>Most developers that I know, especially C sharp developers, have

97
00:05:10.959 --> 00:05:14.040
<v Speaker 1>some folder somewhere on their hard drive that has like

98
00:05:14.639 --> 00:05:18.959
<v Speaker 1>console application one, console application, two, console application seventy five,

99
00:05:19.240 --> 00:05:22.000
<v Speaker 1>you know, right, because there's always those things where it's like, oh,

100
00:05:22.000 --> 00:05:24.079
<v Speaker 1>I just I need to be able to drop in

101
00:05:24.160 --> 00:05:26.120
<v Speaker 1>some C Sharp cod and see what this does. Well,

102
00:05:26.120 --> 00:05:29.399
<v Speaker 1>the nice thing about these notebooks it's like, oh, I

103
00:05:29.439 --> 00:05:34.360
<v Speaker 1>could just drop in here and see what happens in

104
00:05:34.480 --> 00:05:37.160
<v Speaker 1>visual code. Visual studio code obviously opens really fast, so

105
00:05:37.160 --> 00:05:38.680
<v Speaker 1>it's a really nice way to quickly get in there.

106
00:05:39.560 --> 00:05:42.120
<v Speaker 1>But then the nice thing about it is that these

107
00:05:42.360 --> 00:05:45.800
<v Speaker 1>notebook files have an extension of ip y and B,

108
00:05:46.240 --> 00:05:50.959
<v Speaker 1>which is a Python holder. So Python holdover from Interactive

109
00:05:51.160 --> 00:05:54.879
<v Speaker 1>Python Notebook. So I P y and B and that's

110
00:05:54.920 --> 00:05:56.680
<v Speaker 1>still the extension even if you're using C sharp.

111
00:05:56.800 --> 00:06:00.319
<v Speaker 3>So any language would have still be the same extension as.

112
00:06:00.199 --> 00:06:02.519
<v Speaker 1>Far as I know, and C sharp is the one

113
00:06:02.519 --> 00:06:05.360
<v Speaker 1>that I've done the most with. I mean, that's just

114
00:06:05.399 --> 00:06:08.160
<v Speaker 1>the language I work in the most I've seen really

115
00:06:08.199 --> 00:06:11.240
<v Speaker 1>interesting demos with f sharp. I know it supports JavaScript

116
00:06:11.319 --> 00:06:14.279
<v Speaker 1>as well, and those are all the same extension. But

117
00:06:14.399 --> 00:06:17.959
<v Speaker 1>I could you know, take that ip y n B

118
00:06:18.120 --> 00:06:20.920
<v Speaker 1>file which is just a Jason file and you know,

119
00:06:21.000 --> 00:06:22.839
<v Speaker 1>check it in, or I could email to my teammates

120
00:06:22.839 --> 00:06:25.079
<v Speaker 1>and so maybe I want to document like, hey, here's

121
00:06:25.079 --> 00:06:28.639
<v Speaker 1>how we're going to use the serialization technique on our project.

122
00:06:29.360 --> 00:06:31.279
<v Speaker 1>And instead of just like writing up an email and

123
00:06:31.279 --> 00:06:33.800
<v Speaker 1>sending it to them like hey, here's this, here's this

124
00:06:33.839 --> 00:06:36.759
<v Speaker 1>interactive bit. You try it. See if you know, see

125
00:06:36.759 --> 00:06:38.120
<v Speaker 1>if you agree with my decision.

126
00:06:38.879 --> 00:06:40.839
<v Speaker 3>So can you put in like different libraries and things

127
00:06:40.879 --> 00:06:43.199
<v Speaker 3>like that or is it just that is the context

128
00:06:43.279 --> 00:06:45.680
<v Speaker 3>just whatever your coding on local variables?

129
00:06:45.920 --> 00:06:50.360
<v Speaker 1>No, So you can reference assemblies that are on your machine.

130
00:06:50.399 --> 00:06:53.920
<v Speaker 1>So if you have a you know, a class library

131
00:06:53.959 --> 00:06:56.759
<v Speaker 1>that you're using in whatever project you're on, you can

132
00:06:56.800 --> 00:06:59.319
<v Speaker 1>reference that right from your hard drive. Or like I said,

133
00:06:59.480 --> 00:07:01.199
<v Speaker 1>if there is a new get package and you can

134
00:07:01.199 --> 00:07:04.000
<v Speaker 1>pull that down to okay, yeah cool.

135
00:07:04.399 --> 00:07:07.920
<v Speaker 2>So is it like a like a wiki with executable

136
00:07:07.959 --> 00:07:08.600
<v Speaker 2>stuff in it.

137
00:07:09.000 --> 00:07:11.079
<v Speaker 1>That's a really interesting way to think about it, because,

138
00:07:11.240 --> 00:07:14.399
<v Speaker 1>like a lot of wikis, it does support markdown, right,

139
00:07:14.439 --> 00:07:17.040
<v Speaker 1>so I could, I could have tables, I could, I

140
00:07:17.040 --> 00:07:19.759
<v Speaker 1>can actually have images as if I want, you know,

141
00:07:19.879 --> 00:07:23.639
<v Speaker 1>because markdown has syntax to pull in images. So yeah,

142
00:07:24.639 --> 00:07:26.600
<v Speaker 1>that's a really interesting way to think about it because

143
00:07:26.600 --> 00:07:28.600
<v Speaker 1>it is kind of like that it's it's a wiki,

144
00:07:28.800 --> 00:07:32.199
<v Speaker 1>but you can actually execute the code right there.

145
00:07:33.040 --> 00:07:36.720
<v Speaker 3>I didn't like stack overflow. I think it has something

146
00:07:36.720 --> 00:07:39.360
<v Speaker 3>similar to that in which when you pay some code

147
00:07:39.360 --> 00:07:42.399
<v Speaker 3>in you have the option to run it. If it's

148
00:07:42.439 --> 00:07:44.920
<v Speaker 3>a certain language, then it actually shows you the output

149
00:07:44.920 --> 00:07:46.639
<v Speaker 3>as well, if if you quote a block of tech

150
00:07:46.680 --> 00:07:49.839
<v Speaker 3>block of code. So yeah, I can see it myself

151
00:07:49.920 --> 00:07:52.879
<v Speaker 3>using it as well, because like for me, like now

152
00:07:52.879 --> 00:07:55.439
<v Speaker 3>you're going on about developers using the console app on

153
00:07:55.680 --> 00:07:59.800
<v Speaker 3>two free, and I'm really big on documenting literally everything

154
00:07:59.800 --> 00:08:02.839
<v Speaker 3>I like on a program. Maybe like twenty five percent

155
00:08:02.839 --> 00:08:05.879
<v Speaker 3>of my time is this going back in every by

156
00:08:06.000 --> 00:08:09.000
<v Speaker 3>error message or or whatever. Or even if I solve

157
00:08:09.040 --> 00:08:11.720
<v Speaker 3>a problem certain way, I'll just I'll just we've helped

158
00:08:11.800 --> 00:08:14.480
<v Speaker 3>one note and just document it, you know, just s

159
00:08:14.480 --> 00:08:19.079
<v Speaker 3>beeacause I I've got got a bad memory, and like

160
00:08:19.160 --> 00:08:21.560
<v Speaker 3>the so many times going oh I fixed this problem before,

161
00:08:21.639 --> 00:08:24.560
<v Speaker 3>and it's like where do I look kind of thing. So,

162
00:08:24.560 --> 00:08:26.560
<v Speaker 3>so yeah, I can really see myself using this and

163
00:08:26.839 --> 00:08:29.040
<v Speaker 3>then just kind of putting in code that would just

164
00:08:29.120 --> 00:08:31.439
<v Speaker 3>run for me, you know, instead of just putting in

165
00:08:31.439 --> 00:08:34.440
<v Speaker 3>a block of code that may not may not run.

166
00:08:34.559 --> 00:08:37.559
<v Speaker 2>So yeah, so how do you get started? You know,

167
00:08:37.559 --> 00:08:39.320
<v Speaker 2>what's it? What's it take to get started? And what's

168
00:08:39.320 --> 00:08:41.519
<v Speaker 2>a good place to start at for somebody that hasn't

169
00:08:41.519 --> 00:08:42.519
<v Speaker 2>done a notebook before?

170
00:08:43.000 --> 00:08:45.679
<v Speaker 1>All right, So in Visual Studio Code, if you go

171
00:08:45.759 --> 00:08:50.519
<v Speaker 1>to the extension library, then there is an extension you

172
00:08:50.519 --> 00:08:54.720
<v Speaker 1>can search for called dot Net Interactive Notebooks, and it

173
00:08:54.799 --> 00:09:01.240
<v Speaker 1>is still listed as a preview by It's really working

174
00:09:01.279 --> 00:09:03.519
<v Speaker 1>pretty well. I've had it installed for a couple of

175
00:09:03.559 --> 00:09:09.840
<v Speaker 1>months now. But if you install the preview then you

176
00:09:09.879 --> 00:09:13.039
<v Speaker 1>can start creating these notebooks. There's actually some new commands

177
00:09:13.039 --> 00:09:16.080
<v Speaker 1>that they have in the Visual studio Code command bar.

178
00:09:16.960 --> 00:09:21.279
<v Speaker 1>Looking at the documentation here, you do obviously have to

179
00:09:21.279 --> 00:09:23.399
<v Speaker 1>have Visual studio Code installed, and you have to have

180
00:09:23.759 --> 00:09:27.919
<v Speaker 1>dot Net five installed. I guess I was at this

181
00:09:27.960 --> 00:09:30.039
<v Speaker 1>point it's kind of a safe assumption that all developers

182
00:09:30.080 --> 00:09:34.000
<v Speaker 1>have Visual studio Code installed. That's becoming very ubiquitous. You

183
00:09:34.039 --> 00:09:36.600
<v Speaker 1>do need the five SDK installed as well, apparently.

184
00:09:37.000 --> 00:09:39.759
<v Speaker 3>So what about if you said you could just copy

185
00:09:39.840 --> 00:09:43.039
<v Speaker 3>these new get files to the developers, Like, if you've

186
00:09:43.039 --> 00:09:45.519
<v Speaker 3>got new get packages, do the nu get packages kind

187
00:09:45.559 --> 00:09:48.200
<v Speaker 3>of come or at least the references come with the

188
00:09:48.240 --> 00:09:51.720
<v Speaker 3>file or it's just an assumption that would have it installed.

189
00:09:52.600 --> 00:09:58.240
<v Speaker 1>So there is actually a special syntax for pulling down

190
00:09:58.279 --> 00:10:01.200
<v Speaker 1>new get packages. So, again sticking with the example of

191
00:10:01.240 --> 00:10:05.639
<v Speaker 1>system dot text dot json, if I have near the

192
00:10:05.679 --> 00:10:12.320
<v Speaker 1>top of my notebook file pound are quote new gut

193
00:10:12.360 --> 00:10:16.159
<v Speaker 1>colon system dot text dot json quote right, so that

194
00:10:16.240 --> 00:10:20.519
<v Speaker 1>line of code, when I execute that line in the notebook,

195
00:10:20.679 --> 00:10:24.919
<v Speaker 1>then it will install that Newgate package. And so what

196
00:10:24.960 --> 00:10:27.279
<v Speaker 1>I could do, you know, in the case you're talking

197
00:10:27.320 --> 00:10:32.320
<v Speaker 1>about where I if I email you my notebook, you

198
00:10:32.360 --> 00:10:34.919
<v Speaker 1>would have to execute that block. But then once you

199
00:10:34.919 --> 00:10:36.399
<v Speaker 1>had done that, then you would have the new get

200
00:10:36.480 --> 00:10:40.759
<v Speaker 1>packages downloaded and installed. Now, obviously you can use that

201
00:10:40.799 --> 00:10:44.159
<v Speaker 1>pound our syntax to reference assemblies that are on your

202
00:10:44.200 --> 00:10:47.279
<v Speaker 1>hard drive and so like if if I was just

203
00:10:47.320 --> 00:10:50.960
<v Speaker 1>like referencing something that the path was like c colon

204
00:10:51.039 --> 00:10:53.480
<v Speaker 1>users e Potter, right, then that wouldn't be on your machine.

205
00:10:54.240 --> 00:10:56.279
<v Speaker 1>But you know, if I was actually using the Newgate

206
00:10:56.320 --> 00:10:59.200
<v Speaker 1>reference then then you could download it yourself.

207
00:10:59.639 --> 00:11:03.279
<v Speaker 3>So what use cases do you see for this, Like,

208
00:11:03.559 --> 00:11:05.279
<v Speaker 3>I mean, I think identify that for me, it would

209
00:11:05.279 --> 00:11:08.039
<v Speaker 3>be mainly for documentary in my own stuff, But do

210
00:11:08.120 --> 00:11:10.159
<v Speaker 3>you see any other use cases that might be useful?

211
00:11:10.600 --> 00:11:15.360
<v Speaker 1>So, yeah, documentation, I think is a big one. I

212
00:11:15.399 --> 00:11:19.879
<v Speaker 1>think the one that the Python community is really embraced

213
00:11:19.960 --> 00:11:24.080
<v Speaker 1>is this idea of data exploration. And you know, I'll

214
00:11:24.080 --> 00:11:27.120
<v Speaker 1>include code exploration in that too, But a lot of

215
00:11:27.120 --> 00:11:31.360
<v Speaker 1>times we're working with a large data set and you know,

216
00:11:31.399 --> 00:11:35.159
<v Speaker 1>we could query it in you know, simple server management studio,

217
00:11:35.759 --> 00:11:37.960
<v Speaker 1>but I don't know, maybe maybe it comes from a

218
00:11:37.960 --> 00:11:40.720
<v Speaker 1>CSV or you know, some other data source, And what

219
00:11:40.759 --> 00:11:44.919
<v Speaker 1>we want is the ability to look at some data,

220
00:11:45.639 --> 00:11:47.639
<v Speaker 1>do some kind of aggregation on it beyond what we

221
00:11:47.639 --> 00:11:50.919
<v Speaker 1>could just do in SQL, maybe generate some charts or

222
00:11:51.000 --> 00:11:55.039
<v Speaker 1>generate some other kind of visualization, and I could do

223
00:11:55.080 --> 00:11:59.200
<v Speaker 1>that really quickly. One of the things that Microsoft kind

224
00:11:59.200 --> 00:12:03.240
<v Speaker 1>of touts with their Notebook extension is that it's got

225
00:12:03.279 --> 00:12:07.919
<v Speaker 1>good support for a library called xplot dot plotly, so

226
00:12:08.000 --> 00:12:11.120
<v Speaker 1>what you could do is you could have some data

227
00:12:11.159 --> 00:12:13.639
<v Speaker 1>source that you're going to pull in and then render

228
00:12:13.720 --> 00:12:20.120
<v Speaker 1>a visual using xplot and all that right in the notebook. Now,

229
00:12:20.159 --> 00:12:22.679
<v Speaker 1>the nice thing is that because it's interactive, you know,

230
00:12:22.720 --> 00:12:25.519
<v Speaker 1>you could be maybe tweaking your filters and then tweaking

231
00:12:25.559 --> 00:12:28.080
<v Speaker 1>your visualization or tweaking your data source, and you can

232
00:12:28.120 --> 00:12:30.039
<v Speaker 1>kind of it it. You have this really fast feedback

233
00:12:30.080 --> 00:12:35.240
<v Speaker 1>loop of you know, being able to really tweak the

234
00:12:35.720 --> 00:12:37.759
<v Speaker 1>experience that you want and tweak the visual you want

235
00:12:37.759 --> 00:12:42.840
<v Speaker 1>really easily. So yeah, there's that whole exploration. So I'd

236
00:12:42.879 --> 00:12:46.159
<v Speaker 1>say that's probably the second big use case. The third one,

237
00:12:46.200 --> 00:12:49.440
<v Speaker 1>and maybe this is a little more specific to me,

238
00:12:50.039 --> 00:12:55.000
<v Speaker 1>is actually with teaching. So I spend a non trivial

239
00:12:55.000 --> 00:12:58.480
<v Speaker 1>amount of time mentoring developers at my employer. I work

240
00:12:58.559 --> 00:13:02.240
<v Speaker 1>for a company called a Pair of Software, and we're

241
00:13:02.279 --> 00:13:07.200
<v Speaker 1>really big on teaching and training and empowering our younger developers,

242
00:13:07.919 --> 00:13:12.799
<v Speaker 1>and so I can see myself documenting some like fundamental

243
00:13:12.799 --> 00:13:17.759
<v Speaker 1>concepts and handing this over to them. I also sometimes

244
00:13:17.799 --> 00:13:22.960
<v Speaker 1>teach as an adjunct at a local university, and having

245
00:13:22.960 --> 00:13:26.440
<v Speaker 1>the ability to have this interactive teaching tool I think

246
00:13:26.519 --> 00:13:29.759
<v Speaker 1>is really powerful. One of the challenges that I've always

247
00:13:29.759 --> 00:13:32.440
<v Speaker 1>had in the past, no matter where I'm teaching, is

248
00:13:32.440 --> 00:13:35.960
<v Speaker 1>that which mechanism do I want to use to teach

249
00:13:36.600 --> 00:13:40.879
<v Speaker 1>about code. So I could just have C sharp code

250
00:13:41.000 --> 00:13:44.799
<v Speaker 1>with comments that explain the concepts as we're trying to

251
00:13:44.879 --> 00:13:48.519
<v Speaker 1>go through. But that has some limitations. There's there's no graphics.

252
00:13:48.840 --> 00:13:51.879
<v Speaker 1>I can't like have an image that's that shows up

253
00:13:51.879 --> 00:13:55.120
<v Speaker 1>in comments in a C sharp file. You know, a

254
00:13:55.159 --> 00:13:59.639
<v Speaker 1>lot of teaching historically has done with PowerPoint, which in

255
00:13:59.679 --> 00:14:01.879
<v Speaker 1>power you have the opposite problem where you can have

256
00:14:01.879 --> 00:14:04.840
<v Speaker 1>all these really interesting visualizations, but then the code is

257
00:14:04.960 --> 00:14:08.559
<v Speaker 1>maybe just a screenshot and so that it's not interactive

258
00:14:08.600 --> 00:14:12.360
<v Speaker 1>at all. I think having notebooks becomes this really powerful

259
00:14:12.399 --> 00:14:16.440
<v Speaker 1>teaching tool where I could say, okay, here's the concept.

260
00:14:16.559 --> 00:14:20.320
<v Speaker 1>Maybe I've got some graphic that represents what conceptually is

261
00:14:20.320 --> 00:14:22.840
<v Speaker 1>trying to happen. But then I can have the code

262
00:14:22.840 --> 00:14:24.559
<v Speaker 1>and they can run it from themselves and they can

263
00:14:24.639 --> 00:14:26.559
<v Speaker 1>change it and they can explore and see what the

264
00:14:26.600 --> 00:14:29.000
<v Speaker 1>code does. I think the other thing that could be

265
00:14:29.080 --> 00:14:33.200
<v Speaker 1>really interesting is that you could almost have like interactive

266
00:14:33.240 --> 00:14:35.279
<v Speaker 1>problems as you go, so you're explaining a concepts and

267
00:14:35.320 --> 00:14:38.120
<v Speaker 1>be like, okay, now you write the ten lines of

268
00:14:38.200 --> 00:14:42.080
<v Speaker 1>code that generate this output. And so you could learn

269
00:14:42.080 --> 00:14:46.600
<v Speaker 1>in a much more interactive way without having to subject

270
00:14:46.600 --> 00:14:49.799
<v Speaker 1>yourself to the limitations of only code or only PowerPoint

271
00:14:49.840 --> 00:14:50.200
<v Speaker 1>or whatever.

272
00:14:50.480 --> 00:14:53.399
<v Speaker 3>Yeah, that's really cool. So can you embed it into

273
00:14:53.440 --> 00:14:55.759
<v Speaker 3>a like a web page? You think that's one. I'm thinking,

274
00:14:55.799 --> 00:14:59.320
<v Speaker 3>like the professor puts an assignment up and yeah, you

275
00:14:59.399 --> 00:15:02.279
<v Speaker 3>literally you know, it has the description and mockdown and

276
00:15:02.399 --> 00:15:04.720
<v Speaker 3>shots and all that stuff, and then they're just still

277
00:15:04.759 --> 00:15:07.919
<v Speaker 3>in the code bit.

278
00:15:08.600 --> 00:15:12.159
<v Speaker 1>So I think from the things that I've read, and

279
00:15:12.279 --> 00:15:14.720
<v Speaker 1>I don't have any special knowledge here, but I think

280
00:15:15.000 --> 00:15:16.679
<v Speaker 1>that it's something they would like to get to. But

281
00:15:16.720 --> 00:15:19.799
<v Speaker 1>you do have a challenge there in that if it's

282
00:15:19.879 --> 00:15:22.600
<v Speaker 1>running on a web page somewhere, you have to run

283
00:15:22.600 --> 00:15:23.639
<v Speaker 1>the C sharp compiler.

284
00:15:24.279 --> 00:15:26.440
<v Speaker 3>Yeah, so you'd have to back in. Well maybe you

285
00:15:26.440 --> 00:15:28.799
<v Speaker 3>could use assembly web assembly something.

286
00:15:29.120 --> 00:15:32.919
<v Speaker 1>Yeah, maybe there's a really interesting potential there that, like

287
00:15:33.080 --> 00:15:38.799
<v Speaker 1>could you run roslin in in Blazer. I don't know

288
00:15:38.879 --> 00:15:40.080
<v Speaker 1>if that's the thing that you can do or not.

289
00:15:40.759 --> 00:15:44.360
<v Speaker 1>Maybe it is. I know that one of the things

290
00:15:44.399 --> 00:15:47.519
<v Speaker 1>I think they were doing with the try dot net website.

291
00:15:48.159 --> 00:15:50.919
<v Speaker 1>I think maybe with that they were actually shipping the

292
00:15:51.000 --> 00:15:53.279
<v Speaker 1>code back to some server for it to be compiled,

293
00:15:53.320 --> 00:15:55.240
<v Speaker 1>and they would send the assembly forward.

294
00:15:55.480 --> 00:15:56.759
<v Speaker 2>They switched that over to Blazer.

295
00:15:56.919 --> 00:15:59.879
<v Speaker 1>So yeah, okay, so maybe and maybe that's the thing,

296
00:15:59.879 --> 00:16:02.279
<v Speaker 1>is that these notebooks will eventually be able to run

297
00:16:02.360 --> 00:16:06.000
<v Speaker 1>right in Blazer. The best solution I've seen right now

298
00:16:06.519 --> 00:16:11.039
<v Speaker 1>is that there is a website again from the Python

299
00:16:11.039 --> 00:16:16.000
<v Speaker 1>community called Binder, and you can post notebooks on Binder.

300
00:16:16.639 --> 00:16:20.279
<v Speaker 1>And Binder does support the dot net runtime, so you

301
00:16:20.320 --> 00:16:22.960
<v Speaker 1>can run your c sharp notebooks on Binder if that's

302
00:16:23.000 --> 00:16:23.879
<v Speaker 1>how you want to share them.

303
00:16:23.919 --> 00:16:26.159
<v Speaker 3>But you said it also supports jss R.

304
00:16:26.600 --> 00:16:26.799
<v Speaker 2>Yeah.

305
00:16:26.840 --> 00:16:31.000
<v Speaker 3>Yeah, yeah, maybe that part of it you could. But

306
00:16:31.000 --> 00:16:33.080
<v Speaker 3>but you said it's also just in previews, so maybe

307
00:16:33.120 --> 00:16:37.519
<v Speaker 3>it is just a feature that that haven't got through yet. Yeah,

308
00:16:38.360 --> 00:16:42.919
<v Speaker 3>is this a Microsoft created thing or yeah.

309
00:16:42.480 --> 00:16:46.080
<v Speaker 1>The extension I was going to double check. Yeah, the

310
00:16:46.080 --> 00:16:49.240
<v Speaker 1>author on the extension is Microsoft COO.

311
00:16:49.799 --> 00:16:53.600
<v Speaker 2>So is it is it limited to like console type applications.

312
00:16:53.799 --> 00:16:56.840
<v Speaker 2>You talked about xblot, but that's not really like a

313
00:16:56.840 --> 00:16:59.279
<v Speaker 2>gooey type of thing, so where you can build forms

314
00:16:59.360 --> 00:17:01.600
<v Speaker 2>or do some sort of interactivity.

315
00:17:01.960 --> 00:17:04.079
<v Speaker 1>So one of the things they have built in is

316
00:17:04.839 --> 00:17:08.799
<v Speaker 1>a display method, So if I have an object, I

317
00:17:08.839 --> 00:17:11.440
<v Speaker 1>can display that object and it will render all of

318
00:17:11.480 --> 00:17:15.160
<v Speaker 1>the properties and their values in a table. So there

319
00:17:15.240 --> 00:17:18.119
<v Speaker 1>is a little bit more that's graphical than just you know,

320
00:17:18.240 --> 00:17:21.519
<v Speaker 1>standard console output. I don't. It's just not something i've

321
00:17:21.559 --> 00:17:24.000
<v Speaker 1>run into. I know that there's different HTML output options

322
00:17:24.000 --> 00:17:28.079
<v Speaker 1>you can do. I can't speak authoritatively to those, and

323
00:17:28.160 --> 00:17:32.240
<v Speaker 1>I did just see on Twitter very recently someone from

324
00:17:32.279 --> 00:17:35.680
<v Speaker 1>the community added a plug in that could render Razor,

325
00:17:36.079 --> 00:17:38.839
<v Speaker 1>and so then you could have a notebook that could

326
00:17:38.880 --> 00:17:42.799
<v Speaker 1>render all kinds of different Web outputs with anything you

327
00:17:42.920 --> 00:17:45.119
<v Speaker 1>do with Razor, you could do in the notebook. Again,

328
00:17:45.319 --> 00:17:47.480
<v Speaker 1>that's on my list of things to investigate. I haven't

329
00:17:47.480 --> 00:17:49.440
<v Speaker 1>looked at at what they've done yet, and I don't

330
00:17:49.440 --> 00:17:51.720
<v Speaker 1>know how stable that package is, but I am very

331
00:17:51.720 --> 00:17:52.359
<v Speaker 1>excited about it.

332
00:17:52.599 --> 00:17:55.559
<v Speaker 3>So it displays the output of the code you run.

333
00:17:55.799 --> 00:17:58.480
<v Speaker 3>So I'm guessing that then it assumes that the code

334
00:17:58.480 --> 00:18:01.880
<v Speaker 3>that you run has to have a determinant output. Like

335
00:18:01.960 --> 00:18:04.480
<v Speaker 3>you couldn't just put like a mass dot random path

336
00:18:04.480 --> 00:18:07.160
<v Speaker 3>in there, because it would just be a line in

337
00:18:07.200 --> 00:18:09.559
<v Speaker 3>that that would just give you a completely different output

338
00:18:09.599 --> 00:18:11.680
<v Speaker 3>every time we run it. What would happened then, I.

339
00:18:11.680 --> 00:18:15.359
<v Speaker 1>Mean, you could certainly have random outputs, right is, if

340
00:18:15.400 --> 00:18:18.079
<v Speaker 1>you had a random number generator and you wanted to

341
00:18:18.559 --> 00:18:22.519
<v Speaker 1>run the code block which they call these blocks cells, right,

342
00:18:22.599 --> 00:18:24.440
<v Speaker 1>so you can just execute the cell over and over

343
00:18:24.480 --> 00:18:27.839
<v Speaker 1>again like any programming thing. You wouldn't want your cell

344
00:18:27.960 --> 00:18:30.359
<v Speaker 1>to get stuck in some kind of infinite loop. But

345
00:18:31.200 --> 00:18:35.599
<v Speaker 1>assuming assuming that your cell does run the completion in

346
00:18:36.519 --> 00:18:38.480
<v Speaker 1>you know, the same amount of time, then yeah, I

347
00:18:38.480 --> 00:18:39.480
<v Speaker 1>would display the output.

348
00:18:40.000 --> 00:18:42.839
<v Speaker 3>So does it run at it every time you open

349
00:18:43.119 --> 00:18:44.759
<v Speaker 3>the file or does it run it once and then

350
00:18:44.880 --> 00:18:45.839
<v Speaker 3>store the output?

351
00:18:46.359 --> 00:18:52.000
<v Speaker 1>So each cell can be executed individually. So there's actually

352
00:18:52.720 --> 00:18:55.240
<v Speaker 1>a little graphical play button. So let's say I've got

353
00:18:55.680 --> 00:18:57.759
<v Speaker 1>three lines of code in one cell and I hit

354
00:18:57.759 --> 00:19:00.559
<v Speaker 1>the play button, execute it. Or there's a keyboard truck two.

355
00:19:00.880 --> 00:19:03.000
<v Speaker 1>But I could then have my markdown that explained what

356
00:19:03.079 --> 00:19:06.559
<v Speaker 1>just happened. I have another cell and I could execute

357
00:19:06.559 --> 00:19:10.599
<v Speaker 1>that one. Now all of these cells execute in the

358
00:19:10.640 --> 00:19:15.400
<v Speaker 1>same scope. So maybe I want to define a class

359
00:19:15.839 --> 00:19:19.759
<v Speaker 1>in one cell and then you have some explanation and

360
00:19:19.799 --> 00:19:24.200
<v Speaker 1>then instantiate an object of that class in a cell

361
00:19:24.240 --> 00:19:27.079
<v Speaker 1>that's down lower. Then you could totally do that. Like

362
00:19:27.119 --> 00:19:30.680
<v Speaker 1>I said, I was teaching a local university and I

363
00:19:30.720 --> 00:19:35.640
<v Speaker 1>was trying to explain the concept of inheritance and overwriting, right,

364
00:19:35.680 --> 00:19:37.960
<v Speaker 1>and so we had this notebook where there was a

365
00:19:38.000 --> 00:19:41.039
<v Speaker 1>class at the top that had some virtual methods, and

366
00:19:41.079 --> 00:19:44.640
<v Speaker 1>then there were cells down below that had various iterations

367
00:19:44.720 --> 00:19:47.039
<v Speaker 1>or you know, various versions of how you override methods

368
00:19:47.079 --> 00:19:49.799
<v Speaker 1>and what that looks like down below. So I think

369
00:19:49.839 --> 00:19:52.440
<v Speaker 1>there is also an option to just like execute everything

370
00:19:52.480 --> 00:19:54.359
<v Speaker 1>in the file if you just want to jump right.

371
00:19:54.279 --> 00:19:57.240
<v Speaker 3>To the end. Yeah, I can see my folf. Do

372
00:19:57.240 --> 00:19:59.799
<v Speaker 3>you think it quite a lot for presentations and things

373
00:19:59.799 --> 00:20:02.559
<v Speaker 3>of that. I run a local meet up as well,

374
00:20:02.680 --> 00:20:05.640
<v Speaker 3>so it it'd be a really good way to illustrate

375
00:20:05.720 --> 00:20:08.240
<v Speaker 3>the code that you're trying to run, just by running

376
00:20:08.279 --> 00:20:10.240
<v Speaker 3>it one bit at a time and then putting some

377
00:20:10.400 --> 00:20:13.359
<v Speaker 3>nice mock down, you know, describe what you're doing.

378
00:20:13.680 --> 00:20:13.880
<v Speaker 2>Yeah.

379
00:20:13.920 --> 00:20:17.519
<v Speaker 1>I imagine that going forward, that when I'm you know,

380
00:20:17.559 --> 00:20:20.599
<v Speaker 1>in a user group scenario or just explaining something to

381
00:20:21.519 --> 00:20:23.799
<v Speaker 1>my teammates anytime when in the past I would have

382
00:20:23.799 --> 00:20:26.599
<v Speaker 1>thought like, oh, I just dropped this code into PowerPoint, Like,

383
00:20:26.680 --> 00:20:28.720
<v Speaker 1>I think probably going forward, I'm just going to use

384
00:20:28.759 --> 00:20:29.480
<v Speaker 1>these notebooks.

385
00:20:30.000 --> 00:20:33.440
<v Speaker 2>Yeah. So I've typically used like link pad for making

386
00:20:33.440 --> 00:20:37.119
<v Speaker 2>my little one off test applications and things like that.

387
00:20:37.160 --> 00:20:40.680
<v Speaker 2>This sounds like a better way to be more organized

388
00:20:40.759 --> 00:20:43.960
<v Speaker 2>with multiple you know, test apps and things like that,

389
00:20:44.440 --> 00:20:45.559
<v Speaker 2>you know, with documentation.

390
00:20:46.200 --> 00:20:49.279
<v Speaker 1>So that's a really interesting comparison, right because link pad

391
00:20:49.359 --> 00:20:51.960
<v Speaker 1>is a wonderful tool, and I don't want say anything

392
00:20:52.000 --> 00:20:53.720
<v Speaker 1>bad about it, but it has a little bit of

393
00:20:53.759 --> 00:20:57.079
<v Speaker 1>a different goal because you can't have markdown right, So

394
00:20:57.119 --> 00:20:59.839
<v Speaker 1>it's a great link Pad is a great way to say,

395
00:21:00.079 --> 00:21:02.400
<v Speaker 1>here's these thirty lines of code or these fifteen lines

396
00:21:02.440 --> 00:21:05.720
<v Speaker 1>of code, and I just want to execute that. But

397
00:21:05.920 --> 00:21:08.720
<v Speaker 1>can I hit the data base, the night pad stuff,

398
00:21:08.920 --> 00:21:16.799
<v Speaker 1>link pad, notebook? Yeah, because again you could pull in

399
00:21:15.920 --> 00:21:18.880
<v Speaker 1>a new get packaged, right, so there's no reason why

400
00:21:18.920 --> 00:21:22.640
<v Speaker 1>you couldn't use enterity framework or in one of the

401
00:21:22.640 --> 00:21:26.160
<v Speaker 1>micro rms, whatever you want to do. But yeah, getting

402
00:21:26.160 --> 00:21:28.319
<v Speaker 1>back to the link pad, I love link pad, but

403
00:21:28.640 --> 00:21:30.880
<v Speaker 1>it's more that's more of like a like I just

404
00:21:30.880 --> 00:21:32.920
<v Speaker 1>want to try it as a small stiput of code.

405
00:21:33.079 --> 00:21:36.079
<v Speaker 1>If I want to try it out and document that,

406
00:21:36.079 --> 00:21:40.799
<v Speaker 1>I would lean towards notebooks and the other tool in

407
00:21:40.839 --> 00:21:43.559
<v Speaker 1>this space that I think is one of the best

408
00:21:43.599 --> 00:21:46.759
<v Speaker 1>kept secrets in the dot no space is c sharp Interactive.

409
00:21:47.480 --> 00:21:50.079
<v Speaker 1>You guys ever played around with the c sharp interactive environments?

410
00:21:50.440 --> 00:21:52.119
<v Speaker 3>No? What's that?

411
00:21:52.160 --> 00:21:57.400
<v Speaker 1>The lat no so live share is also delightful. That's

412
00:21:57.400 --> 00:21:59.880
<v Speaker 1>a whole another thing. Right, So, if you have visual

413
00:22:00.039 --> 00:22:03.079
<v Speaker 1>Raudio twenty nineteen installed, if you open the developer command

414
00:22:03.119 --> 00:22:07.160
<v Speaker 1>prompt and type CSI, you will be dropped into an

415
00:22:07.160 --> 00:22:11.440
<v Speaker 1>interactive sea sharp environment, right. An environment that is, you

416
00:22:11.519 --> 00:22:13.759
<v Speaker 1>know what are often called a repel, a read de

417
00:22:13.799 --> 00:22:17.240
<v Speaker 1>val print loop. Right, so you have the ability just

418
00:22:17.319 --> 00:22:19.680
<v Speaker 1>at the command line to start banking around with different

419
00:22:20.079 --> 00:22:24.279
<v Speaker 1>C sharp code snippets, you know, which can be really useful.

420
00:22:24.720 --> 00:22:26.240
<v Speaker 1>The two things that I end up using it for

421
00:22:26.599 --> 00:22:30.160
<v Speaker 1>are more sophisticated version variations of what you can do

422
00:22:30.200 --> 00:22:33.079
<v Speaker 1>with string dot format, right, because there's always that thing like, oh,

423
00:22:33.079 --> 00:22:34.640
<v Speaker 1>I know there's a way I can format the state,

424
00:22:35.119 --> 00:22:38.720
<v Speaker 1>and I can't remember the exact syntax if you want

425
00:22:38.759 --> 00:22:42.319
<v Speaker 1>to specify how many decimal places you want after a

426
00:22:42.400 --> 00:22:45.039
<v Speaker 1>number and string dot format, like, I can never remember

427
00:22:45.039 --> 00:22:46.960
<v Speaker 1>the exact syntax, and I could google it, or I

428
00:22:47.000 --> 00:22:50.559
<v Speaker 1>could just open C sharp Interactive and try it right there.

429
00:22:50.720 --> 00:22:53.720
<v Speaker 1>And then there's also a C sharp interactive window in

430
00:22:54.119 --> 00:22:56.079
<v Speaker 1>visual Studio, so if you already have visual Studio open,

431
00:22:56.240 --> 00:22:59.680
<v Speaker 1>you can drop in and check out you know, just

432
00:22:59.759 --> 00:23:03.119
<v Speaker 1>small all snippets of C sharp code so again that's

433
00:23:03.160 --> 00:23:04.839
<v Speaker 1>not exactly what I was here to talk about. But

434
00:23:04.960 --> 00:23:07.359
<v Speaker 1>if you're not, that's cold. Yeah, if you've never played

435
00:23:07.359 --> 00:23:09.759
<v Speaker 1>around with C sharp Interactive, which, like I said, the

436
00:23:09.759 --> 00:23:12.599
<v Speaker 1>command line is a CSI. If you have Visual Studio installed,

437
00:23:12.640 --> 00:23:15.440
<v Speaker 1>you already have it installed, and so yeah, absolutely check

438
00:23:15.480 --> 00:23:15.920
<v Speaker 1>that out too.

439
00:23:16.359 --> 00:23:18.799
<v Speaker 2>That seems like something to be should be more prominent

440
00:23:18.839 --> 00:23:22.559
<v Speaker 2>in the in the idee to discover it rather than

441
00:23:22.720 --> 00:23:25.880
<v Speaker 2>have new to go to developer command prompt and then

442
00:23:25.920 --> 00:23:29.599
<v Speaker 2>type CSI and then do all this stuff.

443
00:23:29.839 --> 00:23:31.640
<v Speaker 1>Well, and you can get to it in Visual Studio too,

444
00:23:31.640 --> 00:23:33.640
<v Speaker 1>So if you go to the Visual Studio tools window,

445
00:23:34.079 --> 00:23:36.680
<v Speaker 1>I apologize for not having open like if I think

446
00:23:36.680 --> 00:23:38.759
<v Speaker 1>if you just go to visual Studio, was it like

447
00:23:38.920 --> 00:23:42.559
<v Speaker 1>view or views? You can find c sharp Interactive right

448
00:23:42.599 --> 00:23:46.359
<v Speaker 1>in there. It's pretty cool. It's hugely underutilized.

449
00:23:46.000 --> 00:23:49.400
<v Speaker 2>All right, so you go, oh, go ahead if you

450
00:23:49.480 --> 00:23:50.200
<v Speaker 2>got a question.

451
00:23:50.160 --> 00:23:53.400
<v Speaker 3>Yep, Like with vision Study, I can kind of understand

452
00:23:53.519 --> 00:23:56.279
<v Speaker 3>that it is such a big application. There's totally things

453
00:23:56.279 --> 00:23:59.000
<v Speaker 3>that I worked on a v and I probably haven't

454
00:23:59.039 --> 00:24:01.200
<v Speaker 3>discovered that it can do, to be, So.

455
00:24:01.119 --> 00:24:03.960
<v Speaker 2>What else should we know about notebooks? You know? It

456
00:24:04.160 --> 00:24:06.960
<v Speaker 2>just sounds like something that maybe a lot more people

457
00:24:07.039 --> 00:24:11.640
<v Speaker 2>should be messing around with and posting things or letting

458
00:24:11.640 --> 00:24:14.519
<v Speaker 2>people know about this because I've heard about notebooks, but

459
00:24:14.559 --> 00:24:17.480
<v Speaker 2>I didn't really understand it until now. So you you've

460
00:24:17.519 --> 00:24:19.880
<v Speaker 2>done a great job, but explaining you how I can

461
00:24:20.599 --> 00:24:21.559
<v Speaker 2>you know, start using them?

462
00:24:21.759 --> 00:24:23.240
<v Speaker 1>I don't know if there's a whole lot else to say,

463
00:24:23.400 --> 00:24:25.599
<v Speaker 1>just because there's you know, once you get into it,

464
00:24:25.400 --> 00:24:30.480
<v Speaker 1>it is a pretty straightforward thing, like like on it's

465
00:24:30.599 --> 00:24:32.920
<v Speaker 1>very obvious where you'd want to have code and where

466
00:24:32.920 --> 00:24:34.920
<v Speaker 1>you would want to have marked down? Do you ays

467
00:24:35.160 --> 00:24:38.119
<v Speaker 1>really intuitive? I just encourage people go and play around

468
00:24:38.160 --> 00:24:38.400
<v Speaker 1>with it.

469
00:24:38.599 --> 00:24:41.839
<v Speaker 2>So how do you organize there's notebooks so it's each

470
00:24:42.279 --> 00:24:45.319
<v Speaker 2>file called a page, or how do you how do

471
00:24:45.359 --> 00:24:49.160
<v Speaker 2>you organize lots of different things together?

472
00:24:49.599 --> 00:24:53.480
<v Speaker 1>I've never really that's an interesting question because I've never

473
00:24:53.480 --> 00:24:57.359
<v Speaker 1>really had to think more hierarchically. Most of the notebooks

474
00:24:57.359 --> 00:25:01.519
<v Speaker 1>I've personally created kind of makes sense as a standalone thing,

475
00:25:01.599 --> 00:25:04.680
<v Speaker 1>like you don't really have a project file of notebooks,

476
00:25:04.680 --> 00:25:08.240
<v Speaker 1>you just have the notebook file. That is an interesting idea, though,

477
00:25:08.240 --> 00:25:10.240
<v Speaker 1>I would be curious to know if if there's a

478
00:25:10.240 --> 00:25:11.559
<v Speaker 1>better story for that of like.

479
00:25:11.480 --> 00:25:15.039
<v Speaker 2>How would you organize multiple notebooks that are all related. Yeah.

480
00:25:15.119 --> 00:25:18.839
<v Speaker 1>Yeah, and the if you look at the the GitHub

481
00:25:18.880 --> 00:25:23.440
<v Speaker 1>project that Microsoft provides that has their notebook examples, you know,

482
00:25:23.480 --> 00:25:26.039
<v Speaker 1>it's just a it's just a folder with a bunch

483
00:25:26.079 --> 00:25:28.680
<v Speaker 1>of these I, P, N, Y, and B files in it,

484
00:25:28.839 --> 00:25:31.599
<v Speaker 1>but they're not necessarily organized into a project.

485
00:25:31.920 --> 00:25:34.039
<v Speaker 3>I wonder if they get to a stage where like

486
00:25:34.160 --> 00:25:36.839
<v Speaker 3>the features of the notebook could be used in a

487
00:25:36.880 --> 00:25:41.839
<v Speaker 3>normal like CS file, you know, like just like I

488
00:25:42.000 --> 00:25:44.079
<v Speaker 3>wondered that, you know, instead of just being to comment

489
00:25:44.160 --> 00:25:46.319
<v Speaker 3>things can be putting in mop down and thinks of

490
00:25:46.359 --> 00:25:48.440
<v Speaker 3>that and to you just your normal source code. I'm

491
00:25:48.440 --> 00:25:49.680
<v Speaker 3>not sure if it's a good idea or not, but

492
00:25:49.759 --> 00:25:51.039
<v Speaker 3>I'm just wondering, and it is.

493
00:25:51.000 --> 00:25:54.799
<v Speaker 1>An interesting idea where you could have a CS file

494
00:25:54.960 --> 00:25:59.319
<v Speaker 1>with an image in the comments. Yeah, yeah, definitely. I've

495
00:25:59.319 --> 00:26:05.000
<v Speaker 1>definitely worked in situations where the code was maybe documented

496
00:26:05.039 --> 00:26:09.039
<v Speaker 1>as a flow chart in visio before it was ever implemented. Right,

497
00:26:09.079 --> 00:26:11.200
<v Speaker 1>And could you just like have a screenshot of that

498
00:26:11.200 --> 00:26:14.079
<v Speaker 1>that video diagram, like, hey, here's here's the decision tree

499
00:26:14.079 --> 00:26:16.480
<v Speaker 1>that we're working from. Or I suppose the other thing

500
00:26:16.519 --> 00:26:19.720
<v Speaker 1>of being stating one of my clients does a lot

501
00:26:19.759 --> 00:26:23.319
<v Speaker 1>with CAD, and so a lot of times we're writing

502
00:26:23.359 --> 00:26:26.839
<v Speaker 1>code that manipulates objects that started somewhere in CAD. Like

503
00:26:27.720 --> 00:26:30.079
<v Speaker 1>you could have an LSE case. It's like this LSE

504
00:26:30.119 --> 00:26:34.079
<v Speaker 1>case exists to cover this this diagram or you know

505
00:26:34.160 --> 00:26:37.920
<v Speaker 1>this modeling concept. That'd be interesting. I'm sure there's good

506
00:26:37.960 --> 00:26:41.519
<v Speaker 1>reasons to not bring images into CS files, but it

507
00:26:41.559 --> 00:26:42.200
<v Speaker 1>does seem like it.

508
00:26:42.160 --> 00:26:44.960
<v Speaker 3>Was probably like thought control looks a bit weird if

509
00:26:45.000 --> 00:26:47.880
<v Speaker 3>you have you know, thought control its designed for text, right,

510
00:26:48.039 --> 00:26:52.759
<v Speaker 3>so it's not putting images make it a wonky. It's

511
00:26:52.799 --> 00:26:56.359
<v Speaker 3>how to use, but yeah, it's it's safe to talk

512
00:26:56.400 --> 00:26:58.359
<v Speaker 3>about that. You don't know what the consequence is are

513
00:26:58.480 --> 00:27:01.440
<v Speaker 3>but because it is so once you open that can

514
00:27:01.599 --> 00:27:05.680
<v Speaker 3>and you know you can do so much. People putting

515
00:27:05.680 --> 00:27:07.079
<v Speaker 3>in videos into your SOS code.

516
00:27:09.119 --> 00:27:11.119
<v Speaker 1>Well, in some of the languages have opened that can

517
00:27:11.160 --> 00:27:14.240
<v Speaker 1>because they now allow emojis and variable names.

518
00:27:14.480 --> 00:27:16.799
<v Speaker 3>Oh gosh, how would you do that?

519
00:27:18.160 --> 00:27:21.960
<v Speaker 1>I if memory serves, I think Swift allows you to

520
00:27:22.000 --> 00:27:26.079
<v Speaker 1>have emoji named variables, which I could in some cases

521
00:27:26.079 --> 00:27:29.640
<v Speaker 1>see would be really powerful and expressive. And in some cases,

522
00:27:29.960 --> 00:27:33.519
<v Speaker 1>like someone used three of the poop emoji, is this

523
00:27:33.640 --> 00:27:34.200
<v Speaker 1>variable name?

524
00:27:34.640 --> 00:27:37.640
<v Speaker 3>Like how different to communicate that your you know, dead

525
00:27:37.720 --> 00:27:40.920
<v Speaker 3>meeting is that variable here with two foods and two

526
00:27:40.960 --> 00:27:44.400
<v Speaker 3>free one? You know, like that's not a signed you know, like, yeah,

527
00:27:44.480 --> 00:27:44.960
<v Speaker 3>that's just.

528
00:27:46.079 --> 00:27:48.519
<v Speaker 2>And then everybody's going to agree with what the name

529
00:27:48.599 --> 00:27:53.160
<v Speaker 2>of what that emoji is you refer to it. It's

530
00:27:53.160 --> 00:27:57.079
<v Speaker 2>gonna be you know some some people can call it crap,

531
00:27:57.160 --> 00:28:00.839
<v Speaker 2>the other ones call it poop, you know. You know. Yeah,

532
00:28:01.480 --> 00:28:04.000
<v Speaker 2>so I did find it in the ID. It's underview.

533
00:28:04.599 --> 00:28:07.279
<v Speaker 2>You have to go to other windows. There you go

534
00:28:07.359 --> 00:28:10.359
<v Speaker 2>and you have C sharp interactive and there's F sharp

535
00:28:10.440 --> 00:28:11.279
<v Speaker 2>interactive as well.

536
00:28:11.759 --> 00:28:12.160
<v Speaker 3>Mm hmm.

537
00:28:13.240 --> 00:28:15.039
<v Speaker 2>So it is like one note, can you do these

538
00:28:15.039 --> 00:28:17.240
<v Speaker 2>types of notebooks in one note? That might be a

539
00:28:17.279 --> 00:28:18.519
<v Speaker 2>way to organize them together.

540
00:28:18.759 --> 00:28:20.559
<v Speaker 1>As far as I know, there's no way to do that.

541
00:28:20.680 --> 00:28:23.000
<v Speaker 1>But I also love one note, so I would be

542
00:28:23.200 --> 00:28:25.200
<v Speaker 1>thrilled if that was the thing that one note could do.

543
00:28:25.599 --> 00:28:26.880
<v Speaker 2>Yeah, that would be cool.

544
00:28:27.039 --> 00:28:30.759
<v Speaker 3>I think could if one note supported markdown Actually, that

545
00:28:31.039 --> 00:28:33.880
<v Speaker 3>would be the would step forward for them because yeah,

546
00:28:33.960 --> 00:28:36.559
<v Speaker 3>a lot of times I'm pasting code of the reformat

547
00:28:36.559 --> 00:28:37.920
<v Speaker 3>it and all stuff first.

548
00:28:38.200 --> 00:28:39.200
<v Speaker 2>So cool.

549
00:28:39.519 --> 00:28:42.200
<v Speaker 1>Yeah, and you think about formatting code. It is worth

550
00:28:42.279 --> 00:28:48.279
<v Speaker 1>noting that the VS code notebooks extension does have syntax highlighting,

551
00:28:48.920 --> 00:28:52.400
<v Speaker 1>it has intel a sense and yeah, so it looks

552
00:28:52.519 --> 00:28:54.759
<v Speaker 1>like proper C sharp code.

553
00:28:55.079 --> 00:28:57.480
<v Speaker 3>And you can debug line by line and I'm guessing.

554
00:28:57.240 --> 00:28:59.480
<v Speaker 1>Mine, No, there's not a debugger for it.

555
00:29:00.039 --> 00:29:02.359
<v Speaker 3>Yeah, you can't step for it. I would fought for

556
00:29:02.400 --> 00:29:04.440
<v Speaker 3>an educational tool you, but maybe it's the saying that

557
00:29:04.440 --> 00:29:06.400
<v Speaker 3>they will I'll put in eventually.

558
00:29:07.319 --> 00:29:07.519
<v Speaker 2>Yeah.

559
00:29:07.519 --> 00:29:09.720
<v Speaker 1>I think the workflow would be more something where you

560
00:29:09.759 --> 00:29:12.599
<v Speaker 1>would I think instead of debugging, what you would do

561
00:29:13.279 --> 00:29:15.039
<v Speaker 1>is you would just have three lines of code and

562
00:29:15.039 --> 00:29:17.319
<v Speaker 1>display some output and have another couple of lines of

563
00:29:17.359 --> 00:29:18.599
<v Speaker 1>code and displace.

564
00:29:18.720 --> 00:29:19.799
<v Speaker 3>Yeah that's right.

565
00:29:19.920 --> 00:29:24.480
<v Speaker 2>Yeah. Cool. Well I think I'm really, you know, kind

566
00:29:24.480 --> 00:29:26.839
<v Speaker 2>of kind of anxious to get out there and play

567
00:29:26.839 --> 00:29:30.000
<v Speaker 2>around with this a little bit. So that acceptable.

568
00:29:29.799 --> 00:29:34.880
<v Speaker 1>We should stop the show, stop recording so we can

569
00:29:34.920 --> 00:29:35.720
<v Speaker 1>go play with the code.

570
00:29:35.839 --> 00:29:39.079
<v Speaker 2>Yeah, I like it. Or let's at least move on

571
00:29:39.119 --> 00:29:41.920
<v Speaker 2>to picks. Let's depicts before we stop the show. All right,

572
00:29:41.920 --> 00:29:44.039
<v Speaker 2>Why what do you have for your pick this week?

573
00:29:44.640 --> 00:29:47.880
<v Speaker 3>Okay, so my pick is a little bit different this week.

574
00:29:47.920 --> 00:29:50.160
<v Speaker 3>It's not a fun thing that we usually do. So

575
00:29:50.200 --> 00:29:55.079
<v Speaker 3>it's actually I wanted to Oh cool, I want to

576
00:29:55.079 --> 00:29:58.279
<v Speaker 3>give a shout out to cloud Flares DNS Caravada. So

577
00:29:59.000 --> 00:30:01.599
<v Speaker 3>I mean people probably know because we're program it here,

578
00:30:01.640 --> 00:30:05.839
<v Speaker 3>but the Internet's how the Internet's design is actually like it.

579
00:30:06.000 --> 00:30:09.079
<v Speaker 3>It's actually been fairly broken. It's it's never really been

580
00:30:09.079 --> 00:30:13.960
<v Speaker 3>designed for privacy. And although these days almost every website

581
00:30:14.039 --> 00:30:16.720
<v Speaker 3>uses ACTVS, that's really that's a really good step forward,

582
00:30:16.920 --> 00:30:21.119
<v Speaker 3>but that's actually not completely hiding all of the things

583
00:30:21.160 --> 00:30:23.920
<v Speaker 3>you're doing. One thing that one way that people can

584
00:30:24.000 --> 00:30:26.839
<v Speaker 3>I guess listen on what you're doing is using your

585
00:30:26.920 --> 00:30:31.880
<v Speaker 3>DNS lookups because DNS usually isn't encrypted and then just

586
00:30:32.240 --> 00:30:34.880
<v Speaker 3>you know, it's usually your DNS provider is usually just

587
00:30:34.920 --> 00:30:38.359
<v Speaker 3>with your I s P and there's no I guess

588
00:30:38.799 --> 00:30:40.880
<v Speaker 3>you'll have to check whether your IP is logging or

589
00:30:40.880 --> 00:30:43.880
<v Speaker 3>your DNS lookups and they are then essentially all of

590
00:30:43.880 --> 00:30:47.640
<v Speaker 3>your all the website you're going to is essentially stored

591
00:30:47.640 --> 00:30:51.440
<v Speaker 3>against your your IP address. So cloud Flag has actually

592
00:30:51.680 --> 00:30:55.519
<v Speaker 3>provided like a like a public DNS provider which you

593
00:30:55.559 --> 00:30:58.799
<v Speaker 3>can I guess point your DNS look ups to and

594
00:30:59.400 --> 00:31:02.319
<v Speaker 3>that they've built it I guess with priority in mind,

595
00:31:02.359 --> 00:31:05.599
<v Speaker 3>so it's all encrypted the traffic and they're guaranteed to

596
00:31:05.680 --> 00:31:09.119
<v Speaker 3>not log your traffic for longer than twenty four hours

597
00:31:09.160 --> 00:31:11.519
<v Speaker 3>and things like that. So yeah, I thought more people

598
00:31:11.559 --> 00:31:14.039
<v Speaker 3>should should do it. It's really easy to set up.

599
00:31:14.200 --> 00:31:16.400
<v Speaker 3>Just point your DNS look up to one point one

600
00:31:16.440 --> 00:31:18.279
<v Speaker 3>point one point one and I had a bit of

601
00:31:18.359 --> 00:31:21.440
<v Speaker 3>read about their their business model, and it seems really legit,

602
00:31:21.559 --> 00:31:23.920
<v Speaker 3>like they're not The reason they're doing it is to

603
00:31:23.960 --> 00:31:26.880
<v Speaker 3>improve their services because they're I think they're like a

604
00:31:26.920 --> 00:31:30.680
<v Speaker 3>CDM company. They're all about trying to make their clients

605
00:31:30.759 --> 00:31:35.319
<v Speaker 3>were pages faster, and this allows them to essentially improve

606
00:31:35.359 --> 00:31:38.559
<v Speaker 3>that improve that offering things for to say.

607
00:31:38.839 --> 00:31:42.400
<v Speaker 2>So, probably Google's eight dot eight dot eight dot eight

608
00:31:42.559 --> 00:31:44.200
<v Speaker 2>is probably not so private.

609
00:31:44.799 --> 00:31:46.880
<v Speaker 3>Well, I guess it depends on which company you trust.

610
00:31:49.000 --> 00:31:51.039
<v Speaker 3>I don't know, Like I probably shouldn't go too much

611
00:31:51.039 --> 00:31:53.279
<v Speaker 3>into that, but yeah, like I think cloud I read

612
00:31:53.400 --> 00:31:56.440
<v Speaker 3>I read Cloud Justification and I was like, okay, cool,

613
00:31:56.480 --> 00:31:58.039
<v Speaker 3>you're not You're not going to take my DATEA I

614
00:31:58.079 --> 00:32:02.000
<v Speaker 3>can't see you wanting to do that for But also,

615
00:32:02.079 --> 00:32:05.839
<v Speaker 3>I think the cloud fled thing, the offering it's independently

616
00:32:05.920 --> 00:32:08.640
<v Speaker 3>ordered by tap the MG so I'm not sure what

617
00:32:08.640 --> 00:32:13.119
<v Speaker 3>that means, but I'm guessing it's it makes it more independent.

618
00:32:13.359 --> 00:32:16.160
<v Speaker 2>Okay, So my pick this week I is a little

619
00:32:16.160 --> 00:32:19.119
<v Speaker 2>bit different because it's something I don't think we've ever

620
00:32:19.200 --> 00:32:21.920
<v Speaker 2>had as a pick before. I don't think ever anybody's

621
00:32:21.960 --> 00:32:25.960
<v Speaker 2>ever picked music or a band. We've got on for

622
00:32:26.039 --> 00:32:27.960
<v Speaker 2>over over a year now, maybe year and a half

623
00:32:28.039 --> 00:32:30.599
<v Speaker 2>or something like that, and nobody's ever had a band.

624
00:32:31.000 --> 00:32:32.920
<v Speaker 3>I think I did the Smashing Pumpkins once, I.

625
00:32:33.079 --> 00:32:39.920
<v Speaker 2>Did Allow No. So so one of my favorite bands

626
00:32:39.920 --> 00:32:43.920
<v Speaker 2>growing up was the band Rush, So kind of shows

627
00:32:43.920 --> 00:32:47.119
<v Speaker 2>my age a little bit. He's kid things like that. So,

628
00:32:47.720 --> 00:32:50.759
<v Speaker 2>you know, recently the drummer of the group died, but

629
00:32:50.880 --> 00:32:53.680
<v Speaker 2>he was like one of the best drummers I've ever

630
00:32:53.720 --> 00:32:56.680
<v Speaker 2>heard in the world. He just just very artistic. He

631
00:32:56.720 --> 00:32:58.680
<v Speaker 2>wrote a lot of the songs and the music somethings

632
00:32:58.720 --> 00:33:00.880
<v Speaker 2>like that. So you know, back to some of their

633
00:33:00.880 --> 00:33:04.400
<v Speaker 2>greatest albums, so like Moving Pictures or twenty one to twelve,

634
00:33:04.880 --> 00:33:07.400
<v Speaker 2>things like that. So if you want to hear a

635
00:33:07.440 --> 00:33:11.519
<v Speaker 2>good rock band, you never heard Rush. They're actually from Canada,

636
00:33:11.599 --> 00:33:12.799
<v Speaker 2>so check it out.

637
00:33:13.440 --> 00:33:15.720
<v Speaker 1>All right, Eric, I'm going to stick with the technical

638
00:33:15.759 --> 00:33:19.839
<v Speaker 1>pick and apologize for not having something more creative vibe.

639
00:33:20.599 --> 00:33:24.720
<v Speaker 1>Recently been reading the concurrency in C sharp cookbook by

640
00:33:24.759 --> 00:33:29.160
<v Speaker 1>Stephen Cleary, and it is not a thick book, but

641
00:33:29.279 --> 00:33:32.240
<v Speaker 1>it's got some really great technical detail. I thought I

642
00:33:32.319 --> 00:33:35.039
<v Speaker 1>understood a sink and a weight in C sharp, but

643
00:33:35.200 --> 00:33:37.680
<v Speaker 1>I have learned so much reading this book and it's

644
00:33:37.799 --> 00:33:40.720
<v Speaker 1>a lot of information that's very practical. So I should

645
00:33:40.799 --> 00:33:41.200
<v Speaker 1>check it out.

646
00:33:41.559 --> 00:33:41.839
<v Speaker 3>Books.

647
00:33:42.440 --> 00:33:46.240
<v Speaker 2>So, yeah, a sink, a weight. Yeah, if you dove

648
00:33:46.319 --> 00:33:49.240
<v Speaker 2>into that, that's the state machines and all that kind

649
00:33:49.279 --> 00:33:53.359
<v Speaker 2>of stuff can get really funky and really complex. You

650
00:33:53.400 --> 00:33:56.839
<v Speaker 2>really grasp the entirety of it and make sure everything

651
00:33:57.440 --> 00:34:00.559
<v Speaker 2>is working, the whole stack, all the way up being

652
00:34:00.640 --> 00:34:01.400
<v Speaker 2>a sync of Wait.

653
00:34:01.640 --> 00:34:03.799
<v Speaker 1>Yeah. The actual use case that got me into it

654
00:34:03.880 --> 00:34:08.039
<v Speaker 1>was Project I'm on. Had a kind of squirrely situation

655
00:34:08.199 --> 00:34:11.679
<v Speaker 1>with cancelation and realized I had a lot to learn

656
00:34:11.719 --> 00:34:16.079
<v Speaker 1>about how to properly cancel async and away tasks, and

657
00:34:16.119 --> 00:34:19.039
<v Speaker 1>so I picked up that book and it did not disappoint.

658
00:34:18.960 --> 00:34:23.079
<v Speaker 2>Cool all right. So, Eric, if people have questions and

659
00:34:23.119 --> 00:34:25.000
<v Speaker 2>they want to reach out and get in touch with you,

660
00:34:25.079 --> 00:34:25.760
<v Speaker 2>what's the best way.

661
00:34:25.920 --> 00:34:29.639
<v Speaker 1>Probably the easiest way to find me online is on Twitter.

662
00:34:30.159 --> 00:34:33.559
<v Speaker 1>My handle is at Potter Eric. All the Harry Potter

663
00:34:33.599 --> 00:34:38.039
<v Speaker 1>fans ate up all the good. Potter handles right away

664
00:34:38.079 --> 00:34:40.519
<v Speaker 1>on Twitter, So I'm at Potter Eric, not eat Potter

665
00:34:40.599 --> 00:34:44.960
<v Speaker 1>or anything like that. My blog is humbletoolsmith dot com

666
00:34:45.000 --> 00:34:47.719
<v Speaker 1>and I've got some content up there, both on c

667
00:34:47.880 --> 00:34:51.440
<v Speaker 1>sharp Interactive and on the dot net notebooks. And if

668
00:34:51.440 --> 00:34:53.119
<v Speaker 1>you want, you can find me on LinkedIn. I hang

669
00:34:53.159 --> 00:34:54.239
<v Speaker 1>out on there sometimes.

670
00:34:53.960 --> 00:34:57.039
<v Speaker 2>So thanks Eric. Great show. If our listeners want to

671
00:34:57.039 --> 00:34:59.639
<v Speaker 2>reach out in touch to us, we'd love to hear

672
00:34:59.639 --> 00:35:01.480
<v Speaker 2>your feed. Let us know what we can do better.

673
00:35:01.880 --> 00:35:05.280
<v Speaker 2>They can reach me at Twitter. I am at dot

674
00:35:05.280 --> 00:35:08.760
<v Speaker 2>net superhero all right. And Caleb who's not here, he's

675
00:35:08.880 --> 00:35:13.320
<v Speaker 2>at Caleb Wells Codes. Thanks Eric, great show. Glad to

676
00:35:13.360 --> 00:35:13.639
<v Speaker 2>have you.

677
00:35:14.000 --> 00:35:15.440
<v Speaker 1>Yeah, thanks so much for having me on. This has

678
00:35:15.440 --> 00:35:16.280
<v Speaker 1>been a fun conversation.

679
00:35:16.840 --> 00:35:19.639
<v Speaker 3>Thanks coming on great all right.

680
00:35:19.679 --> 00:35:22.360
<v Speaker 2>We'll catch everybody on the next episode of Adventures in

681
00:35:22.639 --> 00:35:23.199
<v Speaker 2>dot Net.
