WEBVTT

1
00:00:06.719 --> 00:00:10.560
Hey everybody, and welcome to another
episode of JavaScript Jabber. This week,

2
00:00:10.599 --> 00:00:14.199
on our panel we have Amy Knight, Hey, hey from Nashville. Steve

3
00:00:14.480 --> 00:00:18.800
Edwards, Hello from the Left Coast
in Portland. Aj O'Neil yo yo yo,

4
00:00:18.920 --> 00:00:22.160
come a act you live from the
can't make up It's mine about the

5
00:00:22.160 --> 00:00:26.960
weather provo that is so true.
I'm Charles Maxwood from devchat dot TV.

6
00:00:27.440 --> 00:00:31.000
I just want to quickly shout out
about my book should be out when this

7
00:00:31.079 --> 00:00:34.719
goes out, The Max Cooder's Guide
to Finding your Dream Developer Job. So

8
00:00:34.759 --> 00:00:37.679
if you're worried about job mobility or
looking for a job, this book kind

9
00:00:37.679 --> 00:00:43.200
of lays out how to be attractive
to development employers. Sorry, I kind

10
00:00:43.200 --> 00:00:45.840
of stumbled over that a little bit. This week we're going to be talking

11
00:00:45.880 --> 00:00:49.719
about iterating on open source, and
it sounds like Aj and Amy kind of

12
00:00:49.719 --> 00:00:53.399
had a conversation about that and wanted
to talk about it on the show.

13
00:00:53.439 --> 00:00:56.600
So I'll let the two of you
jump in and kind of set the stage

14
00:00:56.880 --> 00:01:00.560
and then we can go from there
and see where we end up. All

15
00:01:00.640 --> 00:01:04.359
right, well, I want to
be kicked off with some some questions or

16
00:01:04.359 --> 00:01:10.359
props. So Amy, you remember
the conversation probably better than I do out.

17
00:01:11.319 --> 00:01:14.840
Yeah, I'm trying to think back
to what we had chatted about,

18
00:01:15.239 --> 00:01:22.040
and I feel like the premise was
kind of how the open source project that

19
00:01:22.200 --> 00:01:26.920
you work on, that you're you
know, trying to make improvements along the

20
00:01:26.959 --> 00:01:33.599
way, but then you get feedback. Sometimes that is a little tough because

21
00:01:34.239 --> 00:01:38.319
it, you know, goes against
some of the functionality you may have added

22
00:01:38.359 --> 00:01:41.640
to the framework, and they're not
happy about it. But at the same

23
00:01:41.680 --> 00:01:46.400
time, like that feedback, while
it's not always you know what you want

24
00:01:46.439 --> 00:01:51.719
to hear, it helps you understand
how people are using the software. And

25
00:01:53.319 --> 00:01:56.079
Okay, okay, so I've got
to I've got a good point to start

26
00:01:56.079 --> 00:01:59.439
from on this. Okay, So
actually, aj you broke it. There's

27
00:01:59.480 --> 00:02:05.280
two things, or probably more.
You've got some code that you write and

28
00:02:05.480 --> 00:02:07.800
you solve a problem, and most
of the time it's a really stupid problem,

29
00:02:08.199 --> 00:02:14.360
like left pad for example. And
I wrote this little utility called how

30
00:02:14.599 --> 00:02:19.719
NPM am I, and it will
use npm's API and then printiple list.

31
00:02:19.759 --> 00:02:24.479
So if you do NPX how hyphen
NPM hyphen am hyphen I, and then

32
00:02:24.479 --> 00:02:31.120
your username on NPM dash dash verbos, you'll get this like nice long list

33
00:02:31.319 --> 00:02:36.319
of all the packages. Well,
actually it won't include all of them because

34
00:02:36.360 --> 00:02:40.680
there's certain metrics that like if you
have a collaborator on the package, sometimes

35
00:02:40.680 --> 00:02:45.280
it doesn't show up in this list
because they did something with their API,

36
00:02:45.319 --> 00:02:49.159
where like if it's a scope package
or if it's a package that has collaborators,

37
00:02:49.159 --> 00:02:53.240
it doesn't necessarily show in your specific
list. But anyway, so I've

38
00:02:53.240 --> 00:03:00.599
got this list here. My most
popular package gets thirty nine million downs ownloads

39
00:03:00.639 --> 00:03:05.639
per month. And guess what it
does. That's kind of an unfair question.

40
00:03:06.120 --> 00:03:10.479
It's essentially left pad. It's a
package called A to B and all

41
00:03:10.520 --> 00:03:14.919
it does it's one line long.
I think it's a little bit longer than

42
00:03:14.960 --> 00:03:20.120
that because it's it tries to like
detect in case you're happen to run it

43
00:03:20.120 --> 00:03:24.319
in a browser, which would be
against the point. But anyway, it's

44
00:03:24.360 --> 00:03:31.280
it's basically one line long. It's
a return buffer dot from data Comma Base

45
00:03:31.319 --> 00:03:38.240
sixty four. That's it, right, So that is a popular project,

46
00:03:38.280 --> 00:03:43.800
but it's not really a useful project. Doesn't really solve problems or help people.

47
00:03:43.960 --> 00:03:46.560
It's it's kind of dumb. On
the other end of the spectrum,

48
00:03:47.000 --> 00:03:54.159
something that I have that only gets
about looks like sixty six thousand downloads per

49
00:03:54.199 --> 00:04:01.240
month is what I consider to be
my most important and you know, best,

50
00:04:01.280 --> 00:04:06.319
greatest value contribution to open source,
which is it's greenlock and it's an

51
00:04:06.719 --> 00:04:11.479
HTTPS server. And I've talked about
this a couple of times, but sorry,

52
00:04:11.960 --> 00:04:15.759
it's a let's encrypt client and greenlock
Express is also an HTTPS server.

53
00:04:16.639 --> 00:04:21.079
So when you're doing open source,
like if you get in early, like

54
00:04:21.120 --> 00:04:26.519
I got into node in the literally
v zero point two days, and so

55
00:04:26.560 --> 00:04:30.160
that's how I have a module that
gets thirty nine million downloads a month is

56
00:04:30.199 --> 00:04:34.319
because I published a one line thing, you know, I don't know,

57
00:04:34.680 --> 00:04:39.800
eight years ago and it got included
in a bunch of stuff by mistake,

58
00:04:39.879 --> 00:04:44.279
and it, you know, it
remains there. But that's like there's nowhere,

59
00:04:44.399 --> 00:04:46.560
So my most popular module, there's
nowhere for it to go. There's

60
00:04:46.639 --> 00:04:50.399
nothing I can do with it.
There's there's no additional value that I can

61
00:04:50.399 --> 00:04:55.399
help bring to people. It's just
kind of like a cool little badge of

62
00:04:55.399 --> 00:04:57.959
honor. Like, look, I
made a stupid thing and for some reason

63
00:04:58.000 --> 00:05:01.800
people started using it, and I
don't know, you know, but when

64
00:05:01.839 --> 00:05:08.120
you've got something that actually solves a
problem and gives people business value, like

65
00:05:08.199 --> 00:05:11.759
this let's encrypt client, and people
want as to sale certificates for all their

66
00:05:11.759 --> 00:05:15.160
sites. They want to have wildcard
sales certificates, they want to have certificates

67
00:05:15.160 --> 00:05:18.439
that work locally in development, that
sort of thing. So it provides like

68
00:05:18.519 --> 00:05:25.439
real value. They actually save money
by using this, and in many cases

69
00:05:25.519 --> 00:05:31.360
they're saving thousands of dollars, if
not directly in SSL costs by the certificate,

70
00:05:31.920 --> 00:05:36.319
they're saving thousands of dollars in the
time that it would take them to

71
00:05:36.399 --> 00:05:43.839
figure out how to build a system
that would work with let's encrypt or even

72
00:05:43.879 --> 00:05:46.720
with another paid service. You know, even if the paying of the certificate

73
00:05:46.759 --> 00:05:51.920
wasn't the problem, the building the
software to negotiate how to get that certificate

74
00:05:51.959 --> 00:05:56.560
and keep it up to date as
an automatic process. So it went from

75
00:05:56.600 --> 00:06:00.800
something that I built for Hub,
which is the homest that I'm slowly slowly

76
00:06:00.839 --> 00:06:04.560
working on, to not you know, not entirely by happenstance, Like I

77
00:06:04.639 --> 00:06:08.000
wanted to make it easy for other
people to use too, because I thought

78
00:06:08.000 --> 00:06:09.959
this is not going to just be
useful for me, This is going to

79
00:06:09.959 --> 00:06:14.040
be useful for lots of people,
and this is high value, so I

80
00:06:14.079 --> 00:06:16.160
wanted to make it easy for other
people to use, and it got to

81
00:06:16.199 --> 00:06:23.040
a point where the popularity of it
did not like, you get this burden

82
00:06:23.079 --> 00:06:29.240
of responsibility. So let's encrypt was
a draft standard. They only just finalized

83
00:06:29.279 --> 00:06:33.639
it recently, and so over time
I have to make changes to accommodate their

84
00:06:33.680 --> 00:06:40.959
API updates, and those changes,
you know, they take away from from

85
00:06:41.079 --> 00:06:44.600
my time. And it got to
a point where it wasn't just a couple

86
00:06:44.680 --> 00:06:48.480
hundred people using this, now it's
several thousand people using this, and there's

87
00:06:48.480 --> 00:06:54.720
like this social responsibility of oh,
well, I want to be a good

88
00:06:54.839 --> 00:07:00.480
citizen. I don't want to give
people something that they and they rely on

89
00:07:01.120 --> 00:07:06.879
and then I don't support and then
you know, it brings financial harm or

90
00:07:06.959 --> 00:07:12.399
it puts this you know, great
technical burden that people didn't expect on them.

91
00:07:12.639 --> 00:07:15.000
But at the same time, like
it's an open source project, so

92
00:07:15.680 --> 00:07:20.399
it's not like my time for what
you know, what I put into this

93
00:07:20.519 --> 00:07:27.920
is is being recouped, and I
don't necessarily need all the things that other

94
00:07:27.959 --> 00:07:30.600
people need. So it's almost like, I, what's the expression, you

95
00:07:31.519 --> 00:07:36.439
build yourself into a trap that's not
the way when we idealistically think about open

96
00:07:36.480 --> 00:07:40.560
source, that's that's you know,
not the language that we use. But

97
00:07:41.000 --> 00:07:45.120
when you have a project that begins
become popular, that's kind of what happens

98
00:07:45.120 --> 00:07:48.800
because you have this you know,
feeling about like yay, I'm providing value

