WEBVTT

1
00:00:06.240 --> 00:00:09.480
<v Speaker 1>Hello everybody, and welcome to another episode of Elixir Mix,

2
00:00:09.960 --> 00:00:13.519
<v Speaker 1>again this week without Charles so I'm such a wolf.

3
00:00:13.720 --> 00:00:16.280
<v Speaker 1>And this week on the panel we have Adie Ainger

4
00:00:17.120 --> 00:00:21.079
<v Speaker 1>and Alan Weymore. Hello, I hope I pronounced about the

5
00:00:21.160 --> 00:00:24.679
<v Speaker 1>name's bob right. This week we actually gonna pick a

6
00:00:24.760 --> 00:00:27.160
<v Speaker 1>topic from Twitter. Like, so a while ago, I asked

7
00:00:27.199 --> 00:00:29.839
<v Speaker 1>on Twitter what's something people would be interested in and

8
00:00:30.160 --> 00:00:34.159
<v Speaker 1>to hear about in Alix Mix, and Kevin Stingen basically

9
00:00:34.439 --> 00:00:37.719
<v Speaker 1>asked us to talk about Elixir is a general purpose

10
00:00:37.840 --> 00:00:41.240
<v Speaker 1>language for aka, how to convince people that alix heir

11
00:00:41.359 --> 00:00:43.920
<v Speaker 1>is not this niche thing you only reach for when

12
00:00:43.960 --> 00:00:47.000
<v Speaker 1>you have like these super specific concurrency issues, but that

13
00:00:47.119 --> 00:00:50.039
<v Speaker 1>it's actually something you can use it the same way

14
00:00:50.520 --> 00:00:53.320
<v Speaker 1>like for people reach for rails for example, and then

15
00:00:53.399 --> 00:00:57.119
<v Speaker 1>you can go from there. And just before we started recording,

16
00:00:57.399 --> 00:01:01.640
<v Speaker 1>we considered talking about this, and then we also thought, okay,

17
00:01:02.320 --> 00:01:05.120
<v Speaker 1>let's look at like Phoenix for example, because Phoenix is

18
00:01:05.200 --> 00:01:08.760
<v Speaker 1>something you can get productive with quite easily, and I'd

19
00:01:08.840 --> 00:01:10.920
<v Speaker 1>like to hear like your thoughts on that. Adia, Like

20
00:01:11.359 --> 00:01:13.519
<v Speaker 1>when you started with Felix, You're like, how was the

21
00:01:13.599 --> 00:01:15.920
<v Speaker 1>story there? If you like jump into Phoenix for example,

22
00:01:16.000 --> 00:01:17.599
<v Speaker 1>right away, And how did it feel for you?

23
00:01:18.079 --> 00:01:22.239
<v Speaker 2>Yeah, yeah, Alexa For me, actually it's my first professional

24
00:01:22.719 --> 00:01:26.079
<v Speaker 2>like coding job was an Elixir luckily. And yeah, I

25
00:01:26.159 --> 00:01:29.480
<v Speaker 2>think that like kind of statement should be enough in

26
00:01:29.599 --> 00:01:32.400
<v Speaker 2>terms of how general purpose, how easily accessible it is.

27
00:01:32.719 --> 00:01:35.920
<v Speaker 2>I didn't hadn't really have to touch the OTP, the

28
00:01:36.079 --> 00:01:38.480
<v Speaker 2>gen server pod or any any kind of a TV

29
00:01:38.560 --> 00:01:42.359
<v Speaker 2>stuff for like a while. I did start with plugs

30
00:01:42.480 --> 00:01:44.439
<v Speaker 2>at that time. Phoenix was like still I think I

31
00:01:44.480 --> 00:01:46.079
<v Speaker 2>don't know if one point it was out at that time,

32
00:01:46.519 --> 00:01:49.560
<v Speaker 2>but my first Elixir app was like just a plug

33
00:01:49.640 --> 00:01:54.200
<v Speaker 2>based back end API and again just how plug looks

34
00:01:54.519 --> 00:01:57.840
<v Speaker 2>pretty straightforward to right use. And they right away had

35
00:01:57.879 --> 00:02:01.439
<v Speaker 2>support for Cowboy as well, so was again pretty easy

36
00:02:01.480 --> 00:02:04.760
<v Speaker 2>to follow along with the documentation and just get us.

37
00:02:04.879 --> 00:02:07.799
<v Speaker 2>We're up and running within a couple hours. So yeah,

38
00:02:07.840 --> 00:02:09.840
<v Speaker 2>I had a very pleasant experience for the Elixir.

39
00:02:10.159 --> 00:02:12.199
<v Speaker 1>And so you said that you didn't have a lot

40
00:02:12.240 --> 00:02:15.599
<v Speaker 1>of things to do with OTP at that point in time, Like,

41
00:02:16.000 --> 00:02:18.199
<v Speaker 1>was that like anything specific in that first app you

42
00:02:18.800 --> 00:02:20.840
<v Speaker 1>learned Elixir with, like where you then at some point

43
00:02:20.879 --> 00:02:23.520
<v Speaker 1>reached for OTP, And is it like a story there

44
00:02:23.680 --> 00:02:25.000
<v Speaker 1>to be told or rather than.

45
00:02:25.319 --> 00:02:28.479
<v Speaker 2>There is definitely a story there. The app was actually

46
00:02:29.879 --> 00:02:34.879
<v Speaker 2>replacing a small functionality of a huge rails app, and

47
00:02:34.960 --> 00:02:38.120
<v Speaker 2>that small functionality was something that the CTO of my

48
00:02:38.280 --> 00:02:41.240
<v Speaker 2>company at that time envisioned to you know, kind of

49
00:02:41.280 --> 00:02:44.719
<v Speaker 2>be more scalable, and it was an experiment for us

50
00:02:44.800 --> 00:02:49.039
<v Speaker 2>to try writing that in Elixir, and initially we didn't

51
00:02:49.080 --> 00:02:51.639
<v Speaker 2>do any OTP, but the first thing that we did

52
00:02:51.879 --> 00:02:55.199
<v Speaker 2>was just adding tasks to that, and then this experiment

53
00:02:55.319 --> 00:02:58.159
<v Speaker 2>pool boy and everything. But it matured to a point

54
00:02:58.240 --> 00:03:01.639
<v Speaker 2>where we had investigated infrastructure. We had it in a

55
00:03:01.719 --> 00:03:04.919
<v Speaker 2>place where you know, we didn't. They not only had

56
00:03:05.240 --> 00:03:09.039
<v Speaker 2>a great amount of concurrency with different workers doing different things,

57
00:03:09.759 --> 00:03:13.000
<v Speaker 2>but we had we also were spinning in temporary infrastructure

58
00:03:13.560 --> 00:03:16.599
<v Speaker 2>like a super server in Google Cloud where I think

59
00:03:16.599 --> 00:03:18.400
<v Speaker 2>I think it was like what one hundred and twenty

60
00:03:18.439 --> 00:03:21.759
<v Speaker 2>eight gigs of RAM temporarily to process a huge again

61
00:03:21.800 --> 00:03:24.199
<v Speaker 2>without giving a lot of business information, a huge chunk

62
00:03:24.240 --> 00:03:27.120
<v Speaker 2>of data. And yeah, it became a pretty crazy app

63
00:03:27.240 --> 00:03:31.439
<v Speaker 2>by twenty nineteen. But yeah, the first iteration of that

64
00:03:31.560 --> 00:03:36.439
<v Speaker 2>untwenty fifteen was just a simple plug resserver lo concurrency nothing, well,

65
00:03:36.520 --> 00:03:39.240
<v Speaker 2>each request was concurrent, but yeah, besides that there was

66
00:03:39.319 --> 00:03:40.919
<v Speaker 2>no OTP whatsoever.

67
00:03:41.120 --> 00:03:44.360
<v Speaker 1>Yeah, that's pretty similar to to my personal experience. Like

68
00:03:44.400 --> 00:03:47.560
<v Speaker 1>I mean I didn't start from plug, but I jumped

69
00:03:47.599 --> 00:03:50.360
<v Speaker 1>right into Phoenix when I when I first used flixir

70
00:03:50.479 --> 00:03:54.319
<v Speaker 1>at my previous employer, where also like a first contact

71
00:03:54.319 --> 00:03:57.000
<v Speaker 1>with Filixir, right, and there were also like beginning just

72
00:03:57.080 --> 00:04:00.199
<v Speaker 1>had like this Phoenix app and if you have any

73
00:04:00.240 --> 00:04:02.759
<v Speaker 1>point written some kind of back end code like be

74
00:04:03.400 --> 00:04:06.319
<v Speaker 1>create rails, be it like PHP larravel. A lot of

75
00:04:06.439 --> 00:04:10.080
<v Speaker 1>things feel very familiar. So you you all this OTP

76
00:04:10.199 --> 00:04:12.360
<v Speaker 1>stuff at that point feel it's a lot like magic,

77
00:04:12.840 --> 00:04:15.240
<v Speaker 1>and but you don't have to use it, like to

78
00:04:15.479 --> 00:04:18.279
<v Speaker 1>just write an endpoint and to just get i don't know,

79
00:04:18.360 --> 00:04:21.399
<v Speaker 1>like a response back to the user. So I feel

80
00:04:21.439 --> 00:04:23.279
<v Speaker 1>like there's a lot of a lot to be said

81
00:04:23.319 --> 00:04:26.959
<v Speaker 1>about the ease of onboarding there and like not having

82
00:04:27.040 --> 00:04:31.759
<v Speaker 1>to to jump the gun on all the maybe more

83
00:04:32.120 --> 00:04:36.600
<v Speaker 1>uncommon and maybe more weird outip things the Beam offers,

84
00:04:36.600 --> 00:04:40.480
<v Speaker 1>which is super powerful but can be quite confusing for newcomers. Right, definitely,

85
00:04:40.560 --> 00:04:42.160
<v Speaker 1>Like Alan, do you do you have like any any

