WEBVTT

1
00:00:06.160 --> 00:00:09.039
<v Speaker 1>Hello, and welcome to this week's episode of Alexa Mix.

2
00:00:09.119 --> 00:00:12.199
<v Speaker 1>We are joined by, as ever, our fabulous panel of posts.

3
00:00:12.320 --> 00:00:16.760
<v Speaker 1>We have Alex Kotman, Hey Alex. We've got Bruce t Hi. Everybody,

4
00:00:16.839 --> 00:00:18.960
<v Speaker 1>Hello Bruce. We've got Steven Nunyez.

5
00:00:19.079 --> 00:00:19.480
<v Speaker 2>Hello.

6
00:00:19.640 --> 00:00:22.280
<v Speaker 1>I am SOPHIEA Benedetto and we are joined today by

7
00:00:22.440 --> 00:00:26.719
<v Speaker 1>Randall Thomas, who has many potential introductions that I may

8
00:00:26.760 --> 00:00:28.719
<v Speaker 1>choose from. So I'm going to go with my favorite two,

9
00:00:28.760 --> 00:00:31.320
<v Speaker 1>which is the first. One's a little more informative CTO

10
00:00:31.480 --> 00:00:34.920
<v Speaker 1>at a tech incubator called Geometer, as well as a

11
00:00:35.159 --> 00:00:37.479
<v Speaker 1>thanks for Hacker and vonn Dufon, and I'm sure we'll

12
00:00:37.479 --> 00:00:40.840
<v Speaker 1>be excited to dig into any of those topics. Welcome Randall, Oh,

13
00:00:40.920 --> 00:00:42.719
<v Speaker 1>thank you so much for having me. Yeah, we're so

14
00:00:42.759 --> 00:00:44.719
<v Speaker 1>thrilled you could be here. We've got so many great

15
00:00:44.719 --> 00:00:46.960
<v Speaker 1>things to dig into today. But one of the things

16
00:00:46.960 --> 00:00:48.719
<v Speaker 1>that we often ask us when they first come on

17
00:00:48.840 --> 00:00:50.320
<v Speaker 1>is tell us a little bit about how you got

18
00:00:50.320 --> 00:00:52.039
<v Speaker 1>into the Elixir community in the first place.

19
00:00:52.359 --> 00:00:54.799
<v Speaker 2>Strangely enough, the short version is I've been around the

20
00:00:54.840 --> 00:00:57.600
<v Speaker 2>Rube community for a long time and one day looked

21
00:00:57.600 --> 00:00:59.280
<v Speaker 2>around in all the people that I knew from the

22
00:00:59.280 --> 00:01:02.159
<v Speaker 2>old Rubey community, you weren't there anymore, and I figured

23
00:01:02.200 --> 00:01:04.319
<v Speaker 2>out where they went, and it turns out that they

24
00:01:04.359 --> 00:01:06.560
<v Speaker 2>all showed up inn Elixir. In fact, it was kind

25
00:01:06.599 --> 00:01:10.159
<v Speaker 2>of accidental. I went to I think the first Elixir

26
00:01:10.200 --> 00:01:11.840
<v Speaker 2>CONFI I had gone to, I think was in twenty

27
00:01:11.959 --> 00:01:14.560
<v Speaker 2>eighteen or twenty seventeen, and I showed up there and

28
00:01:14.599 --> 00:01:17.280
<v Speaker 2>I literally just walked around. I'm like, wait, so that's

29
00:01:17.280 --> 00:01:21.120
<v Speaker 2>why you weren't at Ruby KMF. Oh wait, so you're here.

30
00:01:21.200 --> 00:01:23.239
<v Speaker 2>What are you doing here? So I thought I would

31
00:01:23.280 --> 00:01:25.239
<v Speaker 2>know no one, and it turned out that I knew everybody.

32
00:01:25.319 --> 00:01:27.439
<v Speaker 2>So all the smart people that I sort of cocktailed

33
00:01:27.480 --> 00:01:29.640
<v Speaker 2>on and Ruby ended up in Elixir. So I figured

34
00:01:29.680 --> 00:01:31.840
<v Speaker 2>they're way smarter than me. I should go follow them

35
00:01:31.879 --> 00:01:33.799
<v Speaker 2>see what they're doing. So it's kind of it.

36
00:01:34.000 --> 00:01:36.239
<v Speaker 1>That's really as good a reason as any, and kind

37
00:01:36.280 --> 00:01:39.000
<v Speaker 1>of similar to how I started learning Alixir. It's like,

38
00:01:39.359 --> 00:01:41.680
<v Speaker 1>I don't know, maybe four or five years ago, one day,

39
00:01:41.760 --> 00:01:44.120
<v Speaker 1>maybe five five thirty, and Steven says, hey, you want

40
00:01:44.120 --> 00:01:46.200
<v Speaker 1>to see something cool, And that was kind of like

41
00:01:46.640 --> 00:01:49.640
<v Speaker 1>theentre into the wide world of alexir. So following the

42
00:01:49.680 --> 00:01:50.840
<v Speaker 1>smart people is the way to go.

43
00:01:51.280 --> 00:01:53.599
<v Speaker 2>There was a funny thing. I'm pretty sure this is

44
00:01:53.680 --> 00:01:57.640
<v Speaker 2>actually true, right, but like all apocryphal stories, because it

45
00:01:57.680 --> 00:02:00.959
<v Speaker 2>happened in Barcelona. There was Baruko, Barcelon and Ruby KMF

46
00:02:01.120 --> 00:02:03.159
<v Speaker 2>and at the time we were giving this talk on

47
00:02:03.519 --> 00:02:06.159
<v Speaker 2>Ruby motion. If you remember, there was this big kerfuffle

48
00:02:06.200 --> 00:02:08.000
<v Speaker 2>about hey man, you're gonna be able to write iOS

49
00:02:08.039 --> 00:02:10.439
<v Speaker 2>apps in Ruby. And it was actually a really really

50
00:02:10.439 --> 00:02:12.000
<v Speaker 2>great idea, I kind of think a little ahead of

51
00:02:12.039 --> 00:02:16.919
<v Speaker 2>its time. And I think actually at that conference somebody

52
00:02:17.000 --> 00:02:19.520
<v Speaker 2>was talking about, oh, yeah, you heard that somebody's trying

53
00:02:19.520 --> 00:02:22.919
<v Speaker 2>to build a Ruby for Elixir or for Erlang, and

54
00:02:22.960 --> 00:02:26.680
<v Speaker 2>I'm just like, yeah, good luck with that. I literally

55
00:02:26.719 --> 00:02:28.680
<v Speaker 2>thought it was like because I was thinking about, like

56
00:02:28.680 --> 00:02:32.000
<v Speaker 2>I tried learning Arlang once when the prag Prague released

57
00:02:32.000 --> 00:02:34.919
<v Speaker 2>that first book from Joe on Arlang, and I remember

58
00:02:34.919 --> 00:02:37.199
<v Speaker 2>getting into it and I remember thinking I'm like, okay,

59
00:02:37.439 --> 00:02:39.800
<v Speaker 2>I'll put this somewhere right above pearl. I recant that

60
00:02:39.840 --> 00:02:42.520
<v Speaker 2>statement now, but at the time I was thinking to myself, like,

61
00:02:42.599 --> 00:02:44.439
<v Speaker 2>there's no way you're ever going to get Rubis to

62
00:02:44.479 --> 00:02:47.280
<v Speaker 2>learn the syntax, because you know, the obsession with beauty

63
00:02:47.280 --> 00:02:49.439
<v Speaker 2>and elegance and expressiveness and everything else.

64
00:02:49.599 --> 00:02:52.080
<v Speaker 3>Yeah, and it's really funny that Jose kind of put

65
00:02:52.080 --> 00:02:55.280
<v Speaker 3>it onto the Ruby syntax, not as this great statement

66
00:02:55.479 --> 00:02:59.439
<v Speaker 3>of let's bring all the Ruby community over right. It

67
00:02:59.520 --> 00:03:03.240
<v Speaker 3>was more like, okay, one last thing, right, no way yet,

68
00:03:03.360 --> 00:03:05.039
<v Speaker 3>and then then he kind of layers on these these

69
00:03:05.080 --> 00:03:07.759
<v Speaker 3>beautiful abstractions. But yeah, it seems like we were kind

70
00:03:07.759 --> 00:03:09.879
<v Speaker 3>of circling to each other for a long time randal

71
00:03:10.000 --> 00:03:13.280
<v Speaker 3>before for the elexur community that you know, the idea

72
00:03:13.400 --> 00:03:15.560
<v Speaker 3>that that you were EngineYard and you know, us to

73
00:03:15.680 --> 00:03:18.800
<v Speaker 3>point some stuff there, and you were kind of kind

74
00:03:18.800 --> 00:03:22.000
<v Speaker 3>of involved from from the very beginning, and kind of

75
00:03:22.159 --> 00:03:24.919
<v Speaker 3>we were. We were just just outside of each other's

76
00:03:25.199 --> 00:03:28.080
<v Speaker 3>or bit and didn't really meet until the Garroxio course.

77
00:03:28.400 --> 00:03:30.960
<v Speaker 2>Yeah, which is that's actually what I like to say is,

78
00:03:31.000 --> 00:03:35.000
<v Speaker 2>you know, I do a lot to to Bruce for

79
00:03:35.000 --> 00:03:37.599
<v Speaker 2>for really getting involved in the electric community. I don't

80
00:03:37.599 --> 00:03:40.199
<v Speaker 2>actually did you just advertise that course online? Was that

81
00:03:40.240 --> 00:03:41.120
<v Speaker 2>what it was? Yeah?

82
00:03:41.159 --> 00:03:44.159
<v Speaker 3>I mean we literally just threw a couple of tweets

83
00:03:44.199 --> 00:03:47.120
<v Speaker 3>up just to see if there was a test market,

84
00:03:47.400 --> 00:03:50.360
<v Speaker 3>to test the market, and we said we would need

85
00:03:50.439 --> 00:03:52.560
<v Speaker 3>more people to start the class, and then you were

86
00:03:52.599 --> 00:03:54.719
<v Speaker 3>two signed up. But one was you right, and the

87
00:03:54.759 --> 00:03:57.439
<v Speaker 3>other one was Patrick Thompson, who's already writing you know,

88
00:03:57.840 --> 00:04:01.960
<v Speaker 3>articles and pull requests for or Phoenix or Phoenix Lide you.

89
00:04:02.199 --> 00:04:04.039
<v Speaker 3>But that was kind of a cool moment because we

90
00:04:04.039 --> 00:04:06.319
<v Speaker 3>had to decide whether to do the class or not,

91
00:04:06.520 --> 00:04:09.960
<v Speaker 3>and at that point we decided to go against the

92
00:04:09.960 --> 00:04:14.199
<v Speaker 3>grain of traditional courses to it's kind a you know,

93
00:04:14.439 --> 00:04:18.160
<v Speaker 3>like a smaller Midge school right where everybody could and

94
00:04:18.199 --> 00:04:20.639
<v Speaker 3>then that's that's where we kind of decided to flip

95
00:04:20.639 --> 00:04:22.600
<v Speaker 3>the keyboard, and you know, the rest is history.

96
00:04:22.839 --> 00:04:24.759
<v Speaker 2>Yeah, I was a pretty New York or program before

97
00:04:24.800 --> 00:04:26.439
<v Speaker 2>I got to spend a week in pairing with Bruce,

98
00:04:26.480 --> 00:04:28.480
<v Speaker 2>at least for a elixir, which is I think that's

99
00:04:28.639 --> 00:04:31.279
<v Speaker 2>something that we take for granted. You know, if you

100
00:04:31.319 --> 00:04:33.639
<v Speaker 2>come from procedural languages, it's really easy. If you know C,

101
00:04:34.040 --> 00:04:35.959
<v Speaker 2>you can kind of learn C plus plus even though

102
00:04:35.959 --> 00:04:37.920
<v Speaker 2>it might not be the right idioms, but it's the bridges.

103
00:04:37.959 --> 00:04:39.519
<v Speaker 2>If you know job, you can kind of get into

104
00:04:39.560 --> 00:04:42.959
<v Speaker 2>go and like. But learning how to actually think in

105
00:04:43.040 --> 00:04:45.519
<v Speaker 2>elixir and break down the problem differently or thing functionally

106
00:04:45.639 --> 00:04:47.680
<v Speaker 2>is actually one of the big barrier sentry I think

107
00:04:47.680 --> 00:04:51.120
<v Speaker 2>people have and seeing it and doing it with other

108
00:04:51.120 --> 00:04:53.680
<v Speaker 2>people and going through that evolution was really helped me

109
00:04:53.800 --> 00:04:55.360
<v Speaker 2>but actually really leveled up my elixir.

110
00:04:55.839 --> 00:04:59.240
<v Speaker 3>Yeah, so I don't I don't take any credit at

111
00:04:59.279 --> 00:05:02.160
<v Speaker 3>all for any you're doing an elixir uh by the way,

112
00:05:02.199 --> 00:05:05.360
<v Speaker 3>but I do think that there's a moment where your

113
00:05:05.360 --> 00:05:07.199
<v Speaker 3>revolution is like a lot of a lot of other

114
00:05:07.199 --> 00:05:09.439
<v Speaker 3>people's like mine as well. Right, it's why are the

115
00:05:09.480 --> 00:05:12.480
<v Speaker 3>cool kids leaving the room? What do they see and

116
00:05:12.800 --> 00:05:15.879
<v Speaker 3>how do I how do I make the mini that

117
00:05:16.319 --> 00:05:20.879
<v Speaker 3>mental shift to do the things that that good programmers do.

118
00:05:21.120 --> 00:05:24.279
<v Speaker 3>And you know that's what we were all able to go

119
00:05:24.360 --> 00:05:26.680
<v Speaker 3>through together in that class, you and Patrick and I.

120
00:05:26.879 --> 00:05:28.759
<v Speaker 2>Yeah, well I I still think it's one of the

121
00:05:28.800 --> 00:05:30.560
<v Speaker 2>greatest things that where I recommend it. In fact, actually,

122
00:05:30.600 --> 00:05:32.360
<v Speaker 2>if you remember, one of the first things I did

123
00:05:32.360 --> 00:05:35.079
<v Speaker 2>at CTO was I got a subscription. I think I

124
00:05:35.120 --> 00:05:36.920
<v Speaker 2>need you write a feature so I could get my

125
00:05:37.000 --> 00:05:40.279
<v Speaker 2>team on Groxia. So shameless plug for Bruce's like learning

126
00:05:40.279 --> 00:05:43.240
<v Speaker 2>platform Groxio. It's great to learn alixer in a browser.

127
00:05:43.319 --> 00:05:45.319
<v Speaker 2>And I've actually used it for other people and they're like, well,

128
00:05:45.319 --> 00:05:46.839
<v Speaker 2>what do you think about Elixer. I'm like, I don't know.

129
00:05:47.319 --> 00:05:49.279
<v Speaker 2>Go try it out in a browser, like most people

130
00:05:49.319 --> 00:05:51.240
<v Speaker 2>are just blown away that'll run in a browser anyway.

131
00:05:51.480 --> 00:05:55.279
<v Speaker 2>So it really doesn't not in a browser, it doesn't.

132
00:05:55.360 --> 00:05:58.600
<v Speaker 2>But like those types of abstractions, it's not important. It's

133
00:05:58.639 --> 00:06:01.360
<v Speaker 2>like it's like everybody else. You know, first one's free, Amen,