99
00:07:48.839 --> 00:07:53.519
to people, I'm making a difference, like this feels good, But then

100
00:07:53.560 --> 00:07:57.959
it also becomes more demanding on you
and you get to a point where you

101
00:07:58.120 --> 00:08:03.800
need to be able to to justify
the time spend. And just one thing

102
00:08:03.839 --> 00:08:05.800
that I believe about life in general
that I'm not, you know, I'm

103
00:08:05.839 --> 00:08:09.040
kind of a hypocrite because I don't
follow through it in the way that I

104
00:08:09.040 --> 00:08:13.360
ought to and according to my beliefs, but I believe that you should capture

105
00:08:13.399 --> 00:08:18.199
the value of what you create.
When you create value, I think it's

106
00:08:18.240 --> 00:08:22.360
it's somewhat of a moral obligation.
Maybe morals too strong of a word,

107
00:08:22.439 --> 00:08:26.600
but I believe that we have an
obligation to capture the value of what we

108
00:08:26.680 --> 00:08:31.279
create so that we can reinvest and
then create more value. The kind of

109
00:08:31.319 --> 00:08:35.679
Western concept of the more you have, the more you should use to build

110
00:08:37.639 --> 00:08:41.360
more abundance, Like you should use
abundance to create more abundance. That's in

111
00:08:41.399 --> 00:08:45.279
a lot of what people believe in
the tech space in general. Paying it

112
00:08:45.320 --> 00:08:48.360
forward. Yeah, I wouldn't quite
use those terms. I think that that

113
00:08:48.759 --> 00:08:52.960
adequately describes it. But it's like, if I have developed it, let's

114
00:08:52.960 --> 00:08:58.279
put it in terms of money.
If I've developed a capacity to generate money,

115
00:08:58.679 --> 00:09:01.480
you know, I've developed a capacity
to generate a thousand dollars. I've

116
00:09:01.480 --> 00:09:03.360
got two options. I can take
that thousand dollars, find you know,

117
00:09:03.440 --> 00:09:07.080
fairly low income housing and eat ramen, and that can be my life.

118
00:09:07.120 --> 00:09:11.600
Like I have now come to a
point where my life is sustainable. But

119
00:09:11.799 --> 00:09:16.600
what would be better is for me
to start investing part of that thousand dollars

120
00:09:16.279 --> 00:09:20.960
and then find a way so that
not only can I help myself, but

121
00:09:20.039 --> 00:09:26.960
I can help others. And that's
kind of the principle of capitalism in a

122
00:09:26.000 --> 00:09:28.840
sense, Like you can look at
capitalism from a negative lens, but if

123
00:09:28.879 --> 00:09:31.720
you look at from the positive lens. That's kind of the idea behind capitalism

124
00:09:31.879 --> 00:09:35.840
is that once you find a way
to elevate yourself so that you are not

125
00:09:35.960 --> 00:09:41.320
stuck, you then start looking for
ways to elevate other people. You know,

126
00:09:41.360 --> 00:09:45.000
you want to get employees, you
want to increase your service offering.

127
00:09:45.080 --> 00:09:48.440
Da dah dah da da. And
the open source is kind of it's kind

128
00:09:48.440 --> 00:09:54.080
of in a weird nomad's lens sometimes
because donations really don't work. They work

129
00:09:54.120 --> 00:09:56.440
if you have a project that gets
billions of downloads per month, but there's

130
00:09:56.720 --> 00:10:01.960
you know, how many projects get
billions downloads for a month and maybe twenty

131
00:10:01.000 --> 00:10:05.960
of them And I mean that's a
stupid number. I didn't do any research

132
00:10:05.000 --> 00:10:09.440
to arrive at that, but I
know that the number is small. And

133
00:10:09.480 --> 00:10:11.679
if you take out things that are
like left Pad that you know, might

134
00:10:11.679 --> 00:10:16.519
get billions of downloads a month but
don't have any business value because you could

135
00:10:16.559 --> 00:10:20.000
just you know, write that one
line of code on your own and you

136
00:10:20.000 --> 00:10:24.320
don't doesn't really save you any time, it doesn't, you know. So

137
00:10:24.440 --> 00:10:26.039
if you if you just focus on
things that are really valuable, like for

138
00:10:26.080 --> 00:10:31.440
example, view JS or React.
Well React is backed by Facebook, so

139
00:10:31.759 --> 00:10:37.440
react that what React is is it's
it's a tool for marketing. It's it's

140
00:10:37.480 --> 00:10:46.000
a way to market Facebook development basically
right and view jas is on the opposite

141
00:10:46.080 --> 00:10:50.279
side, it's a tool that wasn't
created and then released as a as a

142
00:10:50.360 --> 00:10:54.840
you know, more of a marketing
style effort to draw people in and attract

143
00:10:54.840 --> 00:10:58.799
them. Don't think that I'm making
some sort of moral call on like you

144
00:10:58.840 --> 00:11:01.919
know which way is right or wrong. These are tools, but they came

145
00:11:01.960 --> 00:11:07.279
about in different ways. But the
creator of ujs, in order to be

146
00:11:07.320 --> 00:11:11.480
able to devote time and attention to
it, has to create a way of

147
00:11:11.519 --> 00:11:16.279
supporting himself around it. And so
he was one of the very few people

148
00:11:16.320 --> 00:11:22.840
in the world to be able to
successfully use Patreon to actually be able to

149
00:11:22.559 --> 00:11:26.000
account for his own living expenses.
And it looks like, I don't know

150
00:11:26.000 --> 00:11:30.039
where he lives, but you know, he may be just kind of skating

151
00:11:30.080 --> 00:11:33.720
by if he's in the Bay Area, or if he's outside of the Bay

152
00:11:33.759 --> 00:11:35.639
Area, then you know he's definitely
making enough to cover his own costs and

153
00:11:35.679 --> 00:11:39.720
perhaps even hire an employee or something. So as your project grows, it

154
00:11:39.799 --> 00:11:45.320
has to change in order to continue. It's this paradox of you're either moving

155
00:11:45.360 --> 00:11:48.080
forwards or backwards. You're never standing
still. You're either climbing the ladder or

156
00:11:48.080 --> 00:11:52.360
you're falling down the slope. You're
never standing still. So as you get

157
00:11:52.679 --> 00:11:56.559
a project to a certain point,
you have to start to figure out what

158
00:11:56.600 --> 00:12:01.120
you're going to do to get support. I ran in an Indiegogo campaign.

159
00:12:01.679 --> 00:12:05.559
It was relatively successful. I got
about six thousand dollars because there was a

160
00:12:05.600 --> 00:12:09.960
little bit that came through a side
channel because forever reason people weren't weren't able

161
00:12:11.000 --> 00:12:15.600
to use the Indigogo platform. But
what it generated was enough to make me

162
00:12:15.720 --> 00:12:20.279
realize, a, this is actually
really valuable. It's not just sixty six

163
00:12:20.320 --> 00:12:26.519
thousand downloads from somebody's CIICD system that's
stuck in a loop, because there's definitely

164
00:12:26.600 --> 00:12:28.960
that that happens too. When you
look at your download count, there's there's

165
00:12:30.000 --> 00:12:35.240
definitely stuff that you're getting that's got
getting downloaded once per second just because somebody

166
00:12:35.320 --> 00:12:39.240
somewhere put in their CICD system and
it's got like a flaw and it's just

167
00:12:39.440 --> 00:12:43.000
running continuously. Right. So what
it validated to me is that this is

168
00:12:43.039 --> 00:12:46.159
something that people care about. It
is something that's important, and it is

169
00:12:46.200 --> 00:12:52.120
something that I'm not going to be
able to sustain just in my free time,

170
00:12:52.159 --> 00:12:54.480
nor do I want to. I
don't want this to just be something

171
00:12:54.519 --> 00:12:58.399
that sits stagnant. I want this
to be something that I can devote effort

172
00:12:58.519 --> 00:13:03.240
into and whatnot, And so I
have to think about, well, what

173
00:13:03.320 --> 00:13:07.480
can I do to bring more value
to the table. What can I do

174
00:13:07.600 --> 00:13:11.440
to help more people and to save
more people money? Because if I can

175
00:13:11.480 --> 00:13:15.720
save somebody a hundred bucks, most
people would be pretty happy to pay ten

176
00:13:15.799 --> 00:13:18.559
dollars to save one hundred dollars.
So as I look forward to, like,

177
00:13:18.679 --> 00:13:22.320
you know, what can I do, how could I put in management

178
00:13:22.360 --> 00:13:26.960
tools? How could I integrate with
a cloud service? Because people are integrating

179
00:13:26.039 --> 00:13:30.960
with S three to store their certificates, some of them are you know,

180
00:13:30.960 --> 00:13:33.120
trying to figure out how to do
encryption on the certificate so it's not sort

181
00:13:33.159 --> 00:13:37.720
of plain text. Blah blah blah. I'm thinking about this and there's a

182
00:13:37.759 --> 00:13:39.919
lot to unpack here. I mean, you kind of run through kind of

183
00:13:39.960 --> 00:13:45.279
a stream of consciousness with a lot
of this, and I'm trying to decide

184
00:13:45.320 --> 00:13:48.720
which thread to pick up first,
right, because we've got the issue of

185
00:13:48.840 --> 00:13:54.919
just maintaining the code right and getting
feedback from users, and then we've got

186
00:13:54.000 --> 00:14:00.240
the issue of possibly you know,
financial backing and things like that. And

187
00:14:00.759 --> 00:14:05.519
we've seen folks like Evan You and
Henry Zoo and a few other folks actually

188
00:14:05.559 --> 00:14:09.200
get some kind of backing through open
Collective or Patreon and make that work.

189
00:14:09.279 --> 00:14:13.759
And then you know, we're also
talking about yeah, you know, roadmapping

190
00:14:13.799 --> 00:14:18.720
as far as like integrations and things
like that. So I don't know where

191
00:14:18.720 --> 00:14:22.720
do you all want to start,
Amy, Steve aj Do you have one

192
00:14:22.759 --> 00:14:24.639
of these areas that you want to
kind of pick on first, because I'd

193
00:14:24.679 --> 00:14:28.000
kind of like to just work through
all of them, but I don't know

194
00:14:28.000 --> 00:14:31.279
which one to go at first.
Oh, it's good, kind of that's

195
00:14:31.360 --> 00:14:35.440
kind of backstory. I did want
to go into the process of the actual

196
00:14:35.480 --> 00:14:39.879
iteration. Oh, okay, so
you want to set that up for us