86
00:04:42.279 --> 00:04:45.439
<v Speaker 1>story you'd like to share about how your first contact

87
00:04:45.439 --> 00:04:47.680
<v Speaker 1>possophilis here? And like what you did with it.

88
00:04:48.079 --> 00:04:49.519
<v Speaker 3>That's a good question. I'm trying to think of what

89
00:04:49.800 --> 00:04:53.120
<v Speaker 3>my first interaction was. I think I may share the

90
00:04:53.199 --> 00:04:55.079
<v Speaker 3>same interactions most people were. You kind of keen and

91
00:04:55.120 --> 00:04:57.920
<v Speaker 3>from the Phoenix side in that, like you didn't get

92
00:04:57.920 --> 00:05:00.279
<v Speaker 3>too much exposure to OTP when you're using Phoenix, because

93
00:05:00.279 --> 00:05:01.959
<v Speaker 3>a lot of stuff is kind of abstracted from you.

94
00:05:02.360 --> 00:05:04.279
<v Speaker 3>Like even I'm thinking about like when I'm first looking

95
00:05:04.319 --> 00:05:06.920
<v Speaker 3>at the application ex file that gets created and it's

96
00:05:06.959 --> 00:05:08.759
<v Speaker 3>not super clear like what's going on. You just have

97
00:05:08.800 --> 00:05:10.480
<v Speaker 3>a bunch of stuff we see that gets started up,

98
00:05:10.480 --> 00:05:12.639
<v Speaker 3>but you don't really understand exactly what's going on. You

99
00:05:12.680 --> 00:05:14.560
<v Speaker 3>don't really see like the endpoint all these kind of

100
00:05:14.600 --> 00:05:17.040
<v Speaker 3>things and coming from rails, like I think most people

101
00:05:17.120 --> 00:05:19.360
<v Speaker 3>did that. I didn't really think too much about a

102
00:05:19.399 --> 00:05:22.879
<v Speaker 3>lot of things. I just kind of try to keep things, yeah,

103
00:05:23.079 --> 00:05:25.720
<v Speaker 3>just just in line. I mean when I started speaking,

104
00:05:25.759 --> 00:05:27.360
<v Speaker 3>that was way back we had like the web folder

105
00:05:27.399 --> 00:05:29.759
<v Speaker 3>that was outside of the lib folder. If you remember that,

106
00:05:30.360 --> 00:05:36.920
<v Speaker 3>that was a long time ago, that was I think, yeah, yeah,

107
00:05:36.959 --> 00:05:38.439
<v Speaker 3>so I think I came in about one point two

108
00:05:38.600 --> 00:05:40.600
<v Speaker 3>or something, and yeah, so it was a it was

109
00:05:40.639 --> 00:05:41.480
<v Speaker 3>a different time back then.

110
00:05:41.480 --> 00:05:42.680
<v Speaker 1>Also, you had like, what was it?

111
00:05:42.800 --> 00:05:44.680
<v Speaker 3>It was weird, like you didn't have a schema, right,

112
00:05:44.759 --> 00:05:47.560
<v Speaker 3>you had something else like a model models.

113
00:05:47.600 --> 00:05:51.160
<v Speaker 2>Yeah, it was actually models. It wasn't controls and templates.

114
00:05:51.160 --> 00:05:51.439
<v Speaker 1>I guess.

115
00:05:51.560 --> 00:05:54.160
<v Speaker 2>Yeah. So, and I remember like a lot of one

116
00:05:54.199 --> 00:05:56.160
<v Speaker 2>of the things that a lot of people in the

117
00:05:56.360 --> 00:05:59.839
<v Speaker 2>Alica community who did not come from RAILS community didn't like,

118
00:06:00.360 --> 00:06:03.879
<v Speaker 2>was said, why are we calling the schema's models? So

119
00:06:04.319 --> 00:06:06.639
<v Speaker 2>then we then I saw Phoenix moving away from that.

120
00:06:06.680 --> 00:06:08.720
<v Speaker 2>I think one point three that that's what introduced the

121
00:06:08.800 --> 00:06:12.920
<v Speaker 2>bounded contexts, right, the context modules that don't know well.

122
00:06:12.959 --> 00:06:15.079
<v Speaker 3>I mean the part is that actually made it more

123
00:06:15.079 --> 00:06:17.480
<v Speaker 3>approachable for me at least because I did understand NBC

124
00:06:17.639 --> 00:06:20.120
<v Speaker 3>and they were really pushing MBC at that time, I think,

125
00:06:20.240 --> 00:06:24.160
<v Speaker 3>like with the different folders, so that that was much

126
00:06:24.199 --> 00:06:26.079
<v Speaker 3>easier for me. And so I didn't really get too

127
00:06:26.399 --> 00:06:29.000
<v Speaker 3>into OTP for some time. I had to spend time

128
00:06:29.120 --> 00:06:31.040
<v Speaker 3>outside and just kind of look into it. I kept

129
00:06:31.079 --> 00:06:32.680
<v Speaker 3>hearing about TP, and then I just had to go

130
00:06:32.759 --> 00:06:36.120
<v Speaker 3>through like Sasha Sasha's book, a Little OTP book. These

131
00:06:36.160 --> 00:06:38.680
<v Speaker 3>two books for sure were definitely my early intros to it,

132
00:06:39.040 --> 00:06:40.600
<v Speaker 3>and then I could started to seeing it there's definitely

133
00:06:40.600 --> 00:06:43.920
<v Speaker 3>some powers over here. Also, Dave Dave's book from prag

134
00:06:44.040 --> 00:06:46.240
<v Speaker 3>Prog was also really good too, Like the fact that

135
00:06:46.839 --> 00:06:49.319
<v Speaker 3>I could spin off a bunch of like asynchronous processes.

136
00:06:49.519 --> 00:06:53.360
<v Speaker 3>Thought that was super powerful, like these things, so like

137
00:06:53.839 --> 00:06:55.519
<v Speaker 3>it took some time for me to really get into,

138
00:06:55.839 --> 00:06:57.879
<v Speaker 3>you know, what I wanted to do. And after spending

139
00:06:57.920 --> 00:07:00.160
<v Speaker 3>quite a bit of time like getting into it, then

140
00:07:00.199 --> 00:07:02.399
<v Speaker 3>I started actually adding it to projects for things like

141
00:07:02.680 --> 00:07:04.720
<v Speaker 3>I had to process webbooks and you had to return

142
00:07:04.759 --> 00:07:06.800
<v Speaker 3>a sponsor this response with a certain amount of time.

143
00:07:07.120 --> 00:07:10.199
<v Speaker 3>So initially that was actually synchronous, and they started taking

144
00:07:10.279 --> 00:07:12.800
<v Speaker 3>longer and longer, and then finally we said, okay, let's

145
00:07:13.120 --> 00:07:15.439
<v Speaker 3>try to spin off this as a process and let's

146
00:07:15.480 --> 00:07:19.279
<v Speaker 3>just return immediately. And that definitely was amazing. It was crazy,

147
00:07:19.399 --> 00:07:21.480
<v Speaker 3>like because we went from like a couple of seconds

148
00:07:21.680 --> 00:07:25.920
<v Speaker 3>to like now like was it like seventy two? Like

149
00:07:26.079 --> 00:07:28.160
<v Speaker 3>that U symbol was that microseconds?

150
00:07:28.600 --> 00:07:30.399
<v Speaker 1>So that was microseconds?

151
00:07:30.480 --> 00:07:33.759
<v Speaker 3>Yeah, yeah, that was super powerful. And then like we

152
00:07:33.920 --> 00:07:35.680
<v Speaker 3>had this third party, so we got a WebBook. Then

153
00:07:35.720 --> 00:07:38.800
<v Speaker 3>we had to ask them, like what happened? So we're

154
00:07:38.800 --> 00:07:41.600
<v Speaker 3>working with Strava. Strava would send us a webook saying, hey,

155
00:07:41.680 --> 00:07:44.720
<v Speaker 3>this user has an activity, and then we would reply back, hey,

156
00:07:44.800 --> 00:07:47.480
<v Speaker 3>tell me more about the activity, and Strava would actually

157
00:07:47.519 --> 00:07:50.879
<v Speaker 3>fall apart. It would just like die whenever we asked them.

158
00:07:51.240 --> 00:07:53.160
<v Speaker 3>And so that actually brought us into another stage of

159
00:07:53.199 --> 00:07:56.000
<v Speaker 3>OTP where if it failed, let it, we let it crash,

160
00:07:56.079 --> 00:07:58.000
<v Speaker 3>then we just retry it. And we actually built in

161
00:07:58.079 --> 00:08:00.680
<v Speaker 3>like a retrit mechanism too. So it was also super

162
00:08:00.720 --> 00:08:03.040
<v Speaker 3>helpful because they were experiencing a lot of growth issues

163
00:08:03.079 --> 00:08:06.319
<v Speaker 3>at the time, so it's really a gradual process to

164
00:08:06.399 --> 00:08:08.519
<v Speaker 3>me that just like adding this layer, adding that layer,

165
00:08:09.079 --> 00:08:11.800
<v Speaker 3>So it wasn't very overwhelming, but at the same time,

166
00:08:11.920 --> 00:08:15.360
<v Speaker 3>like because of the approachability of Phoenix, especially at that

167
00:08:15.439 --> 00:08:18.560
<v Speaker 3>time to where I was come from, it was really straightforward,

168
00:08:18.600 --> 00:08:19.560
<v Speaker 3>I think for the most part.

169
00:08:20.040 --> 00:08:23.839
<v Speaker 1>Yeah, I think that's a very common story. Right. You

170
00:08:23.920 --> 00:08:26.759
<v Speaker 1>start off with like air quote, just the web app,

171
00:08:27.199 --> 00:08:28.920
<v Speaker 1>and then you at some point say, okay, I would

172
00:08:28.959 --> 00:08:32.120
<v Speaker 1>like some background processing, like this thing over here it

173
00:08:32.279 --> 00:08:34.799
<v Speaker 1>takes too long. Let's let's move into the background. And