134
00:06:01.720 --> 00:06:02.639
<v Speaker 2>first one's free.

135
00:06:02.879 --> 00:06:07.519
<v Speaker 3>Yeah. But so as your Elixir Generney journey has kind

136
00:06:07.519 --> 00:06:10.600
<v Speaker 3>of started off, you didn't kind of peck around the

137
00:06:10.680 --> 00:06:12.279
<v Speaker 3>edges like most people did.

138
00:06:12.439 --> 00:06:12.600
<v Speaker 1>Right.

139
00:06:12.680 --> 00:06:15.480
<v Speaker 3>It's you know, you went from kind of zero to sixty, right,

140
00:06:15.680 --> 00:06:18.439
<v Speaker 3>so you went from Okay, now I'm in the community

141
00:06:18.560 --> 00:06:22.199
<v Speaker 3>technic class to now I've got this incubator. Can you

142
00:06:22.240 --> 00:06:24.639
<v Speaker 3>tell us a little bit about what you're doing at Geometer?

143
00:06:25.120 --> 00:06:28.839
<v Speaker 2>Yeah, So some people I used to work with they

144
00:06:28.879 --> 00:06:31.800
<v Speaker 2>started a tech incubator, like all good things, and then

145
00:06:31.879 --> 00:06:33.959
<v Speaker 2>COVID hit. The most interesting part of actually what we

146
00:06:33.959 --> 00:06:36.160
<v Speaker 2>were doing was we ended up pivoting towards doing COVID

147
00:06:36.160 --> 00:06:38.680
<v Speaker 2>response work, and a lot of the work we ended

148
00:06:38.720 --> 00:06:42.360
<v Speaker 2>up deploying for several states was actually built on Elixer interntline.

149
00:06:42.480 --> 00:06:46.639
<v Speaker 2>So we actually have data transformation platforms and pipelines. A fact,

150
00:06:46.800 --> 00:06:49.480
<v Speaker 2>we used Broadway for one of them. Two that are

151
00:06:49.639 --> 00:06:52.680
<v Speaker 2>currently supporting contact tracing in two states on the East coast,

152
00:06:53.160 --> 00:06:56.720
<v Speaker 2>so we learned a lot about both the scalability and functionality.

153
00:06:56.800 --> 00:06:59.120
<v Speaker 2>So just to give you an idea, they were caught

154
00:06:59.120 --> 00:07:02.439
<v Speaker 2>in batch world. Their best turnaround time started off at

155
00:07:02.480 --> 00:07:04.759
<v Speaker 2>twenty four hours, and then when they were really trying

156
00:07:04.800 --> 00:07:06.759
<v Speaker 2>to get up to speed, they could do it maybe

157
00:07:06.759 --> 00:07:08.720
<v Speaker 2>in six but there were a lot of errors and bugs.

158
00:07:09.000 --> 00:07:12.079
<v Speaker 2>We were actually able to in a week spike and

159
00:07:12.120 --> 00:07:15.279
<v Speaker 2>prototype something and then in about another week actually get

160
00:07:15.399 --> 00:07:19.160
<v Speaker 2>into deployment a solution that using Broadway and the inherent

161
00:07:19.199 --> 00:07:23.079
<v Speaker 2>sort of scalability of OTP, that turned the Literally we

162
00:07:23.079 --> 00:07:25.560
<v Speaker 2>were able to process the data faster than they could

163
00:07:25.600 --> 00:07:27.800
<v Speaker 2>get it to us. So we went from processing and

164
00:07:27.800 --> 00:07:30.920
<v Speaker 2>turning around all the COVID cases in about every couple

165
00:07:30.959 --> 00:07:34.079
<v Speaker 2>hours to one minute and thirty seconds was our first test,

166
00:07:34.079 --> 00:07:36.160
<v Speaker 2>and we got it down to sub one minute, and

167
00:07:36.199 --> 00:07:38.279
<v Speaker 2>they were doing it incrementally. We were actually able to

168
00:07:38.279 --> 00:07:42.319
<v Speaker 2>reprocess every single test, every single run, every single time,

169
00:07:42.399 --> 00:07:44.639
<v Speaker 2>which allowed us to do a different type of quality control,

170
00:07:44.800 --> 00:07:47.160
<v Speaker 2>which really matters for deduplication because a lot of the

171
00:07:47.639 --> 00:07:49.720
<v Speaker 2>issues that you run into with COVID testing are that

172
00:07:49.800 --> 00:07:51.920
<v Speaker 2>the lag between when people get tests and the test

173
00:07:51.920 --> 00:07:55.040
<v Speaker 2>results are reported. I mean that duplicates and false positives

174
00:07:55.079 --> 00:07:58.480
<v Speaker 2>are a real problem. So that was all done on

175
00:07:58.839 --> 00:08:02.240
<v Speaker 2>Elixir and earline, right, And that was one of those things.

176
00:08:02.240 --> 00:08:04.480
<v Speaker 2>By the way, we also wrote a telyphony shim that

177
00:08:04.560 --> 00:08:07.839
<v Speaker 2>actually did calliphony control, that did call control for connecting

178
00:08:07.879 --> 00:08:11.600
<v Speaker 2>calls to contact tracers, also done in arline, and both

179
00:08:11.639 --> 00:08:13.879
<v Speaker 2>of them, if I remember correctly, I might be making

180
00:08:13.879 --> 00:08:15.439
<v Speaker 2>this up a little bit, but both of them required

181
00:08:15.519 --> 00:08:18.600
<v Speaker 2>so few resources that they ran in like a container

182
00:08:18.879 --> 00:08:21.480
<v Speaker 2>inside of like an easy two medium, right. It was

183
00:08:21.560 --> 00:08:24.519
<v Speaker 2>just so ridiculously efficient that it was kind of kind

184
00:08:24.519 --> 00:08:28.120
<v Speaker 2>of sad, and we replaced a bunch of custom made

185
00:08:28.079 --> 00:08:30.199
<v Speaker 2>over this Lambda functions that were doing this that had

186
00:08:30.240 --> 00:08:32.559
<v Speaker 2>to do with somewhere aer prone. I think the Lamba

187
00:08:32.600 --> 00:08:35.759
<v Speaker 2>function loads were a couple hours, like fourteen or fifteen

188
00:08:35.799 --> 00:08:38.399
<v Speaker 2>hours to reload the entire universe of data just because

189
00:08:38.639 --> 00:08:41.000
<v Speaker 2>of some architectural decisions. But the short version is Alexra

190
00:08:41.120 --> 00:08:42.720
<v Speaker 2>was a big win because three people were able to

191
00:08:42.720 --> 00:08:46.279
<v Speaker 2>rebuild that system in like a week. So long week,

192
00:08:46.360 --> 00:08:48.279
<v Speaker 2>mind you, but it was really kind of impressive. That

193
00:08:48.279 --> 00:08:50.440
<v Speaker 2>was one of those really aha moments. When you can

194
00:08:50.480 --> 00:08:54.159
<v Speaker 2>think about Elixir and Arline and Beam are very different

195
00:08:54.159 --> 00:08:56.440
<v Speaker 2>and they provide almost like what people or devs think

196
00:08:56.440 --> 00:08:57.360
<v Speaker 2>of as superpowers.

197
00:08:57.679 --> 00:09:00.200
<v Speaker 4>So I feel like I've lived the same exact story

198
00:09:00.240 --> 00:09:04.480
<v Speaker 4>of Lamb does being painful and terribly slow, and then

199
00:09:04.559 --> 00:09:06.879
<v Speaker 4>replacing it with an Elixir app and then it was,

200
00:09:07.120 --> 00:09:09.039
<v Speaker 4>you know, like a whole different world entirely.

201
00:09:09.440 --> 00:09:09.679
<v Speaker 5>Yeah.

202
00:09:10.000 --> 00:09:11.840
<v Speaker 2>Actually, have you ever see that T shirt that says

203
00:09:11.840 --> 00:09:14.399
<v Speaker 2>go away, I'll replace you with a small shell script. Like,

204
00:09:14.840 --> 00:09:17.080
<v Speaker 2>you know, there's like this comic. I think it was

205
00:09:17.120 --> 00:09:18.960
<v Speaker 2>floating around for a while, but it's I almost feel

206
00:09:19.000 --> 00:09:21.759
<v Speaker 2>like the exact same thing. It's like almost any use

207
00:09:21.759 --> 00:09:23.480
<v Speaker 2>case where you're using a Lamb to function, you can

208
00:09:23.639 --> 00:09:27.120
<v Speaker 2>use Elixir and it just kind of works. It's kind

209
00:09:27.120 --> 00:09:27.519
<v Speaker 2>of funny.

210
00:09:27.559 --> 00:09:29.759
<v Speaker 4>I mean, a Lamb is effected with like one gen

211
00:09:29.879 --> 00:09:31.840
<v Speaker 4>server and we can spawn like you know, thousands of

212
00:09:31.919 --> 00:09:33.279
<v Speaker 4>thousands of them, no problem.

213
00:09:33.440 --> 00:09:36.200
<v Speaker 5>So are you guys saying this? And the question I

214
00:09:36.240 --> 00:09:39.320
<v Speaker 5>have is why isn't everyone doing this? Why is Elix

215
00:09:39.399 --> 00:09:42.360
<v Speaker 5>or not like the language that everyone builds all the things.

216
00:09:42.600 --> 00:09:46.399
<v Speaker 5>I mean, yeah, obviously it's the right soul for every

217
00:09:46.519 --> 00:09:49.440
<v Speaker 5>job there. That's a great question. It has nothing to

218
00:09:49.480 --> 00:09:50.159
<v Speaker 5>do with technology.

219
00:09:50.159 --> 00:09:51.639
<v Speaker 2>I'd love to hear what you guys think, and then

220
00:09:51.720 --> 00:09:55.639
<v Speaker 2>I'll opine with my own slightly derisive, sarcastic view.

221
00:09:55.480 --> 00:09:59.879
<v Speaker 3>On this and and the darkness behind them, right, one

222
00:10:00.120 --> 00:10:04.039
<v Speaker 3>language to rule them all, right, So it's it's interesting

223
00:10:04.480 --> 00:10:06.679
<v Speaker 3>I'm starting to play with with a lot of different

224
00:10:06.720 --> 00:10:09.960
<v Speaker 3>languages that that have different takes in the world. And

225
00:10:09.960 --> 00:10:12.120
<v Speaker 3>so the one that really opened my eyes was Pony

226
00:10:12.799 --> 00:10:15.679
<v Speaker 3>because it does so there are a lot of things

227
00:10:15.679 --> 00:10:18.559
<v Speaker 3>that Elixer does really well that that Pony just really

228
00:10:18.559 --> 00:10:21.360
<v Speaker 3>really sucks at, right, But one of the things that

229
00:10:21.399 --> 00:10:28.039
<v Speaker 3>Pony does well is it enforces compiler constraints that enforce

230
00:10:28.200 --> 00:10:33.679
<v Speaker 3>concurrency constraints, right, so incorrect programs won't compile. And so

231
00:10:34.200 --> 00:10:37.360
<v Speaker 3>you know that that pointed me to to the to

232
00:10:37.480 --> 00:10:40.399
<v Speaker 3>the idea that if you have to move a lot

233
00:10:40.440 --> 00:10:43.000
<v Speaker 3>of data around, you know, if you have a lot

234
00:10:43.039 --> 00:10:47.120
<v Speaker 3>of commutability, then then Elixor isn't it. And so I've

235
00:10:47.159 --> 00:10:49.159
<v Speaker 3>been spending a little bit of time in Julia this

236
00:10:49.279 --> 00:10:52.759
<v Speaker 3>year just kind of to flux the old math muscles.

237
00:10:52.799 --> 00:10:52.960
<v Speaker 1>Right.

238
00:10:54.360 --> 00:10:57.279
<v Speaker 3>So I was a math major in college or computer

239
00:10:57.360 --> 00:10:59.600
<v Speaker 3>science and math, and so one of the things that

240
00:10:59.600 --> 00:11:04.000
<v Speaker 3>that we were focused on was linear algebra I'm sorry,

241
00:11:04.480 --> 00:11:08.759
<v Speaker 3>like matrix matrix algebra. And that's kind of what machine

242
00:11:08.840 --> 00:11:12.559
<v Speaker 3>learning and machine modeling have have turned into, right. It's

243
00:11:12.600 --> 00:11:16.360
<v Speaker 3>it's you have these these massive systems of equations and

244
00:11:16.360 --> 00:11:20.600
<v Speaker 3>and algorithms to kind of slowly crank and provide more

245
00:11:20.600 --> 00:11:23.600
<v Speaker 3>and more precision. And we're starting to get into the

246
00:11:23.639 --> 00:11:27.320
<v Speaker 3>places where where you could take these these massive tables

247
00:11:27.799 --> 00:11:32.440
<v Speaker 3>and apply these differential equations to them. And Elixir is

248
00:11:32.519 --> 00:11:34.519
<v Speaker 3>just not good at that, and it is never going

249
00:11:34.559 --> 00:11:37.320
<v Speaker 3>to be good at that. It's good at kind of

250
00:11:37.360 --> 00:11:40.200
<v Speaker 3>the control. But yet, Yeah, I mean I think that

251
00:11:40.200 --> 00:11:42.240
<v Speaker 3>that there are a lot of good things that Elixer

252
00:11:42.360 --> 00:11:45.720
<v Speaker 3>is great at. It's funny, Randall, it's Elixer is great

253
00:11:45.799 --> 00:11:48.320
<v Speaker 3>at almost all the things that we were doing.

254
00:11:49.240 --> 00:11:52.879
<v Speaker 6>Where you're at these early Ruby communities, right, the deployment,

255
00:11:53.039 --> 00:11:57.039
<v Speaker 6>the you know, the the babysit big fat relational database

256
00:11:57.120 --> 00:11:59.639
<v Speaker 6>with a web UI, you know, on and on.

257
00:12:00.360 --> 00:12:02.759
<v Speaker 2>Yeah. No, so I don't know, what do you get?

258
00:12:02.799 --> 00:12:04.480
<v Speaker 2>Why do you guys think it's not winning? I mean,

259
00:12:04.679 --> 00:12:06.840
<v Speaker 2>I guess the other question is what's the definition of winning.

260
00:12:07.200 --> 00:12:11.440
<v Speaker 2>I don't think universal adoption of everything is the definition

261
00:12:11.480 --> 00:12:13.879
<v Speaker 2>of winning. I don't think it's for everyone. Not all

262
00:12:13.960 --> 00:12:15.039
<v Speaker 2>languages are for everyone.

263
00:12:15.440 --> 00:12:17.600
<v Speaker 3>I have a question, how do we know it's not winning?

264
00:12:17.720 --> 00:12:17.919
<v Speaker 2>Right?

265
00:12:18.320 --> 00:12:21.799
<v Speaker 3>The language popularity? And so they make mistakes, right, Oh yeah,

266
00:12:21.840 --> 00:12:22.279
<v Speaker 3>didn't they?

267
00:12:22.919 --> 00:12:27.519
<v Speaker 2>Actually what was it? There's something that they included, like crystal,

268
00:12:27.519 --> 00:12:29.480
<v Speaker 2>that's what it was, right, And they ended up playing

269
00:12:29.519 --> 00:12:29.879
<v Speaker 2>like new.

270
00:12:29.840 --> 00:12:34.480
<v Speaker 3>Age chygramming crystals, which is either a programming model or