197
00:14:39.919 --> 00:14:45.000
then yeah. So when you get
a project and it's got some popularity and

198
00:14:45.000 --> 00:14:48.320
people rely on it, they develop
certain expectations about like what they're familiar with,

199
00:14:48.559 --> 00:14:52.960
what they're used to. I mean, I set up the story because

200
00:14:52.200 --> 00:14:56.399
there needed to be an ideological shift, because I wanted to be able to

201
00:14:56.799 --> 00:15:00.320
capture the value of what I create
so I can create even greater value.

202
00:15:01.039 --> 00:15:05.840
So I you know, when I
look at okay, as I'm building out

203
00:15:05.879 --> 00:15:11.559
these changes for what's necessary and the
API changes, there's so much old stuff.

204
00:15:11.039 --> 00:15:13.759
I mean, if you've maintained a
project for a couple of years.

205
00:15:15.000 --> 00:15:18.519
You get this old crappy cruft in
there, and it becomes really delicate where

206
00:15:18.919 --> 00:15:26.039
you can't take code out because if
you do, even though it's like maybe

207
00:15:26.039 --> 00:15:30.399
crufty code, you know it breaks
something for someone. You can get to

208
00:15:30.440 --> 00:15:33.000
a point, I mean, especially
when it's not well defined. When you've

209
00:15:33.000 --> 00:15:35.399
got a project that's a little bit
larger I mean large is maybe not the

210
00:15:35.440 --> 00:15:39.240
right word, but the medium size. You don't know everything when you start,

211
00:15:39.360 --> 00:15:43.399
so your first version is crappy and
your second version might be just as

212
00:15:43.440 --> 00:15:46.759
crappy. But you don't know everything
when you start. You're figuring it out,

213
00:15:46.360 --> 00:15:50.519
and when you try to keep compatibility, you end up in these cases

214
00:15:50.519 --> 00:15:52.279
where you had some bad spaghetti code. You cleaned it up, you change

215
00:15:52.320 --> 00:15:56.320
the API a little bit, but
kept backwards compatibility so you can update the

216
00:15:56.320 --> 00:15:58.320
dots and say no, do it
this way, but you don't remove the

217
00:15:58.360 --> 00:16:00.559
old way of doing it, so
it doesn't break for any boy. You

218
00:16:00.720 --> 00:16:03.399
try to, like you know,
progressively enhance it, clean it up as

219
00:16:03.399 --> 00:16:07.360
you go, and you start to
run in these problems where you can't you

220
00:16:07.399 --> 00:16:11.279
literally can't fix a bug because you
find a bug and you say, oh,

221
00:16:11.320 --> 00:16:18.480
well, if I fix this bug, it's going to cause this backwards

222
00:16:18.480 --> 00:16:22.200
compatibility to break, or it's going
to cause something else to break. You

223
00:16:22.240 --> 00:16:27.159
get things like that, then you
get ideological shifts of realizing like, hey,

224
00:16:27.159 --> 00:16:30.720
if people want to put this in
Docker, if people want to be

225
00:16:30.759 --> 00:16:34.320
able to scale this out, you
can't have everything imperative in the code.

226
00:16:34.919 --> 00:16:38.279
It needs to be made declarative.
There needs to be you know, a

227
00:16:38.759 --> 00:16:44.840
YAML file, adjacent file something like
that where you know somebody can use a

228
00:16:44.840 --> 00:16:49.600
tool manipulate manipulate this fairly simply maybe
use a CLI tool with an environment variable

229
00:16:49.679 --> 00:16:55.080
or something like that, and then
you shift the way you know, the

230
00:16:55.120 --> 00:16:57.240
way that config is done or something
like that. So as you grow,

231
00:16:59.080 --> 00:17:03.240
you have to tease things apart.
You have to eventually have a major version

232
00:17:03.320 --> 00:17:07.799
so you can get rid of old
crappy code and you get feedback. And

233
00:17:07.680 --> 00:17:12.640
the feedback that you get a lot
of times it's going to be from the

234
00:17:12.680 --> 00:17:18.960
people that loved you the way you
were before the most and are most frustrated

235
00:17:18.240 --> 00:17:25.000
about the changes that you're making.
And sometimes they've got really valid feedback.

236
00:17:25.319 --> 00:17:27.920
I mean, all feedback is valid
because people's feelings are valid. It's not

237
00:17:27.960 --> 00:17:33.160
necessarily feedback you need to act on. But sometimes you get feedback where they

238
00:17:33.880 --> 00:17:38.799
help you to learn what you're not
seeing. They help you to see,

239
00:17:40.160 --> 00:17:45.839
well, the people that are willing
to support this project on the whatever service

240
00:17:45.559 --> 00:17:48.720
they primarily have this use case,
there's people. They're the people that are

241
00:17:48.720 --> 00:17:53.119
making more money, so they're the
people that need to scale more. They're

242
00:17:53.160 --> 00:17:57.079
the people that are willing to support
you more. But a majority of your

243
00:17:57.160 --> 00:18:00.240
user base might be the one off
person, you know, the little guy

244
00:18:00.279 --> 00:18:03.000
that you started fighting for in the
beginning, which is the reason you know,

245
00:18:03.039 --> 00:18:07.279
this whole open source project got started, and the way that they use

246
00:18:07.319 --> 00:18:11.920
it is different, and you can
come into conflict where you have different sets

247
00:18:11.920 --> 00:18:15.599
of priorities. You got, well, here are the people that are actually

248
00:18:15.640 --> 00:18:21.680
helping the project live on, and
here are the people that are maybe a

249
00:18:21.720 --> 00:18:26.279
greater user base that's maybe not as
in a good position to be able to

250
00:18:26.400 --> 00:18:30.960
help bring value back to you with
you know, in their despite their gratitude,

251
00:18:32.000 --> 00:18:34.119
they're you know, perhaps not in
a place where they can can help

252
00:18:34.119 --> 00:18:37.279
support the project in that way.
And you get valuable feedback and it,

253
00:18:37.440 --> 00:18:41.559
you know, it shows you both
perspectives and you have to make choices in

254
00:18:41.599 --> 00:18:45.440
a matter which choice you make,
you're going to, you know, cause

255
00:18:45.599 --> 00:18:52.839
inconvenience to someone either going to you're
going to continue to not support use cases

256
00:18:52.599 --> 00:18:57.319
that will not supporting them will hinder
the growth of the project and the reach

257
00:18:57.359 --> 00:19:02.039
of the project and the ability for
it to affect more people more broadly,

258
00:19:02.559 --> 00:19:07.799
or you're going to inconvenience people that
are you know, loyal supporters, fans

259
00:19:07.799 --> 00:19:15.119
perhaps even did contribute and don't need
that new feature or don't like the quote

260
00:19:15.200 --> 00:19:19.519
unquote cleaner API, et cetera.
And it's tough, like it puts you

261
00:19:19.599 --> 00:19:23.839
in a tough position to make choices
as you are going through and iterating and

262
00:19:23.880 --> 00:19:27.720
making changes. It makes me think
about the h I think, what do

263
00:19:27.759 --> 00:19:32.640
they call it? An RSC request
for comment for view three where they talked

264
00:19:32.640 --> 00:19:38.519
about the new API and the blowback
they got from people was just crazy.

265
00:19:38.880 --> 00:19:44.640
I know. Eric Hanchett did a
YouTube video just saying, Hey, this

266
00:19:44.680 --> 00:19:45.720
is what it is. What do
you guys think? And he was just

267
00:19:45.759 --> 00:19:48.920
surprised at a lot of the blowback
he got because oh, you're going to

268
00:19:48.960 --> 00:19:51.960
break this, and oh this is
a new way to do it, and

269
00:19:52.160 --> 00:19:53.279
why are you doing this? And
so on and so forth, and the

270
00:19:53.359 --> 00:19:56.720
view people are like, WHOA,
We're just asking for comment, that's all

271
00:19:56.759 --> 00:19:59.599
we're asking for. You know,
we're not saying, yeah, this is

272
00:19:59.599 --> 00:20:02.599
we're going to do it, and
we're going to deprecate everything in View two.

273
00:20:02.759 --> 00:20:07.519
And I think they've they're trying to
walk the fine line between enhancing and

274
00:20:07.559 --> 00:20:11.880
making the project better by adding new
features, while at the same time not

275
00:20:12.079 --> 00:20:18.079
deprecating stuff that's going to blow away
everybody who's using View two and wants to

276
00:20:18.160 --> 00:20:21.160
update to V three. You know, I've seen the same thing in the

277
00:20:21.200 --> 00:20:23.359
droupil project over the years, where
you know, at some point you've got

278
00:20:23.359 --> 00:20:27.079
to deprecate old stuff just to you
know, get rid of all the craft

279
00:20:27.119 --> 00:20:33.079
and make the code somewhat more the
code based, smaller and more efficient.

280
00:20:33.680 --> 00:20:37.519
But at the same time, you
got to want to maintain some backwards compatibility

281
00:20:37.599 --> 00:20:40.680
so you don't blow everybody out of
the water all at once. It's certainly

282
00:20:40.680 --> 00:20:44.440
a fine line to walk. Yeah, really is. It also reminded me

283
00:20:44.559 --> 00:20:49.039
of somebody who's on this panel who
has complained about changes to the JavaScript language

284
00:20:49.039 --> 00:20:53.440
in the past. It's interesting because
you see so many perspectives, especially with

285
00:20:53.519 --> 00:20:57.200
us talking to different people every week, and some people love the changes and

286
00:20:57.200 --> 00:21:00.799
some people hate the changes, and
so it's you know, it's looking at

287
00:21:00.799 --> 00:21:04.359
it and going okay, you know, how does this actually shake down and

288
00:21:04.480 --> 00:21:10.200
how many people does it help versus
frustrate versus actually cause you know, major

289
00:21:11.000 --> 00:21:14.680
problems in their coding anyway, and
things like that. So so on that

290
00:21:14.799 --> 00:21:18.920
note, let me let me add
something to if that's cool, do it?

291
00:21:19.440 --> 00:21:23.880
I mean, I mean there's also
the case of like Angular and Angular

292
00:21:23.960 --> 00:21:32.680
JS, which you know, things
change so drastically that they really had to

293
00:21:32.759 --> 00:21:38.279
like support both ways of going about
things, because making the change to get

294
00:21:38.319 --> 00:21:42.440
out of Angular JS was going to
be like such a massive overhaul for people.

295
00:21:44.240 --> 00:21:47.519
Yeah, I think it's interesting what
you're pointing out, Amy, and