174
00:08:34.879 --> 00:08:36.639
<v Speaker 1>then like if you would be using raids, but you

175
00:08:36.679 --> 00:08:39.480
<v Speaker 1>would reach for something like sidekick, but then alix here.

176
00:08:39.519 --> 00:08:42.080
<v Speaker 1>Then then then OTP and like obstructions built on top

177
00:08:42.120 --> 00:08:44.960
<v Speaker 1>of that just in reach right, and you can then

178
00:08:45.080 --> 00:08:48.960
<v Speaker 1>then go very naturally transition into okay, how exactly is

179
00:08:49.039 --> 00:08:51.279
<v Speaker 1>this supposed to work? And what can I use here?

180
00:08:51.759 --> 00:08:55.440
<v Speaker 1>And what guarantees does this give me and explore basically

181
00:08:55.639 --> 00:08:59.320
<v Speaker 1>what what OTP provides you very very gently from from there.

182
00:08:59.559 --> 00:09:01.960
<v Speaker 3>I think the the funny thing now is like, okay,

183
00:09:02.360 --> 00:09:05.000
<v Speaker 3>you would reach for sidekick. There was a sidekick implementation

184
00:09:05.120 --> 00:09:08.200
<v Speaker 3>in a lixture and then people said, okay, you don't

185
00:09:08.240 --> 00:09:10.039
<v Speaker 3>need that. But now it's funny like we're almost reaching

186
00:09:10.080 --> 00:09:13.240
<v Speaker 3>for another sidekick nowadays, Like the open library not to

187
00:09:13.279 --> 00:09:15.879
<v Speaker 3>knock an open orban is fantastic, right, but it's funny

188
00:09:15.919 --> 00:09:18.360
<v Speaker 3>that actually now we're back to doing something similar, although

189
00:09:18.440 --> 00:09:20.919
<v Speaker 3>now you don't have to actually add in another dependency.

190
00:09:21.039 --> 00:09:23.279
<v Speaker 3>You don't have to add in like reddis. You just

191
00:09:23.360 --> 00:09:25.559
<v Speaker 3>work off the same database. That's the nice part. But

192
00:09:25.720 --> 00:09:27.240
<v Speaker 3>as it's taken like, it's kind of funny, like we're

193
00:09:27.639 --> 00:09:30.360
<v Speaker 3>necessarily almost full circle, right, It's like, okay, you don't

194
00:09:30.399 --> 00:09:33.279
<v Speaker 3>need sidekick, or so you don't need reddis. Okay, you

195
00:09:33.320 --> 00:09:36.200
<v Speaker 3>don't need like a background managing tool for background processes.

196
00:09:36.240 --> 00:09:38.519
<v Speaker 3>You could just split up a process, use a supervisor,

197
00:09:39.159 --> 00:09:41.279
<v Speaker 3>and now it's like, okay, now let's just farm it

198
00:09:41.360 --> 00:09:41.919
<v Speaker 3>out to open.

199
00:09:42.440 --> 00:09:44.720
<v Speaker 1>So it's kind of like full circle again. Yeah, I

200
00:09:44.799 --> 00:09:47.039
<v Speaker 1>think you can a bit of a bit of observe

201
00:09:47.159 --> 00:09:49.320
<v Speaker 1>like the development in the community there, because I mean,

202
00:09:49.559 --> 00:09:52.159
<v Speaker 1>Open is great if you have persistent jobs right degreat

203
00:09:52.200 --> 00:09:55.440
<v Speaker 1>but which should survive a restart of your app. But

204
00:09:55.559 --> 00:09:58.480
<v Speaker 1>sometimes that's not something you need. And the beginning, I

205
00:09:58.600 --> 00:10:00.720
<v Speaker 1>think a lot of people were like, oh, otp and

206
00:10:00.879 --> 00:10:03.159
<v Speaker 1>but that's cool, like what can we do with it?

207
00:10:03.519 --> 00:10:06.120
<v Speaker 1>And I mean the other folks will probably say like

208
00:10:06.399 --> 00:10:08.840
<v Speaker 1>it's an old app, but for the Elixi community it

209
00:10:08.919 --> 00:10:10.879
<v Speaker 1>was like, hey, maybe we don't need all that other

210
00:10:10.960 --> 00:10:14.360
<v Speaker 1>stuff we we used in our programming language. Let's try

211
00:10:14.399 --> 00:10:17.720
<v Speaker 1>to do it all like in the VM itself. But

212
00:10:18.080 --> 00:10:20.639
<v Speaker 1>now that a bit of time has passed, I guess

213
00:10:20.679 --> 00:10:22.360
<v Speaker 1>it makes sense that that you have now a solution

214
00:10:22.480 --> 00:10:24.480
<v Speaker 1>like Open, which has okay, like sometimes you really want

215
00:10:24.559 --> 00:10:27.639
<v Speaker 1>this persistent qube sometimes you really want these persistent jobs.

216
00:10:27.879 --> 00:10:30.639
<v Speaker 1>And while you might why, there might be solutions to

217
00:10:30.759 --> 00:10:33.279
<v Speaker 1>doing that in the side of a VM, it's just

218
00:10:33.960 --> 00:10:37.320
<v Speaker 1>quotes simpler to use a database. You're probably already using

219
00:10:37.440 --> 00:10:39.480
<v Speaker 1>I guess it tells a story about like the Elixi

220
00:10:39.480 --> 00:10:43.159
<v Speaker 1>community maturing and trying to do a bit of the

221
00:10:43.200 --> 00:10:43.840
<v Speaker 1>simplest thing.

222
00:10:44.120 --> 00:10:46.840
<v Speaker 2>Yeah, totally, yeah, I do. I really like the fact

223
00:10:46.919 --> 00:10:51.799
<v Speaker 2>that oban has become like the standard these days. Whenever

224
00:10:51.879 --> 00:10:56.559
<v Speaker 2>I have tried use OTP within the application, I am

225
00:10:56.759 --> 00:11:00.200
<v Speaker 2>in distorber state of jobs. It has always it's been

226
00:11:00.240 --> 00:11:02.360
<v Speaker 2>hard to manage that, especially with like crashes and stuff.

227
00:11:02.440 --> 00:11:06.080
<v Speaker 2>It's a lot easier to think of your data as

228
00:11:06.120 --> 00:11:08.679
<v Speaker 2>separate from your app. But I'm not saying it's not possible,

229
00:11:08.679 --> 00:11:11.240
<v Speaker 2>and airline is built for that, but it's just easier

230
00:11:11.320 --> 00:11:14.360
<v Speaker 2>to manage things, you know, and like it won't conflict

231
00:11:14.399 --> 00:11:17.320
<v Speaker 2>with your infrastructure and how you deploy and all that stuff.

232
00:11:17.440 --> 00:11:19.720
<v Speaker 1>Right. Yeah, it reminds me. I think it's like in

233
00:11:19.799 --> 00:11:22.039
<v Speaker 1>the book of such a Urk there's like this this

234
00:11:22.240 --> 00:11:25.480
<v Speaker 1>table about like what what you need for example, to

235
00:11:25.720 --> 00:11:28.639
<v Speaker 1>one like a web server and like persistence and so

236
00:11:28.759 --> 00:11:31.240
<v Speaker 1>on and so forth, like in like a language like

237
00:11:31.639 --> 00:11:34.480
<v Speaker 1>Ruby or Python or whatever, and it's like, okay, you

238
00:11:34.720 --> 00:11:36.879
<v Speaker 1>have to be ins like web server will be for example,

239
00:11:36.919 --> 00:11:39.039
<v Speaker 1>and the will we land will be like how is

240
00:11:39.080 --> 00:11:40.240
<v Speaker 1>it called kuma?

241
00:11:40.399 --> 00:11:40.559
<v Speaker 2>Right?

242
00:11:40.600 --> 00:11:42.080
<v Speaker 1>And then you have rails for the web app, and

243
00:11:42.120 --> 00:11:44.279
<v Speaker 1>then you have read is for like the QUE, and

244
00:11:44.360 --> 00:11:46.759
<v Speaker 1>you have postcors for persistence, and then you have engine

245
00:11:46.960 --> 00:11:49.080
<v Speaker 1>X for like web routing and so and so, and

246
00:11:49.120 --> 00:11:52.679
<v Speaker 1>then there's like this table on the other side. Like,

247
00:11:57.320 --> 00:11:59.200
<v Speaker 1>while it's a bit tang in j there is some

248
00:11:59.360 --> 00:12:01.720
<v Speaker 1>truth to that that I think it's interesting to see,

249
00:12:01.799 --> 00:12:05.200
<v Speaker 1>like how the community pushes in that direction. And so

250
00:12:05.320 --> 00:12:07.279
<v Speaker 1>it makes sense that in the beginning you had a

251
00:12:07.320 --> 00:12:10.440
<v Speaker 1>bunch of job ques which we did all inside of

252
00:12:10.480 --> 00:12:13.320
<v Speaker 1>the VM because like, hey, this is like a direction

253
00:12:13.440 --> 00:12:16.639
<v Speaker 1>the community tends to push because it reduces complexity. Less

254
00:12:16.679 --> 00:12:20.519
<v Speaker 1>dependencies means less complexity. But yeah, like I said before,

255
00:12:20.840 --> 00:12:24.679
<v Speaker 1>sometimes you really want these persistent jobs, and then it's

256
00:12:24.720 --> 00:12:27.879
<v Speaker 1>good to have an optimism in a project like Oburn,

257
00:12:27.960 --> 00:12:31.080
<v Speaker 1>which I think has been a godsend for a lot

258
00:12:31.120 --> 00:12:31.440
<v Speaker 1>of people.

259
00:12:31.720 --> 00:12:35.360
<v Speaker 2>For sure. Yeah, I agree, I have Remember, I feel

260
00:12:35.399 --> 00:12:37.279
<v Speaker 2>like I don't know if the susproduction or not. I

261
00:12:37.399 --> 00:12:42.440
<v Speaker 2>do remember using debts for a more persistent QUE. We

