WEBVTT

1
00:00:06.440 --> 00:00:09.640
<v Speaker 1>Hello, welcome to another episode of Elextra Mix. Today I'm

2
00:00:09.679 --> 00:00:11.160
<v Speaker 1>the only one on the panel and this is Alan

3
00:00:11.240 --> 00:00:14.560
<v Speaker 1>Whyma and today we have Tess, the creator of wasam

4
00:00:14.800 --> 00:00:17.559
<v Speaker 1>X or washim ex. We're still debating what they call

5
00:00:17.600 --> 00:00:18.800
<v Speaker 1>that one tesse. How are you?

6
00:00:19.199 --> 00:00:21.839
<v Speaker 2>I'm good. Let's say it wasn't Max. I don't say

7
00:00:21.879 --> 00:00:25.039
<v Speaker 2>this out allowed to often, so that's settled for wasn't x.

8
00:00:25.120 --> 00:00:27.359
<v Speaker 1>Yeah, it's kind of I often hear that from people

9
00:00:27.399 --> 00:00:29.120
<v Speaker 1>just adding the ex either to the beginning or to

10
00:00:29.160 --> 00:00:32.119
<v Speaker 1>the end. I talked to the creator of XCODR. I

11
00:00:32.159 --> 00:00:35.280
<v Speaker 1>think you just called the CLDR on a lot of things,

12
00:00:35.280 --> 00:00:36.799
<v Speaker 1>but of course you said you have to add the

13
00:00:36.799 --> 00:00:39.520
<v Speaker 1>ex to it or else. It's not an official Elextra library,

14
00:00:39.560 --> 00:00:41.320
<v Speaker 1>you know, just the way the way it's done.

15
00:00:41.359 --> 00:00:43.320
<v Speaker 2>It's always a balance, right. You have to be found

16
00:00:43.359 --> 00:00:45.119
<v Speaker 2>so you can call it wasn't. But then a few

17
00:00:45.159 --> 00:00:47.920
<v Speaker 2>college just wasn't as a library on XPM. It's easy

18
00:00:47.960 --> 00:00:50.399
<v Speaker 2>to find, but it's confuses everybody. And you want to

19
00:00:50.439 --> 00:00:53.520
<v Speaker 2>say it's for alex yas represent before Alexia. So that's

20
00:00:53.600 --> 00:00:54.560
<v Speaker 2>I think that's how it works.

21
00:00:54.799 --> 00:00:57.679
<v Speaker 1>Well, I mean, there's that sentence alone is not super clear,

22
00:00:57.840 --> 00:01:00.240
<v Speaker 1>at least to me. But we're going to get into

23
00:01:00.320 --> 00:01:02.439
<v Speaker 1>into that. I think first let's kind of talk a

24
00:01:02.479 --> 00:01:05.000
<v Speaker 1>little bit about you know, who are you, right, why?

25
00:01:05.439 --> 00:01:09.000
<v Speaker 1>Why did you what brought you from your beginnings all

26
00:01:09.000 --> 00:01:10.560
<v Speaker 1>the way to where you are now? Or at least

27
00:01:10.599 --> 00:01:14.120
<v Speaker 1>we started working on this MX. Yeah, good, good question.

28
00:01:14.400 --> 00:01:16.799
<v Speaker 1>So you know, I started as like you know, in university,

29
00:01:16.840 --> 00:01:19.959
<v Speaker 1>going straight for computer science degrees, and actually I had

30
00:01:19.959 --> 00:01:21.319
<v Speaker 1>to earn some money to pay the rent, so I

31
00:01:21.319 --> 00:01:24.040
<v Speaker 1>started developing a Ruby and Rails at open source acually

32
00:01:24.040 --> 00:01:27.200
<v Speaker 1>a project management system, and to earn some money while studying,

33
00:01:27.239 --> 00:01:29.519
<v Speaker 1>and that helped me, right, I had the choice between

34
00:01:29.599 --> 00:01:32.719
<v Speaker 1>academic career professional programmer, and then helped me make the

35
00:01:32.799 --> 00:01:35.040
<v Speaker 1>choice for the non academic being a programmer.

36
00:01:35.079 --> 00:01:38.439
<v Speaker 2>That was good. Switched over to a software development agency

37
00:01:38.439 --> 00:01:41.799
<v Speaker 2>bit quotem button based and started as a back end

38
00:01:41.879 --> 00:01:44.840
<v Speaker 2>developer Ruby and Rails. We switched to ALIXI Phoenix like

39
00:01:45.000 --> 00:01:48.000
<v Speaker 2>back before Phoenix context, so I vividly remember the time,

40
00:01:48.040 --> 00:01:50.879
<v Speaker 2>and we had to find context names for where our

41
00:01:51.000 --> 00:01:53.120
<v Speaker 2>users struck goes like that. That was fun.

42
00:01:53.480 --> 00:01:55.959
<v Speaker 1>It was like one of the first I would say,

43
00:01:56.000 --> 00:01:58.120
<v Speaker 1>because we don't have that many like not full power, boar,

44
00:01:58.159 --> 00:02:01.040
<v Speaker 1>what's the word? It's like a drama sessions. That's what

45
00:02:01.079 --> 00:02:02.319
<v Speaker 1>I kind of took from that. I mean it was

46
00:02:02.359 --> 00:02:04.280
<v Speaker 1>many years ago. I remember that because I also was

47
00:02:04.319 --> 00:02:06.680
<v Speaker 1>like you, we started before context, and was like, what's

48
00:02:06.719 --> 00:02:09.080
<v Speaker 1>the context and why do we need this stuff? And

49
00:02:09.120 --> 00:02:10.960
<v Speaker 1>what's the point? And it was quite a lot of

50
00:02:10.960 --> 00:02:12.360
<v Speaker 1>complaints if I remember.

51
00:02:12.240 --> 00:02:14.080
<v Speaker 2>Yeah, I don't see it as drama as too much,

52
00:02:14.080 --> 00:02:17.879
<v Speaker 2>but as confusion, right, and he was just now it's new. Sorry,

53
00:02:18.000 --> 00:02:20.000
<v Speaker 2>let me stop you here. If you compare it to

54
00:02:20.120 --> 00:02:23.639
<v Speaker 2>the russ drama, which we're both probably aware of, it's nothing,

55
00:02:23.960 --> 00:02:27.039
<v Speaker 2>but for a community that's quite calm, it was something.

56
00:02:27.400 --> 00:02:29.400
<v Speaker 2>And I'm not trying to say something bad about that.

57
00:02:29.719 --> 00:02:32.560
<v Speaker 2>It's just such an abrupt change, I think for most people,

58
00:02:32.599 --> 00:02:34.919
<v Speaker 2>because we were so used to things being kind of

59
00:02:34.960 --> 00:02:38.680
<v Speaker 2>more open, in my opinion, but then this became it's like, wait,

60
00:02:38.719 --> 00:02:39.439
<v Speaker 2>why are we doing this?

61
00:02:39.719 --> 00:02:42.000
<v Speaker 1>What is this? And then there are lots of questions

62
00:02:42.039 --> 00:02:43.759
<v Speaker 1>about how to structure the code, like you said, what's

63
00:02:43.759 --> 00:02:46.120
<v Speaker 1>a context? All these kind of things. Sorry, I'm starting

64
00:02:46.120 --> 00:02:47.680
<v Speaker 1>to take over show from you, but I just remember

65
00:02:47.719 --> 00:02:49.319
<v Speaker 1>that one, and I don't want to gloss over that

66
00:02:49.360 --> 00:02:51.280
<v Speaker 1>because It's one of the few times where things were

67
00:02:51.280 --> 00:02:52.400
<v Speaker 1>just such suddenly change.

68
00:02:52.599 --> 00:02:54.680
<v Speaker 2>It was definitely work to do right, and you know,

69
00:02:54.879 --> 00:02:57.199
<v Speaker 2>I was in the software development interesting, we had tons

70
00:02:57.240 --> 00:03:00.439
<v Speaker 2>of customers, right, and good luck convincing your stimus that

71
00:03:00.479 --> 00:03:03.240
<v Speaker 2>you have to spend upgrading Phoenix inventing contact. I mean,

72
00:03:03.319 --> 00:03:06.120
<v Speaker 2>it wasn't that much, right, but still it's also a

73
00:03:06.120 --> 00:03:08.759
<v Speaker 2>bit hard to communicate. On the other hand, it's a change.

74
00:03:09.120 --> 00:03:11.360
<v Speaker 2>You get a new chance to express what you really

75
00:03:11.400 --> 00:03:14.360
<v Speaker 2>want with U schemas right and how to structure them.

76
00:03:14.479 --> 00:03:16.400
<v Speaker 2>So if you see it dead way, it gives you

77
00:03:16.439 --> 00:03:19.280
<v Speaker 2>another tool to structure your code problem. So that's something.

78
00:03:19.439 --> 00:03:21.319
<v Speaker 1>Yeah, And if you follow the I believe if you

79
00:03:21.400 --> 00:03:25.439
<v Speaker 1>follow the book by I can my mind has coming

80
00:03:25.439 --> 00:03:27.080
<v Speaker 1>blank today. It's a long day at work. If you

81
00:03:27.120 --> 00:03:29.199
<v Speaker 1>follow there's a book about structuring your code for a

82
00:03:29.280 --> 00:03:31.879
<v Speaker 1>lecture came up quite recently from pragmatic programmers. I have

83
00:03:31.960 --> 00:03:33.639
<v Speaker 1>his space in my mind, but the name is that

84
00:03:33.680 --> 00:03:35.639
<v Speaker 1>coming to me? Oh, Bruce, he has a book and

85
00:03:35.680 --> 00:03:38.159
<v Speaker 1>I think you structure, but I'm better at those two.

86
00:03:38.240 --> 00:03:40.360
<v Speaker 2>But I know the book. I know what you talk about.

87
00:03:40.439 --> 00:03:42.960
<v Speaker 1>Yes, yeah, it's like I forgot the acronym or something

88
00:03:42.960 --> 00:03:45.479
<v Speaker 1>like something with angry bees. I forget now, But it's

89
00:03:45.479 --> 00:03:47.360
<v Speaker 1>funny because they're supposed to happy term remember, but I

90
00:03:47.400 --> 00:03:50.000
<v Speaker 1>forget it now. But in any case, I do follow

91
00:03:50.039 --> 00:03:52.080
<v Speaker 1>his structure for the most part, especially if I'm working

92
00:03:52.120 --> 00:03:55.120
<v Speaker 1>with just normal Alextra code, which I was doing recently.

93
00:03:55.360 --> 00:03:57.800
<v Speaker 1>Usually I'm spending most of my time in Phoenix Lang,

94
00:03:57.800 --> 00:03:59.599
<v Speaker 1>where you have Acto and everything else to work with.

95
00:04:00.120 --> 00:04:02.599
<v Speaker 1>But sorry, I'm STI techn ever your episode continue what

96
00:04:02.639 --> 00:04:04.039
<v Speaker 1>You're right, it's good, it's good.

97
00:04:04.080 --> 00:04:06.400
<v Speaker 2>That's what we do. We talk about Alexia, yes, and

98
00:04:06.439 --> 00:04:09.800
<v Speaker 2>I think it helps to get our hands held a

99
00:04:09.800 --> 00:04:12.080
<v Speaker 2>bit right if we have that support, like how to name,

100
00:04:12.120 --> 00:04:14.599
<v Speaker 2>how to structure, Like it's the same thing with like

101
00:04:14.639 --> 00:04:17.519
<v Speaker 2>I want to create something creative with my Alexia app,

102
00:04:17.519 --> 00:04:18.959
<v Speaker 2>but where do I put the file if it doesn't

103
00:04:18.959 --> 00:04:21.360
<v Speaker 2>follow the pattern. There's always these kinds of things that

104
00:04:21.720 --> 00:04:23.959
<v Speaker 2>cause a bit of trouble. And that's where I wouldn't

105
00:04:23.959 --> 00:04:25.600
<v Speaker 2>say it's even drama. It's it's you have to think

106
00:04:25.600 --> 00:04:27.519
<v Speaker 2>about it. You have to have a plan, and sometimes

107
00:04:27.519 --> 00:04:31.000
<v Speaker 2>you need a guide and then it's easier. Yeah, anyhow,

108
00:04:31.160 --> 00:04:33.319
<v Speaker 2>let's bring back you know back then, you know it

109
00:04:33.399 --> 00:04:36.360
<v Speaker 2>was software development, agency times. But I was there for

110
00:04:36.439 --> 00:04:38.720
<v Speaker 2>seven years. I guess I needed a change in scenery.

111
00:04:38.759 --> 00:04:40.639
<v Speaker 2>I you know, my wife was pregnant, I was about

112
00:04:40.639 --> 00:04:42.560
<v Speaker 2>to get a kid. There was this transition in life

113
00:04:42.560 --> 00:04:44.319
<v Speaker 2>and I needed a transition at the job too. So

114
00:04:44.399 --> 00:04:46.959
<v Speaker 2>I was looking for a you know, more product facing

115
00:04:47.000 --> 00:04:49.720
<v Speaker 2>company and still wanted to stay with Alexi because that

116
00:04:49.879 --> 00:04:53.759
<v Speaker 2>was arsome awesome. And at the software development agency at

117
00:04:53.800 --> 00:04:56.920
<v Speaker 2>bit Crowd, I was transitioning from back and to pull

118
00:04:57.000 --> 00:05:01.079
<v Speaker 2>stick to management, to talk into customers vironments, all the

119
00:05:01.120 --> 00:05:03.519
<v Speaker 2>managery stuff, right, and I needed to get my hands

120
00:05:03.519 --> 00:05:06.399
<v Speaker 2>dirty again. So that was the change. I went to

121
00:05:06.439 --> 00:05:09.120
<v Speaker 2>remote dot com. They employ like a lot, a lot

122
00:05:09.120 --> 00:05:11.759
<v Speaker 2>of back end Alexia. It's one of the biggest Elexi

123
00:05:11.800 --> 00:05:13.399
<v Speaker 2>code basiness I know of, right, So we have a

124
00:05:13.439 --> 00:05:16.319
<v Speaker 2>lot of backend developers, all ALEXIR, all the big Phoenix

125
00:05:16.360 --> 00:05:18.600
<v Speaker 2>up and then I could I should probably talk about

126
00:05:18.600 --> 00:05:20.720
<v Speaker 2>what remote is even because remote com is a pretty

127
00:05:20.800 --> 00:05:25.759
<v Speaker 2>generic name. We are a global HR software solution. So

128
00:05:26.000 --> 00:05:29.319
<v Speaker 2>if you want to hire someone, fire someone, promote, get

129
00:05:29.319 --> 00:05:32.120
<v Speaker 2>their sick days, all the HR management. You know that

130
00:05:32.160 --> 00:05:34.720
<v Speaker 2>every company needs speak and small. That's what we do,