296
00:21:47.640 --> 00:21:49.839
you know my examples along the same
lines right where it was a major shift

297
00:21:51.240 --> 00:21:55.480
ES five, S six, where
I think AJ in some ways is talking

298
00:21:55.559 --> 00:21:57.640
about things like that. In other
ways is talking about where it's sort of

299
00:21:57.680 --> 00:22:03.240
the we might add these features,
but most of the old way of doing

300
00:22:03.319 --> 00:22:07.559
it will still work. That VIEWJS
has taken right. So in my case,

301
00:22:07.680 --> 00:22:12.079
one of the decisions that I struggled
to make. One of the reasons

302
00:22:12.119 --> 00:22:17.200
that I you know, I've been
so against the language breaking changes in JavaScript,

303
00:22:17.240 --> 00:22:22.279
Like I'm not opposed to adding like
cool features that we need. I've

304
00:22:22.279 --> 00:22:26.160
been more opposed to breaking the syntax
of the language such that if a feature

305
00:22:26.200 --> 00:22:30.880
is missing, like say a string
prototype is missing, you know, maybe

306
00:22:30.960 --> 00:22:34.559
ninety percent of your application can run
in an old version of Node or you

307
00:22:34.559 --> 00:22:37.960
know, And it's a very small
shim to add a prototype to the string.

308
00:22:38.680 --> 00:22:42.000
I hesitate to the word class,
but I'm working a lot and Go

309
00:22:42.119 --> 00:22:45.640
and rust now and I don't have
classes either. Actually I don't know that

310
00:22:47.480 --> 00:22:51.680
structs. I don't want it anyway. But you know, you do something

311
00:22:51.720 --> 00:22:53.759
like a sync a weight, and
it's not like, oh, you know,

312
00:22:53.880 --> 00:22:57.920
let me bug fix this. Let
me make a one line change where

313
00:22:57.920 --> 00:23:03.319
I have a compatibility JS and I
add the string prototype that now you know

314
00:23:03.359 --> 00:23:06.920
has the includes function or the start
pad function. You know, it's not

315
00:23:07.000 --> 00:23:11.400
like that you use a sink a
weight and now all of a sudden it

316
00:23:11.519 --> 00:23:17.920
is hard broken for everyone that does
not have a recent enough version to support

317
00:23:17.960 --> 00:23:21.440
that. So I actually have a
ton of people on Node six And it

318
00:23:21.480 --> 00:23:26.200
was kind of like I went back
and forth, and I started out trying

319
00:23:26.200 --> 00:23:30.839
to you know, not use anything
other than simple additions that are non language

320
00:23:30.839 --> 00:23:36.160
breaking additions like you know, started
using include start pad inpad, that kind

321
00:23:36.200 --> 00:23:40.400
of thing where necessary. But I
experimented a little bit with asink a weight,

322
00:23:40.440 --> 00:23:42.839
and I definitely think a synco weight
is something that's more for experts.

323
00:23:44.079 --> 00:23:48.279
I don't know why people try to
get novices on it because it has semantics

324
00:23:48.319 --> 00:23:52.759
that if you don't use them,
like first of you have to mix async

325
00:23:52.759 --> 00:23:56.240
a weight and promises, otherwise you're
going to have an ugly API. Either

326
00:23:56.279 --> 00:24:00.440
way, you're either going to have
the tree of death from the promise or

327
00:24:00.440 --> 00:24:03.319
you're going to have the tree of
death from try catch. And so if

328
00:24:03.319 --> 00:24:07.039
somebody doesn't understand promises, I really
think they shouldn't get into a sink of

329
00:24:07.079 --> 00:24:11.160
weight until they understand the basics first, because it's it's a syntax change,

330
00:24:11.279 --> 00:24:15.839
it it's kind of a big deal. But anyway, because it allowed me

331
00:24:17.279 --> 00:24:22.920
to reduce some complexity in the code, I felt like it was appropriate timing.

332
00:24:23.039 --> 00:24:26.960
And because you know, somebody else
pointed out that Node six is now

333
00:24:26.279 --> 00:24:32.359
no longer supported security wise, like
it's it's dead, like they're not doing

334
00:24:32.480 --> 00:24:36.079
long term support updates anymore. And
so with it falling off the long term

335
00:24:36.119 --> 00:24:40.279
support bandwagon, I decided that,
you know, i'd use a sink a

336
00:24:40.279 --> 00:24:42.200
weight and you know, of course, of course, when you know,

337
00:24:42.359 --> 00:24:45.000
one of the first issues I get
opened is like, ah, you broke

338
00:24:45.039 --> 00:24:48.240
my like you broke this bad,
Like you broke this really bad. Like

339
00:24:48.720 --> 00:24:52.519
now I have to upgrade from node
six to node eight or ten or twelve

340
00:24:52.599 --> 00:24:56.640
or something, and no matter which
version I pick, something else in my

341
00:24:56.720 --> 00:25:00.599
stack doesn't work. You know,
that's frustrating for somebody. But I thought

342
00:25:00.759 --> 00:25:06.200
on a whole it would help hopefully
get more contribution and support in the future

343
00:25:06.279 --> 00:25:10.119
to have I don't know, I'm
kind of on the fence about it.

344
00:25:10.160 --> 00:25:14.799
Still, it definitely has helped me
to consolidate some areas of the code.

345
00:25:15.279 --> 00:25:18.440
I don't know that most people are
what I would consider expert enough to know

346
00:25:18.480 --> 00:25:21.359
when is the right place for race
and kuwait and when's the right place for

347
00:25:21.400 --> 00:25:25.319
a promise? So see how well
it helps people contribute to the code,

348
00:25:25.359 --> 00:25:27.960
but at least makes it easier to
read in some places. I think this

349
00:25:29.160 --> 00:25:33.319
is really where these decisions get interesting, right, I Mean, in some

350
00:25:33.400 --> 00:25:37.799
cases it's like, well, the
majority of my users are going to be

351
00:25:37.839 --> 00:25:41.480
on node eight or node ten or
node twelve, and so I can kind

352
00:25:41.519 --> 00:25:47.519
of count on them having ace and
kuwait and then others it's going to be

353
00:25:47.559 --> 00:25:51.799
a different story right where it's you
know, folks still on node six and

354
00:25:51.880 --> 00:25:56.960
so it's going to break it,
and you know, moving forward, you

355
00:25:56.000 --> 00:25:59.839
can kind of assume that more and
more people are just going to come in

356
00:25:59.880 --> 00:26:03.960
and use whatever the current version of
node is, even if they stay there

357
00:26:03.000 --> 00:26:07.640
for a long time. And so
you've got this, you know, when

358
00:26:07.720 --> 00:26:12.759
is the right time to move right
when is there enough momentum forward or enough

359
00:26:12.880 --> 00:26:18.799
people using the current version to where
I can get away with making that upgrade

360
00:26:18.839 --> 00:26:23.880
or making that move because it kind
of future proofs simplifies some things, and

361
00:26:23.920 --> 00:26:29.079
so there's a positive trade off.
And then at the same time, it's

362
00:26:29.119 --> 00:26:32.279
like, Okay, well, then
what do I do for all of the

363
00:26:32.319 --> 00:26:36.759
people who are still on node six
that I want to support? But at

364
00:26:36.799 --> 00:26:38.759
the same time, I'm feeling like
this is the right direction to go because

365
00:26:38.759 --> 00:26:44.160
this is the direction the language is
going in. So and something that you

366
00:26:44.200 --> 00:26:48.000
bring up here. So get lab
just had some backlash, and I think

367
00:26:48.039 --> 00:26:51.880
they totally didn't deserve it, but
they also did deserve it, not that

368
00:26:51.920 --> 00:26:56.559
they deserved it and that I'm passing
a moral judgment on them. But everything's

369
00:26:56.599 --> 00:27:00.559
all about framing and context. And
you know, we all want to help

370
00:27:00.559 --> 00:27:03.160
our users, we all want to
do the right thing. Well, I

371
00:27:03.160 --> 00:27:06.920
mean most of us anyway, there's
definitely there's definitely some stuff out there that's

372
00:27:06.960 --> 00:27:11.160
not morally right. In my opinion, people making choices because they intend to

373
00:27:11.680 --> 00:27:15.680
take advantage rather than to help.
But I think in the case of get

374
00:27:15.759 --> 00:27:22.319
lab, they were trying to help
their customer base, and they message some

375
00:27:22.599 --> 00:27:26.039
changes in a way that really struck
people wrong. And I've had that same

376
00:27:26.079 --> 00:27:29.960
problem myself. But what I'm getting
is you need to have analytics to make

377
00:27:30.000 --> 00:27:34.480
those choices. You need to have
data to say, like, okay,

378
00:27:34.519 --> 00:27:37.720
most of my user base is on
node eight, most of my user base

379
00:27:37.799 --> 00:27:41.960
is on node twelve. Like,
you need to have data in order to

380
00:27:42.079 --> 00:27:48.480
be able to make good choices about
how to best serve you your user base.

381
00:27:48.839 --> 00:27:51.839
And in the case of get lab, they did something that I had

382
00:27:51.839 --> 00:27:55.119
done before, they introduced telemetry,
and they didn't frame it in a way

383
00:27:55.160 --> 00:27:59.319
that people understood that it was to
help them. And there's a lot of

384
00:28:00.400 --> 00:28:03.880
about privacy concerns, and I don't
I don't think privacy is really the issue

385
00:28:03.880 --> 00:28:07.599
as much as it is choice.
But you know, there's there's a lot

386
00:28:07.640 --> 00:28:12.599
of thud out there about privacy,
and so sometimes things that are you know,

387
00:28:12.720 --> 00:28:18.440
benign and even helpful get attacked when
I don't think they really deserve it.

388
00:28:18.960 --> 00:28:23.160
And with Greenlock, you know,
what I found is that the people

389
00:28:23.160 --> 00:28:27.240
that are using this product, they
rely on it. They want to know

390
00:28:27.720 --> 00:28:32.960
if something is going to affect their
ability to serve their customers or you know,

391
00:28:33.000 --> 00:28:36.720
serve their personal websites or whatever.
And so the way that I was

392
00:28:36.799 --> 00:28:45.000
able to better serve them without causing
a STIR is a clearly label that they

393
00:28:45.079 --> 00:28:52.119
submit a maintainer email and that there
is a user agent string for the ACME

394
00:28:52.519 --> 00:28:59.319
client which is part of the specification
of the protocol, and let them know

395
00:29:00.039 --> 00:29:02.960
when they use it, they get
an email from me that says, hey,