271
00:12:35.159 --> 00:12:38.440
<v Speaker 3>a great way to have your New Age crystals learn

272
00:12:39.039 --> 00:12:42.440
<v Speaker 3>as you get more enlightened every day, I.

273
00:12:42.519 --> 00:12:45.639
<v Speaker 2>Have to look into that. So no, So I think

274
00:12:45.639 --> 00:12:48.279
<v Speaker 2>there are lots of things. It's really funny. So one

275
00:12:48.279 --> 00:12:50.639
<v Speaker 2>of the things I learned from being a rubyist early on,

276
00:12:51.000 --> 00:12:52.679
<v Speaker 2>and at the time I got into Ruby, I was

277
00:12:52.720 --> 00:12:55.799
<v Speaker 2>actually an independent consultant and I was all in dot net,

278
00:12:56.080 --> 00:12:59.200
<v Speaker 2>like I had actually started a long time ago. System

279
00:12:59.240 --> 00:13:02.320
<v Speaker 2>five released three, that's how old I am. But I

280
00:13:02.360 --> 00:13:03.799
<v Speaker 2>had gotten into that net because that's where all the

281
00:13:03.799 --> 00:13:06.639
<v Speaker 2>consulting money was. So that was C plus plus microsup

282
00:13:06.679 --> 00:13:09.759
<v Speaker 2>foundation classes all that crap, and the learning Aha moment

283
00:13:09.759 --> 00:13:11.480
<v Speaker 2>for me is I had to take some visual basic

284
00:13:11.519 --> 00:13:13.440
<v Speaker 2>programmers and try and teach them C sharp and they

285
00:13:13.440 --> 00:13:16.120
<v Speaker 2>failed miserably, Like there was no way to teach them

286
00:13:16.159 --> 00:13:18.720
<v Speaker 2>the basics of classes, and they just hadn't learned any

287
00:13:18.759 --> 00:13:21.480
<v Speaker 2>of that stuff, and we had to deliver an ETL system.

288
00:13:21.679 --> 00:13:24.840
<v Speaker 2>And Blake Miserini at the time he's like, hey, man,

289
00:13:24.879 --> 00:13:26.759
<v Speaker 2>I know you like Pearl, but I've got something way

290
00:13:26.759 --> 00:13:29.320
<v Speaker 2>better than Pearl. And I apologize for all the Pearl

291
00:13:29.360 --> 00:13:30.919
<v Speaker 2>I ever wrote. I think we all need to do that.

292
00:13:31.399 --> 00:13:33.320
<v Speaker 2>But he said, I got something way better than Pearl.

293
00:13:33.360 --> 00:13:35.799
<v Speaker 2>It's this Ruby thing and like whatever. So I played

294
00:13:35.799 --> 00:13:37.240
<v Speaker 2>around with it for a week and I'm like, huh,

295
00:13:37.240 --> 00:13:40.000
<v Speaker 2>this is pretty neat, and I'm pretty sure at the

296
00:13:40.039 --> 00:13:42.960
<v Speaker 2>time I actually had to go to like a bookstore

297
00:13:42.960 --> 00:13:45.639
<v Speaker 2>and find the Ruby book, like an actual print version

298
00:13:45.679 --> 00:13:49.159
<v Speaker 2>of the book. This was, you know, so like he

299
00:13:49.200 --> 00:13:51.879
<v Speaker 2>had to like run around to borders and whatever and

300
00:13:52.039 --> 00:13:55.440
<v Speaker 2>try and find a copy of Dave Thomas's book. And

301
00:13:55.799 --> 00:13:57.799
<v Speaker 2>I did over the weekend, and then I tried it

302
00:13:57.799 --> 00:14:00.519
<v Speaker 2>with these guys on one day and then I had

303
00:14:00.519 --> 00:14:03.279
<v Speaker 2>them doing advanced string processing and classes. They just got

304
00:14:03.320 --> 00:14:05.399
<v Speaker 2>it and rocked it. And that was the moment I

305
00:14:05.440 --> 00:14:08.519
<v Speaker 2>knew that, like, oh yeah, that's where we need to go,

306
00:14:09.320 --> 00:14:11.759
<v Speaker 2>and so I literally just stopped doing Dottin had stuff

307
00:14:11.759 --> 00:14:15.759
<v Speaker 2>and started doing all in on Ruby and Erlin and Elixir.

308
00:14:16.200 --> 00:14:18.840
<v Speaker 2>And I actually, when I say that earling Elixir Beam,

309
00:14:18.960 --> 00:14:21.759
<v Speaker 2>I actually really like to separate those things because I

310
00:14:21.759 --> 00:14:24.480
<v Speaker 2>think it's important that you don't mix them or blend them,

311
00:14:24.519 --> 00:14:26.840
<v Speaker 2>like there are different things and that you're getting a

312
00:14:26.840 --> 00:14:29.120
<v Speaker 2>lot there. I think it has that same feeling as

313
00:14:29.200 --> 00:14:32.720
<v Speaker 2>early adoption for Ruby. Like literally when we started doing

314
00:14:32.799 --> 00:14:35.600
<v Speaker 2>Ruby work, we had this other company called Quality Humans

315
00:14:35.600 --> 00:14:38.000
<v Speaker 2>where we were all doing rails apps and everybody thought

316
00:14:38.000 --> 00:14:40.000
<v Speaker 2>that we were crazy. You're like, I don't know this

317
00:14:40.120 --> 00:14:43.039
<v Speaker 2>rails thing. I don't know. It seems pretty risky, Like

318
00:14:43.120 --> 00:14:45.000
<v Speaker 2>only do guys in Chicago are doing it?

319
00:14:45.159 --> 00:14:45.360
<v Speaker 1>Yeah.

320
00:14:45.360 --> 00:14:48.720
<v Speaker 3>I mean I think that very often we as a

321
00:14:48.720 --> 00:14:51.679
<v Speaker 3>programming community have to take a step back to take

322
00:14:51.679 --> 00:14:54.320
<v Speaker 3>a step forward, right, And I think that that's one

323
00:14:54.360 --> 00:14:56.799
<v Speaker 3>of the things that would be provided, right. So it

324
00:14:56.840 --> 00:14:58.960
<v Speaker 3>was a huge step forward in a lot of ways, right,

325
00:14:59.039 --> 00:15:02.399
<v Speaker 3>first in the idea that programming language should be intuitive

326
00:15:02.440 --> 00:15:07.000
<v Speaker 3>and fun. Second in that that you didn't have to specify,

327
00:15:07.960 --> 00:15:13.200
<v Speaker 3>it wasn't kind of this this really tedious artificial typing model.

328
00:15:13.559 --> 00:15:17.360
<v Speaker 3>And third, we didn't have these really tedious and artificial

329
00:15:17.399 --> 00:15:21.879
<v Speaker 3>configurations that were you know, XML that was explicit for everything,

330
00:15:22.360 --> 00:15:25.720
<v Speaker 3>with no defaults. All those things were really important for Ruby,

331
00:15:26.240 --> 00:15:30.600
<v Speaker 3>and it seems like by taking that step back to

332
00:15:30.639 --> 00:15:35.240
<v Speaker 3>reset the kind of the bar on for application developers

333
00:15:35.360 --> 00:15:39.639
<v Speaker 3>on the productivity of application developers. You know, we got

334
00:15:39.679 --> 00:15:43.320
<v Speaker 3>a lot of the you know, the deployments, you know, immutability,

335
00:15:43.679 --> 00:15:46.440
<v Speaker 3>a lot of a lot of things wrong, but there

336
00:15:46.519 --> 00:15:49.480
<v Speaker 3>was a whole lot that was right about Ruby that

337
00:15:49.600 --> 00:15:50.600
<v Speaker 3>liks Or learned from.

338
00:15:50.799 --> 00:15:51.480
<v Speaker 2>Yeah. Good.

339
00:15:52.360 --> 00:15:54.559
<v Speaker 1>I like that you mentioned productivity, Bruce, because there's something

340
00:15:54.559 --> 00:15:57.399
<v Speaker 1>that I absolutely feel is true of Alexa and Phoenix.

341
00:15:57.399 --> 00:15:58.960
<v Speaker 1>And then kind of back to what you were saying, Randall,

342
00:15:59.039 --> 00:16:02.519
<v Speaker 1>when you were trying to, you know, move some folks

343
00:16:02.559 --> 00:16:04.759
<v Speaker 1>into kind of this realm of like object oriented and

344
00:16:04.840 --> 00:16:06.919
<v Speaker 1>when you found Ruby and kind of brought that to them,

345
00:16:06.960 --> 00:16:09.080
<v Speaker 1>that people were able to grack it and learn it

346
00:16:09.080 --> 00:16:12.039
<v Speaker 1>and be productive in it relatively quickly. And that's absolutely

347
00:16:12.039 --> 00:16:14.039
<v Speaker 1>true of Alixir. It's absolutely true of Phoenix, and not

348
00:16:14.240 --> 00:16:16.759
<v Speaker 1>just because of you know, Alixir's language features, in the

349
00:16:16.799 --> 00:16:19.399
<v Speaker 1>fact that, similarly to Ruby, no, it is eloquent and

350
00:16:19.440 --> 00:16:21.879
<v Speaker 1>easy to reason about. But I think there's so many

351
00:16:21.919 --> 00:16:26.000
<v Speaker 1>sort of eco Elixir ecosystem features that allow developers and

352
00:16:26.039 --> 00:16:29.120
<v Speaker 1>whole teams to be really highly productive. And I think

353
00:16:29.120 --> 00:16:31.279
<v Speaker 1>that's why I'm not at all surprised to hear how

354
00:16:31.320 --> 00:16:34.000
<v Speaker 1>Alexir and erlang has allowed you guys to solve these

355
00:16:34.039 --> 00:16:37.240
<v Speaker 1>really big scale problems for like COVID contact tracing. It

356
00:16:37.320 --> 00:16:38.919
<v Speaker 1>reminds me a bit of a talk that was one

357
00:16:38.919 --> 00:16:41.519
<v Speaker 1>of the keynotes at Alexa kronk EEO this year, which

358
00:16:41.559 --> 00:16:44.159
<v Speaker 1>will hopefully be out soon, about some folks in Kenya

359
00:16:44.200 --> 00:16:46.440
<v Speaker 1>who are using Elixir to develop a new like nine

360
00:16:46.480 --> 00:16:50.279
<v Speaker 1>to one one emergency contact system around the country. And

361
00:16:50.559 --> 00:16:52.799
<v Speaker 1>it's just it's kind of the perfect combination of like

362
00:16:52.879 --> 00:16:56.039
<v Speaker 1>scale and concurrency and fault tolerance, but also productivity for

363
00:16:56.279 --> 00:16:59.080
<v Speaker 1>actual humans. And so I'd definitely be curious to hear,

364
00:16:59.320 --> 00:17:01.519
<v Speaker 1>you know, from you and with your experiences lately with

365
00:17:01.559 --> 00:17:03.840
<v Speaker 1>some of these COVID projects, like sounds of you guys

366
00:17:03.840 --> 00:17:06.480
<v Speaker 1>spum this up really fast, like a week later you

367
00:17:06.559 --> 00:17:08.960
<v Speaker 1>had these working prototypes. So like, what is it about

368
00:17:09.039 --> 00:17:12.839
<v Speaker 1>alixer specifically or this ecosystem specifically that let you guys

369
00:17:12.880 --> 00:17:13.839
<v Speaker 1>do that so quickly?

370
00:17:14.400 --> 00:17:16.039
<v Speaker 2>So I'm going to give you the first one in

371
00:17:16.039 --> 00:17:17.799
<v Speaker 2>no particular order, but the first one that pops to

372
00:17:17.799 --> 00:17:20.559
<v Speaker 2>mind is people. So it's a really bizarre thing that

373
00:17:20.599 --> 00:17:23.440
<v Speaker 2>I found is that people who are looking for those

374
00:17:23.440 --> 00:17:26.680
<v Speaker 2>exact things that you mentioned, like people for whom tools matter,

375
00:17:26.839 --> 00:17:30.519
<v Speaker 2>like productivity matters. Like this is not to poopoo or

376
00:17:30.559 --> 00:17:32.319
<v Speaker 2>denegrate people who don't choose that, but there are some

377
00:17:32.359 --> 00:17:34.079
<v Speaker 2>people who are like approach things that it's kind of

378
00:17:34.119 --> 00:17:35.720
<v Speaker 2>like a craftsman, and some people who approach it it's

379
00:17:35.759 --> 00:17:37.519
<v Speaker 2>just like this is my job. But there are literally

380
00:17:37.559 --> 00:17:39.400
<v Speaker 2>people who go out and try and learn more because

381
00:17:39.400 --> 00:17:42.759
<v Speaker 2>they want better tools, they want a better experience, like

382
00:17:42.839 --> 00:17:45.519
<v Speaker 2>all those things holistically matter to them. And I find

383
00:17:45.519 --> 00:17:49.359
<v Speaker 2>people who gravitate to the elixir ecosystem generally speaking, care

384
00:17:49.400 --> 00:17:51.480
<v Speaker 2>about those things and as a result it ironically it

385
00:17:51.480 --> 00:17:54.279
<v Speaker 2>makes them much better problem solvers, Like they literally care

386
00:17:54.359 --> 00:17:57.119
<v Speaker 2>about the solution and the elegance solution on I think

387
00:17:57.160 --> 00:18:00.400
<v Speaker 2>Buckminster Fuller had that statement. I might be misattributing the quote,

388
00:18:00.400 --> 00:18:02.680
<v Speaker 2>but it's like, first I start with a solution, but

389
00:18:02.720 --> 00:18:04.319
<v Speaker 2>if at the end it is an elegant, I know

390
00:18:04.359 --> 00:18:06.119
<v Speaker 2>that I haven't solved it in the best way. It's

391
00:18:06.200 --> 00:18:08.359
<v Speaker 2>kind of that's kind of the gist of it. So

392
00:18:08.640 --> 00:18:11.079
<v Speaker 2>we actually because we had people who had experienced in elixir,

393
00:18:11.559 --> 00:18:14.000
<v Speaker 2>they were really good at solving problems. Then the other

394
00:18:14.039 --> 00:18:17.400
<v Speaker 2>thing that really works out is that beam Erling and

395
00:18:17.400 --> 00:18:21.799
<v Speaker 2>Elixer provide great abstractions, Like I really love the fact

396
00:18:21.839 --> 00:18:23.799
<v Speaker 2>that you get to pick to the right level of

397
00:18:23.839 --> 00:18:25.880
<v Speaker 2>abstraction for your problem, and if you need to go

398
00:18:25.960 --> 00:18:28.680
<v Speaker 2>more granular, you can't. If you don't have to go

399
00:18:28.759 --> 00:18:32.000
<v Speaker 2>more granular, no need. Like I wrote C plus plus

400
00:18:32.039 --> 00:18:35.960
<v Speaker 2>for a long time, probably professionally for the better part

401
00:18:36.000 --> 00:18:38.359
<v Speaker 2>of almost eight or nine years. And one of the

402
00:18:38.359 --> 00:18:40.759
<v Speaker 2>problems I always I didn't realize at the time because

403
00:18:40.759 --> 00:18:43.400
<v Speaker 2>like I started off an assembler and then everything looked

404
00:18:43.400 --> 00:18:46.359
<v Speaker 2>better than assembler was that C plus plus forces you

405
00:18:46.720 --> 00:18:49.799
<v Speaker 2>to solve every abstraction from the ground up, like almost