131
00:05:34.920 --> 00:05:37.120
<v Speaker 2>but a bit more modern, right, there's these old game

132
00:05:37.279 --> 00:05:39.839
<v Speaker 2>players and we like a modern take on it. And

133
00:05:40.160 --> 00:05:41.759
<v Speaker 2>there's like a bit of a trick to it, which

134
00:05:41.800 --> 00:05:44.839
<v Speaker 2>is it doesn't even matter if you're like a proper employee,

135
00:05:44.879 --> 00:05:47.040
<v Speaker 2>employed or a contractor. You can have them in the

136
00:05:47.079 --> 00:05:50.199
<v Speaker 2>same interface. That's pretty good. And the next trick is

137
00:05:50.240 --> 00:05:53.439
<v Speaker 2>that you can like we are also an employer of record.

138
00:05:53.480 --> 00:05:55.879
<v Speaker 2>That means, let's say you have a company, but you

139
00:05:55.920 --> 00:05:58.639
<v Speaker 2>want to get the best Elixir coder, but they sit

140
00:05:58.720 --> 00:05:59.920
<v Speaker 2>in a different country.

141
00:06:00.079 --> 00:06:00.279
<v Speaker 1>Right.

142
00:06:00.879 --> 00:06:02.759
<v Speaker 2>Either you're lucky and you have like your company has

143
00:06:02.759 --> 00:06:04.680
<v Speaker 2>a shop there and you can employ them there, or

144
00:06:04.800 --> 00:06:07.680
<v Speaker 2>you they have to make them move right in your country.

145
00:06:07.680 --> 00:06:09.639
<v Speaker 2>But then maybe they don't want to move, maybe there's

146
00:06:09.639 --> 00:06:11.720
<v Speaker 2>a visa restriction like stuff like that. You don't want

147
00:06:11.759 --> 00:06:14.199
<v Speaker 2>to have that troublem and still employ the best people,

148
00:06:14.399 --> 00:06:16.199
<v Speaker 2>So you can go through remote dot com. You can

149
00:06:16.240 --> 00:06:18.800
<v Speaker 2>employ them through us. We will like technically employ them,

150
00:06:18.800 --> 00:06:21.439
<v Speaker 2>but it's your employee, your company's employee, and it's still

151
00:06:21.480 --> 00:06:24.360
<v Speaker 2>in the same matterface. It's it's your remote employee. That's

152
00:06:24.360 --> 00:06:26.920
<v Speaker 2>where then income's from remote come. And you know, there's

153
00:06:26.959 --> 00:06:30.040
<v Speaker 2>this one thing which is if your employee is in

154
00:06:30.079 --> 00:06:32.120
<v Speaker 2>a different country, you have to send the money over, right,

155
00:06:32.199 --> 00:06:34.480
<v Speaker 2>Like we invoice you in your country, but they are

156
00:06:34.480 --> 00:06:36.560
<v Speaker 2>paid in their country. And that's my team, like the

157
00:06:36.600 --> 00:06:38.959
<v Speaker 2>team that sends the money across the globe of not

158
00:06:38.959 --> 00:06:41.000
<v Speaker 2>not just you employee, but like all the thousands of

159
00:06:41.079 --> 00:06:43.839
<v Speaker 2>employees all across the globe in all the countries. That's

160
00:06:43.879 --> 00:06:45.839
<v Speaker 2>the team. And I became team leader of that team,

161
00:06:46.000 --> 00:06:49.160
<v Speaker 2>proud lead of a couple talented developers. Yeah, and that's

162
00:06:49.160 --> 00:06:49.920
<v Speaker 2>what I do for today.

163
00:06:50.120 --> 00:06:52.480
<v Speaker 1>Now there's why are some MacX relate to this? This

164
00:06:52.680 --> 00:06:53.759
<v Speaker 1>is an outside Oh.

165
00:06:53.720 --> 00:06:56.399
<v Speaker 2>Yeah, now I talked a bunch, so wasn't Max is

166
00:06:56.439 --> 00:06:59.600
<v Speaker 2>not specifically to my team. That's more invoices and you know,

167
00:06:59.680 --> 00:07:01.800
<v Speaker 2>comply and texts this sort of thing. But you can

168
00:07:01.839 --> 00:07:05.439
<v Speaker 2>easily imagine web assembly being a use for such a project,

169
00:07:05.480 --> 00:07:07.639
<v Speaker 2>for any software service. And let's be a bit more

170
00:07:07.639 --> 00:07:10.399
<v Speaker 2>general and just away from my day job. So maybe

171
00:07:10.439 --> 00:07:12.800
<v Speaker 2>should we say what websentily is because it's supposed to

172
00:07:12.800 --> 00:07:13.920
<v Speaker 2>be about WASSNX.

173
00:07:13.639 --> 00:07:15.920
<v Speaker 1>Right, Oh, you know, you know you're you're totally right,

174
00:07:16.040 --> 00:07:18.839
<v Speaker 1>So that's kind of back up a bit. That's a

175
00:07:18.879 --> 00:07:20.720
<v Speaker 1>good point. So we have wire them. Do you even

176
00:07:20.720 --> 00:07:22.879
<v Speaker 1>know why some stands for oh yeah, web assembly. Sorry

177
00:07:22.920 --> 00:07:25.519
<v Speaker 1>I thought I think it's an act first, that's sally acronym.

178
00:07:26.399 --> 00:07:28.800
<v Speaker 1>But yeah, sorry, maybe you're the expert compared to me,

179
00:07:28.879 --> 00:07:32.519
<v Speaker 1>so you go ahead, he yes, So yeah, websmily. Actually

180
00:07:32.560 --> 00:07:35.040
<v Speaker 1>it's two things, right. It's like one part, it's a

181
00:07:35.120 --> 00:07:38.720
<v Speaker 1>binary format that you can compile your computer programs libraries in.

182
00:07:39.279 --> 00:07:41.680
<v Speaker 1>So take you have a C library or Rust or whatever,

183
00:07:41.839 --> 00:07:44.800
<v Speaker 1>elexy even, and you can can compile that down to

184
00:07:44.839 --> 00:07:47.319
<v Speaker 1>repressently and then you can use that's the second part.

185
00:07:47.319 --> 00:07:50.079
<v Speaker 1>You can use thatsenty block to then run it in

186
00:07:50.160 --> 00:07:53.040
<v Speaker 1>another environment, in another place, so you can use that

187
00:07:53.079 --> 00:07:55.920
<v Speaker 1>websentitley block, run it in your ELIXI back and in

188
00:07:56.040 --> 00:07:59.759
<v Speaker 1>your I don't know what nerves project, in your Rust server,

189
00:08:00.120 --> 00:08:02.480
<v Speaker 1>the cloud edge, or in your browser. I think every

190
00:08:02.480 --> 00:08:04.959
<v Speaker 1>browser now comes with a web persentary one time. So

191
00:08:05.000 --> 00:08:07.399
<v Speaker 1>that's the flexibility of websentry. You can take it from

192
00:08:07.600 --> 00:08:10.680
<v Speaker 1>lots of languages and run it execute the program library

193
00:08:10.720 --> 00:08:12.839
<v Speaker 1>in a bunch of different environments and languages. So that

194
00:08:13.000 --> 00:08:15.360
<v Speaker 1>was what represently is. And with that, like with that

195
00:08:15.439 --> 00:08:18.199
<v Speaker 1>flexibility comes a bunch of additional things like how do

196
00:08:18.279 --> 00:08:21.240
<v Speaker 1>you encode things? How do you interface with like how

197
00:08:21.240 --> 00:08:23.480
<v Speaker 1>do you pass down a screen or you struct or

198
00:08:23.480 --> 00:08:25.920
<v Speaker 1>whatever you have down to represently land. It's all running

199
00:08:25.920 --> 00:08:29.079
<v Speaker 1>in a sundbox so to be secure. So let's say

200
00:08:29.079 --> 00:08:31.800
<v Speaker 1>you build a plugin system with webresently, you want to

201
00:08:32.000 --> 00:08:34.759
<v Speaker 1>want to execute user provided plugins code and you don't

202
00:08:34.759 --> 00:08:37.320
<v Speaker 1>want this user provided plug and in websent d to

203
00:08:37.360 --> 00:08:39.720
<v Speaker 1>reach all of your data and your feelings back and right.

204
00:08:39.879 --> 00:08:43.039
<v Speaker 1>So that's all running in a sandbox. It only accesses

205
00:08:43.120 --> 00:08:46.240
<v Speaker 1>what you as the host give into it into the websently,

206
00:08:46.519 --> 00:08:49.000
<v Speaker 1>so it's it's quite secure there, and it's usually faster

207
00:08:49.080 --> 00:08:52.039
<v Speaker 1>than the native language, like probably faster than alixy, although

208
00:08:52.360 --> 00:08:53.840
<v Speaker 1>you have to trust me because they didn't have a

209
00:08:53.840 --> 00:08:56.480
<v Speaker 1>bench out there right now. Yeah, I mean, well it's

210
00:08:56.519 --> 00:08:59.360
<v Speaker 1>pretty fast, but there's it's still not necessarily native, right

211
00:08:59.440 --> 00:09:01.480
<v Speaker 1>because you're still like a VM in between.

212
00:09:01.720 --> 00:09:04.960
<v Speaker 2>It's not native, that's that's correct. So that presently basically

213
00:09:04.960 --> 00:09:08.279
<v Speaker 2>the they invented an like an imaginary computer, and that's

214
00:09:08.320 --> 00:09:10.720
<v Speaker 2>the assembly code for that imaginary computer, and then every

215
00:09:10.759 --> 00:09:14.399
<v Speaker 2>run time just interprets as this computer. But some of

216
00:09:14.440 --> 00:09:18.000
<v Speaker 2>them compile with a JIT compiled this down to native code, right,

217
00:09:18.039 --> 00:09:20.440
<v Speaker 2>Like most of them actually, I think so. It's pretty

218
00:09:20.480 --> 00:09:22.960
<v Speaker 2>comparable to like the JVM, for example, in that sense

219
00:09:23.240 --> 00:09:27.080
<v Speaker 2>that you reach native speeds near na native speeds, and

220
00:09:27.120 --> 00:09:30.279
<v Speaker 2>I think oftentimes people use it in bad pages JavaScript

221
00:09:30.399 --> 00:09:33.679
<v Speaker 2>environments to be even faster than the native shaperscript. I

222
00:09:33.679 --> 00:09:35.440
<v Speaker 2>mean native in a sense of in the browser native,

223
00:09:35.519 --> 00:09:36.519
<v Speaker 2>not native code native.

224
00:09:36.720 --> 00:09:39.320
<v Speaker 1>Well, I don't think you imagined this, but this kind

225
00:09:39.360 --> 00:09:42.039
<v Speaker 1>of product was, I don't how would you say that? Well,

226
00:09:42.039 --> 00:09:45.559
<v Speaker 1>there was something called ASM before WASM, if I remember correctly,

227
00:09:45.799 --> 00:09:46.519
<v Speaker 1>is adam JS.

228
00:09:46.600 --> 00:09:50.279
<v Speaker 2>Oh yeahs smjsas MGS. I think it was right, Yeah,

229
00:09:50.320 --> 00:09:52.480
<v Speaker 2>that's where the idea started. Or but then I'm not

230
00:09:52.519 --> 00:09:55.639
<v Speaker 2>a historian. I don't know the history too much. I think, yeah,

231
00:09:55.759 --> 00:09:58.440
<v Speaker 2>someone really clever came up with, like you can compile

232
00:09:58.559 --> 00:10:02.000
<v Speaker 2>any program into JavaScript, and not just JavaScript that humans

233
00:10:02.039 --> 00:10:04.720
<v Speaker 2>can read, but you know, acting as like kind of

234
00:10:04.759 --> 00:10:08.080
<v Speaker 2>an ASM assembly JavaScript. It's like a bunch of things

235
00:10:08.080 --> 00:10:10.000
<v Speaker 2>somebody can read, but it's super fast to execute. And

236
00:10:10.039 --> 00:10:12.320
<v Speaker 2>suddenly you had a way I don't know. Let's say

237
00:10:12.360 --> 00:10:15.159
<v Speaker 2>you have a weird image format. You know, your iPhone,

238
00:10:15.200 --> 00:10:17.519
<v Speaker 2>if you have an iPhone, probably saves images in this

239
00:10:17.639 --> 00:10:20.759
<v Speaker 2>hype format that nobody can read. It's not a you know,

240
00:10:20.840 --> 00:10:22.720
<v Speaker 2>not a great and it's not a P ANDG or something,

241
00:10:22.879 --> 00:10:25.480
<v Speaker 2>but that code that converts images, maybe that's the c

242
00:10:25.639 --> 00:10:27.639
<v Speaker 2>library or rust library. And now he suddenly had a

243
00:10:27.639 --> 00:10:30.879
<v Speaker 2>way to compile this tough JavaScript like this assembly jobscript

244
00:10:30.919 --> 00:10:33.480
<v Speaker 2>or even web posently later, right, and you can run

245
00:10:33.519 --> 00:10:36.200
<v Speaker 2>this library to convert images or what have you anywhere.

246
00:10:36.240 --> 00:10:38.200
<v Speaker 2>Suddenly that it gives you a bunch of reader And

247
00:10:38.240 --> 00:10:40.039
<v Speaker 2>that's really the power of episently right, if you can

248
00:10:40.120 --> 00:10:43.639
<v Speaker 2>take a library or a program from like one environment

249
00:10:43.960 --> 00:10:45.639
<v Speaker 2>and run it and use it in your app.

250
00:10:45.679 --> 00:10:48.120
<v Speaker 1>Well, that's also like the benefit. There's a couple of

251
00:10:48.159 --> 00:10:52.440
<v Speaker 1>things my understanding about where then they're trying to I

252
00:10:52.440 --> 00:10:56.159
<v Speaker 1>guess you can say solve. So one is about portability, right,

253
00:10:56.279 --> 00:10:57.840
<v Speaker 1>is that you don't need to think about the platform

254
00:10:57.840 --> 00:11:01.480
<v Speaker 1>because theoretically, like it can run on web or even

255
00:11:01.559 --> 00:11:03.840
<v Speaker 1>on your machine, as you kind of mentioned. That's one

256
00:11:03.919 --> 00:11:05.799
<v Speaker 1>thing that I think that they wanted to solve or

257
00:11:05.879 --> 00:11:07.759
<v Speaker 1>that they're looking to do with this. It's kind of

258
00:11:07.759 --> 00:11:10.759
<v Speaker 1>like usability, right, yeah, reasonability. And then the other one

259
00:11:10.799 --> 00:11:13.679
<v Speaker 1>is about safety, right, so that you're able to say, okay,

260
00:11:14.000 --> 00:11:16.399
<v Speaker 1>I'll give you access to a but not the b

261
00:11:16.759 --> 00:11:19.440
<v Speaker 1>so you can say, okay, you can you can go

262
00:11:19.600 --> 00:11:22.200
<v Speaker 1>to the web, but you like you can call outside