262
00:12:42.519 --> 00:12:45.840
<v Speaker 2>were already using the online term storage, and that the

263
00:12:45.919 --> 00:12:49.799
<v Speaker 2>disc based online term storage was something I remember exploring.

264
00:12:49.840 --> 00:12:52.360
<v Speaker 2>I'm not sure if it was in production for too long.

265
00:12:52.440 --> 00:12:55.399
<v Speaker 2>At all because we moved to Oban very quickly after that,

266
00:12:55.720 --> 00:12:58.039
<v Speaker 2>but which just made our life a lot simpler.

267
00:12:59.399 --> 00:13:02.120
<v Speaker 1>So was that's something like you you home brewed in

268
00:13:02.200 --> 00:13:02.960
<v Speaker 1>your company, Like.

269
00:13:03.240 --> 00:13:07.120
<v Speaker 2>Yeah, yeah, we already had a job processing thing that

270
00:13:07.279 --> 00:13:11.519
<v Speaker 2>was already half baked. We were using a gens will

271
00:13:11.559 --> 00:13:14.399
<v Speaker 2>attract that, and then we realized, oh we and as

272
00:13:14.600 --> 00:13:17.360
<v Speaker 2>what became more complicated, we needed like more like table

273
00:13:17.559 --> 00:13:20.919
<v Speaker 2>like infrastructure, right, and then we switched TOTS and then

274
00:13:21.120 --> 00:13:23.360
<v Speaker 2>we realized, oh, we need this to prosist beyond the

275
00:13:23.399 --> 00:13:26.320
<v Speaker 2>application crashes and whatnot. So then we moved to debts

276
00:13:26.840 --> 00:13:28.960
<v Speaker 2>and then I'm like, wait, there's a new thing, call

277
00:13:29.039 --> 00:13:32.120
<v Speaker 2>oh man. And I want to say that we did

278
00:13:32.200 --> 00:13:34.799
<v Speaker 2>have debts for some time in production, but very little's

279
00:13:34.799 --> 00:13:36.919
<v Speaker 2>probably like a month or so. But it wasn't much

280
00:13:36.960 --> 00:13:40.159
<v Speaker 2>of an effort to move from already implemented you know

281
00:13:40.279 --> 00:13:41.120
<v Speaker 2>ETS two.

282
00:13:41.320 --> 00:13:44.360
<v Speaker 1>Yes, like for our listeners to get like ets like

283
00:13:44.440 --> 00:13:46.840
<v Speaker 1>this recording term storage. We mentioned it in a few

284
00:13:46.960 --> 00:13:49.720
<v Speaker 1>past episodes, but it's basically like an in memory key

285
00:13:50.080 --> 00:13:54.360
<v Speaker 1>value table, and debts is basically left the same thing,

286
00:13:54.759 --> 00:13:57.759
<v Speaker 1>but that saves the contents on a file on disc.

287
00:13:58.200 --> 00:14:02.679
<v Speaker 1>So then you actually can have resistance across restarts of app.

288
00:14:03.360 --> 00:14:05.120
<v Speaker 1>Just in case somebody is not familiar with it. We

289
00:14:05.159 --> 00:14:07.320
<v Speaker 1>can like blink to the dogs, I guess in the show.

290
00:14:07.799 --> 00:14:09.960
<v Speaker 2>Great. The best part about it is that you get

291
00:14:10.000 --> 00:14:14.519
<v Speaker 2>to use this amazing query look up language. I'm not

292
00:14:14.600 --> 00:14:16.480
<v Speaker 2>sure if you've tried, yes, I.

293
00:14:16.600 --> 00:14:20.559
<v Speaker 1>Have, amazing wouldn't have been the adjective I'm using there.

294
00:14:21.480 --> 00:14:23.559
<v Speaker 2>I was definitely I was definitely been sarcastic.

295
00:14:23.919 --> 00:14:28.120
<v Speaker 1>Yeah, I mean there are some some helpers there, right,

296
00:14:28.200 --> 00:14:30.600
<v Speaker 1>like this fun too an ass which is like fun

297
00:14:30.639 --> 00:14:33.600
<v Speaker 1>to matches back, so they basically pass it like a function.

298
00:14:33.720 --> 00:14:38.120
<v Speaker 1>And then it's like somehow automatically powerises these these guards

299
00:14:38.360 --> 00:14:40.879
<v Speaker 1>or these pattern matches to specify. Like that's a lot

300
00:14:41.000 --> 00:14:46.039
<v Speaker 1>better already. But the match specs interesting. Let's just say

301
00:14:46.120 --> 00:14:50.559
<v Speaker 1>that I have written some I've written some simple match

302
00:14:50.600 --> 00:14:52.799
<v Speaker 1>specs are okay, but that's as soon as it gets

303
00:14:52.879 --> 00:14:57.559
<v Speaker 1>like even remotely complex. It's even worse than regular expressions.

304
00:14:59.000 --> 00:14:59.879
<v Speaker 2>Agree percent.

305
00:15:00.799 --> 00:15:03.360
<v Speaker 1>But yeah, it just just to reiterate, I feel like

306
00:15:03.559 --> 00:15:06.039
<v Speaker 1>there is a very natural transition to say, okay, I

307
00:15:06.159 --> 00:15:08.320
<v Speaker 1>want to start like my web project, right, and I

308
00:15:09.000 --> 00:15:11.480
<v Speaker 1>just use Phoenix and then I write some controllers and

309
00:15:11.600 --> 00:15:14.000
<v Speaker 1>then I write some code here and sometimes maybe some

310
00:15:14.080 --> 00:15:15.960
<v Speaker 1>active I have a database and I don't have to

311
00:15:16.039 --> 00:15:18.919
<v Speaker 1>care about ODP. But as soon as you like want

312
00:15:18.960 --> 00:15:21.399
<v Speaker 1>to step out of that that I'm not sure, like

313
00:15:21.480 --> 00:15:24.919
<v Speaker 1>that the safe zone like this the sandbox, then then

314
00:15:24.960 --> 00:15:28.720
<v Speaker 1>OTP is there, like it allows you to like reach

315
00:15:29.039 --> 00:15:35.720
<v Speaker 1>for things beyond this air quotes simple and easy Phoenix stuff.

316
00:15:35.960 --> 00:15:39.120
<v Speaker 1>And I must say, like my personally, my experience has

317
00:15:39.159 --> 00:15:41.840
<v Speaker 1>been very very positive there, because I mean I remember

318
00:15:43.120 --> 00:15:46.200
<v Speaker 1>trying to step out of like this safe zone in

319
00:15:46.279 --> 00:15:49.360
<v Speaker 1>other languages, like be they back end or even like

320
00:15:49.399 --> 00:15:51.600
<v Speaker 1>front end code, and then I feel like the experience

321
00:15:51.720 --> 00:15:55.399
<v Speaker 1>is often that that you bump into like weird walls

322
00:15:55.480 --> 00:15:58.480
<v Speaker 1>and weird edges like you didn't expect to bump into

323
00:15:58.600 --> 00:16:01.559
<v Speaker 1>because like then suddenly tried to do things outside of

324
00:16:01.639 --> 00:16:05.000
<v Speaker 1>the scope of the framework, right, and then things become

325
00:16:05.120 --> 00:16:08.799
<v Speaker 1>very very hard all of a sudden without especially like

326
00:16:08.840 --> 00:16:10.720
<v Speaker 1>when you try to like do this for the first

327
00:16:10.720 --> 00:16:13.120
<v Speaker 1>time and they don't really understand why things don't work

328
00:16:13.159 --> 00:16:15.679
<v Speaker 1>as you might expect them to. I very much remember,

329
00:16:15.759 --> 00:16:18.840
<v Speaker 1>like my very first web app was actually PHP thing

330
00:16:18.879 --> 00:16:21.360
<v Speaker 1>with like Laravel, and then we wanted to send like

331
00:16:21.399 --> 00:16:24.480
<v Speaker 1>a push notification and to a bunch of users, and

332
00:16:24.799 --> 00:16:26.840
<v Speaker 1>like I was like looking at this, and I was

333
00:16:26.879 --> 00:16:28.960
<v Speaker 1>like thinking, okay, I'd like to do that in the background,

334
00:16:29.039 --> 00:16:31.559
<v Speaker 1>right because it might go through like thousands and thousands

335
00:16:31.600 --> 00:16:34.279
<v Speaker 1>of devices. And suddenly I was like, looking, Okay, then

336
00:16:34.320 --> 00:16:36.639
<v Speaker 1>you have like they have to start this demon which

337
00:16:36.759 --> 00:16:39.399
<v Speaker 1>like handles your bag PHP background process, And I was like,

338
00:16:39.799 --> 00:16:44.360
<v Speaker 1>what the fuck? Why is this so hard? And yeah,

339
00:16:44.799 --> 00:16:48.120
<v Speaker 1>I feel like at least in that in that context,

340
00:16:48.360 --> 00:16:52.279
<v Speaker 1>Elixir gives a very more and more streamlined and a

341
00:16:52.519 --> 00:16:57.480
<v Speaker 1>more simple solution to do these these common issues without

342
00:16:57.879 --> 00:17:00.679
<v Speaker 1>you having to like really grog or all the things.

343
00:17:01.440 --> 00:17:04.680
<v Speaker 1>And one interesting thing I know for myself there was

344
00:17:04.920 --> 00:17:07.519
<v Speaker 1>as soon as like I got like a basic understanding

345
00:17:07.559 --> 00:17:10.759
<v Speaker 1>of OTP, I could also very much appreciate about, Okay,

346
00:17:11.000 --> 00:17:13.440
<v Speaker 1>how it does phoenix actually work? Right, Like how you

347
00:17:13.559 --> 00:17:18.039
<v Speaker 1>have one process per request? Yeah, and like I feel

348
00:17:18.079 --> 00:17:21.559
<v Speaker 1>like all the pieces like snack together. So that's pretty

349
00:17:21.640 --> 00:17:25.000
<v Speaker 1>pretty interesting and like something I have not yet experienced