406
00:18:49.839 --> 00:18:52.000
<v Speaker 2>invariably you're just starting it's like, oh yeah, so let's

407
00:18:52.000 --> 00:18:53.519
<v Speaker 2>talk about how you're going to pay out the memory

408
00:18:53.519 --> 00:18:56.480
<v Speaker 2>for your class, write another class. Guess what, now you're

409
00:18:56.519 --> 00:18:58.359
<v Speaker 2>going to do the exact same thing. Let's talk about

410
00:18:58.359 --> 00:19:01.039
<v Speaker 2>the copy se antics for your class. Let's top about

411
00:19:01.079 --> 00:19:04.079
<v Speaker 2>like all of these things which really have nothing to

412
00:19:04.119 --> 00:19:06.039
<v Speaker 2>do with solving the problem, are the majority of the

413
00:19:06.119 --> 00:19:09.039
<v Speaker 2>lift that you actually have to do. And the funny

414
00:19:09.039 --> 00:19:13.359
<v Speaker 2>thing is we didn't really think about parallelization. We didn't

415
00:19:13.359 --> 00:19:16.640
<v Speaker 2>think about memory usage, we didn't think about cputtilization. We

416
00:19:16.759 --> 00:19:18.480
<v Speaker 2>just really thought about, well, we have to do the

417
00:19:18.519 --> 00:19:21.359
<v Speaker 2>same thing over and over and over again. Well, how

418
00:19:21.400 --> 00:19:22.960
<v Speaker 2>do we solve it in the small we do this?

419
00:19:23.200 --> 00:19:25.200
<v Speaker 2>Oh well, what do we need to do to paralyze it?

420
00:19:25.319 --> 00:19:27.960
<v Speaker 2>What's this broadway thing? Okay, hey, look this gives us

421
00:19:27.960 --> 00:19:31.039
<v Speaker 2>some like composible data pipelines. Well that works really well? Great, Okay,

422
00:19:31.119 --> 00:19:32.680
<v Speaker 2>I guess it all works. How fast is it? I

423
00:19:32.680 --> 00:19:36.079
<v Speaker 2>don't know. Let's look at it. Oh crap, did it break?

424
00:19:36.319 --> 00:19:40.039
<v Speaker 2>Oh no, it finished? Weird? Okay, I guess we solved

425
00:19:40.039 --> 00:19:43.240
<v Speaker 2>the problem. But it felt like a happy accident. And

426
00:19:43.240 --> 00:19:44.680
<v Speaker 2>that's one of the things I really love about it. Like,

427
00:19:44.720 --> 00:19:46.319
<v Speaker 2>so like a perfect example, the first time you run

428
00:19:46.400 --> 00:19:48.240
<v Speaker 2>live you, it feels like a happy accident.

429
00:19:48.440 --> 00:19:51.000
<v Speaker 1>You're like totally You're like, oh, okay, I guess that's it.

430
00:19:51.000 --> 00:19:52.599
<v Speaker 1>It just works. And I feel like I've had that

431
00:19:52.680 --> 00:19:55.319
<v Speaker 1>experience so much, not just a Live you, but definitely

432
00:19:55.440 --> 00:19:58.279
<v Speaker 1>very notably with Live you, but so often you're like, huh, okay,

433
00:19:58.319 --> 00:19:59.640
<v Speaker 1>I have to do this thing. I wonder if I

434
00:19:59.680 --> 00:20:01.640
<v Speaker 1>just try you know, X, Y, and Z, and then

435
00:20:01.680 --> 00:20:03.440
<v Speaker 1>you know you're kind of off to the races. Yeah.

436
00:20:03.480 --> 00:20:06.160
<v Speaker 2>Oh, Also, speaking of productivity, I actually really like the

437
00:20:06.240 --> 00:20:10.759
<v Speaker 2>fact that, specifically when you start talking about abstractions, I

438
00:20:10.920 --> 00:20:13.759
<v Speaker 2>like the fact that one of the principal ideas behind

439
00:20:13.759 --> 00:20:16.519
<v Speaker 2>both Elixir Earling Phoenix novel libraries is that we don't

440
00:20:16.640 --> 00:20:20.160
<v Speaker 2>hide them, we just express them, if that makes sense. Like,

441
00:20:20.839 --> 00:20:23.119
<v Speaker 2>there's no super uber magic. The magic is there for

442
00:20:23.160 --> 00:20:25.720
<v Speaker 2>you to understand and see, and it basically you can

443
00:20:25.759 --> 00:20:27.640
<v Speaker 2>deal with it and you can use it or you cannot.

444
00:20:27.759 --> 00:20:30.279
<v Speaker 2>But it's not trying to make something really magical happen.

445
00:20:30.359 --> 00:20:32.319
<v Speaker 2>Like I know it's fun to pick on JavaScript, but

446
00:20:32.359 --> 00:20:34.680
<v Speaker 2>like promises and JavaScript seem like a really good idea,

447
00:20:35.319 --> 00:20:37.519
<v Speaker 2>But I think we've all written some JavaScript where the

448
00:20:37.599 --> 00:20:41.119
<v Speaker 2>chain of promises goes down and on and on and on.

449
00:20:41.440 --> 00:20:43.279
<v Speaker 1>I has no idea what you're talking about does. It's

450
00:20:43.279 --> 00:20:46.039
<v Speaker 1>not making at all. I'm curious how you feel that

451
00:20:46.079 --> 00:20:48.480
<v Speaker 1>compares to you know, people throw the phrase like rails

452
00:20:48.519 --> 00:20:50.559
<v Speaker 1>magic around a lot, and that's something that I know,

453
00:20:50.640 --> 00:20:52.880
<v Speaker 1>like Stephen and I encountered and teaching rails is when

454
00:20:52.920 --> 00:20:55.279
<v Speaker 1>you take students from the way that we had taught

455
00:20:55.279 --> 00:20:57.839
<v Speaker 1>the course back at Flatter and usually went from you know,

456
00:20:57.920 --> 00:21:00.559
<v Speaker 1>you're building like a web app with rep, then you Sinatra,

457
00:21:00.599 --> 00:21:03.200
<v Speaker 1>than you're using rails, and like the class would always

458
00:21:03.200 --> 00:21:05.279
<v Speaker 1>split almost fifty fifty. Like half the people would be

459
00:21:05.359 --> 00:21:07.599
<v Speaker 1>so thrilled to get to rails. Stuff would just click

460
00:21:07.680 --> 00:21:09.559
<v Speaker 1>for them. They would be so productive, and then the

461
00:21:09.599 --> 00:21:11.960
<v Speaker 1>other people would be frankly kind of pissed because they

462
00:21:12.000 --> 00:21:13.640
<v Speaker 1>wanted to know what the heck was going on under

463
00:21:13.640 --> 00:21:16.480
<v Speaker 1>the hood and weren't comfortable or happy with all of

464
00:21:16.519 --> 00:21:17.400
<v Speaker 1>these abstractions.

465
00:21:17.839 --> 00:21:20.279
<v Speaker 2>So, you know, the funny thing about that is one

466
00:21:20.319 --> 00:21:22.200
<v Speaker 2>of the best I think what saved me from that

467
00:21:22.319 --> 00:21:26.759
<v Speaker 2>specific thing was one I was lucky enough to take

468
00:21:26.839 --> 00:21:29.720
<v Speaker 2>the advanced Ruby class that they taught, where I think

469
00:21:29.759 --> 00:21:32.319
<v Speaker 2>it was it was the pragsy I think Dave might

470
00:21:32.359 --> 00:21:35.480
<v Speaker 2>have actually taught it, and he specifically talked about eidenclasses

471
00:21:35.480 --> 00:21:38.359
<v Speaker 2>and unpacking. So and I think the first version of

472
00:21:38.440 --> 00:21:41.640
<v Speaker 2>rails I use was point nine or point eight. It was.

473
00:21:41.680 --> 00:21:43.680
<v Speaker 2>It was not long after his brand news, so you

474
00:21:43.799 --> 00:21:46.119
<v Speaker 2>had to understand how it worked because the stuff broke

475
00:21:46.160 --> 00:21:48.839
<v Speaker 2>all the time, right like, it had some really weird

476
00:21:48.839 --> 00:21:51.960
<v Speaker 2>behaviors and we actually used to have this. What we

477
00:21:52.000 --> 00:21:54.680
<v Speaker 2>would say is we want Ruby programmers, not rails programmers.

478
00:21:55.240 --> 00:21:57.640
<v Speaker 2>And the difference was whether or not you understood the abstractions.

479
00:21:57.839 --> 00:22:00.440
<v Speaker 2>And I think that's actually a different approach that people

480
00:22:00.480 --> 00:22:02.440
<v Speaker 2>take to learning things, And to me, that's the difference

481
00:22:02.480 --> 00:22:05.880
<v Speaker 2>between maybe being a craftsman just being a utilitarian, like

482
00:22:06.200 --> 00:22:08.359
<v Speaker 2>you need to understand those abstractions. And in fact, I

483
00:22:08.400 --> 00:22:10.640
<v Speaker 2>think somebody was mentioning something about, like, what would you

484
00:22:10.680 --> 00:22:13.440
<v Speaker 2>say about learning Elixir? What I wish I had done differently?

485
00:22:13.480 --> 00:22:16.200
<v Speaker 2>I think was one of the things we were talking about.

486
00:22:16.359 --> 00:22:19.359
<v Speaker 2>One of the things I always tell people is learn Elixir,

487
00:22:19.440 --> 00:22:22.519
<v Speaker 2>not Phoenix, right, because a lot of people get into

488
00:22:22.839 --> 00:22:25.599
<v Speaker 2>Ruby through rails, and so what they learn is rails,

489
00:22:25.599 --> 00:22:27.599
<v Speaker 2>and that's as deep as they go. And the problem

490
00:22:27.680 --> 00:22:29.559
<v Speaker 2>then becomes if you ever give them a ruby esque

491
00:22:29.599 --> 00:22:32.319
<v Speaker 2>or Ruby centric problem, they always see it through a

492
00:22:32.400 --> 00:22:36.279
<v Speaker 2>rail's lens, right, same thing with Elixir. I think it's

493
00:22:36.359 --> 00:22:40.640
<v Speaker 2>actually way it's far better to learn Elixir first, then

494
00:22:40.720 --> 00:22:43.240
<v Speaker 2>learn Phoenix, then learn Phoenix, and then try and figure

495
00:22:43.240 --> 00:22:46.119
<v Speaker 2>out what's going on, because if you learn elixer, you

496
00:22:46.160 --> 00:22:49.359
<v Speaker 2>see Phoenix and you're like, well, that makes perfect sense right, pipes,

497
00:22:49.680 --> 00:22:53.079
<v Speaker 2>got it, composable, got it? It makes there's nothing there's

498
00:22:53.119 --> 00:22:55.680
<v Speaker 2>nothing magical here. The abstractions are all just layered into

499
00:22:55.759 --> 00:22:58.240
<v Speaker 2>this particular problem. It's great, but if you only see Phoenix,

500
00:22:58.279 --> 00:23:00.279
<v Speaker 2>like I've done this with people. They want build a

501
00:23:00.279 --> 00:23:02.079
<v Speaker 2>web app, they go for Phoenix, they get everything working,

502
00:23:02.119 --> 00:23:04.279
<v Speaker 2>They're like, I have no idea what's going on here?

503
00:23:04.519 --> 00:23:06.680
<v Speaker 2>Like why do you keep returning this? Okay? Thing? Like?

504
00:23:06.880 --> 00:23:08.440
<v Speaker 1>Or I think what you'll do then, too, is you'll

505
00:23:08.519 --> 00:23:11.640
<v Speaker 1>draw a lot of false equivalencies between Phoenix and rails.

506
00:23:11.680 --> 00:23:13.720
<v Speaker 1>And I think that that's something that I did a lot,

507
00:23:14.359 --> 00:23:16.680
<v Speaker 1>and you know, a lot of the ELIXA that I

508
00:23:16.680 --> 00:23:18.640
<v Speaker 1>wrote probably for like you know whatever. The first year

509
00:23:18.680 --> 00:23:20.799
<v Speaker 1>of my life is an electric developer was just a

510
00:23:20.839 --> 00:23:23.319
<v Speaker 1>mess because I was just trying to write Ruby and Elixir.

511
00:23:23.960 --> 00:23:25.319
<v Speaker 1>I think that's probably not uncommon.

512
00:23:25.680 --> 00:23:28.039
<v Speaker 2>I really agree with you on that one. Like I

513
00:23:28.039 --> 00:23:29.720
<v Speaker 2>remember I said the same thing because when I moved

514
00:23:29.720 --> 00:23:31.480
<v Speaker 2>to C plus plus from C, I always said that

515
00:23:31.559 --> 00:23:34.119
<v Speaker 2>C programmers make the worst C plus plus programmers because

516
00:23:34.160 --> 00:23:37.599
<v Speaker 2>you're writing C and C plus plus. And the strange

517
00:23:37.599 --> 00:23:39.759
<v Speaker 2>thing is Elixir has both the blessing and the curse.

518
00:23:39.799 --> 00:23:42.480
<v Speaker 2>Of looking like Ruby. I have seen it. Like I

519
00:23:42.519 --> 00:23:45.799
<v Speaker 2>see people who are literally they're great rubyists. They get

520
00:23:45.799 --> 00:23:48.359
<v Speaker 2>into Elixir and like you look at the code and

521
00:23:48.400 --> 00:23:50.480
<v Speaker 2>you're like, you know that at variable doesn't do what

522
00:23:50.519 --> 00:23:53.559
<v Speaker 2>you think it does, Like that is not what you

523
00:23:53.559 --> 00:23:56.680
<v Speaker 2>think it is, right, But you can see them using

524
00:23:56.720 --> 00:23:58.759
<v Speaker 2>it like it's a Ruby, like you know, a class

525
00:23:58.759 --> 00:24:01.000
<v Speaker 2>little variable, and they're like, well, it's just class a variable, right,

526
00:24:01.200 --> 00:24:02.759
<v Speaker 2>Like no, no, no, no.

527
00:24:03.279 --> 00:24:05.759
<v Speaker 3>It's really funny. I agree with both of you so much.

528
00:24:05.799 --> 00:24:09.480
<v Speaker 3>And what's funny is Sophie that that when I want

529
00:24:09.599 --> 00:24:12.680
<v Speaker 3>to learn to code things like an Elixer developer, would

530
00:24:12.720 --> 00:24:15.920
<v Speaker 3>I look for your articles? But anyway, neither here Northern

531
00:24:18.000 --> 00:24:20.920
<v Speaker 3>so render. One of the things that's that's cool about

532
00:24:21.359 --> 00:24:24.079
<v Speaker 3>the pivot that we made when you impactorate to that

533
00:24:24.119 --> 00:24:29.039
<v Speaker 3>first class of ours was that our OTP and Phoenix

534
00:24:29.079 --> 00:24:33.119
<v Speaker 3>courses have become a looser courses with a little OTP

535
00:24:33.400 --> 00:24:34.319
<v Speaker 3>and Phoenix mixed in.

536
00:24:34.599 --> 00:24:34.759
<v Speaker 2>Right.

537
00:24:35.279 --> 00:24:38.000
<v Speaker 3>It's that you know, we we we teach this model

538
00:24:38.279 --> 00:24:42.559
<v Speaker 3>of you know, constructor reducer transformer that I think that

539
00:24:42.599 --> 00:24:45.279
<v Speaker 3>we started to talk about in your class, but since