263
00:11:22.200 --> 00:11:24.360
<v Speaker 1>the web, but you can touch my hard drive stuff

264
00:11:24.399 --> 00:11:24.720
<v Speaker 1>like that.

265
00:11:24.879 --> 00:11:27.960
<v Speaker 2>Yes, I think the defense The term is object capability model.

266
00:11:28.039 --> 00:11:31.919
<v Speaker 2>That's the academic you know term to express this, which

267
00:11:31.960 --> 00:11:35.279
<v Speaker 2>basically means in you know, normal human words, that whatever

268
00:11:35.600 --> 00:11:37.559
<v Speaker 2>we presently can use is only the stuff that you

269
00:11:37.720 --> 00:11:40.200
<v Speaker 2>give it. So if I give it a user struck,

270
00:11:40.519 --> 00:11:42.639
<v Speaker 2>that's what it can use. But it cannot access all

271
00:11:42.639 --> 00:11:44.519
<v Speaker 2>the other users in your database because it doesn't have

272
00:11:44.559 --> 00:11:47.000
<v Speaker 2>a handle to your database. You just don't give it

273
00:11:47.039 --> 00:11:49.919
<v Speaker 2>ever the handle to your database, except if you want

274
00:11:49.960 --> 00:11:52.000
<v Speaker 2>to give the handle to your database. Right then of

275
00:11:52.039 --> 00:11:54.480
<v Speaker 2>course it has no emission to use that. So it's

276
00:11:54.519 --> 00:11:56.720
<v Speaker 2>really up to you to the host program to think

277
00:11:56.720 --> 00:11:59.799
<v Speaker 2>about what is being given to the representd binary. And

278
00:12:00.000 --> 00:12:01.720
<v Speaker 2>that's where security comes and goes. Like if you give

279
00:12:01.759 --> 00:12:04.039
<v Speaker 2>everything to it, if you want to, you can, then

280
00:12:04.159 --> 00:12:06.120
<v Speaker 2>the security goes out the window, right because you can

281
00:12:06.200 --> 00:12:09.519
<v Speaker 2>do everything, but it can be really deliberate if you

282
00:12:09.519 --> 00:12:11.399
<v Speaker 2>want to to only provide the things that you really

283
00:12:11.399 --> 00:12:13.399
<v Speaker 2>wanted to have. That's where the pluck and system comes in. Right,

284
00:12:13.440 --> 00:12:15.000
<v Speaker 2>If I have myselfwa as a service, and I want

285
00:12:15.200 --> 00:12:17.159
<v Speaker 2>my users to give, you know, write plug ins for

286
00:12:17.240 --> 00:12:19.399
<v Speaker 2>my service. I only give it the things that the

287
00:12:19.399 --> 00:12:21.519
<v Speaker 2>plug and should have. Nothing else is accessible.

288
00:12:21.840 --> 00:12:24.600
<v Speaker 1>Yeah, well, I mean. But the other cool thing too

289
00:12:24.879 --> 00:12:28.559
<v Speaker 1>is that's also interesting is usually for these kinds of

290
00:12:28.679 --> 00:12:33.639
<v Speaker 1>things that are cross platform, you know, like erlaining and Java,

291
00:12:33.879 --> 00:12:36.159
<v Speaker 1>you have to write in a specific language, right. But

292
00:12:36.200 --> 00:12:38.039
<v Speaker 1>the other thing with wism is that you can use

293
00:12:38.360 --> 00:12:40.240
<v Speaker 1>nearly any kind of language that you want, which is

294
00:12:40.279 --> 00:12:43.080
<v Speaker 1>really exciting because you can literally write with Python or

295
00:12:43.279 --> 00:12:46.399
<v Speaker 1>JavaScript or any of these other kinds of languages or

296
00:12:46.440 --> 00:12:50.519
<v Speaker 1>even whatever, as long as you can convert that into Watson, right,

297
00:12:50.519 --> 00:12:51.480
<v Speaker 1>which is quite exciting.

298
00:12:51.919 --> 00:12:54.320
<v Speaker 2>Actually, at my day job, I have an experiment running.

299
00:12:54.360 --> 00:12:56.799
<v Speaker 2>It's not officially yet, so here here here the first time,

300
00:12:56.840 --> 00:12:59.519
<v Speaker 2>if you might Colique, I actually have an image conversion

301
00:12:59.559 --> 00:13:02.519
<v Speaker 2>service that for example, it takes like all weird image formats.

302
00:13:02.960 --> 00:13:07.879
<v Speaker 2>It's computing them, computing previous of those in websomentary. It's fast,

303
00:13:07.879 --> 00:13:09.480
<v Speaker 2>it's secure, we don't have to care if it's like

304
00:13:09.519 --> 00:13:12.399
<v Speaker 2>some unsafe thing that the user gives us as an image,

305
00:13:12.440 --> 00:13:15.360
<v Speaker 2>like some exploit, some hacker doing stuff. It's running in websentity.

306
00:13:15.360 --> 00:13:17.600
<v Speaker 2>It's secure, it's good, it's fast. So yeah, kind of good,

307
00:13:17.639 --> 00:13:19.879
<v Speaker 2>you say, is this but then you know, there comes

308
00:13:19.919 --> 00:13:21.919
<v Speaker 2>the part where you want to run this websomity in

309
00:13:21.960 --> 00:13:24.600
<v Speaker 2>all kinds of environments, not only US, not only jobascot,

310
00:13:24.639 --> 00:13:26.559
<v Speaker 2>not only the browser, about an alexir and this is

311
00:13:27.000 --> 00:13:29.159
<v Speaker 2>then you have to have a websentary run time that

312
00:13:29.320 --> 00:13:31.440
<v Speaker 2>embeds into your Alexi code. And this is what was

313
00:13:31.519 --> 00:13:33.960
<v Speaker 2>an X is really about. So we talk all about

314
00:13:33.960 --> 00:13:37.240
<v Speaker 2>websmity to you know, sell the benefits, But wasn't X

315
00:13:37.320 --> 00:13:40.159
<v Speaker 2>the thing that I wildn't write. That's the Elexi part

316
00:13:40.159 --> 00:13:42.039
<v Speaker 2>that when you have a websomity binary and you want

317
00:13:42.080 --> 00:13:44.960
<v Speaker 2>to run it and interface with it from Alexia.

318
00:13:44.799 --> 00:13:47.240
<v Speaker 1>Well, let's kind of talk more about that. Well, actually, sorry,

319
00:13:47.240 --> 00:13:50.159
<v Speaker 1>before we talk about that. We did have a small discussion,

320
00:13:50.200 --> 00:13:52.720
<v Speaker 1>but we can be even higher level than that, because

321
00:13:53.200 --> 00:13:54.720
<v Speaker 1>I don't want to get into you know, this one's

322
00:13:54.720 --> 00:13:56.720
<v Speaker 1>better than that one. So you talk about watsom in

323
00:13:56.799 --> 00:13:59.440
<v Speaker 1>terms of it's kind of like this run time, right,

324
00:13:59.799 --> 00:14:02.679
<v Speaker 1>but if you try to get into wat them, there's

325
00:14:02.720 --> 00:14:06.000
<v Speaker 1>different kinds of run times that run That was and

326
00:14:06.039 --> 00:14:08.440
<v Speaker 1>that part is kind of confusing to me. But at

327
00:14:08.480 --> 00:14:10.000
<v Speaker 1>the same time, it's also not right, like we have

328
00:14:10.039 --> 00:14:12.639
<v Speaker 1>the beam, but then again, like you can think about

329
00:14:12.960 --> 00:14:15.440
<v Speaker 1>if we compile our earline code, but then we have

330
00:14:15.519 --> 00:14:18.120
<v Speaker 1>different versions of the beam that we could run on. Okay,

331
00:14:18.240 --> 00:14:19.519
<v Speaker 1>this is not that hard to think about. It's just

332
00:14:19.559 --> 00:14:21.759
<v Speaker 1>a little bit strange, you know. Yes, it's a little

333
00:14:21.759 --> 00:14:24.080
<v Speaker 1>bit confusing. How does that? Can you explain more about

334
00:14:24.120 --> 00:14:25.480
<v Speaker 1>why that is? Why don't we just have this a

335
00:14:25.519 --> 00:14:28.960
<v Speaker 1>single runtime? Sorry, yeah, go ahead, No.

336
00:14:29.000 --> 00:14:31.000
<v Speaker 2>It's fine. I think your example with the beam is

337
00:14:31.039 --> 00:14:33.399
<v Speaker 2>a quite good one. Like, imagine we have the earl

338
00:14:33.440 --> 00:14:35.399
<v Speaker 2>and runtime to handle your beam file. It's right, But

339
00:14:35.440 --> 00:14:39.039
<v Speaker 2>then comes a company that maybe invents something on top

340
00:14:39.120 --> 00:14:41.799
<v Speaker 2>that makes it twice as fast, three times as fast,

341
00:14:41.840 --> 00:14:43.919
<v Speaker 2>and then maybe they have a good point to sell

342
00:14:43.919 --> 00:14:46.519
<v Speaker 2>that right, because it's only fair. It's running the same

343
00:14:46.559 --> 00:14:48.720
<v Speaker 2>beam file, it's just twice as fast, and maybe some

344
00:14:48.720 --> 00:14:50.519
<v Speaker 2>people want to pay for it, and that's the business.

345
00:14:50.600 --> 00:14:53.200
<v Speaker 2>So you can imagine that. Except with websent, we represent

346
00:14:53.360 --> 00:14:56.039
<v Speaker 2>is also your binary format. It's an open standard. Everybody,

347
00:14:56.039 --> 00:14:59.080
<v Speaker 2>you me, everybody can implement that format and build an engine.

348
00:14:59.120 --> 00:15:01.919
<v Speaker 2>It's you know, some people have fun doing that, and

349
00:15:02.399 --> 00:15:03.960
<v Speaker 2>maybe you can make a business out of it. If

350
00:15:04.000 --> 00:15:06.639
<v Speaker 2>you know, you can invent some things on top, maybe

351
00:15:06.679 --> 00:15:09.399
<v Speaker 2>not only being faster, like I think inventing a u

352
00:15:09.480 --> 00:15:12.960
<v Speaker 2>JIT to be even more performed, maybe things like interfacing

353
00:15:13.000 --> 00:15:16.080
<v Speaker 2>with representitly in creative ways, adding a GPU to it,

354
00:15:16.159 --> 00:15:18.799
<v Speaker 2>and maybe enable the graphics landscape, like all things or

355
00:15:18.840 --> 00:15:22.080
<v Speaker 2>features you can imagine. And that's where the variat variety

356
00:15:22.200 --> 00:15:24.919
<v Speaker 2>comes from. Also the places where you run representitly. Is

357
00:15:24.960 --> 00:15:27.320
<v Speaker 2>it the cloud, is it edge computing? Is it embedded

358
00:15:27.320 --> 00:15:30.559
<v Speaker 2>in your system somewhere? That's you know, all what companies

359
00:15:30.559 --> 00:15:31.519
<v Speaker 2>start to specialize in.

360
00:15:31.639 --> 00:15:33.840
<v Speaker 1>Okay, that makes a little bit more sense. Just that

361
00:15:33.960 --> 00:15:35.559
<v Speaker 1>was always confusing for me for a long time, like

362
00:15:35.639 --> 00:15:36.919
<v Speaker 1>when in a minute, why is it I have this

363
00:15:37.000 --> 00:15:38.799
<v Speaker 1>run time and this run time? I guess it's kind

364
00:15:38.799 --> 00:15:41.159
<v Speaker 1>of like darker. We have like a consistent darker file,

365
00:15:41.200 --> 00:15:43.200
<v Speaker 1>but then you can run them on pot man or

366
00:15:43.279 --> 00:15:45.240
<v Speaker 1>darker and there could be another kind of run time.

367
00:15:45.519 --> 00:15:48.240
<v Speaker 1>All right. Actually, for some reason, your thing made much

368
00:15:48.240 --> 00:15:50.519
<v Speaker 1>more sense than all the ethodic thinking I've been doing

369
00:15:50.519 --> 00:15:53.559
<v Speaker 1>for the past couple of weeks about this stuff. Yeah, yeah, okay,

370
00:15:53.600 --> 00:15:55.879
<v Speaker 1>that makes sense. So then you have this kind of

371
00:15:55.879 --> 00:15:57.679
<v Speaker 1>trade off like hm, I want to follow this one

372
00:15:57.799 --> 00:15:59.360
<v Speaker 1>or this one and then you can kind of make

373
00:15:59.399 --> 00:16:03.480
<v Speaker 1>your choice. Now coming back to your library, right, how

374
00:16:03.519 --> 00:16:05.879
<v Speaker 1>does it work? I mean, are you using a special

375
00:16:05.960 --> 00:16:08.080
<v Speaker 1>run time or is there you said there's some kind

376
00:16:08.080 --> 00:16:11.639
<v Speaker 1>of open standard like meaning backed run time form. Is

377
00:16:11.679 --> 00:16:12.960
<v Speaker 1>that that's what you're working with?

378
00:16:13.200 --> 00:16:15.840
<v Speaker 2>Yes, exactly. So what we actually do is we we

379
00:16:15.879 --> 00:16:18.919
<v Speaker 2>don't write or run racks with present in alex hear.

380
00:16:19.200 --> 00:16:23.440
<v Speaker 2>We actually use Rust on Rustler and Rust to interface

381
00:16:23.480 --> 00:16:27.000
<v Speaker 2>with wasn't Time. That's one of those engines that runs

382
00:16:27.000 --> 00:16:29.799
<v Speaker 2>websent and wasn't Max. Like the thing I write is

383
00:16:29.840 --> 00:16:32.720
<v Speaker 2>basically the glue code to make alex heir and the

384
00:16:32.759 --> 00:16:35.600
<v Speaker 2>beam with all its you know, special things like gen

385
00:16:35.639 --> 00:16:39.080
<v Speaker 2>service and processes and how memory works and interface that

386
00:16:39.200 --> 00:16:41.840
<v Speaker 2>with Rust and the sea level of thinking like the

387
00:16:42.320 --> 00:16:44.679
<v Speaker 2>memory layout that you know have you have in Rust

388
00:16:44.720 --> 00:16:46.840
<v Speaker 2>and in the Sea land of things and that's the

389
00:16:46.840 --> 00:16:49.039
<v Speaker 2>group that I have. But yeah, that wasn't time in

390
00:16:49.279 --> 00:16:52.559
<v Speaker 2>basically written in Rust. That's the thing that we use underhood.

391
00:16:52.720 --> 00:16:55.720
<v Speaker 2>And it's an open source engine, so not a I mean,

392
00:16:55.720 --> 00:16:58.600
<v Speaker 2>there's companies backing it, but the whole thing is open source.

393
00:16:58.679 --> 00:17:00.720
<v Speaker 2>They have that they are in all the stuff, not committees,