396
00:29:03.519 --> 00:29:06.519
you know, you've been added as
a as a maintainer for a project.

397
00:29:06.640 --> 00:29:11.759
Using greenlock, You're going to get
the following notices critical security fixes,

398
00:29:11.400 --> 00:29:18.920
important bug fixes, and breaking API
changes. You may also get a one

399
00:29:18.960 --> 00:29:25.480
time message in regards to your usage
to Greenlock because I I don't I foresee

400
00:29:26.160 --> 00:29:29.119
that. I there's there's some things
that I want to put in place that

401
00:29:29.160 --> 00:29:33.119
aren't in place yet, where I
want to be able to reach out to

402
00:29:33.160 --> 00:29:37.039
the people that have already been using
it and let them know. I don't

403
00:29:37.039 --> 00:29:38.519
want this to be like a subscription
thing where they're going to have botombarded with

404
00:29:38.559 --> 00:29:44.200
messages from me or anything. But
I want to give people the ability to

405
00:29:44.880 --> 00:29:48.400
know about features that are coming down
the pipeline. I'll have like a newsletter

406
00:29:48.519 --> 00:29:52.519
or something later on, but I
just put that one line in there so

407
00:29:52.559 --> 00:29:55.480
that you know, people know that
I may, I may come to a

408
00:29:55.480 --> 00:29:57.480
point where I want to, you
know, send out something in regards to

409
00:29:57.519 --> 00:30:03.000
the usage of Greenlock, either asking
about it or announcing something that's outside of

410
00:30:03.039 --> 00:30:07.359
those three bullet points. But it's
not an ongoing thing. It's just going

411
00:30:07.440 --> 00:30:10.759
to be, you know, so
I can get some stuff set up and

412
00:30:11.759 --> 00:30:15.000
let people opt in and not bother
them. And that seems to have been

413
00:30:15.039 --> 00:30:18.720
received incredibly well. I tried once
before, and I feel like I got

414
00:30:18.920 --> 00:30:23.720
more pushback on it in the way
that I presented it, but in you

415
00:30:23.759 --> 00:30:27.119
know, and having these maintainer emails. It gives me a link to my

416
00:30:27.200 --> 00:30:32.079
community to be able to reach out
to them for something that's important when I

417
00:30:32.640 --> 00:30:34.400
when I need to, because there
are security updates that are going to be

418
00:30:34.440 --> 00:30:38.160
coming in node perhaps Node fourteen that
you know, I'll be able to let

419
00:30:38.200 --> 00:30:41.119
people know like, hey, if
you upgrade to node fourteen, you're going

420
00:30:41.160 --> 00:30:45.079
to get these you know, security
benefits that weren't there. If I find

421
00:30:45.119 --> 00:30:48.839
a security flaw in my product,
I can let people know. And because

422
00:30:48.839 --> 00:30:53.039
this is about SSL, that makes
sense. Like it there's no cognitive dissidence

423
00:30:53.079 --> 00:30:56.200
about letting people know about you know, security issues. So it's an open

424
00:30:56.200 --> 00:31:02.759
line of communication. And then you
know, because it has the user agent

425
00:31:02.839 --> 00:31:07.440
that lets me know what no version, then I also have information to say,

426
00:31:07.440 --> 00:31:11.519
okay, well, when somebody installs
this and registers their maintainer email,

427
00:31:11.200 --> 00:31:18.200
I now know approximately you know,
I get some feel for what no version

428
00:31:18.240 --> 00:31:21.240
people are on. So if I
make a change and I need to announce

429
00:31:21.319 --> 00:31:23.920
like, hey, this change is
being made for this reason, you need

430
00:31:23.960 --> 00:31:27.480
to have no ten in order to
you know, for this to work,

431
00:31:27.519 --> 00:31:30.400
don't upgrade if you don't have NO
ten, I feel like that gives me

432
00:31:30.440 --> 00:31:33.559
an avenue where I can make a
change it's not a breaking API change,

433
00:31:33.680 --> 00:31:38.319
but might require a new feature or
something, and keep the communication open and

434
00:31:38.480 --> 00:31:42.640
you know, continue to serve the
audience that's participating and do it in a

435
00:31:42.640 --> 00:31:48.440
way that's transparent and everybody can feel
good. Yeah. I like the approach

436
00:31:48.480 --> 00:31:52.799
of transparency and it's I mean,
it's it's interesting too. I've talked to

437
00:31:52.839 --> 00:31:56.599
a number of people in open source
and it seems like that's part of the

438
00:31:56.640 --> 00:32:00.000
issue that they run into is just
the messaging and how how do I keep

439
00:32:00.000 --> 00:32:05.200
people up to date on what's going
on and things like that. And I

440
00:32:05.200 --> 00:32:08.720
mean it's tough because some people will
opt into your email list and some people

441
00:32:08.839 --> 00:32:13.000
won't write, and so they're going
to be in a position where you're going

442
00:32:13.039 --> 00:32:16.079
to change something and then they're going
to come looking for you when things don't

443
00:32:16.079 --> 00:32:19.960
go the way that they want or
when they hear the rumor that there's a

444
00:32:20.000 --> 00:32:23.240
security issue or something like that.
And so I love kind of having that

445
00:32:23.359 --> 00:32:27.279
default place where it's like, look, this is how I keep people up

446
00:32:27.279 --> 00:32:30.200
to date. These are the kinds
of updates you're going to get. And

447
00:32:30.920 --> 00:32:36.920
yeah, then people can kind of
get actively subscribed to a place where they

448
00:32:36.920 --> 00:32:42.079
can get that information. I've also
seen certain projects do like blogs and then

449
00:32:42.119 --> 00:32:45.799
you can sign up for like push
notifications on your computer through your browser,

450
00:32:45.319 --> 00:32:50.799
and so you get notifications that way. And I've seen other outreaches through like

451
00:32:50.920 --> 00:32:52.559
Slack and things like that where it's
like, hey, there's a channel for

452
00:32:53.279 --> 00:32:57.720
you know, package updates and stuff
that only the maintainers can push to and

453
00:32:57.759 --> 00:33:00.640
things like that. And so I've
seen a lot of methods like that that

454
00:33:00.960 --> 00:33:05.920
keep that line of communication open.
And I really love the approach of just

455
00:33:06.000 --> 00:33:07.519
you know, having that place where
it's like, hey, look, this

456
00:33:07.599 --> 00:33:10.640
is where you get help, this
is where you get updates, this is

457
00:33:10.680 --> 00:33:15.640
where you get other information. Here's
where you get the walkthroughs on how to

458
00:33:15.680 --> 00:33:19.480
start up and all that stuff.
Yeah, And I mean the biggest,

459
00:33:19.720 --> 00:33:22.480
the biggest challenge I'm facing right now
with Greenlock is I came out with my

460
00:33:22.519 --> 00:33:27.000
initial V three and I got only
a lot of feedback on it from existing

461
00:33:27.079 --> 00:33:30.960
users, many of them actually were
paid supporters on any Go Go. And

462
00:33:31.480 --> 00:33:36.960
I know that I want to set
this project up for a couple of things.

463
00:33:36.960 --> 00:33:40.000
One, I don't want to have
sixteen different ways of doing something.

464
00:33:40.720 --> 00:33:45.400
I want it to be customizable.
But I don't want it to be like,

465
00:33:45.000 --> 00:33:47.519
for this use case, you do
it this way. For this use

466
00:33:47.559 --> 00:33:50.519
case, you do it this way. I don't want it to be different.

467
00:33:50.559 --> 00:33:52.799
Basically, I don't want it to
be different packages. I want it

468
00:33:52.799 --> 00:33:55.680
to just be one package with one
set of documentation that no matter who you

469
00:33:55.720 --> 00:34:00.000
are, kind of progressively enhance customization. Like here's how you go from zero

470
00:34:00.079 --> 00:34:05.000
to one. Here's how you go
from you don't have an SSL certificate to

471
00:34:05.079 --> 00:34:07.880
you do have an SSL certificate,
and then you know, below the fold,

472
00:34:08.239 --> 00:34:12.480
here's how you go from one to
a dozen. Like you might want

473
00:34:12.519 --> 00:34:15.440
to turn on these configuration options if
you're this size of business, and then

474
00:34:15.559 --> 00:34:21.039
how do you go from you know, a dozen to one hundred or thousand.

475
00:34:21.519 --> 00:34:24.679
Here are some additional configuration options that
you might want to put on and

476
00:34:24.719 --> 00:34:29.079
what it means, Like I introduced
a CLI because I'm like, Okay,

477
00:34:29.760 --> 00:34:32.280
the configuration can't live in the code
anymore. It's not scalable. It doesn't

478
00:34:32.320 --> 00:34:37.679
work well for you know, deployment
situations with with Docker, it doesn't work

479
00:34:37.719 --> 00:34:40.440
well for reproducibility as in, like
if I'm a person like some of us

480
00:34:40.480 --> 00:34:44.800
are where we work with multiple clients
and we want to quickly be able to

481
00:34:44.840 --> 00:34:47.280
get them set up with you know, this web app service that's got the

482
00:34:47.360 --> 00:34:51.360
SSL baked in. You kind of
want to just be able to get cloned

483
00:34:51.400 --> 00:34:53.480
the same repo, you know,
your starter pack for your you know,

484
00:34:53.519 --> 00:34:58.639
your project template, and then not
have to go edit code. You want

485
00:34:58.679 --> 00:35:01.920
to just be able to a configuration
tool that generates a Jason file, or

486
00:35:02.159 --> 00:35:05.440
you know, copy and paste a
Jason file and change a couple of things.

487
00:35:05.480 --> 00:35:07.679
You don't want to go in and
generate the code, like there's what

488
00:35:07.719 --> 00:35:10.480
you commit to a repository, and
there's what you can figure per client.

489
00:35:12.039 --> 00:35:15.760
So that needed to be separated,
and in order to make it easy,

490
00:35:15.800 --> 00:35:17.360
I thought, okay, some people
are not going to like this. Some

491
00:35:17.360 --> 00:35:20.679
people are not going to like that. Where there used to be one file

492
00:35:21.000 --> 00:35:24.280
where you go in and you put
everything in in the imperative fashion, now

493
00:35:24.280 --> 00:35:29.480
there's going to be two files,
where one is the code with very little

494
00:35:29.519 --> 00:35:31.800
customization, like almost everybody's file,
you know, seventy percent of the files

495
00:35:31.800 --> 00:35:35.639
are going to be the exact same
lines, and then there's going to be

496
00:35:35.880 --> 00:35:38.000
a Jason file. It's going to
be your configuration like these are the domains