540
00:24:45.599 --> 00:24:49.799
<v Speaker 3>essence has become stronger, and we also teach this concept

541
00:24:49.920 --> 00:24:52.920
<v Speaker 3>of pipelind and with land and how to get between them.

542
00:24:53.240 --> 00:24:56.160
<v Speaker 3>But we also try to teach the concepts of how

543
00:24:56.160 --> 00:24:59.319
<v Speaker 3>do you learn, where do you find things like how

544
00:24:59.359 --> 00:25:02.960
<v Speaker 3>do you find the callbacks? Or behavior? What is a behavior?

545
00:25:03.279 --> 00:25:06.559
<v Speaker 3>All those kinds of things really really matter when when

546
00:25:06.599 --> 00:25:08.000
<v Speaker 3>you're taking the next step.

547
00:25:08.200 --> 00:25:09.920
<v Speaker 2>She didn't even think about that. That's the other thing

548
00:25:09.960 --> 00:25:13.359
<v Speaker 2>that was really great about Elixir is the documentation is amazing, yeah, right.

549
00:25:13.200 --> 00:25:16.559
<v Speaker 3>And that the documentation actually bleeds through all the way

550
00:25:16.640 --> 00:25:20.920
<v Speaker 3>from the documents on X to the documents on the

551
00:25:20.960 --> 00:25:24.680
<v Speaker 3>individual page for the project to get up to the

552
00:25:24.720 --> 00:25:27.200
<v Speaker 3>documentation and I e X, and all you have to

553
00:25:27.240 --> 00:25:30.319
<v Speaker 3>do is using to bring it all in and make

554
00:25:30.359 --> 00:25:31.200
<v Speaker 3>it all available.

555
00:25:31.480 --> 00:25:31.720
<v Speaker 7>Yeah.

556
00:25:31.720 --> 00:25:33.839
<v Speaker 2>In fact, actually I think in one of your other podcasts,

557
00:25:33.960 --> 00:25:36.680
<v Speaker 2>you guys mentioned something like the we're talking about Don't

558
00:25:36.680 --> 00:25:38.839
<v Speaker 2>Fear er Lang? Whose podcast was that.

559
00:25:39.119 --> 00:25:43.319
<v Speaker 1>We've definitely had that conversation here. Yeah, it's Toime.

560
00:25:43.440 --> 00:25:43.640
<v Speaker 2>Yeah.

561
00:25:43.680 --> 00:25:43.880
<v Speaker 5>Yeah.

562
00:25:43.960 --> 00:25:45.599
<v Speaker 2>So by the way, I totally met him for the

563
00:25:45.599 --> 00:25:48.000
<v Speaker 2>first time at a lone Star.

564
00:25:48.359 --> 00:25:49.440
<v Speaker 1>Yeah.

565
00:25:49.519 --> 00:25:52.000
<v Speaker 2>Yeah, actually, we totally We've got a chance to hang out.

566
00:25:52.000 --> 00:25:53.880
<v Speaker 2>I had no idea of like and like we just

567
00:25:53.920 --> 00:25:55.559
<v Speaker 2>met it. We just started talking mostly about food.

568
00:25:55.599 --> 00:25:59.039
<v Speaker 3>Actually, he has the biggest surfer vibe of anybody I've

569
00:25:59.039 --> 00:25:59.480
<v Speaker 3>ever met.

570
00:25:59.519 --> 00:26:02.200
<v Speaker 2>You know, No, he's a great guy. But I actually

571
00:26:02.200 --> 00:26:05.599
<v Speaker 2>I had heard his podcast on your podcast, his talking

572
00:26:05.640 --> 00:26:07.599
<v Speaker 2>on your podcast, and it was really funny because I

573
00:26:07.599 --> 00:26:09.200
<v Speaker 2>think we had some of the same stuff, like Sasag

574
00:26:09.240 --> 00:26:12.400
<v Speaker 2>Jerrek's talk on the soul of the Elixir ecosystem. I

575
00:26:12.440 --> 00:26:14.079
<v Speaker 2>actually just sent that to somebody. People were like, well,

576
00:26:14.119 --> 00:26:15.759
<v Speaker 2>why would you care? Like, why should I care about this?

577
00:26:15.799 --> 00:26:18.519
<v Speaker 2>I'm like, go, go watch this. If it resonates, come

578
00:26:18.720 --> 00:26:21.079
<v Speaker 2>If it doesn't, well, by all means, keep keep doing

579
00:26:21.079 --> 00:26:21.559
<v Speaker 2>what you're doing.

580
00:26:21.680 --> 00:26:24.559
<v Speaker 4>Yeah, that's definitely the best introductory video if anybody wants

581
00:26:24.599 --> 00:26:26.880
<v Speaker 4>to know what the beam is and the value proposition

582
00:26:27.160 --> 00:26:29.599
<v Speaker 4>set on that video, and if they're not convinced in

583
00:26:29.599 --> 00:26:32.119
<v Speaker 4>an hour of listening to Sasha, then it's not for them.

584
00:26:32.359 --> 00:26:34.119
<v Speaker 2>Yeah. Well, you know. One of the other funny things

585
00:26:34.240 --> 00:26:36.200
<v Speaker 2>is so I had this conversation with somebody else the

586
00:26:36.240 --> 00:26:38.960
<v Speaker 2>other day because we were talking about JavaScript's easy to

587
00:26:38.960 --> 00:26:41.759
<v Speaker 2>pick on listen, like all tools have their both pluses

588
00:26:41.799 --> 00:26:44.799
<v Speaker 2>and minuses. But what I was saying is they argument.

589
00:26:44.799 --> 00:26:47.279
<v Speaker 2>He's like, listen, javascripts got ubiquity, all these other things,

590
00:26:47.319 --> 00:26:49.400
<v Speaker 2>and I said, listen, you don't write JavaScript. He's like, well,

591
00:26:49.440 --> 00:26:51.480
<v Speaker 2>what do you mean. I'm like, okay, I'm going to

592
00:26:51.519 --> 00:26:53.759
<v Speaker 2>go in and I take your babble canfig and I'm just

593
00:26:53.799 --> 00:26:55.640
<v Speaker 2>going to start deleting some stuff. Tell me whether or

594
00:26:55.680 --> 00:26:57.640
<v Speaker 2>not this is going to work right. And I think

595
00:26:57.640 --> 00:26:59.640
<v Speaker 2>one of the things that nobody realizes is that none

596
00:26:59.720 --> 00:27:02.519
<v Speaker 2>of us actually write the languages we think we write.

597
00:27:02.599 --> 00:27:06.559
<v Speaker 2>We're writing like Elixir runs on the beam, right, it

598
00:27:06.640 --> 00:27:09.839
<v Speaker 2>uses Erling libraries, it uses a whole bunch of other things.

599
00:27:10.119 --> 00:27:13.440
<v Speaker 2>Java Closure, they run on JVM. Well, which JVM the

600
00:27:13.480 --> 00:27:17.079
<v Speaker 2>hot spot? Like the abstractions between us and the hardware

601
00:27:17.119 --> 00:27:19.359
<v Speaker 2>and what we're really doing in the libraries we're all calling.

602
00:27:20.119 --> 00:27:22.240
<v Speaker 2>It's actually one of the things which which drives me

603
00:27:22.319 --> 00:27:24.680
<v Speaker 2>nuts is that nobody really tries to understand how many

604
00:27:24.680 --> 00:27:28.079
<v Speaker 2>abstractions they're getting in between them and their solution. Same

605
00:27:28.079 --> 00:27:30.559
<v Speaker 2>thing with JavaScript. You don't actually write jobscript. You write

606
00:27:30.599 --> 00:27:32.960
<v Speaker 2>yes six, or you write yes six with reducers, or

607
00:27:33.039 --> 00:27:36.119
<v Speaker 2>you write I don't know. I'm a terrible jobscript programmer,

608
00:27:36.119 --> 00:27:38.319
<v Speaker 2>but I've tried. I've struggled for hours with my babble

609
00:27:38.480 --> 00:27:40.440
<v Speaker 2>jskinfigs and all the other stuff you're try and get

610
00:27:40.440 --> 00:27:43.000
<v Speaker 2>something to compile right because I had the wrong type

611
00:27:43.000 --> 00:27:46.039
<v Speaker 2>of aerofunction selected right. And it's one of the things

612
00:27:46.119 --> 00:27:49.359
<v Speaker 2>I really like about the entire Arling, Elixir and Beam

613
00:27:49.400 --> 00:27:52.759
<v Speaker 2>ecosystem is that it makes very transparent at what level

614
00:27:52.759 --> 00:27:56.200
<v Speaker 2>you're operating, whereas almost everybody else they tries to obfuscate it.

615
00:27:56.359 --> 00:27:59.720
<v Speaker 2>Well even see nobody uses CCE anymore, use clangor LVM right,

616
00:28:00.119 --> 00:28:02.720
<v Speaker 2>like think your sea code really doesn't actually the most

617
00:28:02.720 --> 00:28:05.319
<v Speaker 2>instances compile straight down anymore, not in the way you

618
00:28:05.359 --> 00:28:05.799
<v Speaker 2>think it does.

619
00:28:06.039 --> 00:28:08.400
<v Speaker 4>Yeah, I've definitely seen that issue of JavaScript. I was

620
00:28:08.480 --> 00:28:10.920
<v Speaker 4>helping somebody during a consultancy and then we're using a

621
00:28:10.960 --> 00:28:14.440
<v Speaker 4>Sinkle eight in some AWS lambda, and somewhere deep in

622
00:28:14.519 --> 00:28:16.799
<v Speaker 4>the AWS doctor it's like, you can't use a Sinkle weight.

623
00:28:16.880 --> 00:28:19.200
<v Speaker 4>It may work, but you know the the LABDA may

624
00:28:19.240 --> 00:28:21.079
<v Speaker 4>terminate because the event loop doesn't know that it's still

625
00:28:21.079 --> 00:28:22.799
<v Speaker 4>busy or something like that. So you so then we

626
00:28:22.839 --> 00:28:24.759
<v Speaker 4>went through and switched everything over to promises and then

627
00:28:24.759 --> 00:28:26.680
<v Speaker 4>all of a sudden the thing just worked. So yeah,

628
00:28:26.880 --> 00:28:29.960
<v Speaker 4>JavaScript does not equal equal JavaScript at the time.

629
00:28:30.519 --> 00:28:33.240
<v Speaker 3>Yeah, I've got Joe Armstrong's voice in my head saying

630
00:28:34.039 --> 00:28:36.079
<v Speaker 3>run to completion semantics.

631
00:28:36.599 --> 00:28:41.119
<v Speaker 2>That's madness, yeah, right, like, well, so you know what,

632
00:28:41.359 --> 00:28:43.960
<v Speaker 2>it's the other thing that's really interesting, just language wise.

633
00:28:44.039 --> 00:28:46.519
<v Speaker 2>My big kick these days is is Haskell, and I

634
00:28:46.519 --> 00:28:49.680
<v Speaker 2>blame Actually, I bring Bruce because he introduced me to

635
00:28:49.680 --> 00:28:53.519
<v Speaker 2>Brooklyn Sealinka, and I now know that she's actually ord

636
00:28:53.559 --> 00:28:55.759
<v Speaker 2>of magnitude smarter than i'll ever be. And so if

637
00:28:55.759 --> 00:28:58.720
<v Speaker 2>she's doing Haskell, then it's it's upon me to incumbent

638
00:28:58.799 --> 00:29:01.000
<v Speaker 2>upon me to learn how of what she knows about

639
00:29:01.000 --> 00:29:04.000
<v Speaker 2>Askell and the Hascle people are right. Being a terrible

640
00:29:04.000 --> 00:29:08.240
<v Speaker 2>Hascal programmer has made me a much better everything else programmer. Right, So,

641
00:29:08.680 --> 00:29:11.119
<v Speaker 2>and what's interesting to me is that you want to

642
00:29:11.119 --> 00:29:13.759
<v Speaker 2>talk about some people who embrace commutability in terms of

643
00:29:13.799 --> 00:29:16.240
<v Speaker 2>what your language is going to do, like your prelude,

644
00:29:16.680 --> 00:29:18.880
<v Speaker 2>like the idea. It's like no, no, no, no, sorry,

645
00:29:19.200 --> 00:29:21.359
<v Speaker 2>let's start. It's not a pre compiler. You tell me

646
00:29:21.400 --> 00:29:23.839
<v Speaker 2>what this language should be doing, right now, go ahead,

647
00:29:24.000 --> 00:29:26.519
<v Speaker 2>Like it's it's kind of crazy how flexible Ascal is.

648
00:29:26.960 --> 00:29:30.319
<v Speaker 3>Yeah, I have another thing in common with you, Randall,

649
00:29:30.440 --> 00:29:32.599
<v Speaker 3>that I am a terrible Haskell programmer.

650
00:29:32.839 --> 00:29:36.160
<v Speaker 2>Well, I highly recommend everybody shouldtruggle with some Askell though,

651
00:29:36.799 --> 00:29:39.440
<v Speaker 2>because you want to talk about some magic and some

652
00:29:39.640 --> 00:29:41.640
<v Speaker 2>just understanding of what raw computation looks like.

653
00:29:42.160 --> 00:29:46.640
<v Speaker 3>Yeah, I mean it's the foundation for everything that's important

654
00:29:46.640 --> 00:29:48.880
<v Speaker 3>to the list our community, right. So even some of

655
00:29:48.920 --> 00:29:51.000
<v Speaker 3>the things that we're doing with types, some of the

656
00:29:51.000 --> 00:29:54.319
<v Speaker 3>things that we're doing that we've always done with strains,

657
00:29:54.319 --> 00:29:57.279
<v Speaker 3>they're all kind of based on the irrity models. Some

658
00:29:57.359 --> 00:29:58.839
<v Speaker 3>of the things that we want to get into with

659
00:29:58.880 --> 00:30:02.000
<v Speaker 3>property based testing, some of the things that we do with,

660
00:30:02.160 --> 00:30:06.000
<v Speaker 3>for example, the formatter. Jose did this this talk I

661
00:30:06.039 --> 00:30:09.480
<v Speaker 3>think three or four years ago called John Hughes Driven Development,

662
00:30:09.720 --> 00:30:12.680
<v Speaker 3>which was cool because at that time we had John

663
00:30:12.759 --> 00:30:16.319
<v Speaker 3>Hughes at gig City Electure, and you know, it was

664
00:30:16.359 --> 00:30:19.000
<v Speaker 3>just a whole lot of fun talking to him about

665
00:30:19.319 --> 00:30:22.640
<v Speaker 3>how his inventions in the language, and he'd never cod

666
00:30:22.640 --> 00:30:25.519
<v Speaker 3>it before at the time, are making such a such

667
00:30:25.559 --> 00:30:27.440
<v Speaker 3>a hard impact on it. I mean, it was just

668
00:30:27.480 --> 00:30:28.359
<v Speaker 3>beaming the whole time.

669
00:30:28.519 --> 00:30:31.200
<v Speaker 4>So, while this is an Alixra podcast, what Haskell learning

670
00:30:31.240 --> 00:30:32.519
<v Speaker 4>resources would you recommend?

671
00:30:32.960 --> 00:30:36.480
<v Speaker 2>So? I like the Haskell book, like Haskell from first Principles.

672
00:30:36.519 --> 00:30:38.599
<v Speaker 2>I think it's called it's the Purple Book. Whatever, that's