394
00:17:00.759 --> 00:17:03.879
<v Speaker 2>and that's where I saw the most you know, progressant

395
00:17:03.919 --> 00:17:07.000
<v Speaker 2>and future of web assembly. But other people may have

396
00:17:07.039 --> 00:17:08.160
<v Speaker 2>different opinions that I see that.

397
00:17:08.359 --> 00:17:09.720
<v Speaker 1>Yeah, I see it from me on on here, I

398
00:17:09.720 --> 00:17:12.799
<v Speaker 1>think I wuck with them before interesting, I was just

399
00:17:12.799 --> 00:17:14.519
<v Speaker 1>looking at the bike Coode Alliance, which is which is

400
00:17:14.559 --> 00:17:16.480
<v Speaker 1>interesting too. Okay, thanks a very darker.

401
00:17:16.720 --> 00:17:18.279
<v Speaker 2>It's the name I should have plopped the other bikout

402
00:17:18.279 --> 00:17:19.359
<v Speaker 2>alliance that's there behind that.

403
00:17:19.680 --> 00:17:22.440
<v Speaker 1>Yeah. No, it's it's good to have some kind of consistency.

404
00:17:22.519 --> 00:17:26.200
<v Speaker 1>I'm not against specific runtimes having some special features. It's

405
00:17:26.279 --> 00:17:28.519
<v Speaker 1>just as somebody who wants to get into this, you

406
00:17:28.559 --> 00:17:30.319
<v Speaker 1>want to kind of understand, like, wait a minute, which

407
00:17:30.319 --> 00:17:32.519
<v Speaker 1>one should I go to? I mean, so both of

408
00:17:32.599 --> 00:17:35.000
<v Speaker 1>us have some experience with RUST as I do the

409
00:17:35.119 --> 00:17:37.519
<v Speaker 1>RUSS podcast. You know, it's kind of like which run time?

410
00:17:37.599 --> 00:17:39.960
<v Speaker 1>So in RUSS, just to give a background, it's not

411
00:17:39.960 --> 00:17:41.880
<v Speaker 1>like the Beam where we already have this run time

412
00:17:41.960 --> 00:17:45.720
<v Speaker 1>where it does all the multi multi ACYNC stuff. In RUSH,

413
00:17:45.759 --> 00:17:47.839
<v Speaker 1>you have to choose your a sync run time, which

414
00:17:48.559 --> 00:17:51.079
<v Speaker 1>if you don't know what you're doing, it's basically it's confusing.

415
00:17:51.160 --> 00:17:51.359
<v Speaker 2>Right.

416
00:17:51.480 --> 00:17:54.160
<v Speaker 1>There's like a sink STD I think is its own

417
00:17:54.240 --> 00:17:56.279
<v Speaker 1>run time. I forget now I think it is, isn't it?

418
00:17:56.440 --> 00:17:59.119
<v Speaker 2>I have no idea whatsoever. I know that I looked

419
00:17:59.160 --> 00:18:02.319
<v Speaker 2>into Tokyo, but this whole acinc rust game that's confusing

420
00:18:02.359 --> 00:18:04.839
<v Speaker 2>to me. And actually that relates to Moss, you know,

421
00:18:04.880 --> 00:18:08.440
<v Speaker 2>I wanted to like today right now, wasn't it's interfacing

422
00:18:08.480 --> 00:18:10.480
<v Speaker 2>with rust, but it's like standard plane RUSS. It's not

423
00:18:10.519 --> 00:18:13.759
<v Speaker 2>acinc but it wasn't time. The underlying engine has some

424
00:18:13.839 --> 00:18:16.400
<v Speaker 2>really cool features. If you go acing, so you can

425
00:18:16.720 --> 00:18:19.680
<v Speaker 2>start and stop and like war wasn't modules any time,

426
00:18:19.720 --> 00:18:21.680
<v Speaker 2>Like I mentionine, you run multiple at once, not just

427
00:18:21.759 --> 00:18:24.799
<v Speaker 2>one representing module, but many of them at the same time.

428
00:18:25.039 --> 00:18:27.359
<v Speaker 2>And if you're asining, you can like run them in

429
00:18:27.400 --> 00:18:30.000
<v Speaker 2>separate basically threads under the hood, right and separate processes

430
00:18:30.039 --> 00:18:32.400
<v Speaker 2>and stuff, and acing does all that for you. You

431
00:18:32.440 --> 00:18:35.119
<v Speaker 2>can start stop them. It's pretty great. And today I

432
00:18:35.160 --> 00:18:36.640
<v Speaker 2>have to build this on my own. I have my

433
00:18:36.720 --> 00:18:39.440
<v Speaker 2>own thread spawning because you know, when you go into

434
00:18:39.440 --> 00:18:41.279
<v Speaker 2>a NIFT from Aleixia to put it down to rust,

435
00:18:41.359 --> 00:18:44.160
<v Speaker 2>like that's a NIF, the beam actually wants your NIF

436
00:18:44.279 --> 00:18:46.720
<v Speaker 2>to respond almost immediately, like within a couple of minutes

437
00:18:46.720 --> 00:18:49.599
<v Speaker 2>seconds to that core, because the beam needs to schedule

438
00:18:49.599 --> 00:18:52.680
<v Speaker 2>your ELIXI process, right, And basically that if if like

439
00:18:52.720 --> 00:18:54.759
<v Speaker 2>a represently call takes a while, like if your represent

440
00:18:54.839 --> 00:18:56.920
<v Speaker 2>the program just takes I don't know, a minute to

441
00:18:57.000 --> 00:18:59.960
<v Speaker 2>compute whatever it needs to compute. That's not immediate return.

442
00:19:00.480 --> 00:19:02.839
<v Speaker 2>So I have to spawn a thread, set that to

443
00:19:02.880 --> 00:19:05.759
<v Speaker 2>the side, let it compute, but return to the beam immediately,

444
00:19:06.000 --> 00:19:08.759
<v Speaker 2>wait for the response, send us back to the gen

445
00:19:08.839 --> 00:19:10.559
<v Speaker 2>server as a message. It makes all the things a

446
00:19:10.599 --> 00:19:13.599
<v Speaker 2>bit more complex, right, so I'm actually actively looking that's

447
00:19:13.599 --> 00:19:15.880
<v Speaker 2>one of my open proly trusts right now where try

448
00:19:15.920 --> 00:19:19.359
<v Speaker 2>to convert this to acincrust and I choose Tokyo, But really,

449
00:19:19.440 --> 00:19:21.839
<v Speaker 2>from my perspective, that whole acin crust thing, maybe I

450
00:19:21.880 --> 00:19:23.839
<v Speaker 2>need to ask the one who knows more is a

451
00:19:23.839 --> 00:19:26.160
<v Speaker 2>bit confusing, like which engine to choose? What would be better?

452
00:19:26.440 --> 00:19:28.240
<v Speaker 2>But I think you can't go wrong with Tokyo, right

453
00:19:28.279 --> 00:19:30.759
<v Speaker 2>they have all the kinds of engines you actually want

454
00:19:30.759 --> 00:19:30.920
<v Speaker 2>to have.

455
00:19:31.039 --> 00:19:32.960
<v Speaker 1>But that's kind of my point is that once you

456
00:19:33.000 --> 00:19:35.599
<v Speaker 1>get more into rust, it's basically like I would shorten

457
00:19:35.599 --> 00:19:38.440
<v Speaker 1>the whole thing down to choose Tokyo unless you have

458
00:19:38.440 --> 00:19:40.960
<v Speaker 1>a good reason not to. And one of the reasons

459
00:19:40.960 --> 00:19:43.039
<v Speaker 1>that sticks out is like if you're doing something that

460
00:19:43.079 --> 00:19:47.039
<v Speaker 1>doesn't have threading, like or some specific like IoT hardware,

461
00:19:47.200 --> 00:19:50.240
<v Speaker 1>then there's like Minia or something else. But basically, if

462
00:19:50.279 --> 00:19:53.759
<v Speaker 1>you choose Tokyo, you're pretty much gonna probably get exactly

463
00:19:53.839 --> 00:19:55.319
<v Speaker 1>what you want. It does a lot of stuff for

464
00:19:55.400 --> 00:19:57.880
<v Speaker 1>you in Tokyo. I'm not sure how much in about Tokyo,

465
00:19:57.880 --> 00:20:00.440
<v Speaker 1>but basically Tokyo is like the Beam in terms of

466
00:20:00.480 --> 00:20:03.200
<v Speaker 1>it starts up a scheduler for every single thread and

467
00:20:03.480 --> 00:20:05.960
<v Speaker 1>you can also control how many you want when you

468
00:20:05.960 --> 00:20:08.319
<v Speaker 1>can figure it. And yeah, it's it's really it's really

469
00:20:08.359 --> 00:20:10.400
<v Speaker 1>quite an interesting thing. It's it's interesting to see that

470
00:20:10.519 --> 00:20:13.640
<v Speaker 1>this Tokyo run time actually does act like the Beam,

471
00:20:14.000 --> 00:20:16.119
<v Speaker 1>you know, which is just kind of mind blowing.

472
00:20:16.519 --> 00:20:19.200
<v Speaker 2>Yes, yes, it's it's pretty great. And that's why it

473
00:20:19.279 --> 00:20:21.480
<v Speaker 2>kind of fits so nicely with my approach of having

474
00:20:21.519 --> 00:20:23.720
<v Speaker 2>gen service and all that. I could basically mirror many

475
00:20:23.720 --> 00:20:25.880
<v Speaker 2>of the things and between Rust and Alexia, and that

476
00:20:25.920 --> 00:20:28.119
<v Speaker 2>would be would be a good architecture. It makes things

477
00:20:28.160 --> 00:20:30.039
<v Speaker 2>simply easier to maintain, and that's you know, what I

478
00:20:30.079 --> 00:20:31.839
<v Speaker 2>want to I don't want to spend time and waste

479
00:20:31.880 --> 00:20:34.440
<v Speaker 2>time on programming overhead. I want to spend the time

480
00:20:34.480 --> 00:20:35.279
<v Speaker 2>on the fun features.

481
00:20:35.359 --> 00:20:37.799
<v Speaker 1>Well, so now that you mentioned something and I was

482
00:20:37.839 --> 00:20:40.400
<v Speaker 1>a little bit curious about how you do it, So

483
00:20:40.839 --> 00:20:43.559
<v Speaker 1>are you when you're working with this net right? I

484
00:20:43.640 --> 00:20:46.880
<v Speaker 1>worked once with Rustler, and I basically just created a function,

485
00:20:47.000 --> 00:20:49.279
<v Speaker 1>just made a function call mm hm, and then I

486
00:20:49.359 --> 00:20:50.759
<v Speaker 1>just put it in a dirty schedule because then I

487
00:20:50.759 --> 00:20:54.240
<v Speaker 1>don't need to worry about you know, yielding, et cetera. Yes, now,

488
00:20:54.480 --> 00:20:57.680
<v Speaker 1>how so with yours, are you actually sending a message

489
00:20:57.680 --> 00:21:01.200
<v Speaker 1>in between from the ROSCO to clientition messages from the

490
00:21:01.279 --> 00:21:03.400
<v Speaker 1>ross code to the electri code.

491
00:21:03.720 --> 00:21:06.319
<v Speaker 2>Yes, that's and that's one of the hard parts. Okay,

492
00:21:06.400 --> 00:21:08.319
<v Speaker 2>let me try to get this on a podcast without

493
00:21:08.319 --> 00:21:11.359
<v Speaker 2>any diagrams. And you know, so there's one cool thing

494
00:21:11.359 --> 00:21:14.920
<v Speaker 2>in websently, which is webs smily code can actually say wait,

495
00:21:14.960 --> 00:21:17.920
<v Speaker 2>what I need to run like a function from the host.

496
00:21:18.039 --> 00:21:20.559
<v Speaker 2>So you know, you're your Elexi program and want to

497
00:21:20.640 --> 00:21:22.839
<v Speaker 2>run some websently, but they have a message like I

498
00:21:22.880 --> 00:21:25.319
<v Speaker 2>don't know what fetch user, but fetching the user that's

499
00:21:25.359 --> 00:21:27.559
<v Speaker 2>Elexi code again, So we persently can call back into

500
00:21:27.559 --> 00:21:30.400
<v Speaker 2>Alexia and then fetch the user. Alexa gives the user

501
00:21:30.440 --> 00:21:34.559
<v Speaker 2>tossemily back and then represently continues. So there's this whole

502
00:21:34.599 --> 00:21:37.519
<v Speaker 2>message passing like calling methods back and forth between ALEXIIR

503
00:21:37.559 --> 00:21:41.119
<v Speaker 2>and Rust and represently and to make this happen, I

504
00:21:41.200 --> 00:21:43.559
<v Speaker 2>you know, I'm sitting in a NYF in a Rust environment.

505
00:21:43.680 --> 00:21:46.759
<v Speaker 2>In my code were program in, and there is no way,

506
00:21:46.799 --> 00:21:49.039
<v Speaker 2>at least that I know of where you can just

507
00:21:49.200 --> 00:21:52.079
<v Speaker 2>call an alexia or like airline function from a NTH.

508
00:21:52.200 --> 00:21:54.440
<v Speaker 2>You cannot just say execute function and then you get

509
00:21:54.440 --> 00:21:56.720
<v Speaker 2>the result, because that's not how the beam works. The

510
00:21:56.759 --> 00:21:59.920
<v Speaker 2>beam wants a message to be sent to a process, right,

511
00:22:00.319 --> 00:22:02.880
<v Speaker 2>So all the things I can do from Rust level

512
00:22:03.000 --> 00:22:06.079
<v Speaker 2>is I want to send this gen server a message

513
00:22:06.359 --> 00:22:08.720
<v Speaker 2>asking nicely, can you give me the result of this

514
00:22:08.799 --> 00:22:11.480
<v Speaker 2>function called then web at least they can come and

515
00:22:11.480 --> 00:22:13.200
<v Speaker 2>do that and give me the results sult and then

516
00:22:13.240 --> 00:22:16.039
<v Speaker 2>I can continue on Rust and you know, proceed. So

517
00:22:16.079 --> 00:22:18.319
<v Speaker 2>there's there is I have to have gen service. I

518
00:22:18.319 --> 00:22:21.000
<v Speaker 2>have to like send messages in between from Rust and

519
00:22:21.279 --> 00:22:23.480
<v Speaker 2>synchronize that. So I have like nutrixis and all these

520
00:22:23.519 --> 00:22:26.319
<v Speaker 2>like fancy things to make my threats weight on the

521
00:22:26.359 --> 00:22:27.319
<v Speaker 2>results from alex inland.

522
00:22:27.519 --> 00:22:30.880
<v Speaker 1>Okay, I'm trying to follow in my In my mind,

523
00:22:31.720 --> 00:22:37.000
<v Speaker 1>the first question I have is the calling the host code.