350
00:17:25.000 --> 00:17:27.839
<v Speaker 1>in the same fission in a different technology stack, but

351
00:17:27.960 --> 00:17:31.079
<v Speaker 1>maybe like my MIC, maybe something like that will pop

352
00:17:31.160 --> 00:17:31.799
<v Speaker 1>up at some time.

353
00:17:32.200 --> 00:17:35.319
<v Speaker 2>Yeah, totally, totally, Yeah, it's actually cowboy if I want

354
00:17:35.359 --> 00:17:37.160
<v Speaker 2>to say, I think Cowboy itself.

355
00:17:37.440 --> 00:17:39.720
<v Speaker 1>Every public quest is a probably.

356
00:17:39.720 --> 00:17:42.200
<v Speaker 2>Its own process, which is I think Veena's just like

357
00:17:42.240 --> 00:17:45.559
<v Speaker 2>piggybacks off of that, which is yeah, pretty awesome. Yeah,

358
00:17:45.599 --> 00:17:47.920
<v Speaker 2>I mean, yeah, totally right about again the point you

359
00:17:48.039 --> 00:17:50.480
<v Speaker 2>made about before diving into it to be And I

360
00:17:50.559 --> 00:17:54.359
<v Speaker 2>mean there's also Alixir as a community has so many

361
00:17:54.440 --> 00:17:56.440
<v Speaker 2>cool I mean we're not even gonna we haven't even

362
00:17:56.519 --> 00:17:59.759
<v Speaker 2>touched nerves yet. But like something as simple as like

363
00:17:59.839 --> 00:18:03.960
<v Speaker 2>the embedded elixa engine, right that is so powerful, like

364
00:18:04.920 --> 00:18:07.359
<v Speaker 2>it can just power you anything you want to template.

365
00:18:07.880 --> 00:18:11.680
<v Speaker 2>Like here's an example. Right before I did any little

366
00:18:11.839 --> 00:18:14.119
<v Speaker 2>any I met it a very little OTP, but like

367
00:18:14.200 --> 00:18:18.839
<v Speaker 2>before I dealt into OTP, I wrote this DevOps like app.

368
00:18:19.319 --> 00:18:22.359
<v Speaker 2>It basically sets up a Linix ra Mac with like

369
00:18:22.920 --> 00:18:24.799
<v Speaker 2>all the tools I want, you know, I used to

370
00:18:25.119 --> 00:18:28.720
<v Speaker 2>him the terminal I want, zoom and whatever. It just

371
00:18:29.039 --> 00:18:32.079
<v Speaker 2>and using Alix for stuff like that. It's little looks weird,

372
00:18:32.319 --> 00:18:34.359
<v Speaker 2>but it was so easy to do that because of

373
00:18:34.480 --> 00:18:38.440
<v Speaker 2>embedded Alixir. Writing shared templates is so easy to do

374
00:18:39.039 --> 00:18:41.960
<v Speaker 2>and it looks with such an accessible language. You have

375
00:18:41.960 --> 00:18:45.119
<v Speaker 2>to figure out how to install it first, But once

376
00:18:45.160 --> 00:18:48.000
<v Speaker 2>you install Alexa. Once you got it running in a

377
00:18:48.200 --> 00:18:53.039
<v Speaker 2>nice script, it's very powerful because it's interfaces like so idiomatic, right,

378
00:18:53.200 --> 00:18:56.720
<v Speaker 2>Like it's it's so easy to use, like most of

379
00:18:56.799 --> 00:18:59.039
<v Speaker 2>the libraries and the language.

380
00:18:58.680 --> 00:19:02.720
<v Speaker 1>Itself, the tooling and the tooling is just superb.

381
00:19:03.240 --> 00:19:03.400
<v Speaker 2>Right.

382
00:19:04.680 --> 00:19:07.319
<v Speaker 1>I feel like the onboarding experience and Elix here, like

383
00:19:07.519 --> 00:19:10.400
<v Speaker 1>even like just going through the guides on the Elixir

384
00:19:10.480 --> 00:19:14.559
<v Speaker 1>website drops you off at a point where, at least

385
00:19:14.680 --> 00:19:18.559
<v Speaker 1>for me I might personally where you feel relatively comfortable,

386
00:19:19.039 --> 00:19:23.079
<v Speaker 1>like tackling your first Elixir like not not really like

387
00:19:23.200 --> 00:19:26.880
<v Speaker 1>diving into like like I like writing like website from scratch, right,

388
00:19:26.920 --> 00:19:29.079
<v Speaker 1>but like really okay, I feel like I know enough

389
00:19:29.200 --> 00:19:34.400
<v Speaker 1>to be productive to actually build something, And that I

390
00:19:34.480 --> 00:19:38.079
<v Speaker 1>think that tells a story where about where ALIXI comes from, right,

391
00:19:38.240 --> 00:19:42.000
<v Speaker 1>I mean just look at where what Jose did before Elixir,

392
00:19:42.119 --> 00:19:44.440
<v Speaker 1>Like he was very very active in the Ruby community,

393
00:19:44.799 --> 00:19:47.079
<v Speaker 1>and Ruby has this mantra and like this reputation and

394
00:19:47.160 --> 00:19:51.079
<v Speaker 1>we're very well earned reputation about being approachable and about

395
00:19:51.160 --> 00:19:55.200
<v Speaker 1>being easy to pick up and like focusing on developer happiness.

396
00:19:55.519 --> 00:19:58.319
<v Speaker 1>And you really see this in elix heir that they

397
00:19:58.359 --> 00:20:01.599
<v Speaker 1>did a lot of these the same ideas have evolved

398
00:20:01.680 --> 00:20:05.640
<v Speaker 1>to a certain degree, but also went into the design

399
00:20:05.799 --> 00:20:08.359
<v Speaker 1>of this language and the design of the tooling and

400
00:20:08.480 --> 00:20:12.839
<v Speaker 1>the design of your onboarding experience and while still learning

401
00:20:12.920 --> 00:20:16.000
<v Speaker 1>for maybe is like some of of things which haven't

402
00:20:16.119 --> 00:20:18.880
<v Speaker 1>worked out that nicely in the Ruby community, because I

403
00:20:18.920 --> 00:20:22.640
<v Speaker 1>mean a lot of people who do Elixir come from Ruby.

404
00:20:22.799 --> 00:20:26.680
<v Speaker 1>That's just a very natural transition, and at least in Ruby,

405
00:20:26.759 --> 00:20:28.680
<v Speaker 1>sometimes you have a situation where if you have a

406
00:20:28.799 --> 00:20:32.319
<v Speaker 1>very big money which evolved over time, then you have

407
00:20:32.400 --> 00:20:35.400
<v Speaker 1>obvious like different parts which like magically touched each other,

408
00:20:35.799 --> 00:20:38.200
<v Speaker 1>and then it becomes very hard to reason about things.

409
00:20:38.559 --> 00:20:41.000
<v Speaker 1>And that's like something I think you can see in Elixir,

410
00:20:41.000 --> 00:20:44.000
<v Speaker 1>where like Jose, but very very very deliberate design decisions

411
00:20:44.039 --> 00:20:46.119
<v Speaker 1>to avoid some of these pitfalls.

412
00:20:46.400 --> 00:20:48.960
<v Speaker 2>So yeah, totally. I think one of the things that

413
00:20:49.400 --> 00:20:51.599
<v Speaker 2>I guess I'm again being in a more and more

414
00:20:51.599 --> 00:20:53.920
<v Speaker 2>of a unique place where I actually did Elixir before

415
00:20:54.000 --> 00:20:58.319
<v Speaker 2>Ruby on Rails delivered my production app and Elixir before

416
00:20:58.319 --> 00:21:00.880
<v Speaker 2>I did Ruby on Rails stuff. I didn't even Phoenix

417
00:21:00.920 --> 00:21:01.559
<v Speaker 2>before Rails.

418
00:21:02.480 --> 00:21:07.759
<v Speaker 1>The same there, I also have hadn't done Ruby before awesome.

419
00:21:09.440 --> 00:21:12.200
<v Speaker 1>I cannot tell us like you don't know shit.

420
00:21:14.440 --> 00:21:16.799
<v Speaker 2>But what I what I really felt is, I mean, yes,

421
00:21:16.880 --> 00:21:20.440
<v Speaker 2>Elixir and Phoenix did feel like magic still to some extent,

422
00:21:20.880 --> 00:21:23.480
<v Speaker 2>but a lot less magic than Ruby on rails, like

423
00:21:23.759 --> 00:21:26.519
<v Speaker 2>you have that endpoint dot ex, you still have the

424
00:21:26.599 --> 00:21:30.880
<v Speaker 2>application dot ex, you still have the user channel dot ex.

425
00:21:30.960 --> 00:21:33.559
<v Speaker 2>Even though you don't need to use that code, no

426
00:21:33.599 --> 00:21:36.519
<v Speaker 2>one touches it ever, you can. You still have this

427
00:21:36.720 --> 00:21:40.079
<v Speaker 2>more explicitness in the interface. Also, I think by design

428
00:21:40.119 --> 00:21:42.279
<v Speaker 2>and Elixir too, like there you can do a lot

429
00:21:42.319 --> 00:21:45.480
<v Speaker 2>of The meta program is very powerful, but it restricts

430
00:21:45.519 --> 00:21:48.359
<v Speaker 2>you from doing things that you shouldn't do, for example,

431
00:21:48.880 --> 00:21:51.640
<v Speaker 2>opening up a class and defining functions that are not

432
00:21:51.759 --> 00:21:54.200
<v Speaker 2>defined in it right like rail stands and all the time.

433
00:21:54.799 --> 00:21:57.640
<v Speaker 2>And the only the craziest thing you can do is

434
00:21:57.720 --> 00:22:01.559
<v Speaker 2>like use the on definition hook the compile time hook

435
00:22:01.599 --> 00:22:04.319
<v Speaker 2>and you know, do something there. But even with that,

436
00:22:04.440 --> 00:22:07.799
<v Speaker 2>it restricts you from defining or creating a new function.