497
00:35:38.039 --> 00:35:40.880
or whatever and so I thought,
well, to make this transition easy,

498
00:35:40.960 --> 00:35:45.480
I'll add a CLI tool so you
can do NPX greenluck in it, and

499
00:35:45.519 --> 00:35:50.119
it actually generates the file for you
that has like the ten lines in it

500
00:35:50.159 --> 00:35:52.360
that you need to get started to
go from zero to one, so you

501
00:35:52.360 --> 00:35:55.360
don't even have to copy and paste
it like you do the NPM install,

502
00:35:55.400 --> 00:35:59.800
and then you do NPX green luck
at it and boom like there you are.

503
00:36:00.119 --> 00:36:02.639
It generates it for you. If
you need to open up and customize

504
00:36:02.639 --> 00:36:07.239
something, you can, but most
people won't need to, so it's just

505
00:36:07.400 --> 00:36:10.280
bom, it's done. And then
I'll have, you know, instead of

506
00:36:10.360 --> 00:36:15.320
having to edit the config file by
hand, you can just run NPX greenlock

507
00:36:15.440 --> 00:36:22.599
defaults agreed to terms true and mpx
greenlock sites add my example dot com.

508
00:36:23.039 --> 00:36:27.280
And so I thought this was going
to be a big hit because not only

509
00:36:27.639 --> 00:36:31.800
does it mitigate the problem of the
you know, having now an additional Jason

510
00:36:31.880 --> 00:36:36.519
file, but it makes it so
you can use environment variables and doctor scripts.

511
00:36:36.800 --> 00:36:42.320
It makes it so that you can
not have to worry about syntax errors

512
00:36:42.480 --> 00:36:46.199
or typos in the config file or
the code. Like to me, this

513
00:36:46.320 --> 00:36:51.360
is just it's all around a better
solution that I see as better for everyone

514
00:36:52.079 --> 00:36:55.000
and more scaleable, so it helps
the people that are only doing one site

515
00:36:55.119 --> 00:36:59.320
more, helps the people that are
doing a thousand sites more. This is

516
00:36:59.400 --> 00:37:00.480
I mean to me, just thinking, wow, this is great. And

517
00:37:00.760 --> 00:37:04.760
initially I shared it with a couple
of people and you know, got some

518
00:37:04.840 --> 00:37:07.000
pats on the back. Actually the
idea came from talking with people about the

519
00:37:07.079 --> 00:37:09.800
changes, and you know, got
some pats on the backs like wow,

520
00:37:09.840 --> 00:37:13.880
this is great, like thanks,
it's awesome. And then you know,

521
00:37:14.039 --> 00:37:17.760
I let more people know about it, and I just immediately started getting really

522
00:37:17.800 --> 00:37:22.760
negative feedback, like oh my gosh, Like I don't want to have to

523
00:37:22.800 --> 00:37:25.159
deal with the CLI. This used
to be so simple. All I had

524
00:37:25.360 --> 00:37:30.280
was, you know, a JS
file and now there's a JS file and

525
00:37:30.320 --> 00:37:34.039
a config file and a CLI and
da dad, And I'm like, whoa,

526
00:37:34.119 --> 00:37:37.760
Like you can edit the config file
directly like this, you don't have

527
00:37:37.840 --> 00:37:39.480
to use the CLI. Butt.
I was just so surprised, because you

528
00:37:39.480 --> 00:37:42.800
know, I felt like I did
something that was really good and it made

529
00:37:42.800 --> 00:37:45.559
a lot of sense, you know, especially strategically, and you know,

530
00:37:45.639 --> 00:37:50.199
also from new people that were coming
into the project. It was very validating

531
00:37:50.199 --> 00:37:52.639
because I could see new people were
using the CLI. It was helping them

532
00:37:52.639 --> 00:37:54.639
get up and started quick and fast. They weren't having any problems. They

533
00:37:54.639 --> 00:37:58.440
weren't you know, contacting me that
you know, they weren't opening issues.

534
00:37:58.440 --> 00:38:01.440
They're just boom. You know,
I can see there were some issues that

535
00:38:01.480 --> 00:38:05.639
were opened, but you know,
I could see that the COLI usage was

536
00:38:05.679 --> 00:38:08.880
helping people. But yet the people
that were you know, my my biggest

537
00:38:08.880 --> 00:38:13.639
fans in some cases really didn't like
it. And it was it was hard

538
00:38:13.760 --> 00:38:17.480
to like, how do I handle
this situation, Like the people that are

539
00:38:17.719 --> 00:38:22.119
supporting me, some of them don't, you know, don't like these changes,

540
00:38:22.159 --> 00:38:24.719
and I want to make things easy
for them. And eventually I kind

541
00:38:24.719 --> 00:38:28.719
of had to resolve to, well, you know, some of this,

542
00:38:28.800 --> 00:38:31.880
it's just people don't like it because
it's different. It's not that it's more

543
00:38:31.880 --> 00:38:36.320
complicated or that it's simpler, it's
that it's different. If they had encountered

544
00:38:36.440 --> 00:38:42.320
the read me for the first time
ever today, they would be probably fairly

545
00:38:42.599 --> 00:38:46.000
happy with what it is. But
because it's different, and some of them

546
00:38:46.039 --> 00:38:50.320
know, they wouldn't because they're they're
staunch, like imperative code. Some people

547
00:38:50.320 --> 00:38:52.199
are imperative code people they want imperative
code. You're not going to change their

548
00:38:52.199 --> 00:38:58.400
mind about that. It's like the
who Moved your Cheese book? Yeah,

549
00:38:58.480 --> 00:39:02.000
it's true though. People hate change. They just do. And you know,

550
00:39:02.079 --> 00:39:07.400
some people will embrace it and some
people won't. And yeah, it's

551
00:39:07.519 --> 00:39:13.119
it's hard to know, you know
what exactly is going to be sort of

552
00:39:13.199 --> 00:39:16.119
the final repercussion for any of that. And the reason I'm making the change,

553
00:39:16.119 --> 00:39:20.000
like I haven't gotten around to making
videos yet because I didn't get enough

554
00:39:20.599 --> 00:39:23.440
funding from the campaign to dedicate as
much time as I would have liked,

555
00:39:23.440 --> 00:39:27.039
Like I had to go back to
doing you know, my normal client work

556
00:39:27.039 --> 00:39:30.280
pretty quickly. But I still intend
to release some videos to kind of walk

557
00:39:30.320 --> 00:39:34.559
through I mean, particularly the kind
of like a migration video, like this

558
00:39:34.639 --> 00:39:36.960
is how you used to doing it, this is why it's changed, this

559
00:39:37.000 --> 00:39:38.159
is what the benefits are. And
if you don't need those benefits, don't

560
00:39:38.239 --> 00:39:42.599
use them, you know, because
that's one piece of feedback that you know,

561
00:39:42.639 --> 00:39:44.360
I get. It was like,
well I don't need that feature,

562
00:39:44.760 --> 00:39:46.960
well, don't use it. I
mean it's like it's not that simple,

563
00:39:47.039 --> 00:39:51.280
but it is that simple, Like
you don't have to use the features you

564
00:39:51.320 --> 00:39:54.719
don't need like, you know,
I kind of would equate it to the

565
00:39:54.760 --> 00:40:00.760
anger that a father has when his
daughter gets her first boyfriend. Poison evil,

566
00:40:00.800 --> 00:40:04.719
don't don't go. You know,
you know, the project is growing

567
00:40:04.800 --> 00:40:07.360
up. The project is not as
innocent and the young as it once was,

568
00:40:07.440 --> 00:40:13.360
and I'm realizing that there's a variety
of use cases that need certain features

569
00:40:13.400 --> 00:40:19.159
that Yeah, just the project's growing
up, guys and gals and others.

570
00:40:19.440 --> 00:40:21.280
Yeah, I don't know if I
have anything to add to that. I

571
00:40:21.280 --> 00:40:24.039
mean, it's it's definitely interesting and
to some degree I see where you're coming

572
00:40:24.079 --> 00:40:28.119
from, and to another degree I
kind of look at it and go,

573
00:40:28.239 --> 00:40:30.159
yeah, but you still need to
serve the people who are using your project,

574
00:40:30.679 --> 00:40:34.519
so you know, yeah, I
mean, I guess you have to

575
00:40:35.039 --> 00:40:39.800
weigh I guess the positive feedback with
a negative feedback and figure out, you

576
00:40:39.800 --> 00:40:45.119
know, what the utility is.
And you know, there's also some measure

577
00:40:45.320 --> 00:40:46.920
like which is kind of where you're
coming across. If you don't need it,

578
00:40:46.960 --> 00:40:51.480
don't use it in the sense of
this is where the I feel like

579
00:40:51.480 --> 00:40:57.320
this project has to go. And
what's also terrific about open source is that

580
00:40:57.400 --> 00:41:00.199
if somebody really does you know,
deeply just agree with you about the direction

581
00:41:00.920 --> 00:41:04.800
they can fork it, and so
you know, as long as you have

582
00:41:05.079 --> 00:41:07.440
a software license that allows them to
do that, then they can just go

583
00:41:07.519 --> 00:41:13.079
ahead and do that, And then
you know they can go and they can

584
00:41:13.119 --> 00:41:15.199
imperative away at it, and you
can continue to see l I at it

585
00:41:15.360 --> 00:41:20.320
and it's where you're at. It's
true. And with the last version,

586
00:41:20.480 --> 00:41:23.559
the same thing happened, like there
was somebody that basically wrote a declarative wrapper

587
00:41:23.599 --> 00:41:29.039
around it, you know. So
what I did learn though, I mean

588
00:41:29.119 --> 00:41:32.239
it's it's I know where the project
needs to go in order to continue to

589
00:41:32.360 --> 00:41:37.039
be sustainable and serve more people,
right, But what I did learn is

590
00:41:37.079 --> 00:41:42.639
that there are areas where I could
simplify some things, and in a lot

591
00:41:42.679 --> 00:41:45.159
of cases it's like, you know, a three line change to the code

592
00:41:45.599 --> 00:41:50.480
or letting a default value get set. So one of the things that I

593
00:41:50.599 --> 00:41:57.239
changed was so let's encrypt has a
subscriber email. Customers that own domains have

594
00:41:57.400 --> 00:42:00.440
the email that they put in the
who is as the ad contact, And

595
00:42:00.480 --> 00:42:07.480
then there was updates about you know, the project, things that are important

596
00:42:07.599 --> 00:42:13.199
that anybody who is active leaves in
the project would most likely need to know