524
00:22:37.240 --> 00:22:41.319
<v Speaker 1>How is that feature built into waresom or what is

525
00:22:41.359 --> 00:22:42.039
<v Speaker 1>that exactly?

526
00:22:42.519 --> 00:22:45.640
<v Speaker 2>Calling into host code? That's a built in feature, so

527
00:22:46.079 --> 00:22:49.079
<v Speaker 2>we call that or like Lawson calls that imported function.

528
00:22:49.319 --> 00:22:53.000
<v Speaker 2>So a web as Hamily module basically exports functions that

529
00:22:53.440 --> 00:22:55.400
<v Speaker 2>you can call like I don't know, convert the image,

530
00:22:55.519 --> 00:22:59.519
<v Speaker 2>calculate fibonacci, whatever. Then Alista can call those exported functions

531
00:22:59.559 --> 00:23:02.200
<v Speaker 2>and get to salt. But there's also imported functions. So

532
00:23:02.240 --> 00:23:05.119
<v Speaker 2>from the point of websent ly, they need functions to

533
00:23:05.119 --> 00:23:07.880
<v Speaker 2>be imported, like coming from the host. So in Alexia,

534
00:23:07.920 --> 00:23:10.160
<v Speaker 2>I need to implement those functions and give them to

535
00:23:10.200 --> 00:23:14.480
<v Speaker 2>websentit to call to function. Imagine debugging, right, if websombly

536
00:23:14.519 --> 00:23:17.279
<v Speaker 2>wants to print out the debug spring, it cannot. It

537
00:23:17.319 --> 00:23:19.799
<v Speaker 2>doesn't have a screen or like printer attached or anything.

538
00:23:19.920 --> 00:23:22.720
<v Speaker 2>But you can import or give it a function that's

539
00:23:22.759 --> 00:23:24.880
<v Speaker 2>you know, your io oputs or something where you can

540
00:23:24.920 --> 00:23:26.839
<v Speaker 2>then forward it to the console or whatever you want.

541
00:23:27.160 --> 00:23:30.359
<v Speaker 2>So websentity can import functions from the host, for debugging,

542
00:23:30.400 --> 00:23:32.799
<v Speaker 2>for accessing file systems, like for all kinds of things.

543
00:23:32.799 --> 00:23:34.920
<v Speaker 2>You can implement a whole computer, like the whole posing

544
00:23:34.960 --> 00:23:38.519
<v Speaker 2>system because that VAZ that's as standard that basically as

545
00:23:38.519 --> 00:23:41.440
<v Speaker 2>a computer like file system, memory management or all these

546
00:23:41.440 --> 00:23:44.039
<v Speaker 2>things arguments, parameters, environments.

547
00:23:44.119 --> 00:23:47.319
<v Speaker 1>Okay, so this part makes sense. So I'm aware of that.

548
00:23:47.359 --> 00:23:50.160
<v Speaker 1>You can write the code structure and you have this

549
00:23:50.440 --> 00:23:53.480
<v Speaker 1>WASM binary. But the part that doesn't make sense to

550
00:23:53.480 --> 00:23:55.880
<v Speaker 1>me is how does the rust part come in. It's

551
00:23:55.960 --> 00:23:58.440
<v Speaker 1>not part of the WASM build. Is that just the

552
00:23:58.480 --> 00:24:01.519
<v Speaker 1>way that you talk with the run time or where

553
00:24:01.559 --> 00:24:03.640
<v Speaker 1>does the rush russ park come in at?

554
00:24:03.799 --> 00:24:06.960
<v Speaker 2>Okay, so when this weapsent, the binary wants to run

555
00:24:07.000 --> 00:24:10.319
<v Speaker 2>some Alexi code to you know, run this function. Wasn't

556
00:24:10.319 --> 00:24:12.720
<v Speaker 2>time the thing that the engine basically asked. My code

557
00:24:12.720 --> 00:24:15.039
<v Speaker 2>asks me like, hey, can you give me like the

558
00:24:15.039 --> 00:24:17.440
<v Speaker 2>result of this function? And I have to then go

559
00:24:17.480 --> 00:24:20.279
<v Speaker 2>to Alexi land and say, hey, alexir beam run time.

560
00:24:20.559 --> 00:24:22.799
<v Speaker 2>I need to run this function, which is the thing

561
00:24:22.839 --> 00:24:25.759
<v Speaker 2>I cannot do. The beam doesn't allow and live to

562
00:24:25.839 --> 00:24:29.039
<v Speaker 2>just run a function. There is no such a thing. Instead,

563
00:24:29.079 --> 00:24:31.559
<v Speaker 2>we send a message to a process and wait for

564
00:24:31.599 --> 00:24:34.240
<v Speaker 2>the response and hope and you know across our fingers

565
00:24:34.240 --> 00:24:36.599
<v Speaker 2>that a response comes because if not here, I don't know,

566
00:24:37.079 --> 00:24:40.880
<v Speaker 2>then yeah, some aerostates sometime ort the usual Okay, gotcha,

567
00:24:40.920 --> 00:24:42.680
<v Speaker 2>And actually I think that's for the show notes. I

568
00:24:42.759 --> 00:24:45.559
<v Speaker 2>have this whole thing explained in a GitHub issue where

569
00:24:45.559 --> 00:24:47.920
<v Speaker 2>someone extically asked the same question. Maybe you can put

570
00:24:47.920 --> 00:24:49.799
<v Speaker 2>this in a show notes. I have, Like, there's the

571
00:24:49.839 --> 00:24:52.119
<v Speaker 2>fancy diagram that I, you know, want to paint in

572
00:24:52.160 --> 00:24:55.279
<v Speaker 2>this podcast with words, but maybe having is having it

573
00:24:55.319 --> 00:24:56.880
<v Speaker 2>as an actual diagram helps.

574
00:24:56.759 --> 00:24:58.799
<v Speaker 1>Yeah, definitely, because it it's just there's a lot of

575
00:24:58.839 --> 00:25:02.279
<v Speaker 1>things happen, and so that's why it gets you know,

576
00:25:02.279 --> 00:25:03.880
<v Speaker 1>there's a lot of things. And also this is still

577
00:25:04.079 --> 00:25:05.880
<v Speaker 1>I mean, WEASM has been around for quite some time,

578
00:25:05.960 --> 00:25:07.960
<v Speaker 1>but it's still quite new to a lot of people

579
00:25:08.000 --> 00:25:11.519
<v Speaker 1>because it is also confusing too because it's called WASM,

580
00:25:11.720 --> 00:25:14.319
<v Speaker 1>which is short for web assembly. So you're thinking, okay,

581
00:25:14.319 --> 00:25:16.920
<v Speaker 1>it must be in the browser, but that's not exactly true.

582
00:25:17.079 --> 00:25:20.319
<v Speaker 1>I think running on your machinists came later. It was

583
00:25:20.359 --> 00:25:22.559
<v Speaker 1>a little bit. Yeah, it's kind of something out there,

584
00:25:22.880 --> 00:25:25.039
<v Speaker 1>and we talked about the Fermion, right, so Fermion, if

585
00:25:25.079 --> 00:25:27.839
<v Speaker 1>I remember correctly, was started by a guy who used

586
00:25:27.839 --> 00:25:30.839
<v Speaker 1>to work on HELM if I remember correctly, Yeah, because

587
00:25:30.920 --> 00:25:33.200
<v Speaker 1>I talked with him a while ago. It is quite interesting.

588
00:25:33.400 --> 00:25:35.839
<v Speaker 1>And so he has this whole company on doing I

589
00:25:35.839 --> 00:25:38.039
<v Speaker 1>think tied or something. Well, it's been a long time

590
00:25:38.079 --> 00:25:39.880
<v Speaker 1>since I talk with him. I don't know why I even

591
00:25:39.880 --> 00:25:42.960
<v Speaker 1>brought him up now anyways, but yeah, there's like this

592
00:25:43.039 --> 00:25:46.200
<v Speaker 1>whole thing about running it on your machine and so yeah,

593
00:25:46.240 --> 00:25:48.640
<v Speaker 1>and then it seems like people wanted My understanding is

594
00:25:48.640 --> 00:25:51.640
<v Speaker 1>people are looking at using WASM kind of like processes

595
00:25:51.680 --> 00:25:53.400
<v Speaker 1>within the Beam, but in like a larger scale in

596
00:25:53.480 --> 00:25:56.480
<v Speaker 1>terms of like okay, let's spin up this WASM binary,

597
00:25:56.799 --> 00:26:00.240
<v Speaker 1>have an executed job and send the response to this

598
00:26:00.319 --> 00:26:04.000
<v Speaker 1>other pod, you know, which is it's kind of interesting.

599
00:26:04.079 --> 00:26:06.079
<v Speaker 1>It feels like we're going we're going back to what

600
00:26:06.119 --> 00:26:08.160
<v Speaker 1>Beam has been doing for a while, you know, with

601
00:26:08.400 --> 00:26:11.480
<v Speaker 1>message passing and spinning up jobs this kind of stuff.

602
00:26:11.559 --> 00:26:13.799
<v Speaker 2>Yeah, I think that's also best how to think about

603
00:26:13.839 --> 00:26:16.279
<v Speaker 2>it from an Alexi perspective, that's how your busity interact

604
00:26:16.359 --> 00:26:19.400
<v Speaker 2>with websent the best, as like that's a separate process,

605
00:26:19.440 --> 00:26:21.640
<v Speaker 2>hyparate gen server gonna send messages and hope for the

606
00:26:21.640 --> 00:26:23.799
<v Speaker 2>best that the message comes back because you know also

607
00:26:23.799 --> 00:26:26.000
<v Speaker 2>your WEPSENTITD code can have box and can decide to

608
00:26:26.119 --> 00:26:28.400
<v Speaker 2>just break apart. So it's the same idea, the same

609
00:26:28.559 --> 00:26:30.599
<v Speaker 2>that you following the beam that maybe you're of a

610
00:26:30.640 --> 00:26:32.519
<v Speaker 2>module breaks apart and then you have a message and

611
00:26:32.640 --> 00:26:34.039
<v Speaker 2>it's safely encapsulated.

612
00:26:34.799 --> 00:26:37.000
<v Speaker 1>Well, I think there's a couple more things that could

613
00:26:37.039 --> 00:26:39.160
<v Speaker 1>be interesting to talk about too. I don't know if

614
00:26:39.160 --> 00:26:41.119
<v Speaker 1>it's still the same or not, but my understanding is

615
00:26:41.119 --> 00:26:43.039
<v Speaker 1>that Rust is definitely one of the best languages to

616
00:26:43.079 --> 00:26:45.400
<v Speaker 1>write webs only with in terms of like everything kind

617
00:26:45.400 --> 00:26:47.480
<v Speaker 1>of matches up because it's not when you see it

618
00:26:47.519 --> 00:26:49.559
<v Speaker 1>as a run time in RUSS, it's like wats and

619
00:26:49.720 --> 00:26:51.759
<v Speaker 1>thirty two, which is kind of weird. There's also no

620
00:26:51.960 --> 00:26:54.039
<v Speaker 1>it's I don't know if there is a garbage collection

621
00:26:54.119 --> 00:26:56.000
<v Speaker 1>built in yet or not, but that was something that

622
00:26:56.079 --> 00:26:58.039
<v Speaker 1>was lacking. That's why RUSS worked out quite well too.

623
00:26:58.200 --> 00:27:01.920
<v Speaker 2>It's yes, oh no, no, don't get the name des

624
00:27:02.039 --> 00:27:03.599
<v Speaker 2>like an extension to it as I think there's a

625
00:27:03.599 --> 00:27:05.839
<v Speaker 2>proper name with sort extension. But let's say there's an

626
00:27:05.880 --> 00:27:08.400
<v Speaker 2>extension to the web smily where you can basically enable

627
00:27:08.400 --> 00:27:11.480
<v Speaker 2>the feature fleg to allow garbage collection. There's a proposal

628
00:27:11.519 --> 00:27:14.240
<v Speaker 2>for that. It's implemented in most engines already. There's also

629
00:27:14.279 --> 00:27:19.160
<v Speaker 2>like a real strong development in making websmit more usable

630
00:27:19.200 --> 00:27:21.880
<v Speaker 2>in tons of different environments. So garbage collection is one

631
00:27:21.880 --> 00:27:25.319
<v Speaker 2>of them, Garbage collected languages and interfacing persimity is another.

632
00:27:25.519 --> 00:27:28.519
<v Speaker 2>Like traditionally, if you want to call a websentitly function

633
00:27:28.759 --> 00:27:32.400
<v Speaker 2>or interface with it somehow, websmity only understands like numbers,

634
00:27:32.440 --> 00:27:35.319
<v Speaker 2>like integers, floats like this sort of thing. But you,

635
00:27:35.400 --> 00:27:37.640
<v Speaker 2>as like an Elexi person, you think instructs your user

636
00:27:37.680 --> 00:27:40.440
<v Speaker 2>structure like stuff like this. It's structured data, and there's

637
00:27:40.759 --> 00:27:43.559
<v Speaker 2>this translation layer where like was mixed, like my library

638
00:27:43.559 --> 00:27:46.640
<v Speaker 2>tries to help you write to the websm d memory,

639
00:27:47.160 --> 00:27:50.400
<v Speaker 2>put your users structure whatever you have into like the

640
00:27:50.440 --> 00:27:53.200
<v Speaker 2>bits and bites that alec that the websent can read,

641
00:27:53.359 --> 00:27:56.240
<v Speaker 2>and the same way around backwards when you get the result.

642
00:27:56.359 --> 00:27:59.240
<v Speaker 2>But actually it would be so much nicer if websmitly

643
00:27:59.279 --> 00:28:01.880
<v Speaker 2>had a different mintion language like a type system. Say right,

644
00:28:02.640 --> 00:28:04.240
<v Speaker 2>they can say, hey, this is a user stug. It

645
00:28:04.240 --> 00:28:05.920
<v Speaker 2>has a name that I don't know, a birth date,

646
00:28:06.000 --> 00:28:08.480
<v Speaker 2>and what they have and suddenly websently knows the same

647
00:28:08.519 --> 00:28:11.799
<v Speaker 2>types that you have in neuro alexir, and they can

648
00:28:11.880 --> 00:28:14.960
<v Speaker 2>talk about higher level complex types and that's exactly what

649
00:28:15.319 --> 00:28:18.720
<v Speaker 2>that's called component model and websentitly. They just released that recently,

650
00:28:18.960 --> 00:28:22.000
<v Speaker 2>and I'm also trying to work this into the Lexi

651
00:28:22.000 --> 00:28:24.160
<v Speaker 2>implementation so that we don't have to think about bits

652
00:28:24.200 --> 00:28:27.119
<v Speaker 2>and bytes and serializing it into I don't know, Jason

653
00:28:27.160 --> 00:28:30.440
<v Speaker 2>Springs or whatever, but we can actually take complex types

654
00:28:30.640 --> 00:28:32.640
<v Speaker 2>using a type system. The component model is a type