437
00:22:09.680 --> 00:22:12.200
<v Speaker 1>Yeah, well, I just wanted to say, like on definition

438
00:22:12.839 --> 00:22:17.160
<v Speaker 1>callback is actually very interesting because like it's deliberately like

439
00:22:17.279 --> 00:22:19.839
<v Speaker 1>when you write it, it's deliberately a function you have

440
00:22:19.920 --> 00:22:21.960
<v Speaker 1>to write. You can't write a macro there, so you

441
00:22:22.039 --> 00:22:24.240
<v Speaker 1>can't inject code there you can only like I don't know,

442
00:22:24.319 --> 00:22:27.319
<v Speaker 1>like track something like. That's a very very deliberate design

443
00:22:27.359 --> 00:22:31.160
<v Speaker 1>decision because I think all the other complex compilation callbacks

444
00:22:31.240 --> 00:22:34.400
<v Speaker 1>are all macros only the un definition is a function

445
00:22:34.680 --> 00:22:39.079
<v Speaker 1>and probably just to avoid this exactly this kind of

446
00:22:39.160 --> 00:22:41.720
<v Speaker 1>magic behavior which would otherwise be very hard to wrap

447
00:22:41.759 --> 00:22:42.319
<v Speaker 1>your head around.

448
00:22:42.480 --> 00:22:45.279
<v Speaker 2>Totally. Yeah, I think the before compiling after compel can

449
00:22:45.400 --> 00:22:49.279
<v Speaker 2>be both both macros and functions, but you're right on definition,

450
00:22:49.440 --> 00:22:50.680
<v Speaker 2>it can only be a function.

451
00:22:51.480 --> 00:22:55.200
<v Speaker 1>So that's like a very interesting dedesign tidbit.

452
00:22:55.440 --> 00:22:55.839
<v Speaker 2>Definitely.

453
00:22:56.799 --> 00:22:59.839
<v Speaker 1>I feel like it's probably also something like you can

454
00:23:00.000 --> 00:23:03.160
<v Speaker 1>see that somebody has made this decision probably because they

455
00:23:03.200 --> 00:23:06.759
<v Speaker 1>have been burned by something working differently before.

456
00:23:06.960 --> 00:23:09.839
<v Speaker 2>Right right, exactly, I think the whole if you look

457
00:23:09.880 --> 00:23:13.160
<v Speaker 2>at the Elixir proposals groups, school groups, you can see

458
00:23:13.319 --> 00:23:17.160
<v Speaker 2>how protective people are of like bad patterns in the community.

459
00:23:17.240 --> 00:23:19.759
<v Speaker 2>Like a lot of times, if you suggest something that

460
00:23:19.839 --> 00:23:22.160
<v Speaker 2>could be potentially off, you don't have to wait to

461
00:23:22.200 --> 00:23:25.160
<v Speaker 2>see Jose's opinion, like so many others just bounds off

462
00:23:25.200 --> 00:23:26.680
<v Speaker 2>and like oh what about this? What about that? And

463
00:23:26.759 --> 00:23:31.200
<v Speaker 2>it's just it's a very very positive involved community that's

464
00:23:31.359 --> 00:23:33.559
<v Speaker 2>you know, Jose has managed to create your Jose and

465
00:23:33.599 --> 00:23:36.160
<v Speaker 2>everyone else like where there's so many people who are

466
00:23:36.400 --> 00:23:40.599
<v Speaker 2>just like inherently care about the language enough to actively

467
00:23:40.720 --> 00:23:44.039
<v Speaker 2>monitor Google groups even without being in the Lexa core team,

468
00:23:44.079 --> 00:23:45.359
<v Speaker 2>which is quite amazing.

469
00:23:45.519 --> 00:23:48.759
<v Speaker 1>Yeah, I agree with one. Yeah, I think it's it's

470
00:23:48.960 --> 00:23:52.359
<v Speaker 1>like an interesting balance which has been which Alixi has

471
00:23:52.400 --> 00:23:56.039
<v Speaker 1>been striking, like where you can get productive relatively quickly.

472
00:23:56.279 --> 00:23:58.680
<v Speaker 1>I've seen that happen. I've seen that happen with colleagues

473
00:23:59.160 --> 00:24:02.119
<v Speaker 1>picking up alixit very first time, and like a lot

474
00:24:02.160 --> 00:24:04.319
<v Speaker 1>of people are like, oh, it's a functional language. I'm

475
00:24:04.359 --> 00:24:06.759
<v Speaker 1>not sure how productive I will be. But if you

476
00:24:07.079 --> 00:24:10.119
<v Speaker 1>drop them into like a Phoenix project and then tell them, hey,

477
00:24:10.279 --> 00:24:13.559
<v Speaker 1>go through the who were getting started guys of elix here,

478
00:24:13.680 --> 00:24:16.720
<v Speaker 1>and then just look at the code and you figure

479
00:24:16.759 --> 00:24:19.880
<v Speaker 1>things out. My experience has been that people become a

480
00:24:19.960 --> 00:24:23.720
<v Speaker 1>lot quicker productive than they might have expect expected initially

481
00:24:23.839 --> 00:24:26.799
<v Speaker 1>just by this being a functional language. And yeah, I

482
00:24:26.880 --> 00:24:29.599
<v Speaker 1>mean then we said that that you have this natural

483
00:24:29.680 --> 00:24:32.640
<v Speaker 1>transition about Okay, now I want to reach for something more.

484
00:24:32.680 --> 00:24:35.680
<v Speaker 1>I want to do background processing, and and they're the

485
00:24:35.799 --> 00:24:38.480
<v Speaker 1>indexit community is also very helpful, like if you just

486
00:24:38.519 --> 00:24:41.400
<v Speaker 1>ask a question, the Alixi firm people will will very

487
00:24:41.519 --> 00:24:44.839
<v Speaker 1>quickly give you an answer and help you figure things out.

488
00:24:45.200 --> 00:24:48.359
<v Speaker 1>So yes, it's an interesting, interesting balance which I think

489
00:24:48.400 --> 00:24:52.759
<v Speaker 1>may the core team and the community is striking between okay,

490
00:24:53.079 --> 00:24:55.480
<v Speaker 1>easy to onboard, but still powerful if you want it

491
00:24:55.559 --> 00:24:57.839
<v Speaker 1>to be. One thing I wanted to say, like earlier

492
00:24:57.960 --> 00:25:00.319
<v Speaker 1>when we talked about Phoenix, is I agree that like

493
00:25:00.359 --> 00:25:03.400
<v Speaker 1>Phoenix can feel a lot quite some quite magic when

494
00:25:03.400 --> 00:25:05.799
<v Speaker 1>you when you begin with it. But what I found

495
00:25:06.200 --> 00:25:09.480
<v Speaker 1>is when you then started to pull back the curtain

496
00:25:09.599 --> 00:25:13.640
<v Speaker 1>right the next okay, well what's actually happening beneath all

497
00:25:13.720 --> 00:25:17.799
<v Speaker 1>that magic? It's not a lot to be honest. I mean,

498
00:25:18.000 --> 00:25:20.200
<v Speaker 1>you have like the plug pipeline, then you have to

499
00:25:20.559 --> 00:25:23.119
<v Speaker 1>grop okay, what's actually a plug? And like how does

500
00:25:23.240 --> 00:25:26.039
<v Speaker 1>that work? And like how how do these like plug

501
00:25:26.119 --> 00:25:28.119
<v Speaker 1>macro and so and so forth work? But at the

502
00:25:28.200 --> 00:25:31.000
<v Speaker 1>end of the day, it boils down to being a

503
00:25:31.119 --> 00:25:34.559
<v Speaker 1>list of like modules plugs and then being invoked one

504
00:25:34.599 --> 00:25:38.079
<v Speaker 1>after the other. And even like you're router and like

505
00:25:38.119 --> 00:25:41.480
<v Speaker 1>your controller are plugs underneath, right, So if you look

506
00:25:41.519 --> 00:25:43.319
<v Speaker 1>at it and like find out, okay, well how does

507
00:25:43.400 --> 00:25:47.400
<v Speaker 1>this actually work? There is not that much magic to

508
00:25:47.559 --> 00:25:49.960
<v Speaker 1>untangle to find out, hey, okay, this is this is

509
00:25:50.000 --> 00:25:53.920
<v Speaker 1>what happens, which I found very very surprising when when

510
00:25:53.920 --> 00:25:54.519
<v Speaker 1>I first did that.

511
00:25:54.960 --> 00:25:58.599
<v Speaker 2>Yeah, totally, yeah, everything is plugs, as a correct way

512
00:25:58.599 --> 00:26:01.079
<v Speaker 2>of explaining it, like up your riter is a plug

513
00:26:01.519 --> 00:26:03.480
<v Speaker 2>once as soon as it gets to the router, once

514
00:26:03.640 --> 00:26:06.519
<v Speaker 2>get to the endpoint, it is a sequence of plugs.

515
00:26:07.279 --> 00:26:10.319
<v Speaker 2>Even the rendering a view happens in a plug. If

516
00:26:10.359 --> 00:26:14.480
<v Speaker 2>you actually inspect your connection in after like a request

517
00:26:14.559 --> 00:26:16.440
<v Speaker 2>test and after the controller test, it will have a

518
00:26:16.960 --> 00:26:20.839
<v Speaker 2>Phoenix uh plugs attribute on it and it will show

519
00:26:20.920 --> 00:26:24.279
<v Speaker 2>some underscoring to score Phoenix views something like that, and

520
00:26:24.559 --> 00:26:27.960
<v Speaker 2>that it's responsibility to render the view. It's actually pretty awesome.

521
00:26:28.160 --> 00:26:30.279
<v Speaker 2>I'm going to use this as a shameless.

522
00:26:30.039 --> 00:26:33.319
<v Speaker 1>Plug for my book, which pun intended.

523
00:26:34.519 --> 00:26:35.359
<v Speaker 2>Yeah, shamous plug.

524
00:26:35.359 --> 00:26:35.640
<v Speaker 3>You're right.