673
00:30:38.599 --> 00:30:42.759
<v Speaker 2>out there. That's a really good one. There is another thing,

674
00:30:43.039 --> 00:30:44.680
<v Speaker 2>gosh what it was called Things I wish I had

675
00:30:44.720 --> 00:30:47.559
<v Speaker 2>known when I was learning Haskell. I can't remember who

676
00:30:48.079 --> 00:30:50.079
<v Speaker 2>wrote it. I've got it. I'm sure I have a

677
00:30:50.079 --> 00:30:51.759
<v Speaker 2>link to it because I have a running list of

678
00:30:52.000 --> 00:30:54.759
<v Speaker 2>an ord file of just Haskell resources. But what it

679
00:30:54.759 --> 00:30:57.759
<v Speaker 2>talks about is it you mean, Haskell is kind of

680
00:30:57.799 --> 00:30:59.599
<v Speaker 2>like what Elixir could have been had there not been

681
00:30:59.599 --> 00:31:01.839
<v Speaker 2>a good munity. And it's not a dang against the

682
00:31:01.880 --> 00:31:04.359
<v Speaker 2>Haschalo community. It's just that the Hascal community, like, depending

683
00:31:04.359 --> 00:31:06.640
<v Speaker 2>on how you get into it, it might kick you

684
00:31:06.680 --> 00:31:08.839
<v Speaker 2>immediately out of it. Like there are plenty of posts

685
00:31:08.839 --> 00:31:11.720
<v Speaker 2>where it's like, oh well, let's start with some category theory, right,

686
00:31:11.759 --> 00:31:15.240
<v Speaker 2>which is it's just kind of like imagine if if

687
00:31:15.279 --> 00:31:17.680
<v Speaker 2>you came into Erlang, or you came into the luxury

688
00:31:17.680 --> 00:31:20.640
<v Speaker 2>ecosystem and somebody said, oh, yeah, that's really great, so

689
00:31:20.720 --> 00:31:24.799
<v Speaker 2>let's talk about applicative functors and basic functional like do

690
00:31:24.839 --> 00:31:26.759
<v Speaker 2>you know do you know what a calculus is? Do

691
00:31:26.799 --> 00:31:28.680
<v Speaker 2>you know what a lamb of calculus is? No, Okay,

692
00:31:28.680 --> 00:31:31.240
<v Speaker 2>we're going to start with some proofs, right. That's probably

693
00:31:31.960 --> 00:31:34.160
<v Speaker 2>not why they came there. It might be what they

694
00:31:34.200 --> 00:31:35.799
<v Speaker 2>need to know, but that's not necessarily what you want

695
00:31:35.799 --> 00:31:37.720
<v Speaker 2>to hit them over the head with initially, but that

696
00:31:37.799 --> 00:31:41.079
<v Speaker 2>one broke down like all this sort of history that

697
00:31:41.119 --> 00:31:42.720
<v Speaker 2>you need to know to sort of get through, like

698
00:31:42.759 --> 00:31:45.319
<v Speaker 2>why is their stack? Why is there cabal? Like what's

699
00:31:45.319 --> 00:31:47.839
<v Speaker 2>the split between the two? Why are there two configurations?

700
00:31:47.880 --> 00:31:50.480
<v Speaker 2>Like what's this next thing everybody's talking about? Like there's

701
00:31:50.519 --> 00:31:52.359
<v Speaker 2>a lot of history there also some stuff what you

702
00:31:52.400 --> 00:31:54.000
<v Speaker 2>need to worry about, what you don't need to worry about.

703
00:31:54.200 --> 00:31:56.599
<v Speaker 2>We're going to remember that Stephen Dall maybe was the

704
00:31:56.599 --> 00:32:00.720
<v Speaker 2>guy who wrote it. Maybe that I'll do a burrito blog. Yeah, yeah,

705
00:32:00.759 --> 00:32:03.720
<v Speaker 2>that's it. Yeah, that's I think that's that's it. So

706
00:32:03.960 --> 00:32:06.160
<v Speaker 2>those are kind of my two. The other one is

707
00:32:07.000 --> 00:32:09.920
<v Speaker 2>like the look up the LSP, like figure out how

708
00:32:09.960 --> 00:32:13.160
<v Speaker 2>to support Haskel inside wherever your favorite editor is emacs.

709
00:32:13.400 --> 00:32:16.960
<v Speaker 2>I mean, but aside from that, you know, figure out

710
00:32:16.960 --> 00:32:19.279
<v Speaker 2>some good language support for and then just start typing it.

711
00:32:19.319 --> 00:32:23.440
<v Speaker 2>And also there's the gosh and I'd actually have to

712
00:32:23.440 --> 00:32:25.640
<v Speaker 2>go actually like dig up my actual list of Pascal

713
00:32:25.640 --> 00:32:28.119
<v Speaker 2>resources and tell you what it was. But those were

714
00:32:28.119 --> 00:32:30.000
<v Speaker 2>the actually I started with A Haskell book is what

715
00:32:30.039 --> 00:32:33.240
<v Speaker 2>I did because actually that's what Brooklyn told me to do, right, gotcha.

716
00:32:33.359 --> 00:32:36.720
<v Speaker 4>So, after embarking on this Haskell journey, what your kind

717
00:32:36.759 --> 00:32:38.839
<v Speaker 4>of learnings that you bring back to your Eleixtra code

718
00:32:38.839 --> 00:32:42.119
<v Speaker 4>and how did your your style and way of approaching

719
00:32:42.160 --> 00:32:43.799
<v Speaker 4>problems and elixtur change, if at all?

720
00:32:44.200 --> 00:32:47.440
<v Speaker 2>Actually, so a couple of things. One, I stopped getting fancy,

721
00:32:47.480 --> 00:32:50.359
<v Speaker 2>and I simplified a lot of things too. What it

722
00:32:50.400 --> 00:32:52.839
<v Speaker 2>made me appreciate was how a looker is the same,

723
00:32:52.880 --> 00:32:55.519
<v Speaker 2>but how it's different. I'm actually much happier doing recursive

724
00:32:55.519 --> 00:32:58.480
<v Speaker 2>and recursion now, Like I'm much more likely to reach

725
00:32:58.519 --> 00:33:02.000
<v Speaker 2>for a recursive style or a rehearsal style of a solution,

726
00:33:02.279 --> 00:33:05.440
<v Speaker 2>and also a mentatic composition and state passing composition, Like

727
00:33:05.480 --> 00:33:06.880
<v Speaker 2>there are a couple of patterns that I steal all

728
00:33:06.920 --> 00:33:09.680
<v Speaker 2>the time now, like pass state along with that. Before

729
00:33:09.799 --> 00:33:11.839
<v Speaker 2>I didn't realize that's exactly what you were doing in Eluxur.

730
00:33:11.920 --> 00:33:14.920
<v Speaker 2>But now to me it's explicit as opposed to being implicit. Yeah.

731
00:33:14.960 --> 00:33:18.400
<v Speaker 2>So mostly I think Haskell is the definition of just

732
00:33:18.400 --> 00:33:21.160
<v Speaker 2>because you can doesn't mean you should. Right, you can

733
00:33:21.759 --> 00:33:24.680
<v Speaker 2>by all means it won't stop you, but be careful.

734
00:33:24.839 --> 00:33:26.559
<v Speaker 2>You might be just taking him at your big toe

735
00:33:26.799 --> 00:33:30.240
<v Speaker 2>with a very very very large shotmun So. Yeah. So mostly,

736
00:33:30.400 --> 00:33:34.039
<v Speaker 2>like I said, I think what it made me understand

737
00:33:34.079 --> 00:33:37.319
<v Speaker 2>is which abstractions I'm using and be much more I guess,

738
00:33:37.319 --> 00:33:41.160
<v Speaker 2>for I'm much more explicit about the abstractions that I'm

739
00:33:41.200 --> 00:33:44.119
<v Speaker 2>choosing at each level now than whereas before I'm like, oh, yeah,

740
00:33:44.160 --> 00:33:46.240
<v Speaker 2>we do this because that's what Alexa code is supposed

741
00:33:46.240 --> 00:33:48.759
<v Speaker 2>to look like. Versus now I'm thinking, oh, this is

742
00:33:48.759 --> 00:33:51.160
<v Speaker 2>what it's supposed to do. It's still a terrible Hascal

743
00:33:51.160 --> 00:33:53.039
<v Speaker 2>programmer though, like terrible.

744
00:33:53.240 --> 00:33:56.680
<v Speaker 4>Yeah, it's a programming language of course in graduate school

745
00:33:56.720 --> 00:33:59.839
<v Speaker 4>and we did a Hagh school lisp in prologue and that,

746
00:34:00.039 --> 00:34:02.119
<v Speaker 4>and it's like, I'm never doing functional programming ever again.

747
00:34:02.160 --> 00:34:04.799
<v Speaker 4>I don't see the utility at all. And like five

748
00:34:04.839 --> 00:34:06.960
<v Speaker 4>years later I went all in on the Leikster. So

749
00:34:07.039 --> 00:34:09.440
<v Speaker 4>I my foot in my mouth five years ago. But yeah,

750
00:34:09.480 --> 00:34:11.280
<v Speaker 4>it was it was definitely interesting. I'm sure if I

751
00:34:11.320 --> 00:34:13.159
<v Speaker 4>picked it up again today, I'd be just as terrible

752
00:34:13.199 --> 00:34:15.400
<v Speaker 4>at Haskell as I was, you know, ten years ago.

753
00:34:15.960 --> 00:34:18.440
<v Speaker 2>So to be full credit to the Haskell community, they're

754
00:34:18.480 --> 00:34:21.360
<v Speaker 2>doing a much better job about being more welcoming. Oh

755
00:34:21.440 --> 00:34:25.400
<v Speaker 2>also exorcism. Exorcism has a great Haskell like exercises that

756
00:34:25.440 --> 00:34:26.960
<v Speaker 2>you can go look at and they actually have people

757
00:34:27.000 --> 00:34:29.679
<v Speaker 2>who give you feedback on your Haskell and it's cool

758
00:34:29.679 --> 00:34:33.199
<v Speaker 2>to see this other solutions from different styles, from people

759
00:34:33.239 --> 00:34:35.559
<v Speaker 2>who are kind of new to Haskell, like your solutions,

760
00:34:35.559 --> 00:34:36.840
<v Speaker 2>and people who have been working with Haskel for a

761
00:34:36.840 --> 00:34:38.960
<v Speaker 2>little bit, and then some other person who's like, yes,

762
00:34:39.079 --> 00:34:42.800
<v Speaker 2>I did this in exactly three characters, right, like there

763
00:34:43.119 --> 00:34:45.039
<v Speaker 2>is you can see sort of see the expressiveness of

764
00:34:45.079 --> 00:34:47.360
<v Speaker 2>the language. And that's actually I don't know, I'm kind

765
00:34:47.360 --> 00:34:49.320
<v Speaker 2>of a language nerd, so I like, like we were

766
00:34:49.360 --> 00:34:53.039
<v Speaker 2>early on diclosure at Thunderbolt Labs, we were early adopters

767
00:34:53.079 --> 00:34:56.159
<v Speaker 2>of closure. We went to the first college, and I

768
00:34:56.159 --> 00:34:59.599
<v Speaker 2>think closure had some similar problems with that. It's incredibly powerful,

769
00:35:00.079 --> 00:35:01.519
<v Speaker 2>but in the hands of people who know how to

770
00:35:01.599 --> 00:35:03.360
<v Speaker 2>use it, and there's not a lot of stuff to

771
00:35:03.400 --> 00:35:06.719
<v Speaker 2>get you from here's a lisp to here's being really

772
00:35:06.719 --> 00:35:09.599
<v Speaker 2>good with a lisp. Speaking of random weird language things,

773
00:35:09.800 --> 00:35:11.480
<v Speaker 2>let over lambda. If you ever just want to see

774
00:35:11.599 --> 00:35:13.079
<v Speaker 2>I know a lot of people don't write lisp, but

775
00:35:13.119 --> 00:35:14.599
<v Speaker 2>if you ever just want to see a book to

776
00:35:14.679 --> 00:35:17.239
<v Speaker 2>see where a lisp can take you. There is this

777
00:35:17.239 --> 00:35:19.599
<v Speaker 2>book called let over Lambda. I think you can only

778
00:35:19.599 --> 00:35:22.960
<v Speaker 2>get as like an epub or like a PDF download.

779
00:35:22.960 --> 00:35:25.400
<v Speaker 2>Maybe there's a print version two. I think actually, as

780
00:35:25.400 --> 00:35:28.400
<v Speaker 2>a functional programmer, it's just great to read what other

781
00:35:28.480 --> 00:35:32.440
<v Speaker 2>people who hit the advanced end of a language can do,

782
00:35:33.159 --> 00:35:37.239
<v Speaker 2>And specifically let over lambda is working on. He does

783
00:35:37.280 --> 00:35:39.920
<v Speaker 2>a lot of macros and list style macros. One of

784
00:35:39.960 --> 00:35:41.840
<v Speaker 2>the things I think that's underappreciated. I would like to

785
00:35:41.920 --> 00:35:43.719
<v Speaker 2>learn more about it, and I never really use it

786
00:35:43.800 --> 00:35:46.400
<v Speaker 2>is the macro facilities inside of a lukxir. Right, I'm

787
00:35:46.440 --> 00:35:48.480
<v Speaker 2>always looking for something to really do with it. But

788
00:35:49.039 --> 00:35:52.280
<v Speaker 2>macros are incredibly powerful, and a let over lambda was

789
00:35:52.280 --> 00:35:53.719
<v Speaker 2>one of those things where I saw it and I'm

790
00:35:53.760 --> 00:35:55.679
<v Speaker 2>just like, I got about fifty percent of what you're

791
00:35:55.679 --> 00:36:00.880
<v Speaker 2>writing here, But man, that looks just ridiculously overpowered to

792
00:36:01.039 --> 00:36:04.559
<v Speaker 2>be like, how do you manage to do this cool stuff?

793
00:36:04.840 --> 00:36:05.000
<v Speaker 1>Oh?

794
00:36:05.000 --> 00:36:07.480
<v Speaker 2>Also, I had learned racket last year too, which was

795
00:36:07.559 --> 00:36:10.599
<v Speaker 2>kind of cool, like looking at schemes, but that's pretty cool.

796
00:36:10.639 --> 00:36:13.239
<v Speaker 4>Yeah, I'm on my second take of Christmas Chord's book

797
00:36:13.440 --> 00:36:15.920
<v Speaker 4>Metaprogramming and Elixir. I'll figure out one of these days

798
00:36:15.920 --> 00:36:18.639
<v Speaker 4>and I'll build right macros correctly.

799
00:36:19.079 --> 00:36:21.079
<v Speaker 2>Yeah, it's a different level of reasoning.

800
00:36:21.119 --> 00:36:23.679
<v Speaker 3>They're right string interpolation for code.

801
00:36:24.039 --> 00:36:25.519
<v Speaker 4>So if you can go back in time and give

802
00:36:25.559 --> 00:36:28.960
<v Speaker 4>yourself some advice as you embark on the selector journey,

803
00:36:29.280 --> 00:36:32.280
<v Speaker 4>would what would some of those tidbits be aside from

804
00:36:32.280 --> 00:36:34.440
<v Speaker 4>this isn't Ruby, don't treat it like this Ruby.

805
00:36:34.400 --> 00:36:38.239
<v Speaker 2>That would be one of the first ones actually find people, Right,