597
00:42:13.960 --> 00:42:19.719
so before I just used the let's
encrypt subscriber email and you know, said

598
00:42:20.400 --> 00:42:22.800
I'm also going to use this email
for security notices, et cetera. And

599
00:42:22.960 --> 00:42:28.360
that turned out to be bad because
there's a lot of people that didn't speak

600
00:42:28.360 --> 00:42:34.719
English who used the project, and
I got people putting in their customer email

601
00:42:35.559 --> 00:42:42.199
that was perhaps the domain owner and
not whereas that's not what's intended with let's

602
00:42:42.280 --> 00:42:46.719
encrypt. It's intended to basically the
company that's the host is the subscriber email.

603
00:42:47.000 --> 00:42:50.440
So anyway, there's some stuff that
wasn't quite clear on the documentation and

604
00:42:50.480 --> 00:42:57.280
whatnot, and so people were getting
onto the security mailing list not understanding that

605
00:42:57.280 --> 00:43:01.760
that's what was happening, in large
part because I think the language barrier with

606
00:43:01.840 --> 00:43:06.079
the you know, the kind of
what what I was seeing happening, it

607
00:43:06.079 --> 00:43:08.519
looked like it was a lot of
Asian email addresses that are coming in,

608
00:43:09.159 --> 00:43:14.199
and so I changed it so that
it had a maintainer email, a subscriber

609
00:43:14.199 --> 00:43:15.599
email, and a customer email.
The customer email isn't used, it's just

610
00:43:15.639 --> 00:43:21.039
in the documentation so that people can
see that there's something that's different and they

611
00:43:21.079 --> 00:43:24.519
need to get more information. Well, it turns out it's fine for me

612
00:43:24.599 --> 00:43:29.679
to use the maintainer email as the
subscriber email because that's almost always one to

613
00:43:29.760 --> 00:43:32.280
one, And the whole reason I
separated them out was really just for documentation

614
00:43:34.199 --> 00:43:37.920
to help it be more clear.
And so I found out, oh,

615
00:43:37.960 --> 00:43:39.679
I can actually simplify this. I
don't need to ask them for their email

616
00:43:39.679 --> 00:43:43.840
twice, once as the maintainer,
once as a subscriber. For the zero

617
00:43:43.920 --> 00:43:47.840
to one case, the maintainer is
the subscriber. It's for like the more

618
00:43:47.920 --> 00:43:52.519
like the you know, thousand case
where there might actually be multiple subscribers for

619
00:43:52.559 --> 00:43:57.280
some reason like white labeling or you
know that type of thing. So that

620
00:43:57.400 --> 00:44:00.320
just needs to go further down in
the documentation, and it needs out to

621
00:44:00.320 --> 00:44:01.880
the screen to say, hey,
this email address is being used as a

622
00:44:01.920 --> 00:44:07.000
maintainer email and as a subscriber email. So there's some things like that where

623
00:44:07.679 --> 00:44:10.239
I was maybe duplicating the amount of
work that need to be done by a

624
00:44:10.239 --> 00:44:15.000
small amount. Just making a couple
of line changes here and there made the

625
00:44:15.039 --> 00:44:19.199
configuration simpler. And so I'm about
to publish, I think I might just

626
00:44:19.199 --> 00:44:23.559
skip version three point two and go
straight to version four because of the feedback

627
00:44:23.599 --> 00:44:28.480
I received, and the changes I
need to make in the API are just

628
00:44:28.519 --> 00:44:31.440
different enough than I'm thinking. V
three might just only live a couple of

629
00:44:31.519 --> 00:44:37.000
weeks and we might just go straight
to V four for the refinement that needs

630
00:44:37.079 --> 00:44:42.199
to be there to help the most
people. So I got the reading stuff

631
00:44:42.239 --> 00:44:47.679
done and simplified some of the things. And also one of the most common

632
00:44:47.840 --> 00:44:54.320
issues is people are integrating with other
services, for example S three and so

633
00:44:54.920 --> 00:45:00.719
it's necessary, well not necessary,
but if I want to reach the greatest

634
00:45:00.800 --> 00:45:04.599
number of people where they have you
know, they're starting to integrate with cloud

635
00:45:04.639 --> 00:45:08.119
services and stuff. There's all these
plugins that are available for it. But

636
00:45:08.320 --> 00:45:14.159
I realize this is also an opportunity
to help make the project sustainable and serve

637
00:45:14.199 --> 00:45:17.800
people even better. Is to offer
a very simple cloud management system where they

638
00:45:17.840 --> 00:45:22.280
can manage their domains and they can
have you know, like I'm very familiar

639
00:45:22.320 --> 00:45:25.960
with cryptography and you know how to
use the note APIs to do these sorts

640
00:45:27.000 --> 00:45:31.639
of things. So I can actually
give them encrypted certificate storage in basically a

641
00:45:31.679 --> 00:45:37.440
bucket style system. I can make
that kind of a first class module.

642
00:45:37.000 --> 00:45:40.519
I'm hoping to move it in the
direction where it always stays true to what

643
00:45:40.559 --> 00:45:44.599
it started was, which is for
self hosting, but for those people that

644
00:45:44.639 --> 00:45:50.199
are using cloud services in a hybrid
fashion. Creating a very simple cloud service

645
00:45:50.239 --> 00:45:53.239
to integrate with what I see the
needs our most gives me an opportunity to

646
00:45:53.280 --> 00:45:58.280
provide people with greater level of service
and also to be able to support the

647
00:45:58.320 --> 00:46:04.079
project more long term, so that
people can have greater convenience. And you

648
00:46:04.119 --> 00:46:07.880
know, there's costs associated with when
you're not self hosting, there's a cost,

649
00:46:07.599 --> 00:46:14.400
and so it becomes a very natural
fit to allow the people that want

650
00:46:14.480 --> 00:46:19.079
greater convenience to be able to pay
for it and continue to support the project

651
00:46:19.119 --> 00:46:22.960
that way as well. So we
kind of need to start heading toward picks.

652
00:46:22.039 --> 00:46:24.559
One thing that I'm curious about,
and this is probably a good way

653
00:46:24.599 --> 00:46:30.400
to wrap up, is just is
there kind of an overarching message for this

654
00:46:30.039 --> 00:46:34.800
or lesson learned or something like that
that you know, listeners can apply to

655
00:46:34.800 --> 00:46:38.039
what they're doing. Like most projects
never go anywhere, and this is okay,

656
00:46:38.239 --> 00:46:42.599
Like we release something because we think
it's cool and we don't gain traction,

657
00:46:42.679 --> 00:46:45.480
and it's fine, But if you've
got something that starts to gain traction,

658
00:46:46.280 --> 00:46:54.280
I would say think early on about
how you can better serve that community,

659
00:46:54.599 --> 00:47:01.440
and remember that these people are mostly
grateful and mostly semi willing to support

660
00:47:01.519 --> 00:47:05.519
you. Like there. It's it's
a strange thing in open source, but

661
00:47:06.239 --> 00:47:09.280
if you want to have a project
be sustainable and you are, you are

662
00:47:09.360 --> 00:47:15.039
helping people save money and you're creating
value, you deserve to have fruits of

663
00:47:15.079 --> 00:47:22.599
your labor. So my hope would
be that as people are creating projects that

664
00:47:22.280 --> 00:47:24.840
you know you just have in your
mind a way to keep true to your

665
00:47:24.880 --> 00:47:30.719
open source ideals, to you know
that the self hosted movement, that you

666
00:47:30.760 --> 00:47:35.159
know, freedom of knowledge movement,
but to not be blind to the fact

667
00:47:35.280 --> 00:47:39.079
that a lot of these people probably
do want to help you continue to help

668
00:47:39.159 --> 00:47:43.480
them, but you have to think, you have to talk with them,

669
00:47:43.519 --> 00:47:46.199
you have to think about their perspectives. And the earlier on you can make

670
00:47:46.239 --> 00:47:52.159
some of those choices, perhaps the
easier it will be to both get your

671
00:47:52.199 --> 00:47:58.239
projects supported and make the transition smooth
so you're not going from a non scalable,

672
00:47:59.119 --> 00:48:04.760
non hybrid CLS products to one that
isn't having to mess up an API

673
00:48:05.079 --> 00:48:07.199
or you know, upset people that
otherwise would have been happy if that's what

674
00:48:07.239 --> 00:48:14.239
they encountered earlier on sounds good.
All right, well let's go ahead and

675
00:48:14.280 --> 00:48:16.840
do picks. Amy, do you
want to start off with the picks?

676
00:48:17.239 --> 00:48:22.400
Sure, let's see. Man,
I have a lot because I have been

677
00:48:22.440 --> 00:48:27.000
really busy and haven't been on lately, but let me think of a good

678
00:48:27.000 --> 00:48:31.639
one here. So I learned about
this this morning, which is pretty cool,

679
00:48:31.760 --> 00:48:35.599
and I posted it in my work
slack. I'm not going to take

680
00:48:35.639 --> 00:48:38.599
it from there. But if you
are a React developer and you use the

681
00:48:38.679 --> 00:48:44.599
React of tools, I guess this
came out this like late summer fall.

682
00:48:44.639 --> 00:48:47.000
I didn't know about it yet,
but it's uh, why did this render?

683
00:48:47.360 --> 00:48:52.199
So it can show you if you're
like in the deb tools clicking on

684
00:48:52.280 --> 00:48:55.719
a component basically like what caused that
component to render? So I know for

685
00:48:55.800 --> 00:49:00.760
me that's like debugging wise, super
helpful. So I will post a link

686
00:49:00.000 --> 00:49:05.599
to there's a medium post that explains
a bunch of the React of tool stuff,

687
00:49:05.639 --> 00:49:07.719
so I'll put a link in that. I guess that's gonna be it

688
00:49:07.719 --> 00:49:12.119
for me. Awesome, Steve,
do you have some picks for us?

689
00:49:12.440 --> 00:49:15.199
Yeah, I've got one. So
I'm not much of a binge watcher usually

690
00:49:15.199 --> 00:49:17.320
because I just don't have time to
sit down and spend, you know,

691
00:49:17.400 --> 00:49:22.400
multiple hours watching something, you know, maybe the Super Bowl or World Series

692
00:49:22.519 --> 00:49:25.760
or something like that. But I
got sucked into the Jack Ryan series on

693
00:49:25.840 --> 00:49:31.559
Amazon Prime Video. I was actually
somewhere on a Friday night and our TV

694
00:49:31.840 --> 00:49:36.639
wasn't working, but we did have
Amazon, so I started proising around and