655
00:28:32.640 --> 00:28:35.160
<v Speaker 2>system under thehood. Yeah, and then we can talk about

656
00:28:35.160 --> 00:28:37.599
<v Speaker 2>the same thing about the same complex type in websind

657
00:28:37.680 --> 00:28:40.000
<v Speaker 2>and alexir. I'm also quite hyped about the type system

658
00:28:40.000 --> 00:28:42.640
<v Speaker 2>and Alexia. I'm not sure yet how, but maybe we

659
00:28:42.640 --> 00:28:45.119
<v Speaker 2>can work it make it work nicely together. Let's see.

660
00:28:45.160 --> 00:28:47.039
<v Speaker 1>Well I know that. So it's kind of interesting too

661
00:28:47.039 --> 00:28:49.640
<v Speaker 1>when they're working on this WATM stuff because I forgot

662
00:28:49.680 --> 00:28:52.720
<v Speaker 1>the name of the project, but there is it's been changed.

663
00:28:52.720 --> 00:28:54.400
<v Speaker 1>The name that's been changed a couple of times for

664
00:28:54.480 --> 00:28:57.920
<v Speaker 1>a lecture in it least were called Loman and then

665
00:28:57.920 --> 00:29:00.079
<v Speaker 1>there was another name. It's quite a few names. I

666
00:29:00.079 --> 00:29:01.559
<v Speaker 1>think Darktor still working on it.

667
00:29:01.599 --> 00:29:04.359
<v Speaker 2>Wasn't it the way you can take alexicode and run

668
00:29:04.400 --> 00:29:06.480
<v Speaker 2>it as a websentity program. Right was it this?

669
00:29:06.680 --> 00:29:08.640
<v Speaker 1>Yeah? In the browser, which was quite interesting because a

670
00:29:08.640 --> 00:29:10.519
<v Speaker 1>lot of people don't want to write JavaScript to do

671
00:29:10.559 --> 00:29:11.880
<v Speaker 1>a lecture. Yes, trying to.

672
00:29:11.920 --> 00:29:15.319
<v Speaker 2>Finally, didn't this go down? Like now you'll know more

673
00:29:15.359 --> 00:29:17.799
<v Speaker 2>than I do. Wasn't this like an avendant or something?

674
00:29:18.240 --> 00:29:20.200
<v Speaker 1>YESO, No, the Luna one has been touched for a while,

675
00:29:20.200 --> 00:29:21.920
<v Speaker 1>but I couldn't want to have a new name. I

676
00:29:21.960 --> 00:29:23.839
<v Speaker 1>was trying. That's what I'm actually trying to find right now.

677
00:29:24.559 --> 00:29:26.440
<v Speaker 2>But you know what I can pitch there? And there

678
00:29:26.480 --> 00:29:28.920
<v Speaker 2>is Patrick Smith. He is he's a great person, and

679
00:29:28.920 --> 00:29:31.319
<v Speaker 2>he's writing orb. Orb is a way where you can

680
00:29:31.319 --> 00:29:34.799
<v Speaker 2>write an alexir function and that compiles to actually repressently,

681
00:29:35.079 --> 00:29:36.880
<v Speaker 2>and then you have your Alexi function in line in

682
00:29:36.880 --> 00:29:40.000
<v Speaker 2>your Alexi code base, but it's absently and orb actually

683
00:29:40.079 --> 00:29:43.000
<v Speaker 2>uses then wasn't max for integration tests, so you know

684
00:29:43.119 --> 00:29:46.359
<v Speaker 2>you're an alex heir. You compile to websently. Then in

685
00:29:46.920 --> 00:29:50.279
<v Speaker 2>his tests Patrick then uses websentitly like was max to

686
00:29:50.599 --> 00:29:53.640
<v Speaker 2>test the He compiled the right things. Yes, there's the circle.

687
00:29:53.799 --> 00:29:55.640
<v Speaker 2>I think orb is it's a good library.

688
00:29:55.680 --> 00:29:57.039
<v Speaker 1>To look at. Yeah, it looks like the name of

689
00:29:57.079 --> 00:30:00.759
<v Speaker 1>that the thing is called Firefly now I remember now, Yes,

690
00:30:01.079 --> 00:30:03.680
<v Speaker 1>it's been archived as a junior this year. I get

691
00:30:03.680 --> 00:30:05.640
<v Speaker 1>really bummed down when I see it, kind of get

692
00:30:05.640 --> 00:30:08.000
<v Speaker 1>it getting abandoned like this. I understand that it definitely

693
00:30:08.039 --> 00:30:09.680
<v Speaker 1>takes quite a bit of effort to keep this going,

694
00:30:09.759 --> 00:30:12.839
<v Speaker 1>but it's it was exciting to see what's going on.

695
00:30:13.079 --> 00:30:16.799
<v Speaker 2>Yeah, to my understanding, Firefly or like Luman had to

696
00:30:16.839 --> 00:30:19.920
<v Speaker 2>implement the whole beam basically as a as a walk

697
00:30:20.319 --> 00:30:22.640
<v Speaker 2>to then run it in represent V versus ORB. I

698
00:30:22.720 --> 00:30:24.119
<v Speaker 2>just linked it for the show. Notes if you want

699
00:30:24.160 --> 00:30:26.880
<v Speaker 2>to ORB is more like you take a single function

700
00:30:27.200 --> 00:30:29.759
<v Speaker 2>and you know, changed it into represent V bite code,

701
00:30:29.839 --> 00:30:31.720
<v Speaker 2>so it's not the whole beam run time. It's more

702
00:30:31.759 --> 00:30:34.279
<v Speaker 2>like a computation of a function. So it's this much

703
00:30:34.279 --> 00:30:36.319
<v Speaker 2>smaller problem. But that seems to work and it's much

704
00:30:36.359 --> 00:30:38.920
<v Speaker 2>less maintenance and you know, fast and nice and good. Yeah.

705
00:30:39.079 --> 00:30:42.160
<v Speaker 1>I was just looking forward to this coming out because yeah,

706
00:30:42.200 --> 00:30:43.839
<v Speaker 1>I mean I make surely said to see you see

707
00:30:43.880 --> 00:30:46.759
<v Speaker 1>this kind of stuff work down. But yeah, it's it's tough,

708
00:30:46.880 --> 00:30:49.200
<v Speaker 1>but yeah, coming coming back. Okay, Now, why is the

709
00:30:49.240 --> 00:30:51.000
<v Speaker 1>max Like I we didn't actually get into the reason

710
00:30:51.000 --> 00:30:53.000
<v Speaker 1>about why you started getting working on this one because

711
00:30:53.039 --> 00:30:55.000
<v Speaker 1>you're not really using wires in a new day job, right.

712
00:30:55.599 --> 00:30:57.920
<v Speaker 2>No. I had a used case back when I was

713
00:30:58.400 --> 00:31:01.720
<v Speaker 2>in the software development agency. Was a client who needed

714
00:31:01.759 --> 00:31:04.799
<v Speaker 2>to create an enormous PDF file. But the problem was

715
00:31:04.880 --> 00:31:06.680
<v Speaker 2>they want they wanted this to be created in the

716
00:31:06.680 --> 00:31:08.799
<v Speaker 2>backgend to send them out via email and such. But

717
00:31:09.039 --> 00:31:11.119
<v Speaker 2>most of the time the user clicked like the in

718
00:31:11.160 --> 00:31:13.440
<v Speaker 2>the HTML page like a download PDF button. So most

719
00:31:13.440 --> 00:31:15.279
<v Speaker 2>of the time it was like the user clicking on

720
00:31:15.279 --> 00:31:18.119
<v Speaker 2>the web page. Sometimes it was an email sent asynchronously,

721
00:31:18.279 --> 00:31:21.160
<v Speaker 2>and I was like, hey, man, you're generating this PDF file.

722
00:31:21.359 --> 00:31:24.160
<v Speaker 2>We already have all the information on the HTML page,

723
00:31:24.160 --> 00:31:26.119
<v Speaker 2>but we need to go back to the server, then

724
00:31:26.319 --> 00:31:29.519
<v Speaker 2>to this expensive database career again produce the PDF, then

725
00:31:29.519 --> 00:31:31.160
<v Speaker 2>send it back to the client. That that's just the

726
00:31:31.160 --> 00:31:33.920
<v Speaker 2>waste of resources. Let's just implement the thing in JavaScript

727
00:31:34.000 --> 00:31:36.720
<v Speaker 2>and you can create PDFs and jobscript right because all

728
00:31:36.720 --> 00:31:38.440
<v Speaker 2>the information was there. But then I was like, hey,

729
00:31:38.519 --> 00:31:40.440
<v Speaker 2>if it's JavaScript, you cannot have it in the back

730
00:31:40.480 --> 00:31:42.119
<v Speaker 2>and then send it out via email. So I needed

731
00:31:42.119 --> 00:31:45.319
<v Speaker 2>a solution that can generate my PDF in the client

732
00:31:45.359 --> 00:31:48.400
<v Speaker 2>in the browser and in the Alexa back end, so

733
00:31:48.640 --> 00:31:51.680
<v Speaker 2>there was websently represently was the modern way to approach it.

734
00:31:51.839 --> 00:31:54.960
<v Speaker 2>I had some time to spare to build up a

735
00:31:54.960 --> 00:31:57.880
<v Speaker 2>prototype like super simple prototype, just generated a PDF and

736
00:31:57.960 --> 00:32:00.759
<v Speaker 2>it worked, and then from there that that's five years ago.

737
00:32:00.920 --> 00:32:03.160
<v Speaker 2>Actually I think that was five years ago. And back

738
00:32:03.200 --> 00:32:05.400
<v Speaker 2>then I didn't think I need the gen service. I

739
00:32:05.480 --> 00:32:08.720
<v Speaker 2>just made it stupid simple, no korbicks, no important functions.

740
00:32:08.759 --> 00:32:11.079
<v Speaker 2>It was just so so simple. But then over time

741
00:32:11.079 --> 00:32:13.279
<v Speaker 2>it got some usage, some attention, and then people were

742
00:32:13.319 --> 00:32:16.000
<v Speaker 2>asking can you, you know, can I provide a function

743
00:32:16.039 --> 00:32:18.200
<v Speaker 2>from alex heir into webssmibly And then I was like, oh,

744
00:32:18.240 --> 00:32:20.200
<v Speaker 2>but then you need to send a message. Then I

745
00:32:20.240 --> 00:32:22.279
<v Speaker 2>had to have gen service. There was this sole itteration

746
00:32:22.359 --> 00:32:24.680
<v Speaker 2>going on. Yeah, so it all started from this one

747
00:32:24.720 --> 00:32:26.799
<v Speaker 2>PDF I wanted to create on the client and the

748
00:32:26.799 --> 00:32:27.319
<v Speaker 2>back end.

749
00:32:27.799 --> 00:32:29.359
<v Speaker 1>Throwing something like that, and then you get to start

750
00:32:29.440 --> 00:32:31.839
<v Speaker 1>kind of working on it. But I mean, obviously you

751
00:32:31.920 --> 00:32:34.720
<v Speaker 1>still enjoy working on it because you start working on it, right.

752
00:32:34.960 --> 00:32:37.400
<v Speaker 2>Yeah, that's true. Honestly, I was working a lot in

753
00:32:37.440 --> 00:32:40.400
<v Speaker 2>the early days, and now it's extended maintenance. I would say,

754
00:32:40.440 --> 00:32:42.720
<v Speaker 2>so I do implement features. I do experiment with it,

755
00:32:42.799 --> 00:32:44.519
<v Speaker 2>but I also have a family in the day job,

756
00:32:44.680 --> 00:32:47.200
<v Speaker 2>so it's the usual open source you know, you have

757
00:32:47.279 --> 00:32:49.960
<v Speaker 2>to spend your time somehow, and you know, family and

758
00:32:50.160 --> 00:32:52.880
<v Speaker 2>earning some money comes first. But there's so much fun

759
00:32:52.920 --> 00:32:55.720
<v Speaker 2>in open source work and getting down to the details

760
00:32:55.720 --> 00:32:57.960
<v Speaker 2>of I don't know, moving some bites around to make

761
00:32:58.000 --> 00:33:00.440
<v Speaker 2>the fit into web assembly, or thinking about asy and

762
00:33:00.480 --> 00:33:03.160
<v Speaker 2>grass that all these things is so stimulating and fun

763
00:33:03.200 --> 00:33:05.319
<v Speaker 2>that I just cannot stop. But it's not you know,

764
00:33:05.400 --> 00:33:07.640
<v Speaker 2>I don't get paid for it. It's not like fastest development.

765
00:33:07.799 --> 00:33:11.480
<v Speaker 2>And compared to how webers smily moves forward like websamily

766
00:33:11.480 --> 00:33:14.599
<v Speaker 2>as an ecosystem is so fast moving day, you know,

767
00:33:14.640 --> 00:33:17.759
<v Speaker 2>the garbage collection, the component model. So many new things

768
00:33:17.759 --> 00:33:20.240
<v Speaker 2>come up that are really good and great. And one

769
00:33:20.240 --> 00:33:23.759
<v Speaker 2>of the main things I do maintaining Warsen mags is

770
00:33:23.960 --> 00:33:25.759
<v Speaker 2>just you know, getting the new version of was was't

771
00:33:25.759 --> 00:33:28.480
<v Speaker 2>time in making it work and compile again, And that's

772
00:33:28.519 --> 00:33:31.519
<v Speaker 2>already I don't know half a day spend, and so

773
00:33:31.720 --> 00:33:34.400
<v Speaker 2>I mostly keep up with current developments and then if

774
00:33:34.400 --> 00:33:36.759
<v Speaker 2>there's time left, I do at some features centerp okay.

775
00:33:36.839 --> 00:33:38.960
<v Speaker 2>So that's the call I think that's you know, it's

776
00:33:38.960 --> 00:33:40.839
<v Speaker 2>a bit late for this in a podcast, but if

777
00:33:40.839 --> 00:33:43.000
<v Speaker 2>you are interested in this, like us is the thing

778
00:33:43.039 --> 00:33:46.400
<v Speaker 2>webs mb is interesting. I'm really open to external contributors

779
00:33:46.839 --> 00:33:49.799
<v Speaker 2>if you're missing a feature and this sounds interesting, really

780
00:33:49.799 --> 00:33:51.920
<v Speaker 2>happy to do. I try to do. Try to be

781
00:33:51.960 --> 00:33:54.559
<v Speaker 2>a nice person, try to be a good collaborator. I

782
00:33:54.559 --> 00:33:56.319
<v Speaker 2>don't want to be a dictator of this whole thing.

783
00:33:56.559 --> 00:33:59.720
<v Speaker 2>And there's already been quite a few contributors that happily

784
00:33:59.720 --> 00:34:03.119
<v Speaker 2>emerge pullquists. So you are invited to join the tun ah.