806
00:36:38.559 --> 00:36:40.519
<v Speaker 2>It's really weird. One of the things I think about.

807
00:36:40.920 --> 00:36:42.519
<v Speaker 2>One of the things I think worked for Ruby and

808
00:36:42.559 --> 00:36:45.039
<v Speaker 2>specifically where else they're different things, but I mean is

809
00:36:45.039 --> 00:36:46.559
<v Speaker 2>that they had a community of people who are always

810
00:36:46.559 --> 00:36:48.360
<v Speaker 2>willing to help. I think the community aspect of a

811
00:36:48.440 --> 00:36:51.400
<v Speaker 2>language is really underrated. So find other people who are

812
00:36:51.440 --> 00:36:52.960
<v Speaker 2>in a Elixir, who are kind of in that same boat,

813
00:36:53.159 --> 00:36:55.840
<v Speaker 2>and collectively start learning with them. That would be one

814
00:36:55.960 --> 00:37:00.320
<v Speaker 2>to learn Elixir before learning other things first. Right, Oh,

815
00:37:00.440 --> 00:37:03.039
<v Speaker 2>I think somewhere on the Elixir I f a Q

816
00:37:03.440 --> 00:37:05.559
<v Speaker 2>or someplace maybe on the Elixir lang website it says,

817
00:37:05.639 --> 00:37:09.400
<v Speaker 2>don't ask how do I What was it said? Don't

818
00:37:09.400 --> 00:37:11.840
<v Speaker 2>ask how do you do X? An elixir ask how

819
00:37:11.880 --> 00:37:15.199
<v Speaker 2>would I solve why? In Alixir like the idea of

820
00:37:15.320 --> 00:37:18.000
<v Speaker 2>don't just translate the idioms from whatever languages you already

821
00:37:18.039 --> 00:37:21.119
<v Speaker 2>know into alexir, actually go back and learn from first

822
00:37:21.119 --> 00:37:23.400
<v Speaker 2>principles what's going on. That's actually one of the things

823
00:37:23.440 --> 00:37:25.440
<v Speaker 2>I really like about the Dave Thomas book is that

824
00:37:25.679 --> 00:37:29.920
<v Speaker 2>it kind of abandons some of the oh look, look,

825
00:37:29.960 --> 00:37:32.519
<v Speaker 2>here's hello world, Look here's a for loop. Like if

826
00:37:32.519 --> 00:37:34.039
<v Speaker 2>you think about it, I don't know about you, but

827
00:37:34.039 --> 00:37:36.800
<v Speaker 2>for the past twenty years whatever, like our programming books

828
00:37:36.800 --> 00:37:39.239
<v Speaker 2>have pretty much been exactly the same, right because we

829
00:37:39.280 --> 00:37:42.960
<v Speaker 2>all have some sort of c art style functional like

830
00:37:43.079 --> 00:37:46.039
<v Speaker 2>programming background, so they'll pretty much look the same. They

831
00:37:46.039 --> 00:37:47.840
<v Speaker 2>teach you the same construct so you're really trying to

832
00:37:47.840 --> 00:37:50.679
<v Speaker 2>do if you're trying to figure out, like, oh, what's

833
00:37:50.719 --> 00:37:53.920
<v Speaker 2>the equivalent of a four loop and go got it? Like,

834
00:37:53.960 --> 00:37:56.920
<v Speaker 2>what's the equivalent of a if then else in c

835
00:37:57.119 --> 00:38:00.599
<v Speaker 2>sharp got it right? So I would say, actually learned

836
00:38:00.599 --> 00:38:04.599
<v Speaker 2>it from first principles. So strangely enough, you know, shameless plug.

837
00:38:04.639 --> 00:38:06.760
<v Speaker 2>I did give a talk on how to learn Elixir

838
00:38:07.119 --> 00:38:10.800
<v Speaker 2>at ALEXAKOMF and code Beam, And the other one is

839
00:38:10.880 --> 00:38:14.000
<v Speaker 2>I think take time because you're building up new cognitive structures.

840
00:38:14.039 --> 00:38:16.079
<v Speaker 2>I think people a lot of time do not realize

841
00:38:16.400 --> 00:38:18.719
<v Speaker 2>how much work it takes to get your brain to

842
00:38:18.719 --> 00:38:21.719
<v Speaker 2>start thinking functionally. Right, there is a lot there that

843
00:38:21.800 --> 00:38:23.360
<v Speaker 2>you have to unlearn.

844
00:38:23.480 --> 00:38:31.239
<v Speaker 3>Syntax, concurrency, distribution, macros. Yeah, so that's a lot, right,

845
00:38:31.800 --> 00:38:34.360
<v Speaker 3>it's interesting. I'm going to give another shameless plug for Bruce.

846
00:38:34.679 --> 00:38:37.199
<v Speaker 3>I generally speaking, I recommend that they read the Elixir book,

847
00:38:37.320 --> 00:38:40.159
<v Speaker 3>and then, strangely, before they read the Phoenix book, I

848
00:38:40.159 --> 00:38:44.039
<v Speaker 3>recommend that they read Designing p Systems and Elixir from

849
00:38:44.079 --> 00:38:48.039
<v Speaker 3>Bruce's book because it teaches you the part of the

850
00:38:48.039 --> 00:38:50.360
<v Speaker 3>problem is if you're functioning like no pun intended, a

851
00:38:50.360 --> 00:38:53.639
<v Speaker 3>function sort of professional programmer, you normally have something you

852
00:38:53.679 --> 00:38:55.480
<v Speaker 3>got to do for your day job. Like it's not

853
00:38:55.920 --> 00:38:57.920
<v Speaker 3>most of us don't just have the luxury of learning

854
00:38:57.960 --> 00:39:02.119
<v Speaker 3>a language for no applicative also up unintended reason, So

855
00:39:02.719 --> 00:39:04.639
<v Speaker 3>you need to know how you build up an electric

856
00:39:04.679 --> 00:39:07.000
<v Speaker 3>system and the functional core stuff. What does it do

857
00:39:07.119 --> 00:39:10.599
<v Speaker 3>fun things with? What's the rest of the acronym, Well.

858
00:39:10.519 --> 00:39:10.920
<v Speaker 1>There's.

859
00:39:12.800 --> 00:39:18.000
<v Speaker 5>Work work we gotta yeah, yeah, yeah, do fun things.

860
00:39:17.800 --> 00:39:22.679
<v Speaker 7>A big loud yeah, big workers that's right. Yeah, and

861
00:39:22.719 --> 00:39:28.199
<v Speaker 7>a beer yes, Stephen, thank you? Because I I personally

862
00:39:28.239 --> 00:39:30.320
<v Speaker 7>I think the Wilder Beast has a nice lowing sound.

863
00:39:30.400 --> 00:39:33.280
<v Speaker 3>You know, yeah it does. But O'Riley had the cover.

864
00:39:35.320 --> 00:39:37.039
<v Speaker 1>On the cover, so yeah.

865
00:39:37.800 --> 00:39:40.039
<v Speaker 2>Oh interesting is that really? What happened is like O'Reilly

866
00:39:40.119 --> 00:39:42.480
<v Speaker 2>had like a Wilder Beast on something and they're like, no,

867
00:39:42.519 --> 00:39:44.280
<v Speaker 2>you may not put the wild of Beasts.

868
00:39:44.599 --> 00:39:47.679
<v Speaker 3>Yeah. Yeah, So James had just come back from an

869
00:39:47.679 --> 00:39:51.480
<v Speaker 3>Africa trip, right, and so he loved the Wilder Beast

870
00:39:51.559 --> 00:39:54.599
<v Speaker 3>and and I mean, I've done all this marketing, but

871
00:39:54.719 --> 00:39:58.039
<v Speaker 3>now I mean it makes sense. Right. Beehives layers, different

872
00:39:58.119 --> 00:40:00.800
<v Speaker 3>cells ODP just really good time.

873
00:40:01.360 --> 00:40:05.239
<v Speaker 2>It's true, and be a beehives are built in hexagons, right,

874
00:40:05.280 --> 00:40:06.920
<v Speaker 2>so that you have hecks already built.

875
00:40:06.719 --> 00:40:10.000
<v Speaker 3>In ooh oh, well done there.

876
00:40:10.559 --> 00:40:11.840
<v Speaker 2>Well they just dropped the mike.

877
00:40:11.920 --> 00:40:12.800
<v Speaker 3>We got to be done.

878
00:40:14.239 --> 00:40:16.639
<v Speaker 2>So yeah, so I recommend that they read that book

879
00:40:16.639 --> 00:40:19.480
<v Speaker 2>because it's important to understand how you build an layer

880
00:40:19.559 --> 00:40:21.599
<v Speaker 2>of system together, because it's very different than a elixir.

881
00:40:21.800 --> 00:40:24.639
<v Speaker 2>The functional core aspect is what most people miss. In fact,

882
00:40:25.280 --> 00:40:27.719
<v Speaker 2>we just had a team try to learn an elixir

883
00:40:27.880 --> 00:40:30.000
<v Speaker 2>that had been Rubius and jobs for people, and that's

884
00:40:30.039 --> 00:40:32.800
<v Speaker 2>exactly what they missed. And it was the first thing

885
00:40:32.800 --> 00:40:34.480
<v Speaker 2>they missed. They didn't have a functional core, and it

886
00:40:34.519 --> 00:40:36.280
<v Speaker 2>made everything else almost impossible.

887
00:40:36.400 --> 00:40:39.119
<v Speaker 3>It's funny. In San Francisco, Brooklyn came up to me,

888
00:40:39.519 --> 00:40:41.719
<v Speaker 3>and I mean she's one of the people that I

889
00:40:41.880 --> 00:40:46.760
<v Speaker 3>practically idolized. I mean the Witchcraft Library, the strong resonance

890
00:40:46.840 --> 00:40:50.440
<v Speaker 3>with Haskell, with the things that she can make Macro's do.

891
00:40:51.239 --> 00:40:53.559
<v Speaker 3>She's just smarter than Oliver be. But she came up

892
00:40:53.559 --> 00:40:57.000
<v Speaker 3>to me and said, hey about your talk, and I'm saying, oh, crap,

893
00:40:57.000 --> 00:41:00.280
<v Speaker 3>here it comes. It was basically an outline of a

894
00:41:00.320 --> 00:41:02.320
<v Speaker 3>worker b books. She says, I agree with all of it.

895
00:41:02.840 --> 00:41:07.400
<v Speaker 3>And by the way, here's where this paper says the

896
00:41:07.440 --> 00:41:09.880
<v Speaker 3>same thing, except between this layer and this layer you

897
00:41:09.920 --> 00:41:12.760
<v Speaker 3>have an interface. And so it was really it was

898
00:41:12.760 --> 00:41:14.639
<v Speaker 3>like a high moment in my career. You know. It's

899
00:41:14.719 --> 00:41:17.519
<v Speaker 3>kind of said, yeah, you get this, and I said,

900
00:41:17.599 --> 00:41:19.400
<v Speaker 3>I didn't need to get it that way, but I'll

901
00:41:19.440 --> 00:41:20.000
<v Speaker 3>take it right.

902
00:41:20.679 --> 00:41:22.920
<v Speaker 2>So, actually, if I remember hardly, so he didn't she

903
00:41:22.960 --> 00:41:25.440
<v Speaker 2>say that you didn't you had like a liberal arts background,

904
00:41:25.519 --> 00:41:25.920
<v Speaker 2>right that.

905
00:41:26.840 --> 00:41:32.119
<v Speaker 1>Yeah, yeah, liberal arts background, history degree and then ended

906
00:41:32.199 --> 00:41:35.199
<v Speaker 1>up at the Flattery School, which was a software engineering

907
00:41:35.239 --> 00:41:37.760
<v Speaker 1>boot camp, and that kind of the rest was history

908
00:41:37.840 --> 00:41:38.519
<v Speaker 1>just fell in love with it.

909
00:41:39.159 --> 00:41:41.679
<v Speaker 2>Yeah, so when you were thinking about learning things, didn't

910
00:41:41.719 --> 00:41:42.679
<v Speaker 2>you wish somebody had told you?

911
00:41:43.039 --> 00:41:44.599
<v Speaker 1>That's a good question. I mean, that's one of the

912
00:41:44.599 --> 00:41:47.400
<v Speaker 1>things that I loved about learning Ruvie is that it

913
00:41:47.639 --> 00:41:51.119
<v Speaker 1>tells a story and you really have the emphasis on

914
00:41:51.480 --> 00:41:54.079
<v Speaker 1>the problem that you're trying to solve and how to

915
00:41:54.159 --> 00:41:57.119
<v Speaker 1>express it with code as opposed to needing to understand

916
00:41:57.199 --> 00:41:59.199
<v Speaker 1>kind of some of the low level principles. I feel

917
00:41:59.199 --> 00:42:02.840
<v Speaker 1>like that came later for me, and then I think

918
00:42:02.960 --> 00:42:06.920
<v Speaker 1>the thing that really hooked me and kind of got

919
00:42:06.920 --> 00:42:10.280
<v Speaker 1>me frankly obsessed with programming was and I really think

920
00:42:10.280 --> 00:42:12.639
<v Speaker 1>this is a feature of something that the Flattering School

921
00:42:12.679 --> 00:42:15.280
<v Speaker 1>really engenders and their teachers and offers to their students

922
00:42:15.400 --> 00:42:18.199
<v Speaker 1>is just just an absolute love of what you're doing,

923
00:42:18.280 --> 00:42:21.760
<v Speaker 1>just an excitement, a curiosity, like this total space of support.

924
00:42:21.840 --> 00:42:24.440
<v Speaker 1>That's something that I very much felt from my teachers

925
00:42:24.519 --> 00:42:26.840
<v Speaker 1>there and then learned, i think, in part, how to

926
00:42:26.880 --> 00:42:28.960
<v Speaker 1>give to my students subsequently, because then I went on

927
00:42:29.000 --> 00:42:31.599
<v Speaker 1>to teach there from Steven. I think Stephen just brings

928
00:42:31.639 --> 00:42:35.760
<v Speaker 1>this like absolute joy to whatever he's doing, and he

929
00:42:35.920 --> 00:42:38.320
<v Speaker 1>is as excited to show you something that he showed

930
00:42:38.760 --> 00:42:40.639
<v Speaker 1>you know, a thousand people for five years as he

931
00:42:40.760 --> 00:42:42.480
<v Speaker 1>is to show you something that he just figured out

932
00:42:42.519 --> 00:42:45.000
<v Speaker 1>for the first time ever. And it's really infectious. And

933
00:42:45.039 --> 00:42:46.840
<v Speaker 1>I think that, to me is really like the secret

934
00:42:46.960 --> 00:42:49.199
<v Speaker 1>ingredient to learning a new language and learning a new skill.

935
00:42:50.360 --> 00:42:54.400
<v Speaker 3>Joy that's actually a stone cold ninja as a teacher.

936
00:42:54.519 --> 00:42:57.719
<v Speaker 3>I mean, so he started coming teaching to our childhood

937
00:42:57.800 --> 00:43:00.519
<v Speaker 3>licture group, and you know, just kind of I just

938
00:43:00.599 --> 00:43:04.039
<v Speaker 3>dropped them into our most advanced class and and disappeared

939
00:43:04.079 --> 00:43:06.679
<v Speaker 3>on them really and and they came back right And

940
00:43:06.679 --> 00:43:09.199
<v Speaker 3>now I'm saying, when you coming back, you don't have