695
00:49:36.639 --> 00:49:40.079
watching that and I got sucked in, like into a vacuum. I watched

696
00:49:40.079 --> 00:49:43.719
like four hours that night, and
the next day I managed to watch another

697
00:49:43.840 --> 00:49:46.000
four hours at various parts to the
day. And I'm watching on my phone

698
00:49:46.039 --> 00:49:50.760
and I'm in bed, you know. So I've only gotten through the first

699
00:49:51.000 --> 00:49:54.280
eight episodes, which is a complete
storyline in the first season. But it

700
00:49:54.360 --> 00:49:58.239
was really really good, and I
don't have the issue that a lot of

701
00:49:58.280 --> 00:50:01.679
people do who watch The Office.
I'm trying to imagine Jim as Jack Ryan,

702
00:50:02.280 --> 00:50:07.639
the same actor. But yeah,
it's a really really good show,

703
00:50:07.760 --> 00:50:10.960
really well written and really sort of
sucks you in. Yeah. I watched

704
00:50:10.960 --> 00:50:14.280
the first season when it came out, and I enjoyed it as well.

705
00:50:14.559 --> 00:50:17.440
A j do you have some picks
for us? I've got one, maybe

706
00:50:19.199 --> 00:50:28.400
two. So this video I just
think is so incredibly I don't know what

707
00:50:28.440 --> 00:50:31.840
the words are to use. It's
just it's good. This is the type

708
00:50:31.840 --> 00:50:36.960
of humans that we ought to inspire
to be. And if we could all

709
00:50:37.159 --> 00:50:42.079
be these this type of human I
don't think that we would have any issues

710
00:50:42.400 --> 00:50:45.880
with well, I mean, we
just wouldn't have any issues with inequality or

711
00:50:46.000 --> 00:50:51.599
with conflict. And in the way
that I mean, it just seems to

712
00:50:51.599 --> 00:50:57.199
be on the rise today. There
is let me get his name right day,

713
00:50:57.599 --> 00:51:04.719
Darryl Davis. Darryl Davis is a
black man who attended kkk rallies.

714
00:51:04.760 --> 00:51:08.480
I think he still might I'm not
sure, but he basically, over a

715
00:51:08.480 --> 00:51:16.280
period of several years befriended the man
who became the grand Wizard of the klu

716
00:51:16.360 --> 00:51:22.119
Klux Klan, and he would go
to the rallies and would talk with people.

717
00:51:22.159 --> 00:51:27.519
And this was his way of spreading
tolerance, was through opening a channel

718
00:51:27.559 --> 00:51:32.239
of communication. Rather than rather than
letting fear govern him, and rather than

719
00:51:32.280 --> 00:51:37.440
being passive and letting fear govern others, he opened channels of communication. And

720
00:51:37.519 --> 00:51:42.480
so over a period of years,
it started out very small, just had

721
00:51:42.480 --> 00:51:45.519
like a meeting and a neutral location
in a hotel that it progressed to he

722
00:51:45.599 --> 00:51:50.599
invited the Grand Wizard over to his
house for dinner. And then it progressed

723
00:51:50.599 --> 00:51:54.760
to the Grand Wizard invited over him
over to his house for dinner. And

724
00:51:54.880 --> 00:51:58.599
I mean I should use his name, because saying grand Wizard is you know,

725
00:51:58.679 --> 00:52:01.360
kind of a derogatory term in some
ways. But I don't remember the

726
00:52:01.440 --> 00:52:06.760
name of the other individual. But
in any case, over a period of

727
00:52:06.880 --> 00:52:13.400
years, Darryl Davis befriended this man, and just through constant peaceful communication,

728
00:52:13.880 --> 00:52:19.960
through tolerance, through really being a
loving human that had such a great capacity

729
00:52:20.000 --> 00:52:23.440
to love that it could extend even
to someone who didn't love him, he

730
00:52:23.559 --> 00:52:29.519
was able to slowly win this man
over. And the man as the Grand

731
00:52:29.559 --> 00:52:34.719
Wizard, like the top dog,
the main dude of the kluekus Klan,

732
00:52:35.519 --> 00:52:40.599
walked away from it and gave him
his robes as a token of the symbol

733
00:52:40.639 --> 00:52:46.440
of deep friendship and appreciation of you
helped me get out of this, and

734
00:52:46.480 --> 00:52:51.000
I want you to have this as
a memento. And it just like it's

735
00:52:51.039 --> 00:52:53.920
the kind of thing that can bring
you to tears to see someone with such

736
00:52:54.840 --> 00:53:01.559
presence, such internal strength, who
you know has over you overcome any sense

737
00:53:01.559 --> 00:53:07.039
of negative mentality to be able to
just be an incredibly powerful person. So

738
00:53:07.119 --> 00:53:14.280
I I just can't stress enough how
important I think the message that that Darryl

739
00:53:14.360 --> 00:53:19.679
Davis has to share with people is
to our current society. It's so important,

740
00:53:19.719 --> 00:53:22.760
and I wish everybody could, you
know, watch that and take in

741
00:53:22.840 --> 00:53:27.360
what he has to say and learn. I mean, I can't. I

742
00:53:27.400 --> 00:53:31.599
don't have the personal strength to do
what he did. I'm just not as

743
00:53:31.639 --> 00:53:36.239
good of a person as he is. But I am inspired to be more

744
00:53:36.280 --> 00:53:39.880
that way by him. That's really
good. Yeah, I'm gonna have to

745
00:53:39.920 --> 00:53:45.119
go watch it because I find the
combinations of people that you would never think

746
00:53:45.159 --> 00:53:50.559
would come together coming together, and
then what comes from that that that's just

747
00:53:50.679 --> 00:53:55.559
always so fascinating cool. Any other
picks before I jump in? AJ,

748
00:53:57.480 --> 00:54:00.840
I think I'm gonna leave it with
that. I think that is such a

749
00:54:00.880 --> 00:54:05.280
powerful message that I would like that
to stand on its own as what I

750
00:54:05.320 --> 00:54:08.239
picked this week. Yep, all
right, I'm gonna go ahead and jump

751
00:54:08.280 --> 00:54:12.000
in with a couple of picks.
Now. I realize that, hey,

752
00:54:12.079 --> 00:54:16.079
this podcast episode will come out either
right before Thanksgiving or right around Thanksgiving,

753
00:54:16.519 --> 00:54:22.000
and so I want to give everybody
ample time to get some of my Christmas

754
00:54:22.000 --> 00:54:27.280
related picks, and things have been
kind of up and down for me lately,

755
00:54:27.760 --> 00:54:30.840
and so I've been anyway, I've
been kind of attaching to the things

756
00:54:30.880 --> 00:54:37.039
that make me happy. And one
of my favorite things year in and year

757
00:54:37.079 --> 00:54:39.719
out is Christmas, and so I'm
going to pick a couple of my favorite

758
00:54:39.760 --> 00:54:44.599
Christmas movies. Incidentally, I was
thinking about these movies and I realized that

759
00:54:44.599 --> 00:54:46.679
two of them have the same actor
in them. Of course, the recording

760
00:54:46.679 --> 00:54:51.639
of the videos is separated by like
forty years, but they're great movies.

761
00:54:52.320 --> 00:54:57.639
One of them is It's a Wonderful
Life, and it's kind of a nostalgic

762
00:54:57.679 --> 00:55:00.960
thing for me. It was always
one of my dads his favorite movies,

763
00:55:00.000 --> 00:55:04.800
and since we lost him in twenty
eighteen, you know, it just kind

764
00:55:04.800 --> 00:55:07.840
of has that much more meaning.
But I love the movie. I love

765
00:55:07.880 --> 00:55:13.239
the message of the movie, and
yeah, I just I don't know,

766
00:55:13.320 --> 00:55:16.440
I don't know if I can adequately
explain why I love it, but it's

767
00:55:16.639 --> 00:55:21.960
just such a positive movie. It's
a wonderful Life. They've redone it in

768
00:55:22.000 --> 00:55:23.920
color, and I can't decide if
I like it better in color or not,

769
00:55:24.519 --> 00:55:29.760
but anyway, it's yeah, it's
got Jimmy Stewart or James Stewart in

770
00:55:29.800 --> 00:55:34.639
it and Donna Reid. And then
the other movie that also has Jimmy Stewart

771
00:55:34.679 --> 00:55:37.679
in it is Mister Krueger's Christmas.
I remember watching that as a kid.

772
00:55:37.760 --> 00:55:42.119
Came out in the eighties. I'm
not going to spoil anything about it.

773
00:55:42.119 --> 00:55:46.039
I'm just gonna let you go watch
it because it is amazing. And again,

774
00:55:46.159 --> 00:55:52.000
you know, it just kind of
personalizes Christmas in a very meaningful way.

775
00:55:52.679 --> 00:55:57.079
And you know, it makes you
realize that, you know, whether

776
00:55:57.199 --> 00:56:00.000
it's how fortunate you are or some
of the upper conunities that you have to

777
00:56:00.039 --> 00:56:05.760
make somebody else feel important at Christmas. It's just incredible. So and both

778
00:56:05.760 --> 00:56:07.960
of them have James Stewart in them, So I'll just leave it there.

779
00:56:08.480 --> 00:56:12.719
I have a bunch more Christmas movies
that I'll probably just pick over the next

780
00:56:12.719 --> 00:56:15.559
few weeks, as long as they're
not a Hallmark movies check they are not.

781
00:56:15.960 --> 00:56:21.920
Most of them are actually rather old
for lack of a better term.

782
00:56:22.119 --> 00:56:24.840
Most of the Christmas movies that I
really, really dearly love were made in

783
00:56:24.880 --> 00:56:30.079
the forties, fifties or sixties.
So yeah, so I'll probably pick those

784
00:56:30.119 --> 00:56:32.400
and then yeah, people can just
go check them out because there are some

785
00:56:32.480 --> 00:56:37.960
classic Christmas movies that are just amazing. So yeah, anyway, I'll also

786
00:56:37.079 --> 00:56:40.360
just quickly shout out and I send
an email out today to the mailing list.

787
00:56:40.719 --> 00:56:44.719
We are looking for hosts for several
of the other shows, and so

788
00:56:44.800 --> 00:56:47.280
if you're interested in being a host, just email me check at dev chatout

789
00:56:47.280 --> 00:56:50.679
tv and we'll get that lined up
see if we can get you on some

790
00:56:50.719 --> 00:56:53.960
of the shows. And yeah,
that's all I've got, So let's go

791
00:56:53.960 --> 00:57:00.599
ahead and wrap this one up and
until next time, Ma's out Audios my idears.