785
00:34:03.200 --> 00:34:05.319
<v Speaker 1>Yeah, you're still working with I'm I forgot what his

786
00:34:05.400 --> 00:34:08.639
<v Speaker 1>name is, Sonny Scraggin. He's I was just looking at

787
00:34:08.639 --> 00:34:11.599
<v Speaker 1>the acink issue you have. He's quite a good guy

788
00:34:11.639 --> 00:34:13.920
<v Speaker 1>for helping people out with Rustler and stuff, so that's

789
00:34:13.920 --> 00:34:15.360
<v Speaker 1>probably what he was working with with you.

790
00:34:15.440 --> 00:34:17.599
<v Speaker 2>Right, He's been so helpful in the past. I'm so glad.

791
00:34:17.719 --> 00:34:20.199
<v Speaker 2>That's also something that you know, this open source community,

792
00:34:20.559 --> 00:34:23.000
<v Speaker 2>it spends rust and Alex here. Yeah, I can just

793
00:34:23.079 --> 00:34:25.239
<v Speaker 2>ask for help. I don't know everything, like how can

794
00:34:25.280 --> 00:34:26.960
<v Speaker 2>I and I can just ask for help and then

795
00:34:27.079 --> 00:34:29.360
<v Speaker 2>people come in and actually do help. And that's I'm

796
00:34:29.400 --> 00:34:31.239
<v Speaker 2>really thankful and I do learn a lot from it.

797
00:34:31.360 --> 00:34:33.440
<v Speaker 1>Yeah, I remember I worked with Russler for a project.

798
00:34:33.440 --> 00:34:37.320
<v Speaker 1>He was definitely super helpful and always willing to Yeah,

799
00:34:37.320 --> 00:34:39.800
<v Speaker 1>he did more than I was expecting, like if, I

800
00:34:39.920 --> 00:34:41.920
<v Speaker 1>was quite shocked with how much he was able to

801
00:34:41.960 --> 00:34:44.159
<v Speaker 1>put in. So yeah, he's and I think he's one

802
00:34:44.199 --> 00:34:46.360
<v Speaker 1>of the guys who was working on Rustler itself, right

803
00:34:46.559 --> 00:34:48.039
<v Speaker 1>at least he was at some point, that is what

804
00:34:48.119 --> 00:34:50.639
<v Speaker 1>I remember, or if not, he definitely was a heavy

805
00:34:50.719 --> 00:34:53.239
<v Speaker 1>user and promoter of it at minimum because I had

806
00:34:53.480 --> 00:34:55.320
<v Speaker 1>surely with roster, I couldn't figure out.

807
00:34:55.719 --> 00:34:57.800
<v Speaker 2>I should stalk my contributors a bit more. I think,

808
00:34:57.880 --> 00:35:00.280
<v Speaker 2>I don't know, but I'm still thankful. I just seeing

809
00:35:00.320 --> 00:35:03.800
<v Speaker 2>the contributions they make on Micropositive alone and the conversations

810
00:35:03.800 --> 00:35:06.519
<v Speaker 2>behind the scenes a bit. It's really helpful already, and

811
00:35:06.519 --> 00:35:08.519
<v Speaker 2>it's also what makes the whole thing fun and sustainable.

812
00:35:08.760 --> 00:35:11.039
<v Speaker 2>People oftentimes talk and open source about, you know, being

813
00:35:11.079 --> 00:35:12.920
<v Speaker 2>burned on and stuff, but I can just be honest

814
00:35:12.960 --> 00:35:15.039
<v Speaker 2>and say, you know, there's a family. People understand, and

815
00:35:15.159 --> 00:35:18.079
<v Speaker 2>instead of complaining, they come and help out. They open

816
00:35:18.119 --> 00:35:19.880
<v Speaker 2>my product fast or even if it's an issue, but

817
00:35:19.880 --> 00:35:21.800
<v Speaker 2>they are like detailed. It nice and I can actually

818
00:35:21.800 --> 00:35:23.679
<v Speaker 2>work on it, so that's really, you know, the good

819
00:35:23.679 --> 00:35:24.960
<v Speaker 2>part about this community.

820
00:35:25.119 --> 00:35:27.639
<v Speaker 1>I have an opinion about that one. I mean it,

821
00:35:27.960 --> 00:35:30.519
<v Speaker 1>of course, it's a by person thing. But my opinion

822
00:35:30.559 --> 00:35:35.360
<v Speaker 1>about languages like Elixir and to an extent, are Russ

823
00:35:35.480 --> 00:35:37.440
<v Speaker 1>some other languages that are what I would say more

824
00:35:37.519 --> 00:35:40.920
<v Speaker 1>niche Right, you have a different type of developer usually

825
00:35:40.920 --> 00:35:43.159
<v Speaker 1>working with these things, and le's of course they're forced

826
00:35:43.159 --> 00:35:44.800
<v Speaker 1>into it, which I don't know how many there is,

827
00:35:44.840 --> 00:35:48.000
<v Speaker 1>But for people who specifically want to work with this technology,

828
00:35:48.000 --> 00:35:50.880
<v Speaker 1>this language, they have a different mindset. They're there to

829
00:35:51.000 --> 00:35:53.119
<v Speaker 1>learn for the better, they're there for doing things for

830
00:35:53.159 --> 00:35:55.639
<v Speaker 1>the better. They choose this language as opposed to say,

831
00:35:55.679 --> 00:35:58.679
<v Speaker 1>working with something more mainstream or popular. So you're going

832
00:35:58.719 --> 00:36:00.639
<v Speaker 1>to get a different kind of developer who's more I'm

833
00:36:00.679 --> 00:36:02.039
<v Speaker 1>not sure how the heck I want to say, but

834
00:36:02.079 --> 00:36:03.920
<v Speaker 1>I think you're already understand what I'm saying. Could you

835
00:36:04.039 --> 00:36:05.719
<v Speaker 1>kind of shake in your head like yes, That's been

836
00:36:05.760 --> 00:36:07.960
<v Speaker 1>my opinion about these kinds of languages, is that you

837
00:36:07.960 --> 00:36:09.840
<v Speaker 1>get a different kind of developer rather than somebody who

838
00:36:09.880 --> 00:36:11.800
<v Speaker 1>just has to get the work done the barses, you know,

839
00:36:11.880 --> 00:36:14.000
<v Speaker 1>cracking the web we're going to finish quickly, and so

840
00:36:14.079 --> 00:36:17.880
<v Speaker 1>they just let our frustrations and yeah, so that's been

841
00:36:17.880 --> 00:36:20.800
<v Speaker 1>my kind of that's my thought about this kind of community.

842
00:36:20.960 --> 00:36:23.360
<v Speaker 2>Yes, I think it's also a bit of an uphill battle,

843
00:36:23.400 --> 00:36:26.719
<v Speaker 2>like imagine trying to be hiring for an Elixir job.

844
00:36:26.960 --> 00:36:29.440
<v Speaker 2>Like the current market situation is a bit tough, right, Yeah,

845
00:36:29.480 --> 00:36:31.840
<v Speaker 2>and there's so many people who want to code an

846
00:36:31.880 --> 00:36:33.920
<v Speaker 2>alex heir, and you really have to step up your game.

847
00:36:34.000 --> 00:36:36.719
<v Speaker 2>I'll also be lucky, lucky I guess than then to job.

848
00:36:36.920 --> 00:36:39.960
<v Speaker 2>So as as an employer, like as a company, I

849
00:36:39.960 --> 00:36:42.440
<v Speaker 2>think it's a good choice to start an elexiir. Oftentimes

850
00:36:42.440 --> 00:36:45.559
<v Speaker 2>people say you can't find Elexi developers, but what really

851
00:36:45.559 --> 00:36:47.320
<v Speaker 2>A lot of people want to code a elex heir.

852
00:36:47.480 --> 00:36:49.679
<v Speaker 2>Maybe sometimes you just have to say either you pay

853
00:36:49.719 --> 00:36:52.559
<v Speaker 2>for the seniors or you train some middle level or

854
00:36:52.599 --> 00:36:55.679
<v Speaker 2>juniors to the show, and then you I think you

855
00:36:55.679 --> 00:36:57.840
<v Speaker 2>get dedicated and good people on average. I mean there's

856
00:36:57.880 --> 00:37:00.280
<v Speaker 2>always exceptions, but on average, I think you get a

857
00:37:00.320 --> 00:37:02.920
<v Speaker 2>good bunch of good people. No, I also think so too.

858
00:37:03.079 --> 00:37:05.599
<v Speaker 2>It's of course it's always better to have the right developer,

859
00:37:05.960 --> 00:37:08.639
<v Speaker 2>but I think without if they've never really worked with

860
00:37:08.639 --> 00:37:10.960
<v Speaker 2>it before. You need to kind of show them because

861
00:37:11.199 --> 00:37:11.880
<v Speaker 2>how do I say?

862
00:37:12.239 --> 00:37:15.159
<v Speaker 1>Yeah, I mean there's a moment where it clicks for everybody,

863
00:37:15.199 --> 00:37:17.599
<v Speaker 1>like wow, actually this makes sense, Like it's so easy

864
00:37:17.639 --> 00:37:20.039
<v Speaker 1>to do these kinds of things. There was there's this

865
00:37:20.079 --> 00:37:22.559
<v Speaker 1>guy named Theo, who I guess just spoke at Elexro Comf.

866
00:37:22.599 --> 00:37:24.280
<v Speaker 1>I used to kind of watch this stuff. He's a

867
00:37:24.280 --> 00:37:27.840
<v Speaker 1>bit of a character, which good or bad, it's up

868
00:37:27.880 --> 00:37:29.920
<v Speaker 1>to you. But he seems like, I mean, he's somebody

869
00:37:29.960 --> 00:37:33.079
<v Speaker 1>who's who somehow got converted from In my opinion, from

870
00:37:33.079 --> 00:37:34.639
<v Speaker 1>my understanding of who he is, he was kind of

871
00:37:34.679 --> 00:37:38.079
<v Speaker 1>like a JavaScript heavy person, but maybe I'm wrong. But

872
00:37:38.119 --> 00:37:41.280
<v Speaker 1>then he became super crazy about Alixer. I think I'm

873
00:37:41.280 --> 00:37:43.000
<v Speaker 1>not sure how it happened, but I think he says

874
00:37:43.000 --> 00:37:44.360
<v Speaker 1>it's his new language. Like I said, he actually just

875
00:37:44.440 --> 00:37:47.159
<v Speaker 1>keynote spoke at Elixir comf in US, and that was

876
00:37:47.239 --> 00:37:49.840
<v Speaker 1>quite shocked because I never would have expected that because

877
00:37:49.920 --> 00:37:52.320
<v Speaker 1>usually these this guy's got a couple million people who

878
00:37:52.679 --> 00:37:54.280
<v Speaker 1>watch my YouTube, These kind of I mean don't really

879
00:37:54.360 --> 00:37:56.320
<v Speaker 1>have people who'd write Leckster to have a couple million

880
00:37:56.360 --> 00:37:59.559
<v Speaker 1>subscribers on there, right, So it's it's it's quite exciting

881
00:37:59.599 --> 00:38:01.960
<v Speaker 1>to see when you you know, I can say, convert

882
00:38:02.039 --> 00:38:05.360
<v Speaker 1>somebody you know who was doing something more mainstream, possibly

883
00:38:05.559 --> 00:38:07.960
<v Speaker 1>to a elixir or even to a beam language in

884
00:38:08.000 --> 00:38:10.840
<v Speaker 1>general too. Yeah, well that's the thing, right, And when

885
00:38:10.880 --> 00:38:12.599
<v Speaker 1>he talks about he's not just saying, oh this is sexy.

886
00:38:12.639 --> 00:38:14.920
<v Speaker 1>He was saying, no, this stuff makes sense. Look at this.

887
00:38:14.960 --> 00:38:16.880
<v Speaker 1>We have processes, we got to spend these things uff,

888
00:38:16.880 --> 00:38:18.880
<v Speaker 1>we can monitor them. We got messages, we got this,

889
00:38:18.920 --> 00:38:21.599
<v Speaker 1>we got that, we can we can send tasks to

890
00:38:21.679 --> 00:38:25.280
<v Speaker 1>another machine so we can scale horizontally easily. We got

891
00:38:25.280 --> 00:38:27.880
<v Speaker 1>all these stuff. So it's it's good to see that

892
00:38:27.920 --> 00:38:30.639
<v Speaker 1>other people can see it, because I think you need

893
00:38:30.679 --> 00:38:33.840
<v Speaker 1>to actually play with it before you actually, like you

894
00:38:33.840 --> 00:38:35.480
<v Speaker 1>need to drink the kool aid, before you actually start

895
00:38:35.480 --> 00:38:36.239
<v Speaker 1>to fall in love with it.

896
00:38:36.280 --> 00:38:36.480
<v Speaker 2>You know.

897
00:38:36.519 --> 00:38:39.079
<v Speaker 1>It's you can get some idea, but it so there's

898
00:38:39.079 --> 00:38:41.159
<v Speaker 1>an aha moment where you're like, oh god, this is

899
00:38:41.199 --> 00:38:44.679
<v Speaker 1>so easy. Like I just implemented a some code that

900
00:38:44.760 --> 00:38:47.719
<v Speaker 1>can like process a bunch of files asynchronously in parallel,

901
00:38:47.760 --> 00:38:51.719
<v Speaker 1>and it was so so simple, and the handle errors

902
00:38:51.800 --> 00:38:54.039
<v Speaker 1>was so dead simple, and it's just like wow, I

903
00:38:54.079 --> 00:38:56.639
<v Speaker 1>can't like if I did this in Python or JavaScript,

904
00:38:56.679 --> 00:38:58.679
<v Speaker 1>while it would be so slow, and it'd be one

905
00:38:58.719 --> 00:39:00.960
<v Speaker 1>by one and it would be this issue in that issue,

906
00:39:01.000 --> 00:39:03.000
<v Speaker 1>and I would be freaking out that the thing would

907
00:39:03.039 --> 00:39:05.039
<v Speaker 1>just crashed, rather than just saying, you know what, the

908
00:39:05.079 --> 00:39:08.480
<v Speaker 1>process that that's doing the processing can crash, don't care.

909
00:39:08.880 --> 00:39:10.360
<v Speaker 1>But at least I know that this starts and works,

910
00:39:10.360 --> 00:39:12.280
<v Speaker 1>and I can put it to the side and lock

911
00:39:12.320 --> 00:39:13.320
<v Speaker 1>the error and keep going.

912
00:39:13.519 --> 00:39:16.199
<v Speaker 2>And that's not even thinking about mutability of data and stuff.

913
00:39:16.239 --> 00:39:18.360
<v Speaker 2>But like you have raised, Yeah, that's another one, conflicts

914
00:39:18.360 --> 00:39:20.679
<v Speaker 2>and stuff. Yeah, so there's lots of heavy lifting and

915
00:39:20.719 --> 00:39:22.320
<v Speaker 2>that's that also gives me a bit of hope, and