525
00:26:36.000 --> 00:26:39.440
<v Speaker 2>Yeah, So if people think Phoenix is magic, like I

526
00:26:39.519 --> 00:26:41.880
<v Speaker 2>did a while ago, I'm actually currently working on a

527
00:26:41.880 --> 00:26:45.119
<v Speaker 2>book with packed publications which teaches you how to build

528
00:26:45.160 --> 00:26:48.799
<v Speaker 2>your own web framework and Alixir. Again. I've already talked

529
00:26:48.799 --> 00:26:52.200
<v Speaker 2>about it once before on this podcast, but just wanted

530
00:26:52.240 --> 00:26:56.359
<v Speaker 2>to give that make that again plug again, so I'll

531
00:26:56.400 --> 00:26:57.759
<v Speaker 2>keep you guys posted how it's coming.

532
00:26:57.960 --> 00:27:00.400
<v Speaker 1>But yeah, no, maybe you can just drop a link

533
00:27:00.480 --> 00:27:02.680
<v Speaker 1>into the show notes also if people want to check

534
00:27:02.720 --> 00:27:02.960
<v Speaker 1>it out.

535
00:27:03.240 --> 00:27:05.359
<v Speaker 2>Yeah, actually I'm not sure if there's a link. We've

536
00:27:05.400 --> 00:27:08.799
<v Speaker 2>only worked okay, I'm just trying to I'm just trying

537
00:27:08.799 --> 00:27:10.279
<v Speaker 2>to create a little bit of for that.

538
00:27:11.039 --> 00:27:13.680
<v Speaker 1>Let me know if it likes, becomes available and I'll

539
00:27:13.720 --> 00:27:16.960
<v Speaker 1>certainly take a look at it. Yeah, anything else, like

540
00:27:17.359 --> 00:27:19.519
<v Speaker 1>we can talk about here, anything else, but like any

541
00:27:19.599 --> 00:27:20.920
<v Speaker 1>stories left to tell.

542
00:27:21.960 --> 00:27:24.480
<v Speaker 2>I mean we have essentially touched everything.

543
00:27:24.799 --> 00:27:28.440
<v Speaker 1>Yeah, I mean maybe one thing left. The one thing

544
00:27:28.640 --> 00:27:32.240
<v Speaker 1>we can talk about is that I feel like just

545
00:27:32.319 --> 00:27:34.799
<v Speaker 1>by the nature of like runtime all in the end,

546
00:27:34.960 --> 00:27:38.319
<v Speaker 1>and like all the good work which has been which

547
00:27:38.359 --> 00:27:40.960
<v Speaker 1>has went into like ODP and laying and like being

548
00:27:41.000 --> 00:27:44.079
<v Speaker 1>as performant and like as resilient as it is, and

549
00:27:44.680 --> 00:27:48.839
<v Speaker 1>you have this relatively straightforward on boarding experience and starting

550
00:27:48.920 --> 00:27:51.759
<v Speaker 1>to write your app. But then at some point, like

551
00:27:51.920 --> 00:27:54.799
<v Speaker 1>if you actually, like if you build like a startup

552
00:27:54.960 --> 00:27:58.799
<v Speaker 1>and your product becomes successful, right Alixir and the runtime

553
00:27:58.920 --> 00:28:01.960
<v Speaker 1>especially is there to like scale with you, And I

554
00:28:02.079 --> 00:28:04.759
<v Speaker 1>feel like, while of course you can also scare of

555
00:28:04.839 --> 00:28:07.240
<v Speaker 1>different technologies. I mean just look at GitHub for example,

556
00:28:07.400 --> 00:28:10.079
<v Speaker 1>which is still using rails to this day and very

557
00:28:10.079 --> 00:28:14.000
<v Speaker 1>successfully so, but at least from what I've seen, is

558
00:28:14.119 --> 00:28:18.200
<v Speaker 1>that elixir can push you a lot further with less

559
00:28:18.279 --> 00:28:22.519
<v Speaker 1>effort when compared to maybe like some more traditional technologies,

560
00:28:22.680 --> 00:28:26.519
<v Speaker 1>and like that's that's a very powerful combination, right, I

561
00:28:26.599 --> 00:28:29.480
<v Speaker 1>can start off relatively easy, of course, not as easily

562
00:28:29.519 --> 00:28:32.599
<v Speaker 1>as rails, and like the thora of like gems in there,

563
00:28:32.839 --> 00:28:35.880
<v Speaker 1>so that's certainly not not a position ex years in yet.

564
00:28:36.279 --> 00:28:39.519
<v Speaker 1>But if you stick to the well worn in the

565
00:28:39.599 --> 00:28:43.319
<v Speaker 1>well known path, then you can go very far, very quickly.

566
00:28:44.000 --> 00:28:46.680
<v Speaker 1>And when you come into position where you actually have

567
00:28:46.799 --> 00:28:50.000
<v Speaker 1>to to scale and they actually have to handle different

568
00:28:50.079 --> 00:28:53.400
<v Speaker 1>load scenarios than the beam, and all the tools there

569
00:28:53.599 --> 00:28:56.440
<v Speaker 1>are in your reach, and can I can help to

570
00:28:56.480 --> 00:28:59.559
<v Speaker 1>achieve these goals without maybe some of the growing pains

571
00:28:59.680 --> 00:29:02.839
<v Speaker 1>which which usually come in such a scenario.

572
00:29:03.079 --> 00:29:06.000
<v Speaker 2>That's very well said. Yeah, Elixir with less effort will

573
00:29:06.039 --> 00:29:09.880
<v Speaker 2>help you get a lot further than something like ribons. Yeah.

574
00:29:10.000 --> 00:29:13.359
<v Speaker 1>Yes, So this was like a little fun story like

575
00:29:13.480 --> 00:29:16.680
<v Speaker 1>tangantially related to that, as like a former colleague of

576
00:29:16.759 --> 00:29:19.920
<v Speaker 1>mine had this like little small elixir app running in

577
00:29:20.000 --> 00:29:23.839
<v Speaker 1>production for a while for personal project, right, and then

578
00:29:24.119 --> 00:29:26.920
<v Speaker 1>at some point he just found out that sometimes there

579
00:29:27.039 --> 00:29:30.039
<v Speaker 1>was some some load spikes which like crashed a few things,

580
00:29:30.480 --> 00:29:33.880
<v Speaker 1>but like they only found out like months later when

581
00:29:33.920 --> 00:29:37.279
<v Speaker 1>he looked at the logs because then OTP just restarted everything.

582
00:29:38.720 --> 00:29:41.400
<v Speaker 1>So that was like a nice little experience for him,

583
00:29:41.480 --> 00:29:43.920
<v Speaker 1>like seeing, okay, like in a different scenario, will probably

584
00:29:44.000 --> 00:29:46.160
<v Speaker 1>have to handle you have to jump the gun. They

585
00:29:46.200 --> 00:29:48.640
<v Speaker 1>have to I don't know, astations to the server and

586
00:29:48.759 --> 00:29:51.160
<v Speaker 1>like restart things yourself and like maybe set us on

587
00:29:51.279 --> 00:29:54.440
<v Speaker 1>monitoring and like make sure that things get restarted effet

588
00:29:54.480 --> 00:29:57.079
<v Speaker 1>crash and like OTP just did that all of that

589
00:29:57.200 --> 00:30:00.759
<v Speaker 1>for him, and he didn't even notice until he looked

590
00:30:00.759 --> 00:30:03.519
<v Speaker 1>at the laws. So just to give like a one

591
00:30:03.559 --> 00:30:07.720
<v Speaker 1>little story where the runtime really delivered on some of

592
00:30:07.799 --> 00:30:10.400
<v Speaker 1>its promises. And so yeah, if some of our listeners,

593
00:30:10.480 --> 00:30:12.839
<v Speaker 1>like I have not did used elixir or like feel

594
00:30:13.000 --> 00:30:14.960
<v Speaker 1>like I don't know, like I don't want to lose elixir.

595
00:30:15.000 --> 00:30:17.279
<v Speaker 1>Elixir is like an overkill for this ad, just give

596
00:30:17.319 --> 00:30:20.119
<v Speaker 1>it a try. And there's also like a actually I'm

597
00:30:20.160 --> 00:30:21.519
<v Speaker 1>going to share that on the in the in the

598
00:30:21.559 --> 00:30:25.200
<v Speaker 1>show notes, theres like a super interesting article from engineer

599
00:30:25.279 --> 00:30:29.920
<v Speaker 1>at Spotify where they like wrote an Elixir service like

600
00:30:29.960 --> 00:30:34.039
<v Speaker 1>as a prototype thing for for some of some internal

601
00:30:34.119 --> 00:30:39.160
<v Speaker 1>metrics application which like gathered data and gathered metrics from

602
00:30:39.240 --> 00:30:43.839
<v Speaker 1>a lot of other services inside of their their infrastructure,

603
00:30:44.200 --> 00:30:47.440
<v Speaker 1>and like he tells this interesting story also about how

604
00:30:47.480 --> 00:30:49.839
<v Speaker 1>he used some performance tooling by the Beam because he

605
00:30:50.240 --> 00:30:53.400
<v Speaker 1>found out that the Elixir prototype had like a bottleneck.

606
00:30:53.759 --> 00:30:55.960
<v Speaker 1>And he found that out very very quickly actually by

607
00:30:56.079 --> 00:30:59.119
<v Speaker 1>by the tooling given for prove Beam, and then at

608
00:30:59.160 --> 00:31:01.279
<v Speaker 1>some point he like put that into production and then

609
00:31:01.559 --> 00:31:04.960
<v Speaker 1>like I don't know, devor redirected like some percentage of

610
00:31:05.000 --> 00:31:07.720
<v Speaker 1>a traffic to this prototype. Like the thing didn't even

611
00:31:07.759 --> 00:31:10.640
<v Speaker 1>break as wet, so he just spent like full full

612
00:31:10.720 --> 00:31:13.200
<v Speaker 1>on crazy mode and just like redirected all traffic to