941
00:43:09.239 --> 00:43:11.400
<v Speaker 3>to come back. You really don't have to come back.

942
00:43:11.679 --> 00:43:15.559
<v Speaker 3>Even has this it was really really cool. I paid them.

943
00:43:15.719 --> 00:43:19.239
<v Speaker 2>I paid them all to say that you Musty's. That's

944
00:43:19.280 --> 00:43:21.280
<v Speaker 2>a great thing to do. It's like, especially nowadays with

945
00:43:21.320 --> 00:43:22.800
<v Speaker 2>gift cards, it's a really easy way to get a

946
00:43:22.840 --> 00:43:26.320
<v Speaker 2>great review. But actually, that's really funny. I think it's interesting.

947
00:43:26.519 --> 00:43:29.159
<v Speaker 2>One of the common threads I see about people is people.

948
00:43:29.360 --> 00:43:31.199
<v Speaker 2>I think what brings us to different languages and different

949
00:43:31.239 --> 00:43:33.480
<v Speaker 2>tools are the people. Which is a really weird thing

950
00:43:33.519 --> 00:43:35.960
<v Speaker 2>to say. Protect people, right like, but a lot of

951
00:43:35.960 --> 00:43:37.880
<v Speaker 2>why we choose the tools we have is if you

952
00:43:37.960 --> 00:43:39.840
<v Speaker 2>get a good person who introduces you to the right

953
00:43:40.000 --> 00:43:42.239
<v Speaker 2>sort of like to the joy of better tools and

954
00:43:42.280 --> 00:43:45.239
<v Speaker 2>better approaches and better thinking, you have this great experience

955
00:43:45.239 --> 00:43:48.599
<v Speaker 2>and that carries forward and they're I've you know, I've

956
00:43:48.639 --> 00:43:51.679
<v Speaker 2>met my more than my fair share of like abused programmers,

957
00:43:51.760 --> 00:43:54.760
<v Speaker 2>right Like, Hey, what happened? I got dumped into this project?

958
00:43:55.000 --> 00:43:57.480
<v Speaker 2>Nobody told me what to do. There was no cic D,

959
00:43:57.960 --> 00:44:00.679
<v Speaker 2>nobody told me about testing. Like, we don't have somebody

960
00:44:00.760 --> 00:44:04.440
<v Speaker 2>to tell you how fun and how joyant and joyful

961
00:44:04.480 --> 00:44:06.559
<v Speaker 2>programming can be. It can be a real be a

962
00:44:06.599 --> 00:44:09.239
<v Speaker 2>real slug. So could useeeven if you can actually like

963
00:44:09.239 --> 00:44:12.199
<v Speaker 2>convey that sort of excitement to people, that's super important

964
00:44:12.199 --> 00:44:13.519
<v Speaker 2>for the next generation of programmers.

965
00:44:13.920 --> 00:44:15.840
<v Speaker 1>Yeah, well, I think we're all very grateful to have

966
00:44:15.840 --> 00:44:17.920
<v Speaker 1>benefited from that. Since we are coming to the end

967
00:44:17.920 --> 00:44:19.679
<v Speaker 1>of our time. There's one last question that I really

968
00:44:19.719 --> 00:44:21.519
<v Speaker 1>wanted to get to for Randall, since you are a

969
00:44:21.559 --> 00:44:25.679
<v Speaker 1>bona fide bond vibon, I need like a Halloween themed

970
00:44:25.719 --> 00:44:28.400
<v Speaker 1>cocktail that isn't like too much. I don't like things

971
00:44:28.400 --> 00:44:31.119
<v Speaker 1>that are super sweet. I want to be easy because

972
00:44:31.119 --> 00:44:33.639
<v Speaker 1>I'm not great at this. Do you have anything for me?

973
00:44:33.920 --> 00:44:37.880
<v Speaker 2>Okay, off the topllowen autumnal. Yeah, so an autumnal cocktail.

974
00:44:37.960 --> 00:44:40.079
<v Speaker 2>I would go with a spiced cider with a rye

975
00:44:40.119 --> 00:44:43.159
<v Speaker 2>whiskey on the side, or a ryebourbon whiskey kicker. So

976
00:44:43.760 --> 00:44:45.239
<v Speaker 2>an the things you can do is you can actually

977
00:44:45.239 --> 00:44:49.320
<v Speaker 2>take apple cider, need the unfiltered type sider, not juice.

978
00:44:49.559 --> 00:44:51.519
<v Speaker 2>So you take apple cider when you can actually reduce

979
00:44:51.559 --> 00:44:53.159
<v Speaker 2>it in a pan, and it makes for a very

980
00:44:53.199 --> 00:44:56.320
<v Speaker 2>strong apples almost like an apple syrup. Interesting, and you

981
00:44:56.320 --> 00:44:58.239
<v Speaker 2>can infuse that with things like cinnamon, So you could

982
00:44:58.239 --> 00:45:00.559
<v Speaker 2>put like cardamous cinnamon, any of the things in it

983
00:45:00.599 --> 00:45:02.679
<v Speaker 2>in a pan, reduce it more by half or a

984
00:45:02.719 --> 00:45:04.440
<v Speaker 2>little more, and you end up with an apple syrup.

985
00:45:04.599 --> 00:45:07.079
<v Speaker 2>And so from there you can basically select your level

986
00:45:07.119 --> 00:45:11.320
<v Speaker 2>of booziness, your level of appleness, and your level of cocktail.

987
00:45:11.320 --> 00:45:13.400
<v Speaker 2>You make an effort vestment by either fixing it or

988
00:45:13.400 --> 00:45:14.719
<v Speaker 2>top of champagne.

989
00:45:15.199 --> 00:45:16.719
<v Speaker 1>I love that, I'm definitely doing.

990
00:45:17.039 --> 00:45:20.719
<v Speaker 2>So it works in the situation. Yeah, yeah, champagne cocktails

991
00:45:20.719 --> 00:45:23.039
<v Speaker 2>are underrated. Good cure, I agree.

992
00:45:23.079 --> 00:45:24.840
<v Speaker 1>Also makes me feel like I'm in the nineteen twenties.

993
00:45:24.880 --> 00:45:27.119
<v Speaker 1>I'm not really sure why I have the association.

994
00:45:27.679 --> 00:45:31.719
<v Speaker 2>Maybe a slipper glass. Yeah, yeah, so that's because in

995
00:45:31.760 --> 00:45:33.480
<v Speaker 2>what I like about that is with one prep you

996
00:45:33.480 --> 00:45:35.199
<v Speaker 2>can make the base and then people can have either

997
00:45:35.239 --> 00:45:37.239
<v Speaker 2>a non alcoholic if you have people who aren't drinking,

998
00:45:37.440 --> 00:45:39.800
<v Speaker 2>or a completely boozy, wipe you out cocktail by just

999
00:45:39.840 --> 00:45:41.719
<v Speaker 2>dumping a bunch of Rye whiskey and putting a splash

1000
00:45:41.719 --> 00:45:43.159
<v Speaker 2>of apple over the top of it.

1001
00:45:43.360 --> 00:45:44.840
<v Speaker 1>Also, I like a cocktail that you don't have to

1002
00:45:44.880 --> 00:45:47.880
<v Speaker 1>mix individually. Even if you have like just a couple

1003
00:45:47.920 --> 00:45:49.800
<v Speaker 1>of people around, it's still sort of a pain. So

1004
00:45:49.920 --> 00:45:51.760
<v Speaker 1>I love this. Thank you. I cannot wait to try

1005
00:45:51.800 --> 00:45:55.639
<v Speaker 1>this out. That's is perfect. So yeah great, And I

1006
00:45:55.679 --> 00:45:57.960
<v Speaker 1>think that'll bring us to our picks. We have a

1007
00:45:58.000 --> 00:46:00.400
<v Speaker 1>lot of great recommendations. We've been collecting some of the

1008
00:46:00.639 --> 00:46:02.880
<v Speaker 1>links and things that have been mentioned in this convo,

1009
00:46:02.960 --> 00:46:05.000
<v Speaker 1>but we will go around the room, so to speak,

1010
00:46:05.480 --> 00:46:08.760
<v Speaker 1>and if anyone has specific recommendation. Since Bruce had to

1011
00:46:08.840 --> 00:46:12.000
<v Speaker 1>drop off, I'll start with his. Graxio starts their Nerves

1012
00:46:12.039 --> 00:46:15.320
<v Speaker 1>course on November first. Definitely don't miss it out and

1013
00:46:15.480 --> 00:46:19.119
<v Speaker 1>check out grox dot Io Groxio, and I will pass

1014
00:46:19.159 --> 00:46:22.280
<v Speaker 1>it over to Alex.

1015
00:46:22.800 --> 00:46:25.760
<v Speaker 4>So my picksar two learning resources. They're both kind of

1016
00:46:25.800 --> 00:46:28.039
<v Speaker 4>open books. One is the beam book and there'll be

1017
00:46:28.079 --> 00:46:29.400
<v Speaker 4>a link in the show notes, and the other one

1018
00:46:29.440 --> 00:46:32.000
<v Speaker 4>is Earling and Anger. I've definitely used Earling and Anger

1019
00:46:32.079 --> 00:46:35.199
<v Speaker 4>several times when there's been a memory leak in production

1020
00:46:35.360 --> 00:46:37.480
<v Speaker 4>and you're like, whoa, this is a lickxir. Memory leaks

1021
00:46:37.480 --> 00:46:39.920
<v Speaker 4>are not possible. Well, they are possible, and there's a

1022
00:46:39.920 --> 00:46:42.239
<v Speaker 4>couple of scenarios into which they're possible. So that is

1023
00:46:42.280 --> 00:46:45.119
<v Speaker 4>a good reference to hit up. And you don't know

1024
00:46:45.159 --> 00:46:48.119
<v Speaker 4>why memory is spiking and Grafana is going off the charts,

1025
00:46:48.360 --> 00:46:49.840
<v Speaker 4>so definitely check those out.

1026
00:46:50.079 --> 00:46:51.679
<v Speaker 1>Awesome, Thanks Alex Steven.

1027
00:46:52.280 --> 00:46:54.840
<v Speaker 5>So mine is going to be for I have ultra

1028
00:46:54.960 --> 00:46:58.480
<v Speaker 5>wide monitors here, but I actually mean super ultra wide monitors.

1029
00:46:58.480 --> 00:47:00.400
<v Speaker 5>So first of all, this is a thing. You can

1030
00:47:00.440 --> 00:47:05.519
<v Speaker 5>get a monitor that's forty nine inches and super ultra wide. Yeah,

1031
00:47:05.880 --> 00:47:07.239
<v Speaker 5>you don't know you need this, but you need this

1032
00:47:07.280 --> 00:47:10.599
<v Speaker 5>in your life. You need to be surrounded by zoom

1033
00:47:11.039 --> 00:47:12.679
<v Speaker 5>like people on your left, people on your right. It

1034
00:47:12.719 --> 00:47:14.559
<v Speaker 5>really makes you feel like you're back in the office,

1035
00:47:14.599 --> 00:47:16.400
<v Speaker 5>but kind of surrounded in a weird way.

1036
00:47:16.960 --> 00:47:17.719
<v Speaker 2>So check that out.

1037
00:47:17.960 --> 00:47:20.679
<v Speaker 1>Thank you for that. I can't wait to squint even

1038
00:47:20.719 --> 00:47:24.079
<v Speaker 1>harder at the teeny tiny resolution of whatever is on

1039
00:47:24.119 --> 00:47:26.639
<v Speaker 1>your great chair. I don't have any picks this week,

1040
00:47:26.639 --> 00:47:29.199
<v Speaker 1>although I have a feeling I'll be recommending a cocktail

1041
00:47:29.239 --> 00:47:31.519
<v Speaker 1>as soon as I try it out. Randal. Like I said,

1042
00:47:31.519 --> 00:47:33.320
<v Speaker 1>I collected some of the links that you had mentioned,

1043
00:47:33.360 --> 00:47:35.079
<v Speaker 1>but if you have anything else you'd like to share,

1044
00:47:35.079 --> 00:47:38.199
<v Speaker 1>it currently doesn't have to be alexor or even programming related.

1045
00:47:38.559 --> 00:47:43.119
<v Speaker 2>So one is definitely seeing deals. The Haskell link what

1046
00:47:43.239 --> 00:47:45.280
<v Speaker 2>I wish I had known that was actually really good.

1047
00:47:45.599 --> 00:47:47.719
<v Speaker 2>I just like that as a comprehensive sort of resource.

1048
00:47:47.920 --> 00:47:51.360
<v Speaker 2>Another one is Kenning Labs has this thing called Finda.

1049
00:47:51.480 --> 00:47:53.320
<v Speaker 2>I don't know if you guys have ever used finda.

1050
00:47:53.760 --> 00:47:58.000
<v Speaker 2>It is literally a search everything. It's like it's one

1051
00:47:58.000 --> 00:47:59.800
<v Speaker 2>of the greatest things ever. It just pops up all

1052
00:48:00.079 --> 00:48:03.440
<v Speaker 2>these this this huge overlay that you can search all

1053
00:48:03.519 --> 00:48:06.320
<v Speaker 2>the things, and I do mean all the things as

1054
00:48:06.320 --> 00:48:08.320
<v Speaker 2>and you can like integrate it with your VIM, you

1055
00:48:08.360 --> 00:48:11.239
<v Speaker 2>can integrate with your emacs. I'm pretty sure it integrates

1056
00:48:11.239 --> 00:48:13.159
<v Speaker 2>with them. I know it works with vis code, but

1057
00:48:13.239 --> 00:48:15.400
<v Speaker 2>it'll search open tabs. So if you're liking me and

1058
00:48:15.400 --> 00:48:17.239
<v Speaker 2>you're one of those people who never close the tabs.

1059
00:48:17.880 --> 00:48:19.800
<v Speaker 2>You can search all your tabs, you can search all

1060
00:48:19.840 --> 00:48:23.119
<v Speaker 2>your links, and it's super fast, and it's a it's

1061
00:48:23.119 --> 00:48:26.039
<v Speaker 2>a great way to actually kind of be lazy about

1062
00:48:26.039 --> 00:48:27.519
<v Speaker 2>managing Windows until you should.

1063
00:48:27.960 --> 00:48:30.880
<v Speaker 1>Really dangerous for me because I absolutely have a million

1064
00:48:30.920 --> 00:48:35.920
<v Speaker 1>tabs and can never find anything, and I'm going to try.

1065
00:48:35.719 --> 00:48:39.119
<v Speaker 2>This, so check it out. Actually, like I said, I'm

1066
00:48:39.159 --> 00:48:41.119
<v Speaker 2>a huge fan of that, just because I started using

1067
00:48:41.159 --> 00:48:43.599
<v Speaker 2>it yesterday and I was just like, where have you been?

1068
00:48:43.960 --> 00:48:47.280
<v Speaker 2>So cool? Thank you, thank you guys, actually appreciate you. Guys.

1069
00:48:47.320 --> 00:48:49.000
<v Speaker 2>Give me a chance to just prat al on for

1070
00:48:49.039 --> 00:48:49.400
<v Speaker 2>a while.

1071
00:48:49.559 --> 00:48:51.280
<v Speaker 1>Yeah, this is great. We were thrilled to have you

1072
00:48:51.360 --> 00:48:52.960
<v Speaker 1>and hopefully we'll get the talk again too.

1073
00:48:53.199 --> 00:48:54.639
<v Speaker 2>All right, sounds great. Curious