916
00:39:22.559 --> 00:39:25.440
<v Speaker 2>I'm really hopeful and cheer for the Elexi community. But

917
00:39:25.519 --> 00:39:28.039
<v Speaker 2>you also see on like the stake overflow service that

918
00:39:28.199 --> 00:39:31.440
<v Speaker 2>Alexi and Phoenix specifically is like highly liked and desired.

919
00:39:31.679 --> 00:39:35.000
<v Speaker 2>It's still that over on market isn't reflecting that so much?

920
00:39:35.079 --> 00:39:37.800
<v Speaker 2>Right I was, it doesn't really make sense. Can be what, Yeah,

921
00:39:37.800 --> 00:39:38.719
<v Speaker 2>that doesn't really make sense.

922
00:39:38.800 --> 00:39:40.760
<v Speaker 1>Not actually think about it, Like I think most of

923
00:39:40.760 --> 00:39:42.920
<v Speaker 1>the positions I went to pretty much the tech team

924
00:39:42.960 --> 00:39:45.119
<v Speaker 1>have to choose to tech which in which it should be.

925
00:39:45.440 --> 00:39:47.480
<v Speaker 1>But how come Yeah, like you said, how come Alexi

926
00:39:47.519 --> 00:39:50.800
<v Speaker 1>and Phoenix are high up there, but overall it's not. Yeah,

927
00:39:50.840 --> 00:39:53.360
<v Speaker 1>it's not a popular language. I wouldn't call it popular

928
00:39:53.440 --> 00:39:56.159
<v Speaker 1>language or popular framework even you know exactly what I'm saying,

929
00:39:56.159 --> 00:39:57.000
<v Speaker 1>Like why why is that?

930
00:39:57.119 --> 00:39:57.239
<v Speaker 2>Why?

931
00:39:57.400 --> 00:39:59.800
<v Speaker 1>Or how come are people just like hating their job

932
00:40:00.159 --> 00:40:03.679
<v Speaker 1>or or why is it that more people are pushing

933
00:40:03.719 --> 00:40:04.760
<v Speaker 1>them for this in their companies?

934
00:40:06.440 --> 00:40:09.119
<v Speaker 2>Maybe it's trade offs. Right If I'm new to the market,

935
00:40:09.199 --> 00:40:12.199
<v Speaker 2>just out of university or something, right, I it feels

936
00:40:12.239 --> 00:40:14.519
<v Speaker 2>like I have to choose a language for the rest

937
00:40:14.519 --> 00:40:16.280
<v Speaker 2>of my life. It's not like that you can learn

938
00:40:16.320 --> 00:40:19.000
<v Speaker 2>new languages, but imagine it's your first language. Is where

939
00:40:19.000 --> 00:40:21.079
<v Speaker 2>you get your experience where you have to build your

940
00:40:21.119 --> 00:40:23.280
<v Speaker 2>CV And do you do this with a new language

941
00:40:23.280 --> 00:40:25.280
<v Speaker 2>that currently doesn't have a big market or do you

942
00:40:25.360 --> 00:40:27.840
<v Speaker 2>do this with a no improven language where lots of

943
00:40:27.880 --> 00:40:30.920
<v Speaker 2>companies higher for and also the big companies higher for. Right,

944
00:40:31.000 --> 00:40:34.400
<v Speaker 2>So that's the choice for developers and same goes for companies. Right.

945
00:40:34.440 --> 00:40:36.719
<v Speaker 2>They do look at market sizes, like how many employees

946
00:40:36.760 --> 00:40:39.119
<v Speaker 2>do I get? What's the you know, that's that's looking

947
00:40:39.119 --> 00:40:41.920
<v Speaker 2>at numbers, that's making business decisions, and that's also trade off,

948
00:40:42.079 --> 00:40:43.760
<v Speaker 2>so I do get it, and then it's also like

949
00:40:43.800 --> 00:40:46.800
<v Speaker 2>the barrier to entry, and there I'm really thankful for

950
00:40:46.840 --> 00:40:50.079
<v Speaker 2>what the Use and Chris McCord do, like presenting these

951
00:40:50.079 --> 00:40:52.519
<v Speaker 2>awesome things, and that really helps to spread the news.

952
00:40:52.639 --> 00:40:55.119
<v Speaker 2>Also things like Lifebook. Like at my day job, I

953
00:40:55.199 --> 00:40:58.320
<v Speaker 2>convert many of the documents and you know often run

954
00:40:58.360 --> 00:41:00.679
<v Speaker 2>this strip, run this and that into Life Books and

955
00:41:00.719 --> 00:41:02.960
<v Speaker 2>that's so much nicer. You get documentation and running the

956
00:41:02.960 --> 00:41:05.800
<v Speaker 2>code at one place you can iterate over it. So

957
00:41:05.880 --> 00:41:08.199
<v Speaker 2>these things really make a good ecosystem that I think

958
00:41:08.199 --> 00:41:10.480
<v Speaker 2>it's worth buying in. But then you need to spread

959
00:41:10.480 --> 00:41:12.000
<v Speaker 2>the news. It needs to grow.

960
00:41:12.280 --> 00:41:15.599
<v Speaker 1>Well. I hope that a lecture does grow. I remember

961
00:41:15.840 --> 00:41:18.760
<v Speaker 1>seeing some people saying that got rid of it because

962
00:41:18.880 --> 00:41:20.360
<v Speaker 1>you know that we didn't have any people who really

963
00:41:20.400 --> 00:41:23.199
<v Speaker 1>understood it. And that's the sad part is when people

964
00:41:23.239 --> 00:41:25.760
<v Speaker 1>wrap it out like I think Bleacher Report people may

965
00:41:25.880 --> 00:41:28.360
<v Speaker 1>know that I think all the electure is basically gone

966
00:41:28.360 --> 00:41:30.920
<v Speaker 1>at Bleacher Report, which is such a sad tale because

967
00:41:30.960 --> 00:41:34.480
<v Speaker 1>it was such a good success story. It's that is

968
00:41:34.840 --> 00:41:35.119
<v Speaker 1>there an.

969
00:41:35.079 --> 00:41:37.039
<v Speaker 2>Outlier or the norm? Like is it a lot of

970
00:41:37.119 --> 00:41:39.519
<v Speaker 2>companies getting out or is it just one famous example?

971
00:41:39.800 --> 00:41:42.480
<v Speaker 1>No, it's just and that's the good part is it's

972
00:41:42.559 --> 00:41:45.679
<v Speaker 1>not the norm in my opinion, it's because like if

973
00:41:45.719 --> 00:41:49.000
<v Speaker 1>you're in management and you see your silver bill go down,

974
00:41:49.360 --> 00:41:53.800
<v Speaker 1>you see all these benefits, why would you promote that

975
00:41:53.840 --> 00:41:56.719
<v Speaker 1>this goes away? Right? If you had all these issues before,

976
00:41:57.000 --> 00:41:59.239
<v Speaker 1>you're paying for all this hardware, all of a sudden,

977
00:41:59.239 --> 00:42:02.559
<v Speaker 1>your hardware builds lash to nearly nothing in comparison what

978
00:42:02.559 --> 00:42:04.039
<v Speaker 1>it was before. So'm like one hundred and fifty down

979
00:42:04.039 --> 00:42:06.280
<v Speaker 1>to eight or five or something like that. Servers, you know,

980
00:42:06.320 --> 00:42:09.679
<v Speaker 1>then then why would you dare to switch to something

981
00:42:09.679 --> 00:42:11.559
<v Speaker 1>else like I would be. It's one of those things

982
00:42:11.599 --> 00:42:13.480
<v Speaker 1>like if it's not broke, don't fix it kind of

983
00:42:13.719 --> 00:42:15.920
<v Speaker 1>kind of things. And that's just something much more performed.

984
00:42:15.920 --> 00:42:18.119
<v Speaker 1>But then again that's still a risk. It's a risk, right,

985
00:42:18.239 --> 00:42:20.360
<v Speaker 1>it's a risk. And usually you don't just convert to

986
00:42:20.400 --> 00:42:23.000
<v Speaker 1>software by like a big wish. It's a process and

987
00:42:23.039 --> 00:42:26.039
<v Speaker 1>it's maybe painful, and maybe you do some decisions that

988
00:42:26.119 --> 00:42:28.119
<v Speaker 1>are outside of the language. It's just like the people

989
00:42:28.159 --> 00:42:31.320
<v Speaker 1>doing coding decisions, and maybe it's too complex, it has

990
00:42:31.360 --> 00:42:33.039
<v Speaker 1>other trade offs, and then you're not happy with that,

991
00:42:33.159 --> 00:42:35.119
<v Speaker 1>but you blame the language and that can go either

992
00:42:35.119 --> 00:42:37.400
<v Speaker 1>way like four or against the X year. Yeah, so

993
00:42:37.440 --> 00:42:39.840
<v Speaker 1>it's never just the easy switch at least. No, it's

994
00:42:39.880 --> 00:42:42.440
<v Speaker 1>not a complex business. Yeah, so, I mean, I think

995
00:42:42.440 --> 00:42:44.400
<v Speaker 1>most of these issues are more political than they are

996
00:42:44.599 --> 00:42:47.360
<v Speaker 1>like technical. It's usually always something outside of the tech.

997
00:42:47.559 --> 00:42:49.599
<v Speaker 1>Very few things are tech related in my in my

998
00:42:49.679 --> 00:42:52.199
<v Speaker 1>opinion from what I've seen, is more so like somebody

999
00:42:52.199 --> 00:42:53.920
<v Speaker 1>doesn't like it, so they get out of it. I've

1000
00:42:54.000 --> 00:42:57.559
<v Speaker 1>implemental Phoenix and stuff for other companies or even Alexus

1001
00:42:57.559 --> 00:43:00.000
<v Speaker 1>to say, and yeah, most of the time you can

1002
00:43:00.079 --> 00:43:02.679
<v Speaker 1>it by with other languages, but you need to start

1003
00:43:02.760 --> 00:43:07.000
<v Speaker 1>seeing the benefits by like actually seeing errors and stuff

1004
00:43:07.000 --> 00:43:09.239
<v Speaker 1>and handling things properly, and then you can start to see, okay,

1005
00:43:09.280 --> 00:43:11.519
<v Speaker 1>this is why this is. This is good. Yeah, but

1006
00:43:11.800 --> 00:43:15.559
<v Speaker 1>you actually had the architecture properly. Yes, that's the point, right.

1007
00:43:15.679 --> 00:43:17.719
<v Speaker 1>And in the past I was back, you know, a

1008
00:43:17.760 --> 00:43:19.800
<v Speaker 1>couple of years ago, I was working on a big

1009
00:43:19.920 --> 00:43:23.519
<v Speaker 1>umbrella elixir project where like it was spread out and

1010
00:43:23.559 --> 00:43:26.119
<v Speaker 1>it ended up, at least to me, being super complex

1011
00:43:26.119 --> 00:43:28.480
<v Speaker 1>and complicated, and I had a hard time just getting

1012
00:43:28.480 --> 00:43:30.519
<v Speaker 1>this into my head and everybody else like to who

1013
00:43:30.599 --> 00:43:32.880
<v Speaker 1>the person who invented the system was like, yeah, it's easy,

1014
00:43:33.119 --> 00:43:35.239
<v Speaker 1>and trying to convince me. And it wouldn't have been

1015
00:43:35.280 --> 00:43:37.360
<v Speaker 1>easy to blame this on the language, you know, Phoenix

1016
00:43:37.400 --> 00:43:40.840
<v Speaker 1>and having Umbrella and those interfaces between all the apps,

1017
00:43:40.840 --> 00:43:43.320
<v Speaker 1>and that I could have blamed umbrellas or feeling so

1018
00:43:43.360 --> 00:43:46.519
<v Speaker 1>alexia on this problem. But maybe it was the architecture, right,

1019
00:43:46.760 --> 00:43:49.039
<v Speaker 1>So you have to see many different projects to actually

1020
00:43:49.039 --> 00:43:51.960
<v Speaker 1>make a fair comparison between languages. But but coming back,

1021
00:43:52.000 --> 00:43:53.679
<v Speaker 1>I mean, I don't even know where the heck we

1022
00:43:53.719 --> 00:43:55.519
<v Speaker 1>can even come back to. I think we went went

1023
00:43:55.559 --> 00:43:58.199
<v Speaker 1>through basically everything. If there's something, I mean already call

1024
00:43:58.239 --> 00:44:00.400
<v Speaker 1>out for if anybody who was willing to help, Is

1025
00:44:00.440 --> 00:44:02.280
<v Speaker 1>there anything that we did mess I.

1026
00:44:02.239 --> 00:44:04.760
<v Speaker 2>Think no, Like if you want to use warnax, let

1027
00:44:04.800 --> 00:44:07.320
<v Speaker 2>me know. Like I'm also super interested in the stories,

1028
00:44:07.360 --> 00:44:08.840
<v Speaker 2>like is it a success? Is that a failure?

1029
00:44:08.880 --> 00:44:09.320
<v Speaker 1>Is it hard?

1030
00:44:09.639 --> 00:44:12.360
<v Speaker 2>Let me know? That also motivates me to continue, right,

1031
00:44:12.639 --> 00:44:15.159
<v Speaker 2>if there's some feedback, and it can be any kind

1032
00:44:15.199 --> 00:44:17.960
<v Speaker 2>of feedback. You know, I'm a German, I'm direct. You

1033
00:44:18.000 --> 00:44:20.280
<v Speaker 2>can just you know, tell me the things. But also

1034
00:44:20.320 --> 00:44:22.920
<v Speaker 2>if you want to contribute it, contribute. Super happy to

1035
00:44:22.920 --> 00:44:25.400
<v Speaker 2>have you on board. I think it's a good project

1036
00:44:25.559 --> 00:44:29.119
<v Speaker 2>that's also more complex than your typical Alex the beginner project,

1037
00:44:29.159 --> 00:44:30.840
<v Speaker 2>so it's not just one gencer, but it's not just

1038
00:44:30.920 --> 00:44:34.719
<v Speaker 2>one Nive or something. It handles the whole story. But

1039
00:44:34.880 --> 00:44:37.360
<v Speaker 2>still it's open source, so you can have a big

1040
00:44:37.440 --> 00:44:39.880
<v Speaker 2>learning experience there. It's it's I think it's a good

1041
00:44:39.960 --> 00:44:41.440
<v Speaker 2>choice for mid level project.

1042
00:44:41.559 --> 00:44:43.840
<v Speaker 1>Okay, great, yeah, testing if there's nothing else. It was

1043
00:44:43.880 --> 00:44:45.840
<v Speaker 1>great there, heavy on the show. Hopefully we're heavy on

1044
00:44:45.880 --> 00:44:47.840
<v Speaker 1>again in the future with something else going on.

1045
00:44:48.119 --> 00:44:49.519
<v Speaker 2>Yes, it's sure. It was really fun.