613
00:31:13.359 --> 00:31:17.279
<v Speaker 1>this to this prototype, and that part just happily chucked along,

614
00:31:17.400 --> 00:31:19.839
<v Speaker 1>like it just did it strong and the like the

615
00:31:20.000 --> 00:31:22.920
<v Speaker 1>former thing they had running there was like a super

616
00:31:23.400 --> 00:31:26.440
<v Speaker 1>high performance to Java thing, which like really like a

617
00:31:26.519 --> 00:31:28.640
<v Speaker 1>lot of very smart people spend time on like making

618
00:31:28.720 --> 00:31:31.480
<v Speaker 1>it as performed as possible, and then just the sky

619
00:31:31.559 --> 00:31:34.079
<v Speaker 1>comes along it like writes this ELIXI prototype like the

620
00:31:34.160 --> 00:31:37.799
<v Speaker 1>first time writing Elixir and then fixes with one performance

621
00:31:37.960 --> 00:31:41.960
<v Speaker 1>bottleneck and boom. That just works. So I feel like

622
00:31:42.039 --> 00:31:45.160
<v Speaker 1>that tells that tells you a lot about how far

623
00:31:45.559 --> 00:31:48.799
<v Speaker 1>the run time can push you, even if you don't

624
00:31:49.240 --> 00:31:51.880
<v Speaker 1>feel comfortable with a lot of the intiquity details of ODP.

625
00:31:52.079 --> 00:31:53.480
<v Speaker 1>So I'm going to link that in the show notes

626
00:31:53.519 --> 00:31:55.759
<v Speaker 1>because I feel like that that might help a lot

627
00:31:55.759 --> 00:31:58.720
<v Speaker 1>of people like maybe jump jump the gun and like

628
00:31:58.799 --> 00:31:59.440
<v Speaker 1>to try it out.

629
00:32:00.079 --> 00:32:05.079
<v Speaker 2>Yeah, that's a very very good story, Sasha reading that article. Yeah,

630
00:32:05.160 --> 00:32:08.200
<v Speaker 2>one thing I do think, just as a negative one thing,

631
00:32:08.440 --> 00:32:10.160
<v Speaker 2>I mean, I think we've talked about quite a bit,

632
00:32:10.359 --> 00:32:13.359
<v Speaker 2>just that would really make it look so amazing would

633
00:32:13.359 --> 00:32:15.880
<v Speaker 2>be obviously the a good type system.

634
00:32:16.079 --> 00:32:16.519
<v Speaker 1>Oh boy.

635
00:32:16.599 --> 00:32:19.799
<v Speaker 2>Yeah, and that's also a very good segue to the

636
00:32:19.960 --> 00:32:22.559
<v Speaker 2>shout out for our next podcast. It's going to be

637
00:32:22.799 --> 00:32:25.079
<v Speaker 2>I think it's the next one we're gonna have Louis Pilford,

638
00:32:25.240 --> 00:32:28.119
<v Speaker 2>I think next the next podcast, the creator of Glean.

639
00:32:28.319 --> 00:32:31.720
<v Speaker 1>Yeah, and he's trying to bring an aesthetic type system

640
00:32:31.839 --> 00:32:34.880
<v Speaker 1>to the Beam and I'm very very curious to hear

641
00:32:34.960 --> 00:32:35.599
<v Speaker 1>his thoughts on that.

642
00:32:35.960 --> 00:32:36.519
<v Speaker 2>Yeah too.

643
00:32:36.720 --> 00:32:38.799
<v Speaker 1>Okay, I guess we can wrap it up here, or

644
00:32:38.920 --> 00:32:41.160
<v Speaker 1>is there anything else you'd like to talk about, Addie?

645
00:32:42.079 --> 00:32:45.359
<v Speaker 1>All right, then, let's go to picks. So, Addie, is

646
00:32:45.400 --> 00:32:47.920
<v Speaker 1>there anything you'd like to pick for us this week?

647
00:32:48.160 --> 00:32:51.960
<v Speaker 2>Yeah, I have a very It's a relatively simple blog post,

648
00:32:52.079 --> 00:32:55.319
<v Speaker 2>but it's very effective. It's written by one of my

649
00:32:55.400 --> 00:32:58.799
<v Speaker 2>co workers, Hassan is his name, and it's a very

650
00:32:58.839 --> 00:33:01.960
<v Speaker 2>cool blog post. Ratio is how you can split Phoenix

651
00:33:02.079 --> 00:33:06.720
<v Speaker 2>router into multiple modules in a more manageable way. It's

652
00:33:06.759 --> 00:33:09.599
<v Speaker 2>important to I think at least read that because I

653
00:33:09.640 --> 00:33:13.599
<v Speaker 2>think I know with the rails background, Phoenix rounders can

654
00:33:13.680 --> 00:33:18.000
<v Speaker 2>tend to get huge and less manageable. So I would

655
00:33:18.079 --> 00:33:20.119
<v Speaker 2>encourage people to give that a read that The link

656
00:33:20.160 --> 00:33:21.319
<v Speaker 2>will be in the description.

657
00:33:21.440 --> 00:33:24.279
<v Speaker 1>Ye. Nice, I don't have any specific picks this week.

658
00:33:24.680 --> 00:33:29.400
<v Speaker 1>I've been very busy, like the past week with a

659
00:33:29.480 --> 00:33:31.240
<v Speaker 1>lot of things which have been going only in Germany

660
00:33:31.319 --> 00:33:33.920
<v Speaker 1>because in my part of Germany, nor from Australia, there

661
00:33:34.400 --> 00:33:38.559
<v Speaker 1>have been floods last week, like insane floods, like floods

662
00:33:38.599 --> 00:33:41.000
<v Speaker 1>of a level which has not been seen before. In

663
00:33:41.039 --> 00:33:44.519
<v Speaker 1>a lot of houses in my neighborhood went underwater and

664
00:33:45.240 --> 00:33:46.839
<v Speaker 1>which we were so I spent a lot of time

665
00:33:46.920 --> 00:33:50.559
<v Speaker 1>like helping neighbors, like just throwing away stuff from their

666
00:33:50.720 --> 00:33:54.720
<v Speaker 1>cellar which work completely underwater, and I just like to

667
00:33:54.839 --> 00:33:57.400
<v Speaker 1>use this opportunity to say, hey, the climate change is

668
00:33:57.559 --> 00:34:00.079
<v Speaker 1>something which like affects all of us, and they're a

669
00:34:00.160 --> 00:34:03.759
<v Speaker 1>lot of good work happening like in various organizations like

670
00:34:03.839 --> 00:34:06.839
<v Speaker 1>Greenpeace or so on and so forth, and I just

671
00:34:07.000 --> 00:34:09.599
<v Speaker 1>like as to ask every listener to like maybe have

672
00:34:09.719 --> 00:34:13.719
<v Speaker 1>a chat with with parents, with folks they like to

673
00:34:14.400 --> 00:34:17.880
<v Speaker 1>consider client change when the next time they go to

674
00:34:17.920 --> 00:34:21.000
<v Speaker 1>the voting booth, because like very in September, there's like

675
00:34:21.159 --> 00:34:24.000
<v Speaker 1>voting happening in Germany as an election, the general election,

676
00:34:24.400 --> 00:34:26.599
<v Speaker 1>and if we have any listeners from Germany, I'd like

677
00:34:26.679 --> 00:34:30.199
<v Speaker 1>to like say, okay, just remember that things like this

678
00:34:30.400 --> 00:34:33.800
<v Speaker 1>flood is it's just going to become more common the

679
00:34:34.159 --> 00:34:38.000
<v Speaker 1>further we go on the climate chain scale. So I'd

680
00:34:38.079 --> 00:34:40.320
<v Speaker 1>like to consider this the next time. I'd like to

681
00:34:40.519 --> 00:34:42.199
<v Speaker 1>like to ask you to consider this next time you

682
00:34:42.559 --> 00:34:44.760
<v Speaker 1>cast a vote. That's That's all I'd like to say.

683
00:34:44.920 --> 00:34:48.039
<v Speaker 2>Probably speak okay, Actually I'm sorry about that. I got

684
00:34:48.079 --> 00:34:48.800
<v Speaker 2>one more pick.

685
00:34:49.440 --> 00:34:49.599
<v Speaker 1>Yes.

686
00:34:50.960 --> 00:34:53.760
<v Speaker 2>So keeping on the EU theme, there's a look I

687
00:34:53.840 --> 00:34:57.920
<v Speaker 2>can't be you happening soon, and I know they're looking

688
00:34:57.960 --> 00:35:02.440
<v Speaker 2>for volunteers and if anyone watching this want and delves

689
00:35:02.480 --> 00:35:04.760
<v Speaker 2>the conference. I want to see how it feels like

690
00:35:04.840 --> 00:35:07.400
<v Speaker 2>you can do it for free if you volunteer. I'm

691
00:35:07.880 --> 00:35:11.880
<v Speaker 2>gonna paste the link to the volunteering form in the

692
00:35:11.920 --> 00:35:14.599
<v Speaker 2>description as well. But yeah, I'm giving a talk there.

693
00:35:14.639 --> 00:35:17.519
<v Speaker 2>By the way, I'm still volunteering. It's I think it's

694
00:35:17.519 --> 00:35:20.079
<v Speaker 2>a great way to contribute to the community, to help

695
00:35:20.599 --> 00:35:23.400
<v Speaker 2>organizers all these conferences in any way possible, because they

696
00:35:23.480 --> 00:35:26.079
<v Speaker 2>work very hard to make sure these conferences go well.

697
00:35:26.239 --> 00:35:28.039
<v Speaker 1>Yeah. Nice, that's a good pick.

698
00:35:30.159 --> 00:35:30.400
<v Speaker 2>Nice.

699
00:35:30.960 --> 00:35:34.440
<v Speaker 1>Okay, So, folks, I hope you enjoyed the episode and

700
00:35:34.800 --> 00:35:38.320
<v Speaker 1>tune in next time when we come together a flinx
