WEBVTT

1
00:00:04.679 --> 00:00:07.879
<v Speaker 1>Hey, folks, welcome back to another Ruby Rogues.

2
00:00:08.279 --> 00:00:11.839
<v Speaker 2>This week on our panel we have a Yushinwatya Hello.

3
00:00:11.880 --> 00:00:12.320
<v Speaker 3>Hello.

4
00:00:13.480 --> 00:00:18.559
<v Speaker 1>We also have Valentino Stole and now I'm Charles Maxwood

5
00:00:18.559 --> 00:00:20.960
<v Speaker 1>from Top Endevs. And this week we have a special

6
00:00:21.000 --> 00:00:21.920
<v Speaker 1>guest and that's Emil.

7
00:00:22.039 --> 00:00:24.839
<v Speaker 4>Come hey, everybuddy.

8
00:00:25.879 --> 00:00:30.679
<v Speaker 1>So Emil, I'm just gonna clear my throat because wow, okay,

9
00:00:30.839 --> 00:00:31.160
<v Speaker 1>let me.

10
00:00:31.079 --> 00:00:34.280
<v Speaker 2>Try that again. So Emil, I found you.

11
00:00:34.640 --> 00:00:40.399
<v Speaker 1>I've been corresponding with people some on the discord for Kamal,

12
00:00:41.119 --> 00:00:47.759
<v Speaker 1>which is the deployment technology that DH put out. I

13
00:00:47.759 --> 00:00:49.840
<v Speaker 1>think he made kind of a deal about it at

14
00:00:50.280 --> 00:00:52.920
<v Speaker 1>Rails World last year, and then a whole bunch of

15
00:00:52.920 --> 00:00:56.840
<v Speaker 1>exciting stuff this year with Kamal Proxy and stuff like that.

16
00:00:56.920 --> 00:00:59.719
<v Speaker 1>I mean, I switched over to and I switched over

17
00:00:59.759 --> 00:01:01.560
<v Speaker 1>from Mall to the Mall too, with all much of

18
00:01:01.560 --> 00:01:06.079
<v Speaker 1>help from you and others on there. And I have

19
00:01:06.159 --> 00:01:11.719
<v Speaker 1>to say switching over was a little rough. Having switched over,

20
00:01:11.840 --> 00:01:18.280
<v Speaker 1>it's a lot nicer. So anyway, so beyond kind of

21
00:01:18.280 --> 00:01:21.200
<v Speaker 1>what I know about you from that, what should people

22
00:01:21.239 --> 00:01:21.680
<v Speaker 1>know about you?

23
00:01:23.239 --> 00:01:28.719
<v Speaker 4>Well? So I think, first off, I am a mountaineer,

24
00:01:28.920 --> 00:01:33.959
<v Speaker 4>and in order to facilitate that I live in a

25
00:01:34.040 --> 00:01:36.000
<v Speaker 4>very flat country, so I do a lot of running,

26
00:01:36.120 --> 00:01:39.439
<v Speaker 4>and then I need to pay for my travels, so

27
00:01:39.560 --> 00:01:44.319
<v Speaker 4>I do also engineering. And I've made a career of

28
00:01:44.959 --> 00:01:49.719
<v Speaker 4>doing sort of critical infrastructure or things that have real

29
00:01:49.760 --> 00:01:57.439
<v Speaker 4>world impact and real world consequences if something goes wrong, right,

30
00:01:57.480 --> 00:02:01.159
<v Speaker 4>So both in terms of security and robust list and

31
00:02:01.200 --> 00:02:06.640
<v Speaker 4>things like that. And that's everything from the fintech or

32
00:02:06.640 --> 00:02:12.479
<v Speaker 4>the payment industry, to civil engineering to online voting.

33
00:02:15.000 --> 00:02:15.439
<v Speaker 2>Wow.

34
00:02:16.560 --> 00:02:19.280
<v Speaker 1>Yeah, it sounds like kind of what our topic is here,

35
00:02:19.280 --> 00:02:23.000
<v Speaker 1>which is building critical infrastructure. So you've done some stuff

36
00:02:23.000 --> 00:02:26.719
<v Speaker 1>that I kind of need to work, I guess.

37
00:02:28.240 --> 00:02:32.080
<v Speaker 4>I mean, so a banking obviously needs to work when

38
00:02:32.199 --> 00:02:35.240
<v Speaker 4>people get sort of pissed if they don't get their money.

39
00:02:36.520 --> 00:02:42.520
<v Speaker 4>And then for civil engineering, I worked on tools that

40
00:02:43.520 --> 00:02:49.560
<v Speaker 4>the engineers would use to build the airplanes, which and

41
00:02:49.960 --> 00:02:52.800
<v Speaker 4>run tests on them. Right, so both test benches and

42
00:02:52.840 --> 00:02:55.919
<v Speaker 4>design benches for airplanes. And I mean that has a

43
00:02:56.080 --> 00:02:59.919
<v Speaker 4>real world consequence because they fall out of the sky,

44
00:03:00.120 --> 00:03:05.159
<v Speaker 4>right if you mess it up. Yeah. And then yeah,

45
00:03:05.199 --> 00:03:09.280
<v Speaker 4>online voting, that's the whole thing. And you guys in

46
00:03:09.319 --> 00:03:13.240
<v Speaker 4>the US just went through one one of these messy

47
00:03:13.280 --> 00:03:19.080
<v Speaker 4>events and they're messy everywhere, right, And recently I moved

48
00:03:19.240 --> 00:03:26.000
<v Speaker 4>to two compliance and sort of making trying to make it,

49
00:03:27.439 --> 00:03:30.800
<v Speaker 4>trying to make that easier and a better experience to

50
00:03:31.199 --> 00:03:36.159
<v Speaker 4>become compliant and to obtain certifications.

51
00:03:36.840 --> 00:03:40.719
<v Speaker 2>Right, makes sense, So let's just dive in.

52
00:03:40.800 --> 00:03:44.919
<v Speaker 1>I mean, I'm not I'm trying to think if I've

53
00:03:44.960 --> 00:03:48.039
<v Speaker 1>ever worked on anything that was you know, kind of

54
00:03:48.080 --> 00:03:50.080
<v Speaker 1>at the level of, hey, if this breaks.

55
00:03:49.800 --> 00:03:52.560
<v Speaker 2>Then you know, really bad things happen.

56
00:03:54.520 --> 00:03:56.919
<v Speaker 1>I mean, if it breaks, I've had them come to

57
00:03:56.960 --> 00:03:59.960
<v Speaker 1>me and be upset, like really bad things happened. But right,

58
00:04:00.400 --> 00:04:05.879
<v Speaker 1>it doesn't affect society at large. What's the difference between

59
00:04:05.919 --> 00:04:08.120
<v Speaker 1>working on those apps and working on just kind of

60
00:04:08.120 --> 00:04:11.199
<v Speaker 1>you'r you know you mentioned not e commerce or not

61
00:04:12.520 --> 00:04:14.840
<v Speaker 1>you know, hey I've got to manage my social media

62
00:04:15.120 --> 00:04:17.360
<v Speaker 1>or you know, get podcasts out on time.

63
00:04:18.319 --> 00:04:21.000
<v Speaker 4>Yeah, I mean, there's nothing just to be here, There's

64
00:04:21.120 --> 00:04:26.319
<v Speaker 4>absolutely nothing wrong with that, right, That's just I started

65
00:04:26.360 --> 00:04:30.240
<v Speaker 4>out in that area, as many developers do, right, building

66
00:04:31.759 --> 00:04:34.480
<v Speaker 4>like some ad system when I was very young, and

67
00:04:34.519 --> 00:04:39.240
<v Speaker 4>then moved to some you know, sort of off a platform,

68
00:04:39.319 --> 00:04:42.360
<v Speaker 4>and then I sort of realized that it was it

69
00:04:42.439 --> 00:04:47.519
<v Speaker 4>was just inconsequential in a way, right, I looked at people,

70
00:04:48.319 --> 00:04:50.439
<v Speaker 4>you know, I had people around me. My father was

71
00:04:50.920 --> 00:04:53.439
<v Speaker 4>is a civil engineer, right, and so I have people

72
00:04:53.639 --> 00:04:56.519
<v Speaker 4>in my sort of my family, my near family, that

73
00:04:56.680 --> 00:04:58.920
<v Speaker 4>was building things in the real world. And I was like,

74
00:04:59.519 --> 00:05:01.680
<v Speaker 4>I want to do that, but I do like this

75
00:05:01.839 --> 00:05:04.439
<v Speaker 4>computer stuff, So can we sort of maybe find a

76
00:05:04.439 --> 00:05:06.839
<v Speaker 4>way where I can build things in the real world

77
00:05:07.079 --> 00:05:11.600
<v Speaker 4>just using my computer. And so I slowly started to

78
00:05:11.720 --> 00:05:16.319
<v Speaker 4>shift over into something that was founded more in civil

79
00:05:16.360 --> 00:05:22.399
<v Speaker 4>engineering and sort of industry rather than commerce mm hmm.

80
00:05:23.959 --> 00:05:30.519
<v Speaker 4>And then I started in a fintech company where we

81
00:05:30.519 --> 00:05:34.319
<v Speaker 4>were where I was part of building, building out and

82
00:05:34.360 --> 00:05:37.199
<v Speaker 4>continuing to build on a on a system where you

83
00:05:37.279 --> 00:05:46.680
<v Speaker 4>can basically it's like direct debit bank transfers, but worldwide, okay,

84
00:05:48.240 --> 00:05:52.720
<v Speaker 4>so and and there. It doesn't necessarily mean a lot

85
00:05:52.759 --> 00:05:56.000
<v Speaker 4>to you and me. And it's the same with there's

86
00:05:56.040 --> 00:05:59.040
<v Speaker 4>a bunch of them now, right, like these send money

87
00:05:59.079 --> 00:06:02.319
<v Speaker 4>home types of things. It doesn't mean a lot to

88
00:06:02.360 --> 00:06:04.439
<v Speaker 4>you and me, but it does mean a ton to

89
00:06:04.519 --> 00:06:06.720
<v Speaker 4>those who is on the receiving end of that, right,

90
00:06:07.959 --> 00:06:10.600
<v Speaker 4>because that's like half a year's pay or something that

91
00:06:10.720 --> 00:06:15.199
<v Speaker 4>comes in, right, So it does matter to those people

92
00:06:17.360 --> 00:06:19.720
<v Speaker 4>so so yeah, that was sort of where I ended up.

93
00:06:19.759 --> 00:06:23.839
<v Speaker 4>And we are moving a lot of money, like it

94
00:06:23.839 --> 00:06:26.839
<v Speaker 4>it seems it's one of those where little like it's

95
00:06:26.879 --> 00:06:28.920
<v Speaker 4>it's a lot of tiny things that add up. Right,

96
00:06:28.959 --> 00:06:31.639
<v Speaker 4>There's like millions and millions and millions of dollars being

97
00:06:31.680 --> 00:06:36.439
<v Speaker 4>moved around for that purpose, and you don't want to

98
00:06:36.959 --> 00:06:41.120
<v Speaker 4>miss handle those money. Right. So you are hooking into

99
00:06:41.160 --> 00:06:45.680
<v Speaker 4>the to the banking infrastructure, into Swift and into the

100
00:06:45.720 --> 00:06:51.959
<v Speaker 4>IBAND network and the whole sort of PC compliance and

101
00:06:52.040 --> 00:06:55.879
<v Speaker 4>everything with that, right, so you need to make sure

102
00:06:55.920 --> 00:07:01.279
<v Speaker 4>that the software is robust well tap that testing has

103
00:07:01.319 --> 00:07:04.120
<v Speaker 4>been a main thing of mind for a long time

104
00:07:04.199 --> 00:07:09.360
<v Speaker 4>because of that, and also documented well. Right, So that's

105
00:07:09.399 --> 00:07:13.240
<v Speaker 4>where I sort of started out with being required to

106
00:07:13.360 --> 00:07:15.839
<v Speaker 4>document what I was doing and how it was supposed

107
00:07:15.839 --> 00:07:19.959
<v Speaker 4>to work. Rather than just shipping fast and breaking things.

108
00:07:20.480 --> 00:07:25.759
<v Speaker 4>I was required to test and document, then test, then

109
00:07:26.240 --> 00:07:29.600
<v Speaker 4>stage it, then test some more, then ship and not

110
00:07:29.680 --> 00:07:35.800
<v Speaker 4>break things. So that was a different paradigm. Yeah, so

111
00:07:35.879 --> 00:07:38.399
<v Speaker 4>that's sort of where I first met that, right, And

112
00:07:38.439 --> 00:07:42.319
<v Speaker 4>that was a pretty great experience, and so I was like, oh,

113
00:07:42.480 --> 00:07:45.279
<v Speaker 4>can I have more of this? Can I maybe even

114
00:07:45.319 --> 00:07:50.560
<v Speaker 4>get even closer? Right? Yeah? So that's uh, that's where

115
00:07:50.600 --> 00:07:54.000
<v Speaker 4>all that started. And then I was hooked on the

116
00:07:54.000 --> 00:07:58.120
<v Speaker 4>whole can we test it? Can we build something that

117
00:07:58.240 --> 00:08:02.120
<v Speaker 4>runs Ruby on rails but make a difference to people's

118
00:08:02.160 --> 00:08:06.680
<v Speaker 4>lives like in real world? Right, So this was basically

119
00:08:07.040 --> 00:08:13.680
<v Speaker 4>a payment situation, just building Ruby and rails, and back

120
00:08:13.720 --> 00:08:17.079
<v Speaker 4>then many of the banks didn't have a proper API,

121
00:08:17.199 --> 00:08:19.800
<v Speaker 4>so we ended up scraping a lot and that's you know,

122
00:08:20.199 --> 00:08:22.720
<v Speaker 4>against terms of policy, in terms of service and all

123
00:08:22.759 --> 00:08:25.199
<v Speaker 4>of that, and they were really mad and we went

124
00:08:25.240 --> 00:08:29.040
<v Speaker 4>through that whole spang of getting you know, sort of

125
00:08:29.920 --> 00:08:36.519
<v Speaker 4>scolded for that for a while. Yeah, So that it

126
00:08:36.639 --> 00:08:39.080
<v Speaker 4>was a bit the wild West back then, but it's

127
00:08:39.120 --> 00:08:42.279
<v Speaker 4>definitely gotten better. And I think there's a lot of

128
00:08:42.639 --> 00:08:45.600
<v Speaker 4>again sort of compliance work and lew work that went

129
00:08:45.679 --> 00:08:50.960
<v Speaker 4>into the EU did a lot to make sure that

130
00:08:51.120 --> 00:08:56.559
<v Speaker 4>banks would have not standardized, standardized APIs, but a minimum

131
00:08:56.679 --> 00:09:00.519
<v Speaker 4>level of information that you could retrieve with an A,

132
00:09:00.840 --> 00:09:03.039
<v Speaker 4>which made all of that a lot easier.

133
00:09:03.120 --> 00:09:03.320
<v Speaker 5>Right.

134
00:09:04.159 --> 00:09:07.399
<v Speaker 4>It also means that I can technically build my own

135
00:09:07.440 --> 00:09:10.039
<v Speaker 4>banking app for my own bank account because I have

136
00:09:10.159 --> 00:09:13.240
<v Speaker 4>API access to it. It may not be obvious, it

137
00:09:13.279 --> 00:09:16.919
<v Speaker 4>may be poorly documented, but it is there, and so

138
00:09:16.960 --> 00:09:18.000
<v Speaker 4>I think that's pretty cool.

139
00:09:19.879 --> 00:09:26.399
<v Speaker 1>Yeah, I'm curious, Valentine or I usually have experienced doing

140
00:09:26.440 --> 00:09:27.000
<v Speaker 1>this stuff.

141
00:09:28.879 --> 00:09:30.159
<v Speaker 3>Nothing that critical.

142
00:09:30.240 --> 00:09:30.320
<v Speaker 2>Now.

143
00:09:30.399 --> 00:09:32.440
<v Speaker 3>The closest I kind of came to anyone near that

144
00:09:32.519 --> 00:09:34.919
<v Speaker 3>world was when I worked for transfer Wise, But I

145
00:09:34.960 --> 00:09:38.960
<v Speaker 3>was an iOS developer, so I didn't really have to

146
00:09:39.440 --> 00:09:41.960
<v Speaker 3>do any of the hard stuff. I just made API calls.

147
00:09:42.000 --> 00:09:44.440
<v Speaker 3>But I know they were also doing quite a lot

148
00:09:44.440 --> 00:09:46.639
<v Speaker 3>of the scraping and stuff. There's a lot of selenium

149
00:09:46.639 --> 00:09:49.519
<v Speaker 3>going on behind the head to get into different bank accounts.

150
00:09:49.799 --> 00:09:54.759
<v Speaker 3>It's uh, yeah, it's it's all a bit scary when

151
00:09:54.799 --> 00:09:55.759
<v Speaker 3>you think about it.

152
00:09:58.000 --> 00:10:01.039
<v Speaker 4>Yeah, yeah, it really is, because it's like your whole

153
00:10:01.120 --> 00:10:05.080
<v Speaker 4>banking experience is tied up on some scraper working correctly

154
00:10:05.120 --> 00:10:09.679
<v Speaker 4>and not messing around with the the thousands delimiters and

155
00:10:09.759 --> 00:10:14.120
<v Speaker 4>the the scent comments are different on different regions, right,

156
00:10:14.120 --> 00:10:16.559
<v Speaker 4>so you don't want to mess around with that. I

157
00:10:16.600 --> 00:10:21.480
<v Speaker 4>did transfer some money incorrectly. Luckily, the backbone banking system

158
00:10:21.559 --> 00:10:24.639
<v Speaker 4>is pretty robust as well, so we were able to

159
00:10:24.679 --> 00:10:28.639
<v Speaker 4>basically not move the money anyways, right, but it I

160
00:10:28.679 --> 00:10:38.000
<v Speaker 4>did move far too many money the wrong place. Yeah,

161
00:10:39.120 --> 00:10:40.519
<v Speaker 4>that was a back breaking day.

162
00:10:41.440 --> 00:10:41.879
<v Speaker 2>I'll bet.

163
00:10:42.879 --> 00:10:45.320
<v Speaker 1>So I'm a little curious as we get into this,

164
00:10:48.720 --> 00:10:51.320
<v Speaker 1>Like you mentioned testing, what what is your what does

165
00:10:51.360 --> 00:10:52.679
<v Speaker 1>your testing set up look like?

166
00:10:52.720 --> 00:10:55.360
<v Speaker 2>Because I mean, I I'm sorry.

167
00:10:55.360 --> 00:10:58.120
<v Speaker 1>When I write my test, it's like, okay, it's good

168
00:10:58.159 --> 00:11:01.320
<v Speaker 1>at Like I'm I'm reasonably confident, right, but I'm not

169
00:11:01.399 --> 00:11:05.200
<v Speaker 1>like iron clad confident, like baking level confident that my

170
00:11:05.320 --> 00:11:05.879
<v Speaker 1>code works.

171
00:11:05.960 --> 00:11:06.120
<v Speaker 2>Right.

172
00:11:07.480 --> 00:11:13.720
<v Speaker 4>Yeah, yeah, that's a good question. I tend to not

173
00:11:14.159 --> 00:11:16.480
<v Speaker 4>be too dogmatic. I know there's a lot of like

174
00:11:16.600 --> 00:11:19.000
<v Speaker 4>do this or do that paradigm or do test first

175
00:11:19.120 --> 00:11:25.960
<v Speaker 4>or whatever. I tend to just play around with it

176
00:11:26.039 --> 00:11:31.080
<v Speaker 4>and make myself certain first that this is gonna work

177
00:11:31.120 --> 00:11:35.399
<v Speaker 4>whatever I'm sitting with, and then when I know that

178
00:11:35.519 --> 00:11:37.279
<v Speaker 4>it you know, sort if I can see like okay,

179
00:11:37.320 --> 00:11:40.200
<v Speaker 4>it works, it does what I needed to do, then

180
00:11:40.240 --> 00:11:45.919
<v Speaker 4>it is worth testing, right. And then it's I try

181
00:11:45.960 --> 00:11:50.879
<v Speaker 4>and test on the lowest possible level first, which means

182
00:11:50.919 --> 00:11:55.159
<v Speaker 4>I will start with something like unit tests, and for

183
00:11:55.279 --> 00:11:59.879
<v Speaker 4>that I want to permute everything, right. You want to

184
00:12:00.039 --> 00:12:03.759
<v Speaker 4>make sure that every argument, So you basically start with

185
00:12:03.840 --> 00:12:06.120
<v Speaker 4>the least amount of arguments for a method, and then

186
00:12:06.159 --> 00:12:09.480
<v Speaker 4>you add an argument slowly. In I use aspects, so

187
00:12:10.240 --> 00:12:13.399
<v Speaker 4>it's in every context block or in every described block. Right,

188
00:12:14.080 --> 00:12:17.679
<v Speaker 4>so you're you're certain that every version of every argument

189
00:12:18.200 --> 00:12:25.799
<v Speaker 4>is is tested and has been permuted. Yeah, so that everything,

190
00:12:26.240 --> 00:12:32.120
<v Speaker 4>like every variable has been tested on its own, so

191
00:12:32.200 --> 00:12:35.039
<v Speaker 4>you know how it behaves both with and without that

192
00:12:35.080 --> 00:12:38.799
<v Speaker 4>particular variable, and you also know how it behaves if

193
00:12:38.840 --> 00:12:41.840
<v Speaker 4>the variable has the wrong type.

194
00:12:41.960 --> 00:12:42.159
<v Speaker 2>Right.

195
00:12:44.080 --> 00:12:48.639
<v Speaker 4>So because Ruby isn't quite where we have type safety yet.

196
00:12:50.159 --> 00:12:55.320
<v Speaker 4>There's a lot of work going on with that, but

197
00:12:55.600 --> 00:12:58.879
<v Speaker 4>we aren't there yet. So I, you know, you want

198
00:12:58.879 --> 00:13:06.200
<v Speaker 4>to make sure that we can handle strings, numbers, not strings, truths, boollians, whatever.

199
00:13:06.639 --> 00:13:10.039
<v Speaker 4>There's like I have a little thing that basically says,

200
00:13:10.600 --> 00:13:14.679
<v Speaker 4>take this and just you know, cycle it through all

201
00:13:14.720 --> 00:13:17.240
<v Speaker 4>of the different types it can be, and just put

202
00:13:17.279 --> 00:13:21.519
<v Speaker 4>in garbage so that I know it can not it

203
00:13:21.559 --> 00:13:24.480
<v Speaker 4>doesn't break when a number is presented rather than a

204
00:13:24.519 --> 00:13:29.639
<v Speaker 4>string or something stupid like that. Right, And then you

205
00:13:29.759 --> 00:13:32.200
<v Speaker 4>sort of you slowly move up so you're confident that

206
00:13:32.279 --> 00:13:34.080
<v Speaker 4>this method works, and then you move up to have

207
00:13:34.120 --> 00:13:37.519
<v Speaker 4>recalled it, and then you I what I do is

208
00:13:37.600 --> 00:13:41.360
<v Speaker 4>I then I go through and test that. But I

209
00:13:41.399 --> 00:13:48.960
<v Speaker 4>think opposed to what is DHH preaches or or at

210
00:13:49.039 --> 00:13:51.960
<v Speaker 4>least sort of he he has this idea that you

211
00:13:52.000 --> 00:13:54.279
<v Speaker 4>would go through the entire stack, and I believe that

212
00:13:54.519 --> 00:13:57.519
<v Speaker 4>they had their tests to do that. I tend to

213
00:13:59.080 --> 00:14:02.279
<v Speaker 4>not to sort of stop testing at each level, right,

214
00:14:02.320 --> 00:14:05.879
<v Speaker 4>So model tests are their own thing. And then when

215
00:14:05.919 --> 00:14:11.600
<v Speaker 4>you test the controller, you basically verify that the model

216
00:14:12.080 --> 00:14:15.799
<v Speaker 4>is being called with the expected parameters, because you know

217
00:14:15.879 --> 00:14:18.480
<v Speaker 4>you've already dealt with the parameters on a lower level.

218
00:14:20.000 --> 00:14:23.200
<v Speaker 4>So it's not mocking per se. It's just that I

219
00:14:24.360 --> 00:14:28.519
<v Speaker 4>only need to test that the model was created or

220
00:14:28.759 --> 00:14:31.240
<v Speaker 4>was called. I don't really need to test that it

221
00:14:31.320 --> 00:14:35.200
<v Speaker 4>was the correct arguments, right, because I'm certain about the

222
00:14:35.240 --> 00:14:37.759
<v Speaker 4>correctness of the arguments on a lower level than that.

223
00:14:39.159 --> 00:14:42.440
<v Speaker 4>And then you saw slowly move up, which means that

224
00:14:43.480 --> 00:14:47.080
<v Speaker 4>I find that that means that the individual testing levels.

225
00:14:48.240 --> 00:14:50.320
<v Speaker 4>It gives you a little bit more freedom to sort

226
00:14:50.320 --> 00:14:54.879
<v Speaker 4>of move a model around because it's coupled somewhat on

227
00:14:54.919 --> 00:14:59.159
<v Speaker 4>a test level, but not tremendously, right. I only coupled

228
00:14:59.200 --> 00:15:02.320
<v Speaker 4>the controller the model in the sense that I checked

229
00:15:02.360 --> 00:15:05.039
<v Speaker 4>that the model was called, not that it was called

230
00:15:05.039 --> 00:15:07.799
<v Speaker 4>with a particular set of arguments. So it makes it

231
00:15:07.840 --> 00:15:11.159
<v Speaker 4>a little bit easier to also restructure your tests when

232
00:15:11.159 --> 00:15:15.720
<v Speaker 4>your code change. But it's just a lot of work

233
00:15:15.759 --> 00:15:19.639
<v Speaker 4>on lower level things. I'm a big fan of Spey,

234
00:15:19.879 --> 00:15:24.200
<v Speaker 4>but it's not it's not quite there yet. I think

235
00:15:24.240 --> 00:15:28.240
<v Speaker 4>it works reasonably well, but it's very hard for developers

236
00:15:28.279 --> 00:15:30.799
<v Speaker 4>to use, and so I think we need to do

237
00:15:30.879 --> 00:15:33.679
<v Speaker 4>there needs to be a lot of work done in

238
00:15:34.000 --> 00:15:37.200
<v Speaker 4>terms of making it nice and sexy to use so

239
00:15:37.240 --> 00:15:39.320
<v Speaker 4>that we can get people to use it right.

240
00:15:41.159 --> 00:15:43.320
<v Speaker 6>I'd love to dig in a little bit more on

241
00:15:43.360 --> 00:15:48.720
<v Speaker 6>the aspect because one of the biggest things I see

242
00:15:50.360 --> 00:15:54.919
<v Speaker 6>miss is maybe like skipping over like the maybe some

243
00:15:54.960 --> 00:15:58.240
<v Speaker 6>lower level implementations and then like a system update break

244
00:15:58.320 --> 00:16:01.360
<v Speaker 6>something and it just wasn't covered right, Like how do

245
00:16:01.440 --> 00:16:05.120
<v Speaker 6>you go about, like you know, waiting whether or not

246
00:16:05.159 --> 00:16:08.279
<v Speaker 6>that it's worth it to like actually run like a

247
00:16:08.360 --> 00:16:12.320
<v Speaker 6>system command or an external API call or something like that.

248
00:16:13.679 --> 00:16:19.879
<v Speaker 4>Yeah, So system commands, I usually check just that the

249
00:16:20.000 --> 00:16:25.480
<v Speaker 4>signature of the call is correct and probably that it

250
00:16:25.559 --> 00:16:27.879
<v Speaker 4>returned the right thing right, so that if I hit

251
00:16:27.919 --> 00:16:31.480
<v Speaker 4>the OS, I'm basically testing that I gave it these

252
00:16:31.519 --> 00:16:35.960
<v Speaker 4>parameters and I expected something back like a string or

253
00:16:36.039 --> 00:16:39.919
<v Speaker 4>whatever it is right, because it's so hard to know

254
00:16:40.000 --> 00:16:44.200
<v Speaker 4>what it was supposed to be because sometimes the system

255
00:16:44.240 --> 00:16:49.320
<v Speaker 4>commands will change their signature but not necessarily return value

256
00:16:49.399 --> 00:16:51.679
<v Speaker 4>or the return value, but not the signature. So that's

257
00:16:51.840 --> 00:16:59.840
<v Speaker 4>that's very hard. I try to not go there. I

258
00:17:00.080 --> 00:17:02.559
<v Speaker 4>tried really hard not to go there because it is

259
00:17:02.960 --> 00:17:07.680
<v Speaker 4>it's out of my control. Right on the other end,

260
00:17:07.720 --> 00:17:11.559
<v Speaker 4>when I called other APIs, I definitely test that I

261
00:17:11.680 --> 00:17:14.480
<v Speaker 4>use something like me CR or something. I capture all

262
00:17:14.559 --> 00:17:17.599
<v Speaker 4>the network traffic, and I make sure to do the

263
00:17:17.759 --> 00:17:22.160
<v Speaker 4>same kind of sort of making sure that if I

264
00:17:22.200 --> 00:17:26.000
<v Speaker 4>call it with these arguments that I have control over,

265
00:17:26.240 --> 00:17:31.079
<v Speaker 4>I get this particular response, and if I do something

266
00:17:31.079 --> 00:17:33.680
<v Speaker 4>else then then it breaks right or it gives me

267
00:17:33.720 --> 00:17:39.079
<v Speaker 4>the incorrect response. And I also found that, for example,

268
00:17:39.160 --> 00:17:43.759
<v Speaker 4>with with banking, that one of the cool things we

269
00:17:43.799 --> 00:17:48.839
<v Speaker 4>did was that we basically took all of the historical

270
00:17:49.880 --> 00:17:53.839
<v Speaker 4>records right that we had for all the bank accounts,

271
00:17:53.920 --> 00:17:57.119
<v Speaker 4>and we basically used it as a test bed because

272
00:17:57.160 --> 00:18:00.119
<v Speaker 4>then you can train on that. You can basically say,

273
00:18:00.359 --> 00:18:03.559
<v Speaker 4>if I feeded all of this information that we know happened,

274
00:18:03.839 --> 00:18:06.480
<v Speaker 4>and it happened correctly because it happened, you know, but

275
00:18:07.000 --> 00:18:11.359
<v Speaker 4>a year ago or two or whatever, it should result

276
00:18:11.519 --> 00:18:17.160
<v Speaker 4>in the in in a particular set of of like

277
00:18:17.240 --> 00:18:21.799
<v Speaker 4>it should result in a particular value on the account. Right,

278
00:18:22.319 --> 00:18:24.640
<v Speaker 4>So you can actually use historical data as a test

279
00:18:24.680 --> 00:18:28.160
<v Speaker 4>that and that makes that means that you have a

280
00:18:29.000 --> 00:18:34.279
<v Speaker 4>factual way to check if it's correct or not. So yeah,

281
00:18:34.440 --> 00:18:36.640
<v Speaker 4>I tend to use that as well. I also used

282
00:18:36.680 --> 00:18:41.880
<v Speaker 4>that when when I did software for the for the

283
00:18:42.119 --> 00:18:45.400
<v Speaker 4>for the sort of civil engineering and building flights and

284
00:18:45.480 --> 00:18:48.960
<v Speaker 4>testing that. Right, we also used a lot of existing

285
00:18:49.000 --> 00:18:53.799
<v Speaker 4>information to make sure that we had input output, so

286
00:18:53.839 --> 00:18:56.559
<v Speaker 4>we understood that given these inputs, this is the output

287
00:18:56.599 --> 00:19:01.279
<v Speaker 4>that we would expect. Right, We could basically take old

288
00:19:01.400 --> 00:19:03.799
<v Speaker 4>designs and try and run them through and you can

289
00:19:03.839 --> 00:19:07.559
<v Speaker 4>see if does it break it down like you would expect,

290
00:19:08.279 --> 00:19:12.000
<v Speaker 4>does it run the does it sort of fit to

291
00:19:12.160 --> 00:19:17.440
<v Speaker 4>the engineering standard design standard that we were implementing against.

292
00:19:18.039 --> 00:19:21.240
<v Speaker 4>They also have test and value that you can use, right,

293
00:19:21.319 --> 00:19:24.519
<v Speaker 4>or test data. So it's also about going out and

294
00:19:24.599 --> 00:19:29.720
<v Speaker 4>finding big test data sets that you can use to

295
00:19:30.039 --> 00:19:33.799
<v Speaker 4>also make a statistical sort of approach. Right, I'm not

296
00:19:34.200 --> 00:19:37.960
<v Speaker 4>making any statistical claims, but I am running a lot

297
00:19:38.000 --> 00:19:40.799
<v Speaker 4>of tests on a lot of data that you know,

298
00:19:41.079 --> 00:19:46.039
<v Speaker 4>you can be reasonably certain that that if there were

299
00:19:46.880 --> 00:19:49.200
<v Speaker 4>errors in your system. It would have been caught by

300
00:19:49.400 --> 00:19:54.240
<v Speaker 4>this because it's so much effective effective production data. Right.

301
00:19:55.039 --> 00:19:58.279
<v Speaker 6>Yeah, I imagine that working with like the public sector,

302
00:19:58.319 --> 00:20:01.440
<v Speaker 6>that you would have a lot of access to that data, right,

303
00:20:02.799 --> 00:20:04.000
<v Speaker 6>I guess depending where you live.

304
00:20:05.359 --> 00:20:07.559
<v Speaker 4>Yeah, I mean, I mean interesting enough. None of this

305
00:20:07.720 --> 00:20:12.000
<v Speaker 4>is for the public sector, which is a little bit weird.

306
00:20:12.039 --> 00:20:14.000
<v Speaker 4>You would think that it was, but it actually isn't.

307
00:20:14.000 --> 00:20:19.480
<v Speaker 4>Like the regulation of the aerospace is public sector, right,

308
00:20:19.519 --> 00:20:22.839
<v Speaker 4>but the actual building of airplanes is a private commerce,

309
00:20:22.920 --> 00:20:28.440
<v Speaker 4>ran private industry. And likewise, with banking, the the regulation

310
00:20:28.559 --> 00:20:32.200
<v Speaker 4>of it is public, but the actual banks are private entities,

311
00:20:33.680 --> 00:20:35.240
<v Speaker 4>and likewise.

312
00:20:35.880 --> 00:20:39.000
<v Speaker 6>We find it difficult for like the data access, like

313
00:20:39.160 --> 00:20:43.000
<v Speaker 6>is that data proprietary then for like doing large swaths

314
00:20:43.039 --> 00:20:44.640
<v Speaker 6>of tests or finding it.

315
00:20:47.000 --> 00:20:50.160
<v Speaker 4>Yes, but most of the times the companies are interested

316
00:20:50.200 --> 00:20:53.079
<v Speaker 4>in providing it, right, Like if you if you go

317
00:20:53.119 --> 00:20:58.720
<v Speaker 4>out to big to big airplane or aerospace company and

318
00:20:59.200 --> 00:21:02.039
<v Speaker 4>your unique to design a test system for them or

319
00:21:02.839 --> 00:21:05.480
<v Speaker 4>something to help them build, right, they are interested in

320
00:21:05.519 --> 00:21:07.960
<v Speaker 4>giving you that kinds of dace. So it wasn't that

321
00:21:08.000 --> 00:21:10.359
<v Speaker 4>it was hard. It's just that it is also quite

322
00:21:12.359 --> 00:21:15.599
<v Speaker 4>narrow in scope, Like it's it's more more or less

323
00:21:15.759 --> 00:21:16.799
<v Speaker 4>only for that one.

324
00:21:16.880 --> 00:21:17.039
<v Speaker 5>Right.

325
00:21:17.119 --> 00:21:21.680
<v Speaker 4>So in banking, it would be a lot of records,

326
00:21:21.720 --> 00:21:24.480
<v Speaker 4>but only for one bank, so you would only know

327
00:21:24.519 --> 00:21:28.000
<v Speaker 4>how it looked in one type of account system, right,

328
00:21:28.039 --> 00:21:29.799
<v Speaker 4>and then you would run over your tests and that

329
00:21:30.759 --> 00:21:44.960
<v Speaker 4>and now two seconds all right, yeah, there we go. Hello.

330
00:21:48.440 --> 00:21:53.319
<v Speaker 4>I So, so it's not that it's hard to get,

331
00:21:53.359 --> 00:21:57.359
<v Speaker 4>it's that it is it's quite narrow in terms of

332
00:21:58.480 --> 00:22:01.200
<v Speaker 4>sort of like what, Yeah, it doesn't have a lot

333
00:22:01.240 --> 00:22:03.200
<v Speaker 4>of breadth. You get it for like one bank or

334
00:22:03.279 --> 00:22:07.759
<v Speaker 4>one airplane company, or you get it for one company

335
00:22:07.759 --> 00:22:12.119
<v Speaker 4>who runs elections. Right. Public elections is a bit different

336
00:22:13.680 --> 00:22:16.720
<v Speaker 4>by definition. You don't have any test data because all

337
00:22:16.759 --> 00:22:20.079
<v Speaker 4>of the records are sort of you don't know who

338
00:22:20.519 --> 00:22:24.640
<v Speaker 4>who voted, so you can't know how to test that, right,

339
00:22:24.680 --> 00:22:27.160
<v Speaker 4>So you have to do a different testing paradigm there.

340
00:22:30.119 --> 00:22:30.960
<v Speaker 2>Yeah, that makes sense.

341
00:22:30.960 --> 00:22:34.440
<v Speaker 1>I mean here in the US we have a anonymous

342
00:22:34.440 --> 00:22:37.880
<v Speaker 1>ballot as well, right, yeah, And I don't know how

343
00:22:37.880 --> 00:22:38.759
<v Speaker 1>they do it in other states.

344
00:22:38.799 --> 00:22:40.960
<v Speaker 2>I mean I'm involved in the process here in Utah.

345
00:22:41.000 --> 00:22:45.680
<v Speaker 1>And yeah, you send in your envelope and they with

346
00:22:45.880 --> 00:22:48.519
<v Speaker 1>your ballot in it, and they validate that your like

347
00:22:48.559 --> 00:22:49.920
<v Speaker 1>your signature matches and stuff.

348
00:22:49.920 --> 00:22:50.839
<v Speaker 2>Off the envelope.

349
00:22:51.200 --> 00:22:53.839
<v Speaker 1>But then they pull your ballot out of the envelope

350
00:22:53.880 --> 00:22:58.880
<v Speaker 1>and put it in the pile to be counted, and right,

351
00:22:58.920 --> 00:23:02.440
<v Speaker 1>they don't they track who you voted for in that case,

352
00:23:02.559 --> 00:23:04.640
<v Speaker 1>at least they're not supposed to correct.

353
00:23:04.880 --> 00:23:07.720
<v Speaker 4>And that is also the case for the digital solutions.

354
00:23:09.640 --> 00:23:13.000
<v Speaker 4>A friend of a colleague of mine, Stefan, who is

355
00:23:13.039 --> 00:23:17.440
<v Speaker 4>a cryptographer. He or previous colleague of mine, he did

356
00:23:17.440 --> 00:23:21.599
<v Speaker 4>a lot of work of sort of gathering together a

357
00:23:21.599 --> 00:23:24.160
<v Speaker 4>lot of the academic work so that we could exactly

358
00:23:24.440 --> 00:23:30.680
<v Speaker 4>do that in a cryptographically safe way but online m

359
00:23:31.480 --> 00:23:32.880
<v Speaker 4>and you could also do it in a way that

360
00:23:32.920 --> 00:23:35.079
<v Speaker 4>it was you know, you could track it, and you

361
00:23:35.119 --> 00:23:38.799
<v Speaker 4>could ensure that this was in fact the case, Like

362
00:23:38.839 --> 00:23:41.920
<v Speaker 4>you could give the the lock data and the trace

363
00:23:42.079 --> 00:23:46.480
<v Speaker 4>data to mathematicians and they could verify that mathematically. It

364
00:23:46.559 --> 00:23:49.799
<v Speaker 4>could only ever have worked if these rules were followed,

365
00:23:50.880 --> 00:23:53.680
<v Speaker 4>which was like you know, you anonymized, and you did

366
00:23:54.039 --> 00:23:55.359
<v Speaker 4>you did mixing, and you did a.

367
00:23:55.279 --> 00:23:59.279
<v Speaker 1>Lot of these things, right, right, So you protect the

368
00:23:59.319 --> 00:24:02.119
<v Speaker 1>identity of the voter, but you also ensure that only

369
00:24:02.160 --> 00:24:06.720
<v Speaker 1>people who are legally permitted to vote vote and that

370
00:24:06.799 --> 00:24:08.799
<v Speaker 1>they're only cast one ballot and things like.

371
00:24:08.759 --> 00:24:13.200
<v Speaker 4>That, Yeah, exactly, And the test, the test sort of

372
00:24:13.240 --> 00:24:17.680
<v Speaker 4>the build idea for that and the testing regime for

373
00:24:17.759 --> 00:24:21.039
<v Speaker 4>that is significantly different, right because this isn't sure the

374
00:24:21.039 --> 00:24:24.680
<v Speaker 4>public space to your point earlier, Valentino, this is a

375
00:24:24.720 --> 00:24:28.839
<v Speaker 4>public domain, right, so you you are a bit more scrutinized.

376
00:24:28.880 --> 00:24:33.440
<v Speaker 4>You're also publicly scrutinized by everybody, right because we all

377
00:24:33.440 --> 00:24:38.720
<v Speaker 4>know how it went with the dominion voting machine case, right,

378
00:24:38.799 --> 00:24:41.680
<v Speaker 4>that went real fast, Will Downhill.

379
00:24:42.119 --> 00:24:47.279
<v Speaker 1>Yeah, so yeah, well and you bring up the dominion

380
00:24:47.640 --> 00:24:51.880
<v Speaker 1>voting machine case and whether you believe that they worked

381
00:24:51.960 --> 00:24:57.119
<v Speaker 1>or didn't. There if there's enough population that doesn't trust it,

382
00:24:57.200 --> 00:24:59.319
<v Speaker 1>then it causes problems, right, Yeah.

383
00:25:00.960 --> 00:25:05.039
<v Speaker 4>And that's that's the same everywhere, right, And that's I

384
00:25:05.119 --> 00:25:09.200
<v Speaker 4>found that sort of on a on a completely different

385
00:25:09.279 --> 00:25:14.039
<v Speaker 4>but somehow related topic. I really found that the aerospace

386
00:25:14.319 --> 00:25:17.640
<v Speaker 4>or the airplane industry was was really good because the

387
00:25:19.480 --> 00:25:24.880
<v Speaker 4>what's the American one, the TSB Transportation Safety Board? Is

388
00:25:24.920 --> 00:25:28.920
<v Speaker 4>that tis be right? Yeah, those are the ones that

389
00:25:28.920 --> 00:25:31.920
<v Speaker 4>that they do crash audit that sort of like go

390
00:25:32.039 --> 00:25:39.720
<v Speaker 4>through both them and the European counterparts have a really

391
00:25:39.920 --> 00:25:44.519
<v Speaker 4>really cool way of going about it. They don't ever

392
00:25:44.759 --> 00:25:48.799
<v Speaker 4>go and say, oh, it was that person's fault, right,

393
00:25:49.359 --> 00:25:54.440
<v Speaker 4>if if the person hadn't slept enough, if the person

394
00:25:54.759 --> 00:25:58.720
<v Speaker 4>couldn't read the dials, it is the fault of their

395
00:25:58.759 --> 00:26:02.519
<v Speaker 4>plan that that made him not have enough hours to sleep,

396
00:26:02.559 --> 00:26:05.039
<v Speaker 4>and it is the fault of the dial for not

397
00:26:05.079 --> 00:26:09.480
<v Speaker 4>being visible enough. Right, So it's not They don't ever

398
00:26:09.640 --> 00:26:13.519
<v Speaker 4>cast personal brain or they very rarely cast personal Blane.

399
00:26:13.880 --> 00:26:16.640
<v Speaker 4>And I really thought that was a super cool way

400
00:26:16.720 --> 00:26:19.599
<v Speaker 4>of going about it also just from a sort of

401
00:26:19.640 --> 00:26:24.680
<v Speaker 4>like evaluating if something works well right, just like from

402
00:26:24.720 --> 00:26:27.839
<v Speaker 4>a human perspective, and when you do leadership in tech

403
00:26:27.960 --> 00:26:31.640
<v Speaker 4>or if you diet or lead others. That I found

404
00:26:31.640 --> 00:26:34.759
<v Speaker 4>that really valuable sort of that whole way of thinking

405
00:26:34.799 --> 00:26:39.960
<v Speaker 4>about it. And they also they collect a ton of evidence, right,

406
00:26:40.920 --> 00:26:43.519
<v Speaker 4>They have a very structured way of collecting that before

407
00:26:43.559 --> 00:26:46.759
<v Speaker 4>they then conclude that it works or didn't work, or

408
00:26:46.799 --> 00:26:49.680
<v Speaker 4>that this was the fault of that was the fault.

409
00:26:51.480 --> 00:26:54.240
<v Speaker 4>But they also I think I learned a lot also

410
00:26:54.240 --> 00:26:56.839
<v Speaker 4>in terms of like having redundancy, Like what happens if

411
00:26:56.839 --> 00:27:00.400
<v Speaker 4>this thing break, what happens if your job runner doss run,

412
00:27:00.519 --> 00:27:04.480
<v Speaker 4>How are you alerted? What happens if your email doesn't send.

413
00:27:04.519 --> 00:27:08.039
<v Speaker 4>How are you alerted? How do you have alternative options?

414
00:27:08.079 --> 00:27:11.079
<v Speaker 4>Do you have an alternative email provider that you can

415
00:27:11.079 --> 00:27:14.839
<v Speaker 4>switch to easily? Do you have alternate job runners that

416
00:27:14.920 --> 00:27:18.359
<v Speaker 4>you can switch to easily? Do you have any of this? Right? So,

417
00:27:18.400 --> 00:27:24.079
<v Speaker 4>that redundancy idea ideology was pretty cool, and I'm for

418
00:27:24.240 --> 00:27:29.279
<v Speaker 4>like large scale systems. It pays off to have extras

419
00:27:29.319 --> 00:27:32.519
<v Speaker 4>of these, even though you know, you use somebody like

420
00:27:32.559 --> 00:27:36.319
<v Speaker 4>sent grid or use somebody like mail chimb or something,

421
00:27:36.359 --> 00:27:38.720
<v Speaker 4>and you know, they say that they scale and they

422
00:27:38.799 --> 00:27:42.039
<v Speaker 4>do right, but then ever so often it's down, and

423
00:27:42.079 --> 00:27:44.079
<v Speaker 4>it's pretty nice to have a backup, even if it's

424
00:27:44.079 --> 00:27:46.240
<v Speaker 4>a tiny backup, and even if it's just you know,

425
00:27:46.720 --> 00:27:49.519
<v Speaker 4>up and coming fairly cheap one, it will do the

426
00:27:49.640 --> 00:27:53.000
<v Speaker 4>job for like a day, right, and you will actually

427
00:27:53.039 --> 00:27:55.640
<v Speaker 4>still send stuff out, or you will still process jobs,

428
00:27:55.720 --> 00:27:59.920
<v Speaker 4>or you will steal whatever it is. Right. Also, running

429
00:28:00.599 --> 00:28:03.200
<v Speaker 4>like on the big scale, running something like multi cloud,

430
00:28:03.319 --> 00:28:06.240
<v Speaker 4>or running something I can open stack where you can

431
00:28:06.400 --> 00:28:11.480
<v Speaker 4>actually move to somewhere else pretty fast. There was that

432
00:28:11.559 --> 00:28:16.519
<v Speaker 4>case with that the Australian case where the where the

433
00:28:16.559 --> 00:28:22.079
<v Speaker 4>bank got taken down because someone at Google decided to

434
00:28:22.119 --> 00:28:24.880
<v Speaker 4>delete their account right, for like one hundred and sixty

435
00:28:24.920 --> 00:28:31.440
<v Speaker 4>million US worth of servers just got mute. So for

436
00:28:31.559 --> 00:28:35.079
<v Speaker 4>those cases, it's pretty nice to have a second provider

437
00:28:35.160 --> 00:28:41.000
<v Speaker 4>back up and some way of getting there. Right. That

438
00:28:41.200 --> 00:28:44.839
<v Speaker 4>is more a DevOps problem. It's not really a problem

439
00:28:44.839 --> 00:28:46.680
<v Speaker 4>that I've ever solved. It's a problem that I have,

440
00:28:46.880 --> 00:28:49.400
<v Speaker 4>you know, sort of like assisted with and talked about

441
00:28:49.480 --> 00:28:54.279
<v Speaker 4>and verbalized a lot in companies. But it is to

442
00:28:54.400 --> 00:28:57.359
<v Speaker 4>high degree of develops a solution that needs to go

443
00:28:57.440 --> 00:28:59.920
<v Speaker 4>in there, and not one that I am gonna build.

444
00:29:01.440 --> 00:29:04.519
<v Speaker 6>So you're talking a lot about like people's lives and

445
00:29:05.119 --> 00:29:10.039
<v Speaker 6>you know, their livelihood, their money, like things that sustain life, right,

446
00:29:10.640 --> 00:29:13.880
<v Speaker 6>and so like obviously these infrastructures are critical, like white

447
00:29:13.920 --> 00:29:19.119
<v Speaker 6>tools using are critical. So I'm curious, like what about

448
00:29:19.160 --> 00:29:23.960
<v Speaker 6>like Ruby and Rail's you know specifically feature wise, like

449
00:29:24.160 --> 00:29:27.160
<v Speaker 6>do you see as being like, oh, this is like

450
00:29:28.200 --> 00:29:29.599
<v Speaker 6>part of that critical process.

451
00:29:31.000 --> 00:29:35.720
<v Speaker 4>I think the main part for me is that it

452
00:29:35.920 --> 00:29:39.240
<v Speaker 4>can be built. You can write it so that it

453
00:29:39.279 --> 00:29:44.839
<v Speaker 4>is absolutely readable and understandable what's going on, so you

454
00:29:44.880 --> 00:29:49.599
<v Speaker 4>can reason about the what's going to happen, even without

455
00:29:49.759 --> 00:29:54.279
<v Speaker 4>necessarily understanding the language fully or even without understanding what

456
00:29:54.839 --> 00:29:59.079
<v Speaker 4>this active record method is going to do underneath. Because

457
00:29:59.200 --> 00:30:03.640
<v Speaker 4>stuff is name WILL, and because it's ordered and organized will,

458
00:30:04.000 --> 00:30:06.720
<v Speaker 4>you can reason about what's gonna happen, and you can

459
00:30:06.799 --> 00:30:09.440
<v Speaker 4>have an expectation. And it makes it a lot easier

460
00:30:09.480 --> 00:30:13.519
<v Speaker 4>to build complicated things, like you can go and test

461
00:30:13.559 --> 00:30:18.079
<v Speaker 4>it afterwards, right, But just getting something that's complicated up,

462
00:30:18.359 --> 00:30:21.440
<v Speaker 4>like just getting it up on its legs. It's really

463
00:30:21.559 --> 00:30:25.200
<v Speaker 4>nice to have something that that is structured well and

464
00:30:25.240 --> 00:30:27.920
<v Speaker 4>that you can reason about and that you talk about

465
00:30:28.240 --> 00:30:31.920
<v Speaker 4>sort of what's the consequence of this method or that method?

466
00:30:32.039 --> 00:30:43.599
<v Speaker 5>Right, yeah, yeah, yeah exactly.

467
00:30:47.039 --> 00:30:51.920
<v Speaker 4>But I think and also I find that it's I mean,

468
00:30:51.960 --> 00:30:55.119
<v Speaker 4>I've done a few frameworks throughout my career, right it,

469
00:30:55.359 --> 00:30:57.599
<v Speaker 4>I've always come back to the rails and Ruby, and

470
00:30:57.599 --> 00:31:00.319
<v Speaker 4>I also started there, so maybe i'm by it, but

471
00:31:02.799 --> 00:31:06.039
<v Speaker 4>I haven't found any of the other frameworks that provides

472
00:31:06.920 --> 00:31:11.519
<v Speaker 4>the same sort of consistent experience through every part of

473
00:31:11.559 --> 00:31:15.240
<v Speaker 4>the application, whether or not you're doing low level active

474
00:31:15.240 --> 00:31:19.720
<v Speaker 4>record stuff or you're doing high level system tests or

475
00:31:19.720 --> 00:31:24.680
<v Speaker 4>whatever you're doing. It's consistently the same experience everywhere, which

476
00:31:24.720 --> 00:31:30.200
<v Speaker 4>means that it's fairly easy for a developer to switch

477
00:31:30.319 --> 00:31:34.119
<v Speaker 4>gears and do something else right in the stag. I mean,

478
00:31:34.680 --> 00:31:37.000
<v Speaker 4>so like you can have a person who's sitting and

479
00:31:37.079 --> 00:31:42.240
<v Speaker 4>doing the swift transfer one week, right, and then he

480
00:31:42.319 --> 00:31:45.319
<v Speaker 4>can go and he can look at the webscraper the

481
00:31:45.359 --> 00:31:50.759
<v Speaker 4>next because it's consistently the same experience, and you can

482
00:31:50.839 --> 00:31:52.519
<v Speaker 4>write it in a way if you have a good

483
00:31:52.599 --> 00:31:54.440
<v Speaker 4>sort of if you have a good style guide, and

484
00:31:54.519 --> 00:31:56.920
<v Speaker 4>you have good code review, you can get it to

485
00:31:56.960 --> 00:32:01.240
<v Speaker 4>a point where it's the same experience every time, and

486
00:32:01.279 --> 00:32:06.279
<v Speaker 4>you can get abstraction levels and abstraction layers that feels

487
00:32:06.319 --> 00:32:11.119
<v Speaker 4>the same, and that makes it easy to build something

488
00:32:11.200 --> 00:32:14.559
<v Speaker 4>that where you can also easily plug out something and

489
00:32:14.599 --> 00:32:17.359
<v Speaker 4>put something else in right that you can switch out

490
00:32:17.400 --> 00:32:21.519
<v Speaker 4>one database provider for the other without much plot them right,

491
00:32:22.359 --> 00:32:24.440
<v Speaker 4>or you can do whatever. Whatever it is that you

492
00:32:24.519 --> 00:32:28.720
<v Speaker 4>feel like you need to change can be quite easy

493
00:32:29.119 --> 00:32:32.920
<v Speaker 4>and quite straightforward if you've set it up to be.

494
00:32:33.920 --> 00:32:38.160
<v Speaker 4>And I'm not necessarily talking about modularity in the sidewak

495
00:32:39.039 --> 00:32:44.599
<v Speaker 4>level of aggressiveness that that the Shopify has, right, but

496
00:32:45.160 --> 00:32:47.839
<v Speaker 4>you can you can definitely do something along those lines

497
00:32:47.880 --> 00:32:55.200
<v Speaker 4>with just talking about it, organizing that, organizing the code well,

498
00:32:57.079 --> 00:33:02.519
<v Speaker 4>and and just sort of thinking about how is this

499
00:33:02.640 --> 00:33:05.720
<v Speaker 4>going to be tested. I find that that's also part

500
00:33:05.720 --> 00:33:08.279
<v Speaker 4>of it. Right, It's like, how are we going to

501
00:33:08.319 --> 00:33:11.720
<v Speaker 4>test this? Because if we are going to if we're

502
00:33:11.759 --> 00:33:15.000
<v Speaker 4>going to test it in this particular way or that

503
00:33:15.039 --> 00:33:20.279
<v Speaker 4>particular way, then that that informs the API and the

504
00:33:20.440 --> 00:33:24.640
<v Speaker 4>sort of the interface for it. And a database you

505
00:33:24.799 --> 00:33:29.599
<v Speaker 4>tend to test the same way. You know, if it's

506
00:33:30.079 --> 00:33:33.799
<v Speaker 4>file uploading or downloading, you tend to test that the

507
00:33:33.839 --> 00:33:37.079
<v Speaker 4>same way, which makes it easy to switch out one

508
00:33:38.119 --> 00:33:41.680
<v Speaker 4>component for the other if your test paradigm is the

509
00:33:41.759 --> 00:33:45.240
<v Speaker 4>same right for that component. So I feel that's that's

510
00:33:45.440 --> 00:33:49.240
<v Speaker 4>some of the reasons that I've chosen this again and

511
00:33:49.279 --> 00:33:55.720
<v Speaker 4>again right and also liked j said on his keynote,

512
00:33:56.440 --> 00:33:58.720
<v Speaker 4>this is a one like it can be a one

513
00:33:58.759 --> 00:34:02.400
<v Speaker 4>man army. Right. You can be pretty fast and pretty

514
00:34:03.319 --> 00:34:07.759
<v Speaker 4>dangerous with it, which means you actually need fairly low

515
00:34:07.839 --> 00:34:11.719
<v Speaker 4>hepcount to get somewhere really fast, and you can actually

516
00:34:11.760 --> 00:34:19.480
<v Speaker 4>get something that's really secure, solid, safe, robust and easy

517
00:34:19.519 --> 00:34:22.679
<v Speaker 4>on the eyes and nice to use with only a

518
00:34:22.719 --> 00:34:26.960
<v Speaker 4>handful of people. Right, you can get somewhere with just

519
00:34:27.000 --> 00:34:29.599
<v Speaker 4>one person, but you can definitely get a long way

520
00:34:29.760 --> 00:34:31.159
<v Speaker 4>with a handful of people.

521
00:34:32.880 --> 00:34:35.960
<v Speaker 2>You are so speaking my language, man, this is why.

522
00:34:37.079 --> 00:34:37.559
<v Speaker 4>Yeah.

523
00:34:37.679 --> 00:34:40.039
<v Speaker 1>So, one thing that I'm wondering about with all of

524
00:34:40.039 --> 00:34:44.480
<v Speaker 1>this is, you know, it sounds like depending on what

525
00:34:44.639 --> 00:34:46.639
<v Speaker 1>the concerns are in the app, right, So whether it's

526
00:34:46.679 --> 00:34:50.960
<v Speaker 1>banking or voting or right, you may have different concerns

527
00:34:50.960 --> 00:34:56.159
<v Speaker 1>about up time, verstability or you know, resumability, you know,

528
00:34:56.440 --> 00:35:00.679
<v Speaker 1>if Google deletes all eighteen hundred year servers or you whatever. Right,

529
00:35:03.079 --> 00:35:05.119
<v Speaker 1>So how do you begin to start looking at your

530
00:35:05.119 --> 00:35:09.679
<v Speaker 1>application and saying, well, you know, for example, in banking, right,

531
00:35:09.760 --> 00:35:12.079
<v Speaker 1>we have to make sure that we don't have any

532
00:35:12.159 --> 00:35:18.239
<v Speaker 1>of these kinds of issues bugs show up, right, you know,

533
00:35:18.320 --> 00:35:20.599
<v Speaker 1>make sure our accounting is super robust. But then you're

534
00:35:20.599 --> 00:35:22.880
<v Speaker 1>talking about the voting, and it's hey, we've got to

535
00:35:22.880 --> 00:35:25.440
<v Speaker 1>protect user data and make sure that you're right, so

536
00:35:25.480 --> 00:35:27.679
<v Speaker 1>that the area is a concern or different.

537
00:35:27.679 --> 00:35:29.480
<v Speaker 2>So how do you start to address that? And then

538
00:35:29.519 --> 00:35:31.960
<v Speaker 2>from there, where.

539
00:35:31.719 --> 00:35:34.280
<v Speaker 1>Do you start to dive in and make sure that

540
00:35:34.320 --> 00:35:36.440
<v Speaker 1>you've got a sound strategy for making sure that you're

541
00:35:36.440 --> 00:35:37.480
<v Speaker 1>meeting those requirements.

542
00:35:38.599 --> 00:35:43.559
<v Speaker 4>Yeah, that's a good question. So, for let's just take voting,

543
00:35:43.559 --> 00:35:47.119
<v Speaker 4>because it's up and hot and a topic these days, right,

544
00:35:47.679 --> 00:35:52.559
<v Speaker 4>and so let's just start there. Oh so one of

545
00:35:52.599 --> 00:35:55.360
<v Speaker 4>the one of the things there is that you definitely want,

546
00:35:55.800 --> 00:35:59.920
<v Speaker 4>so I use them privacy. There's a few right there,

547
00:36:00.199 --> 00:36:04.559
<v Speaker 4>like the whole user privacy, and then there's the vote secrecy,

548
00:36:04.920 --> 00:36:09.480
<v Speaker 4>and then there is the it needs to be received free,

549
00:36:09.760 --> 00:36:15.320
<v Speaker 4>and like there's a bunch of these academic properties of

550
00:36:15.599 --> 00:36:21.119
<v Speaker 4>a vote and an election, right, and you go through

551
00:36:21.199 --> 00:36:23.840
<v Speaker 4>each of those and you effect you just sort of

552
00:36:23.840 --> 00:36:25.400
<v Speaker 4>sit down and you start at one and then you

553
00:36:25.480 --> 00:36:27.239
<v Speaker 4>try and figure out how to do that. Right, This

554
00:36:27.360 --> 00:36:30.719
<v Speaker 4>is really the job of the cryptographer, like how do

555
00:36:30.760 --> 00:36:35.360
<v Speaker 4>we get this organized so that we match all of

556
00:36:35.400 --> 00:36:40.440
<v Speaker 4>these and then once we have a viable protocol that

557
00:36:40.559 --> 00:36:44.000
<v Speaker 4>will do this, then the developers come in and we

558
00:36:44.079 --> 00:36:46.639
<v Speaker 4>look at the protocol and we go like, okay, this

559
00:36:46.760 --> 00:36:50.639
<v Speaker 4>thing is about encrypting the vote. That needs to happen

560
00:36:50.679 --> 00:36:53.000
<v Speaker 4>as early as we can possibly get it to happen,

561
00:36:53.360 --> 00:36:56.320
<v Speaker 4>which means it needs to happen in the voter's device. Right,

562
00:36:57.199 --> 00:37:00.920
<v Speaker 4>so we need to generate we need to pick a

563
00:37:02.039 --> 00:37:06.039
<v Speaker 4>pick a curve cryptography curve, and then we need to

564
00:37:06.519 --> 00:37:10.000
<v Speaker 4>basically generate key pass in the device, and we need

565
00:37:10.039 --> 00:37:13.880
<v Speaker 4>to encrypt it as early as possible. And so you go,

566
00:37:14.000 --> 00:37:16.719
<v Speaker 4>you go through sort of like rigorously and slowly and

567
00:37:16.840 --> 00:37:20.320
<v Speaker 4>just sort of reason about when will this part of

568
00:37:20.360 --> 00:37:23.440
<v Speaker 4>the process happen and where does it need to happen,

569
00:37:24.679 --> 00:37:29.079
<v Speaker 4>sort of more on our timeline. Then we need to

570
00:37:29.119 --> 00:37:32.840
<v Speaker 4>transmit the vote. We transmit the vote to the server,

571
00:37:32.920 --> 00:37:37.559
<v Speaker 4>and then the server needs to basically allow if you

572
00:37:37.599 --> 00:37:39.840
<v Speaker 4>need if you need to allow tracking, or if you

573
00:37:39.880 --> 00:37:42.559
<v Speaker 4>need to allow receipts or whatever is the property you

574
00:37:42.599 --> 00:37:45.199
<v Speaker 4>need to have, then you need to figure out a

575
00:37:45.239 --> 00:37:49.199
<v Speaker 4>way to provide that at this point. And then you

576
00:37:49.280 --> 00:37:55.000
<v Speaker 4>go on to something like anonymisation, which is effectively where

577
00:37:55.039 --> 00:37:58.159
<v Speaker 4>you take one envelope out of the other envelope right

578
00:37:58.199 --> 00:38:03.000
<v Speaker 4>to do the analogy that needs to happen in a

579
00:38:03.119 --> 00:38:08.599
<v Speaker 4>way that you can prove that it happened. So you

580
00:38:08.679 --> 00:38:11.079
<v Speaker 4>need to have a good trace here. You need to

581
00:38:11.079 --> 00:38:14.559
<v Speaker 4>have good locks and traces that you can publicly show

582
00:38:17.159 --> 00:38:19.199
<v Speaker 4>and then you know, so you sort of move through

583
00:38:19.239 --> 00:38:22.079
<v Speaker 4>the chain sort of like the the event of an

584
00:38:22.280 --> 00:38:26.679
<v Speaker 4>of a thing. Right, it's the same, and so you

585
00:38:26.760 --> 00:38:29.760
<v Speaker 4>sort of need to reason about where is it going

586
00:38:29.800 --> 00:38:32.119
<v Speaker 4>to happen. That gives you some ideas should we need

587
00:38:32.159 --> 00:38:34.480
<v Speaker 4>do we need a web app? Do we need a

588
00:38:34.519 --> 00:38:38.079
<v Speaker 4>mobile device, mobile app, do we need do we need

589
00:38:38.119 --> 00:38:41.079
<v Speaker 4>to run cryptography, do we need to run something advanced

590
00:38:41.079 --> 00:38:43.199
<v Speaker 4>on the user's device, or is the user's device just

591
00:38:43.199 --> 00:38:48.440
<v Speaker 4>a portal? And and that gives you sort of ideas

592
00:38:48.480 --> 00:38:53.239
<v Speaker 4>on or some insight into how this should be organized,

593
00:38:53.280 --> 00:38:55.519
<v Speaker 4>how they should be tested, how they should be planned

594
00:38:55.519 --> 00:39:02.239
<v Speaker 4>out right, But most importantly for for voting, is basically

595
00:39:02.280 --> 00:39:07.440
<v Speaker 4>making sure that everything is tracked. And we grabbed part

596
00:39:07.480 --> 00:39:10.760
<v Speaker 4>of the concept of blockchain, which is hash chain, right

597
00:39:11.400 --> 00:39:14.679
<v Speaker 4>to basically hash everything together so you can't move stuff

598
00:39:14.719 --> 00:39:18.079
<v Speaker 4>in the middle without everybody being able to know right,

599
00:39:18.639 --> 00:39:43.360
<v Speaker 4>things like that. That's all yes, nice, that's nat w

600
00:39:45.880 --> 00:39:51.880
<v Speaker 4>And for for like for banking, right, you want to

601
00:39:52.199 --> 00:39:55.119
<v Speaker 4>you want to make sure that the point is to

602
00:39:55.119 --> 00:39:57.440
<v Speaker 4>get money from A to B. So you want to

603
00:39:57.519 --> 00:40:00.719
<v Speaker 4>reason about, well, first off, how am I going to

604
00:40:00.800 --> 00:40:04.840
<v Speaker 4>get the number that they intend to send? Right, like,

605
00:40:04.960 --> 00:40:07.559
<v Speaker 4>where does that come from? Where does the where does

606
00:40:07.599 --> 00:40:12.760
<v Speaker 4>the sort of outgoing amount of money come from? This

607
00:40:12.880 --> 00:40:19.039
<v Speaker 4>is the second one. It's it's hard to be home

608
00:40:19.079 --> 00:40:24.360
<v Speaker 4>alone with with kids. But so you want to basically say, okay,

609
00:40:24.400 --> 00:40:27.199
<v Speaker 4>so where does the money come from? And then you

610
00:40:27.199 --> 00:40:30.000
<v Speaker 4>want to reason amount well, how can I prove that

611
00:40:30.920 --> 00:40:35.079
<v Speaker 4>the money that came from there that I got it right? Like,

612
00:40:35.440 --> 00:40:38.239
<v Speaker 4>how can I make sure that the intent was to

613
00:40:38.280 --> 00:40:40.239
<v Speaker 4>send it to me? How can I make sure that

614
00:40:40.360 --> 00:40:45.239
<v Speaker 4>the amount was correct? Right? Because like, like we talked

615
00:40:45.239 --> 00:40:48.400
<v Speaker 4>about earlier with transfer wise, for example, there is a

616
00:40:48.400 --> 00:40:51.559
<v Speaker 4>lot of web scraping. There's a lot of this sort

617
00:40:51.559 --> 00:40:56.159
<v Speaker 4>of craziness going around less so now more so then right,

618
00:40:56.679 --> 00:40:59.360
<v Speaker 4>And you want to make sure that you have I

619
00:40:59.400 --> 00:41:01.559
<v Speaker 4>ever done it a few times that you were quite

620
00:41:01.639 --> 00:41:04.480
<v Speaker 4>confident that you've run it on big data sets, Like

621
00:41:04.519 --> 00:41:07.280
<v Speaker 4>you need to be certain that you can pass these

622
00:41:07.880 --> 00:41:13.519
<v Speaker 4>things correctly, and then you want to sort of grab

623
00:41:13.559 --> 00:41:17.679
<v Speaker 4>that information and then we get into the whole banging

624
00:41:17.679 --> 00:41:19.679
<v Speaker 4>of how do you then move them? There's like swift

625
00:41:19.760 --> 00:41:22.880
<v Speaker 4>and that's pretty taken care of. The only problem here

626
00:41:23.000 --> 00:41:25.760
<v Speaker 4>was that it was slow. Right, So what we would

627
00:41:25.800 --> 00:41:29.559
<v Speaker 4>do is that we would basically assume that if we

628
00:41:29.599 --> 00:41:33.679
<v Speaker 4>could read the intended money here, we could effectively pay

629
00:41:33.719 --> 00:41:36.440
<v Speaker 4>it out here immediately and then just do the in

630
00:41:36.519 --> 00:41:41.000
<v Speaker 4>between transfer later. So we would basically have big stacks

631
00:41:41.000 --> 00:41:43.360
<v Speaker 4>of money around the world and we could immediately pay

632
00:41:43.400 --> 00:41:48.400
<v Speaker 4>out locally or take money in locally and then we

633
00:41:48.440 --> 00:41:53.599
<v Speaker 4>would transfer later. So in that case, it was more

634
00:41:53.760 --> 00:41:56.320
<v Speaker 4>question of can you verify the amount here, and can

635
00:41:56.360 --> 00:41:59.119
<v Speaker 4>you verify that it's the sort of the correct amount

636
00:41:59.119 --> 00:42:02.280
<v Speaker 4>and the correct intended amount, and can you then make

637
00:42:03.039 --> 00:42:12.079
<v Speaker 4>that payout over here? Common as then can you do

638
00:42:12.159 --> 00:42:17.760
<v Speaker 4>the payout here? Is there sufficient funds? And then after

639
00:42:17.880 --> 00:42:21.199
<v Speaker 4>that you sort of say, okay, now we've we've effectively

640
00:42:21.239 --> 00:42:23.639
<v Speaker 4>solved the user journey, right, we've taken money in, we've

641
00:42:23.639 --> 00:42:26.679
<v Speaker 4>paid money out where effectively the user is happy or

642
00:42:26.760 --> 00:42:30.559
<v Speaker 4>both users are happy. Right, nobody knows that we didn't

643
00:42:30.559 --> 00:42:34.599
<v Speaker 4>actually move the money, and then we can take you know,

644
00:42:34.840 --> 00:42:37.760
<v Speaker 4>take it slow, just do it properly, make sure that

645
00:42:37.800 --> 00:42:41.000
<v Speaker 4>we interact with the Swift network. That's a bit slower.

646
00:42:41.519 --> 00:42:45.000
<v Speaker 4>So you need to have a buffer in both ends

647
00:42:45.039 --> 00:42:53.360
<v Speaker 4>to do it right and the things and the most

648
00:42:53.719 --> 00:42:59.679
<v Speaker 4>important part here is the ability to scrape. Right. So

649
00:42:59.719 --> 00:43:02.280
<v Speaker 4>when the critical points here was that you have to

650
00:43:02.320 --> 00:43:07.920
<v Speaker 4>be able to always scrape these websites in some capacity,

651
00:43:07.960 --> 00:43:12.079
<v Speaker 4>and you have to actually write your your code back

652
00:43:12.119 --> 00:43:15.199
<v Speaker 4>then it was you know, scraping. You have to write

653
00:43:15.199 --> 00:43:20.719
<v Speaker 4>it quite robustly and sort of reason about what happens

654
00:43:20.719 --> 00:43:24.360
<v Speaker 4>if the layout changes, because banks change the layout surprisingly

655
00:43:24.400 --> 00:43:28.239
<v Speaker 4>more than you would think because they don't care about

656
00:43:28.440 --> 00:43:31.199
<v Speaker 4>your ability to scrape it. That's not their business, right,

657
00:43:31.559 --> 00:43:33.679
<v Speaker 4>which is fair. It just means that you have to

658
00:43:33.679 --> 00:43:36.840
<v Speaker 4>be you have to think about the robustness of a

659
00:43:36.880 --> 00:43:41.199
<v Speaker 4>scraper like that, because what happens if the if the

660
00:43:41.239 --> 00:43:43.760
<v Speaker 4>item is not classified the same, if the dumb element

661
00:43:43.800 --> 00:43:45.760
<v Speaker 4>doesn't have the same class or the same idea as

662
00:43:45.800 --> 00:43:48.360
<v Speaker 4>it used to have? Can we find it? By reasoning

663
00:43:48.440 --> 00:43:51.920
<v Speaker 4>with words like can we figure out well, if it's

664
00:43:52.320 --> 00:43:56.320
<v Speaker 4>like if it says some, can we maybe then figure

665
00:43:56.320 --> 00:43:59.440
<v Speaker 4>out what's over here next to it? Because that might

666
00:43:59.519 --> 00:44:02.159
<v Speaker 4>be then but I'm looking for, right, So there's sort

667
00:44:02.199 --> 00:44:07.159
<v Speaker 4>of like reasoning like that that that goes on. That's yeah.

668
00:44:07.199 --> 00:44:10.519
<v Speaker 4>And then there's accounting, like a lot of accounting, a

669
00:44:10.519 --> 00:44:14.679
<v Speaker 4>lot of keeping tracks just for legal, legal in compliance

670
00:44:14.719 --> 00:44:19.159
<v Speaker 4>reasons on where is the money going, who's it going

671
00:44:19.239 --> 00:44:22.920
<v Speaker 4>to KYC, all of these. There's a bunch of tooling

672
00:44:23.800 --> 00:44:27.159
<v Speaker 4>after that, right, which is sort of where I was

673
00:44:27.159 --> 00:44:29.440
<v Speaker 4>introduced to this whole compliance thing, like how do you

674
00:44:29.480 --> 00:44:32.079
<v Speaker 4>make sure that the people you're operating with I in

675
00:44:32.119 --> 00:44:34.559
<v Speaker 4>fact the people that they say they are, and I

676
00:44:34.679 --> 00:44:36.920
<v Speaker 4>in fact the right people that you're supposed to be

677
00:44:36.960 --> 00:44:40.280
<v Speaker 4>operating with. Right, So that was also a journey like

678
00:44:40.320 --> 00:44:42.599
<v Speaker 4>how do you even know that? How do you make

679
00:44:42.800 --> 00:44:49.519
<v Speaker 4>tooling for them to identify themselves at the latest possible time.

680
00:44:49.599 --> 00:44:52.800
<v Speaker 4>So it's the least amount of sort of burden or

681
00:44:52.840 --> 00:44:56.199
<v Speaker 4>the least amount of friction and make it as easy

682
00:44:56.239 --> 00:44:59.519
<v Speaker 4>as possible. Right, there's a bunch of proeters out there

683
00:44:59.599 --> 00:45:01.400
<v Speaker 4>that that can help you do that. You can also

684
00:45:01.480 --> 00:45:05.280
<v Speaker 4>do it yourself. It's not super complicated, but you are

685
00:45:05.360 --> 00:45:08.800
<v Speaker 4>now dealing with people's private information because now you maybe

686
00:45:08.800 --> 00:45:11.280
<v Speaker 4>have a copy of the passport. How do you deal

687
00:45:11.320 --> 00:45:13.039
<v Speaker 4>with a copy of a passport? You have to be

688
00:45:13.400 --> 00:45:14.920
<v Speaker 4>you have to sort of be like, Okay, where do

689
00:45:14.960 --> 00:45:18.360
<v Speaker 4>I store this? How do I make sure that it's encrypted?

690
00:45:18.440 --> 00:45:20.199
<v Speaker 4>How do I make sure that none of the none

691
00:45:20.320 --> 00:45:22.960
<v Speaker 4>of the developers can access this? Right? Because you don't

692
00:45:22.960 --> 00:45:25.800
<v Speaker 4>want developers to just as a sh onto the box

693
00:45:25.920 --> 00:45:27.960
<v Speaker 4>and just be like, oh, let me just download all

694
00:45:28.000 --> 00:45:30.599
<v Speaker 4>the attachments. So you need to be you need to

695
00:45:30.599 --> 00:45:33.239
<v Speaker 4>make reasons, yes, or need to think about how do

696
00:45:33.280 --> 00:45:39.599
<v Speaker 4>you then protect this data from yourself in some way? Right? Yes,

697
00:45:39.800 --> 00:45:42.920
<v Speaker 4>that it goes deep and it goes far. Right, You

698
00:45:42.960 --> 00:45:46.039
<v Speaker 4>can talk about this for a long time and about

699
00:45:46.079 --> 00:45:48.559
<v Speaker 4>all the reasonings you have to make, but at some

700
00:45:48.639 --> 00:45:51.800
<v Speaker 4>point you also have to protect your systems from other

701
00:45:51.880 --> 00:45:58.840
<v Speaker 4>developers from other Also high level people in the organization

702
00:45:59.280 --> 00:46:03.000
<v Speaker 4>needs to be kept out because the higher up you

703
00:46:03.039 --> 00:46:06.800
<v Speaker 4>are the most the spear fishing you are or whaling

704
00:46:07.039 --> 00:46:12.599
<v Speaker 4>you are effectively the subject of, and the greater the risk. Right,

705
00:46:12.760 --> 00:46:16.159
<v Speaker 4>So you want people to not have access, maybe you

706
00:46:16.199 --> 00:46:21.480
<v Speaker 4>even want the CTO to not have access. Like there's

707
00:46:21.519 --> 00:46:25.519
<v Speaker 4>a bunch of considerations like this. In the banking one,

708
00:46:26.960 --> 00:46:29.559
<v Speaker 4>I was a senior developer, I had access. Then we

709
00:46:29.719 --> 00:46:34.079
<v Speaker 4>had the one of the compliance officers, she had access

710
00:46:34.199 --> 00:46:38.119
<v Speaker 4>to the Swift network. And then but but the CTO

711
00:46:38.280 --> 00:46:46.400
<v Speaker 4>and the head of sort of the COO type person

712
00:46:46.480 --> 00:46:49.599
<v Speaker 4>didn't write because that would it post too much of

713
00:46:49.599 --> 00:46:52.880
<v Speaker 4>a risk. So there's also like these human factors you

714
00:46:52.920 --> 00:46:56.159
<v Speaker 4>have to think about when you reason about the security

715
00:46:56.239 --> 00:47:01.239
<v Speaker 4>of a system that that actually impacts and it has

716
00:47:01.320 --> 00:47:05.599
<v Speaker 4>something to do for real world people. That was a

717
00:47:05.719 --> 00:47:06.400
<v Speaker 4>very long spiel.

718
00:47:06.519 --> 00:47:11.320
<v Speaker 3>Sorry, It's fascinating when there's so much on the line,

719
00:47:11.440 --> 00:47:13.920
<v Speaker 3>like most of the apps have worked on, like if

720
00:47:13.960 --> 00:47:16.400
<v Speaker 3>it went down, it's like yeah, fine, o kay, it's

721
00:47:16.440 --> 00:47:19.119
<v Speaker 3>not ideal, but it's not the end of the world.

722
00:47:20.360 --> 00:47:22.960
<v Speaker 3>I kind of want to pick up on something you

723
00:47:23.000 --> 00:47:26.119
<v Speaker 3>mentioned quite a while ago, actually on about type checking

724
00:47:26.199 --> 00:47:30.400
<v Speaker 3>and sobay and stuff like that, Like, I'm very much

725
00:47:30.440 --> 00:47:35.440
<v Speaker 3>a fan of the dynamic typing. I do have a

726
00:47:35.480 --> 00:47:40.719
<v Speaker 3>background in static programming, like because I started as a

727
00:47:40.760 --> 00:47:42.480
<v Speaker 3>mobile developers, so I spent a lot of time with

728
00:47:42.519 --> 00:47:46.760
<v Speaker 3>objectivecy with Java and with Swift, So I do have

729
00:47:46.800 --> 00:47:49.719
<v Speaker 3>that background. But ever since I kind of switched to Ruby,

730
00:47:50.400 --> 00:47:53.519
<v Speaker 3>I just love that dynamic style and I just find

731
00:47:53.519 --> 00:47:56.679
<v Speaker 3>it easier to work with. But I also get that

732
00:47:56.719 --> 00:48:03.519
<v Speaker 3>when it's critical infrastructure that type checking it's just almost essential.

733
00:48:04.119 --> 00:48:07.559
<v Speaker 3>So I'm curious, but why you went with Ruby and

734
00:48:07.679 --> 00:48:12.760
<v Speaker 3>Rails when the infrastructure is so critical and type checking

735
00:48:12.800 --> 00:48:15.559
<v Speaker 3>is scary something that's important to you, and that it's

736
00:48:15.599 --> 00:48:18.559
<v Speaker 3>kind of bolted onto the language, So what motivated you

737
00:48:18.599 --> 00:48:20.639
<v Speaker 3>to go with Ruby and Rails instead of something that

738
00:48:20.639 --> 00:48:21.639
<v Speaker 3>has it natively?

739
00:48:22.559 --> 00:48:30.199
<v Speaker 4>Yeah, So it is it is to high degree about

740
00:48:30.280 --> 00:48:36.039
<v Speaker 4>the speed and the very well built testing frameworks that

741
00:48:36.199 --> 00:48:39.440
<v Speaker 4>is around it. Right, So even if it's not statically typed,

742
00:48:39.480 --> 00:48:41.400
<v Speaker 4>you can test a lot of things, and you can

743
00:48:41.440 --> 00:48:45.079
<v Speaker 4>test it in a lot of ways. Typing is just

744
00:48:45.400 --> 00:48:48.159
<v Speaker 4>or types. It's just one way of ensuring that the

745
00:48:48.239 --> 00:48:52.840
<v Speaker 4>data is correct. That doesn't necessarily guarantee that the actual

746
00:48:52.920 --> 00:48:55.840
<v Speaker 4>data you are trying to read in is of the

747
00:48:55.840 --> 00:48:57.920
<v Speaker 4>correct format or whatever. It just means that once you

748
00:48:58.000 --> 00:48:59.639
<v Speaker 4>read it in, it will fail because it's not the

749
00:48:59.679 --> 00:49:02.280
<v Speaker 4>right time, So it depends a little on what you're

750
00:49:02.559 --> 00:49:05.400
<v Speaker 4>trying to do. You can also, because it's dynamic, you

751
00:49:05.440 --> 00:49:09.440
<v Speaker 4>can then sort of do things like, Okay, you gave

752
00:49:09.599 --> 00:49:12.760
<v Speaker 4>you told me it was a CSV, and it's obviously

753
00:49:12.800 --> 00:49:15.800
<v Speaker 4>not a CSV, and it obviously doesn't have a string

754
00:49:15.840 --> 00:49:17.559
<v Speaker 4>where you told me a string was supposed to be.

755
00:49:17.880 --> 00:49:20.400
<v Speaker 4>But I can see how this can look like a string.

756
00:49:20.480 --> 00:49:22.239
<v Speaker 4>Maybe I can just make an interest string for you

757
00:49:22.280 --> 00:49:25.760
<v Speaker 4>and move on right, Like, you have these options of

758
00:49:26.159 --> 00:49:28.280
<v Speaker 4>making things go a little bit fast and a little

759
00:49:28.280 --> 00:49:32.719
<v Speaker 4>bit smoother because you can sort of just fiddle a

760
00:49:32.719 --> 00:49:37.800
<v Speaker 4>little around with it. What tends to happen in these

761
00:49:37.840 --> 00:49:41.880
<v Speaker 4>systems as they grow older and as they mature is

762
00:49:41.920 --> 00:49:45.440
<v Speaker 4>that part of the core of the system gets replaced

763
00:49:45.480 --> 00:49:48.320
<v Speaker 4>with something like Java or Rust or something like that,

764
00:49:49.519 --> 00:49:51.599
<v Speaker 4>so that once you have sort of you have a

765
00:49:52.159 --> 00:49:56.360
<v Speaker 4>really solid part let's say the transfer engine, right that

766
00:49:56.440 --> 00:49:59.320
<v Speaker 4>transfers from one account to the other, that hooks onto

767
00:49:59.320 --> 00:50:02.039
<v Speaker 4>the Swift network. Maybe you want to move that into

768
00:50:02.079 --> 00:50:07.599
<v Speaker 4>Genva or something that's more standing, more slow, but more

769
00:50:08.599 --> 00:50:12.760
<v Speaker 4>type robust and more maybe even performance optimized for io

770
00:50:12.960 --> 00:50:16.559
<v Speaker 4>or whatever it is that you need. Right, But then

771
00:50:17.960 --> 00:50:20.039
<v Speaker 4>what tends to happen is that you still want the

772
00:50:20.159 --> 00:50:23.360
<v Speaker 4>speed and ease of using Ruby on rails and having

773
00:50:24.079 --> 00:50:26.840
<v Speaker 4>only a few developers do a lot of features so

774
00:50:26.880 --> 00:50:29.119
<v Speaker 4>you can figure out what's good or bad, or what

775
00:50:29.199 --> 00:50:33.199
<v Speaker 4>works or doesn't, or do a lot of development around

776
00:50:33.679 --> 00:50:38.000
<v Speaker 4>trying out this new standard to verify with the engineers

777
00:50:38.000 --> 00:50:41.440
<v Speaker 4>that it will in fact test correctly with this airplane,

778
00:50:41.599 --> 00:50:47.079
<v Speaker 4>or you know, sort of having that capability to do

779
00:50:47.199 --> 00:50:52.920
<v Speaker 4>feature spikes and to do tests or like mini projects.

780
00:50:55.000 --> 00:50:57.920
<v Speaker 4>It seems to me that that is to some dey

781
00:50:58.199 --> 00:51:04.079
<v Speaker 4>lost when you use a more as well some other language. Right,

782
00:51:04.559 --> 00:51:08.639
<v Speaker 4>But but you are right, like, once you have it down,

783
00:51:08.760 --> 00:51:10.920
<v Speaker 4>once you have it locked in, once you don't have

784
00:51:11.000 --> 00:51:13.719
<v Speaker 4>any changes there, what tends to happen is it gets

785
00:51:13.719 --> 00:51:17.440
<v Speaker 4>replaced with something that's fast or better for suited for

786
00:51:17.519 --> 00:51:23.159
<v Speaker 4>the purpose. Yeah, I've seen that happen. So the reasoning

787
00:51:23.280 --> 00:51:26.239
<v Speaker 4>is that you can go really fast with quite few people,

788
00:51:26.280 --> 00:51:30.320
<v Speaker 4>and you can actually get something that's meaningful, that will

789
00:51:30.360 --> 00:51:33.800
<v Speaker 4>affect people's lives, that will better somebody's life. You can

790
00:51:33.880 --> 00:51:37.920
<v Speaker 4>get it done pretty quickly, right, Like you can get

791
00:51:38.039 --> 00:51:45.440
<v Speaker 4>a a design system for to to basically do design

792
00:51:45.519 --> 00:51:49.320
<v Speaker 4>some We're not talking like three D sketches of aeroplanes

793
00:51:49.360 --> 00:51:51.760
<v Speaker 4>that that's not necessarily how you design all of it.

794
00:51:52.119 --> 00:51:53.800
<v Speaker 4>That's just the building of it. But you also need

795
00:51:53.840 --> 00:51:56.239
<v Speaker 4>to reason about the logic of who does who does,

796
00:51:56.280 --> 00:51:59.440
<v Speaker 4>what are the processes, and you can get something like

797
00:51:59.480 --> 00:52:05.280
<v Speaker 4>that build in seven eight months. Right, That's as far

798
00:52:05.280 --> 00:52:08.519
<v Speaker 4>as I know. That's and what I could see in

799
00:52:08.559 --> 00:52:13.199
<v Speaker 4>the market, right, And what happened was that we basically

800
00:52:13.239 --> 00:52:17.000
<v Speaker 4>went a lot faster than everybody else, right, with this

801
00:52:17.519 --> 00:52:21.280
<v Speaker 4>same amount of errors. Like it seemed that there was

802
00:52:21.280 --> 00:52:25.800
<v Speaker 4>no real drawback to using Ruby in that case, right,

803
00:52:26.000 --> 00:52:29.440
<v Speaker 4>And so it was a pure benefit to use the

804
00:52:30.480 --> 00:52:32.039
<v Speaker 4>language in the framework.

805
00:52:32.199 --> 00:52:35.079
<v Speaker 3>Nice you does. There's really nothing that can compare to

806
00:52:35.079 --> 00:52:38.280
<v Speaker 3>the speed of development of rails. It's I think we

807
00:52:38.599 --> 00:52:42.400
<v Speaker 3>kind of take it for advantage, like for granted, rather

808
00:52:43.119 --> 00:52:45.880
<v Speaker 3>rails developers. It's when you go and look at the

809
00:52:45.880 --> 00:52:48.239
<v Speaker 3>outside world is when you realize blood, yeah, this is

810
00:52:48.239 --> 00:52:48.800
<v Speaker 3>a good tool.

811
00:52:49.559 --> 00:52:51.239
<v Speaker 4>Yeah, yeah, it is quite insane.

812
00:52:51.960 --> 00:52:52.119
<v Speaker 3>Hm.

813
00:52:52.840 --> 00:52:55.239
<v Speaker 4>Like I had a colleague who did a you know,

814
00:52:55.559 --> 00:52:59.920
<v Speaker 4>sort of an AI based a feature spike, you know, like, oh,

815
00:53:00.039 --> 00:53:02.280
<v Speaker 4>can we just timebox this to like three days? And

816
00:53:02.280 --> 00:53:04.280
<v Speaker 4>in three days we had a tool that seems to

817
00:53:04.280 --> 00:53:08.320
<v Speaker 4>be working, did integrate with AI, had UI had tests,

818
00:53:09.280 --> 00:53:13.039
<v Speaker 4>were behind the feature flag, and was effectively shippable. Right.

819
00:53:14.280 --> 00:53:16.480
<v Speaker 4>It was not you know, it was not the best

820
00:53:16.519 --> 00:53:18.960
<v Speaker 4>of the most robust or whatever. But like, in three days,

821
00:53:18.960 --> 00:53:23.440
<v Speaker 4>a single person made a full featurespike that could technically

822
00:53:23.440 --> 00:53:26.480
<v Speaker 4>be deployed and could work. Right, that's pretty amazing.

823
00:53:27.239 --> 00:53:34.159
<v Speaker 6>I'm curious real quick, Like, uh, I'm in my experience

824
00:53:34.159 --> 00:53:37.880
<v Speaker 6>working with like critical systems like this, Like once it's built,

825
00:53:38.000 --> 00:53:41.719
<v Speaker 6>it's like it's hard to change, right, like and mostly

826
00:53:41.880 --> 00:53:45.159
<v Speaker 6>because like to the requirements probably don't change very frequently either,

827
00:53:46.320 --> 00:53:49.559
<v Speaker 6>But like, how how do you like approach in those

828
00:53:49.599 --> 00:53:54.000
<v Speaker 6>cases like that change? Like is is it like build

829
00:53:54.039 --> 00:53:57.000
<v Speaker 6>something new and cut one off and switched to the

830
00:53:57.039 --> 00:54:03.719
<v Speaker 6>other or like what, I like, what kind of systematic

831
00:54:03.719 --> 00:54:04.599
<v Speaker 6>approach do you take to that?

832
00:54:06.440 --> 00:54:11.159
<v Speaker 4>I think so for me, it's certainly about you have

833
00:54:11.199 --> 00:54:15.639
<v Speaker 4>to reason about the protocol and the process somewhere other

834
00:54:15.679 --> 00:54:19.559
<v Speaker 4>than the application. So you have to diagram it or

835
00:54:20.079 --> 00:54:22.480
<v Speaker 4>put it into dance or whatever you like to do.

836
00:54:22.559 --> 00:54:24.840
<v Speaker 4>But we need to have a different place to talk

837
00:54:24.880 --> 00:54:28.280
<v Speaker 4>about it than in code because we need to reason

838
00:54:28.320 --> 00:54:31.400
<v Speaker 4>about when somebody has a change, we need to be

839
00:54:31.440 --> 00:54:35.119
<v Speaker 4>able to reason about it before we spend time in code,

840
00:54:35.320 --> 00:54:38.440
<v Speaker 4>and we need to figure out if the the sort

841
00:54:38.480 --> 00:54:43.159
<v Speaker 4>of the signature of that particular change. Let's say you

842
00:54:43.199 --> 00:54:47.440
<v Speaker 4>want to change one hashing algorithm with another hashing algorithm. Right,

843
00:54:48.159 --> 00:54:50.880
<v Speaker 4>you need to be able to reason if that will

844
00:54:50.920 --> 00:54:55.119
<v Speaker 4>break the system, just in principle, before you start to

845
00:54:55.199 --> 00:54:58.760
<v Speaker 4>even try and implement it. Right, So I find that

846
00:54:59.400 --> 00:55:02.800
<v Speaker 4>I it really benefits to have it in a big

847
00:55:02.840 --> 00:55:07.760
<v Speaker 4>diagram or have it written out in long form in

848
00:55:07.800 --> 00:55:11.440
<v Speaker 4>a document or like somewhere that you can reason with

849
00:55:11.679 --> 00:55:16.199
<v Speaker 4>people who aren't developers on whether or not it will

850
00:55:16.360 --> 00:55:19.960
<v Speaker 4>work or not before you even try to implement. Because

851
00:55:20.000 --> 00:55:22.280
<v Speaker 4>if you can reason that it will in fact work,

852
00:55:22.320 --> 00:55:25.960
<v Speaker 4>it will plug in, it will replace. If you can

853
00:55:26.039 --> 00:55:30.000
<v Speaker 4>reason about that before you actually see the code when

854
00:55:30.039 --> 00:55:33.480
<v Speaker 4>you come to the developers, it's a much smoother experience

855
00:55:33.599 --> 00:55:38.239
<v Speaker 4>to say, okay, I need this piece replaced with that piece,

856
00:55:38.920 --> 00:55:42.719
<v Speaker 4>And yes, the hashing algorithm is not the same, but

857
00:55:42.800 --> 00:55:46.159
<v Speaker 4>it is whatever based on the same something something, so

858
00:55:46.239 --> 00:55:51.360
<v Speaker 4>it will plug in, right, And then we can either

859
00:55:51.400 --> 00:55:54.400
<v Speaker 4>have both if they plug well, we can replace one

860
00:55:54.440 --> 00:55:57.400
<v Speaker 4>with the other and do and you can also then

861
00:55:57.440 --> 00:55:59.719
<v Speaker 4>you need to trends or migrate the data.

862
00:55:59.800 --> 00:55:59.920
<v Speaker 5>Right.

863
00:56:00.880 --> 00:56:03.880
<v Speaker 4>But now that you're migrating the data, it's really nice

864
00:56:03.880 --> 00:56:07.920
<v Speaker 4>to also have that conversation with beforehand and with others

865
00:56:07.920 --> 00:56:11.199
<v Speaker 4>who are not developer. Well, we have existing data and

866
00:56:11.239 --> 00:56:13.639
<v Speaker 4>you want me to plug this thing into this place

867
00:56:13.639 --> 00:56:16.840
<v Speaker 4>in this big diagram. What happens to all the old

868
00:56:16.960 --> 00:56:21.519
<v Speaker 4>data that went through that point beforehand? Like, what do

869
00:56:21.559 --> 00:56:23.159
<v Speaker 4>we feel we need to do about that? Do we

870
00:56:23.239 --> 00:56:27.440
<v Speaker 4>want to revision it and say that version less than

871
00:56:27.559 --> 00:56:30.000
<v Speaker 4>something can never be opened again or can never be

872
00:56:30.239 --> 00:56:33.000
<v Speaker 4>edited again, but can only be viewed? Like what's our

873
00:56:33.079 --> 00:56:37.880
<v Speaker 4>reasoning on that? Right? So having somewhere else to talk

874
00:56:37.920 --> 00:56:40.880
<v Speaker 4>about it then in code really helps to figure out

875
00:56:40.960 --> 00:56:46.599
<v Speaker 4>if you should replace plug in or you know, make

876
00:56:46.639 --> 00:56:50.239
<v Speaker 4>it as a different service that you called sometimes you know,

877
00:56:50.639 --> 00:56:54.440
<v Speaker 4>whatever it is. I find that that having something other

878
00:56:54.480 --> 00:57:03.440
<v Speaker 4>than code really helps. Yeah, so it really needs somewhere

879
00:57:03.440 --> 00:57:05.519
<v Speaker 4>else to have that conversation.

880
00:57:05.679 --> 00:57:08.880
<v Speaker 6>Right, Yeah, you know, it makes me think about the

881
00:57:09.400 --> 00:57:14.159
<v Speaker 6>old days of Yahoo pipes, like where you could visualize

882
00:57:14.280 --> 00:57:17.159
<v Speaker 6>and like in real time update the data flow of

883
00:57:17.519 --> 00:57:22.440
<v Speaker 6>any particular aggregate thing you were trying to collect. Are

884
00:57:22.480 --> 00:57:25.760
<v Speaker 6>there any tools like that that you use to like

885
00:57:26.320 --> 00:57:29.320
<v Speaker 6>maybe automate this process or is it just a matter

886
00:57:29.320 --> 00:57:30.320
<v Speaker 6>of getting documented?

887
00:57:31.480 --> 00:57:34.000
<v Speaker 4>That's I mean, I've tried a bunch of them. I

888
00:57:34.000 --> 00:57:36.559
<v Speaker 4>haven't found one that I really like. I haven't found

889
00:57:36.599 --> 00:57:41.639
<v Speaker 4>one that really does it for me. I tend to

890
00:57:41.840 --> 00:57:45.440
<v Speaker 4>try and make them diagrams as code because then they

891
00:57:45.480 --> 00:57:47.880
<v Speaker 4>can at least get checked into get and we can

892
00:57:48.000 --> 00:57:53.320
<v Speaker 4>have version control on top of it. But I haven't

893
00:57:53.360 --> 00:57:57.920
<v Speaker 4>really found anything that really does it for me I've done.

894
00:57:58.800 --> 00:58:01.840
<v Speaker 4>I tend to either do whimsical or draio or something

895
00:58:01.920 --> 00:58:05.280
<v Speaker 4>like that, and then it is just a lot of

896
00:58:05.320 --> 00:58:08.159
<v Speaker 4>work to keep it maintained. And that's that sucks a bit,

897
00:58:08.239 --> 00:58:12.039
<v Speaker 4>But you know, it's it's hard to it's hard to

898
00:58:12.079 --> 00:58:16.920
<v Speaker 4>do without right, without somewhere else to reason, and especially

899
00:58:16.920 --> 00:58:20.000
<v Speaker 4>when you need to talk to because it's not only

900
00:58:20.239 --> 00:58:23.119
<v Speaker 4>a technical problem, right, it is also a business problem,

901
00:58:23.159 --> 00:58:26.519
<v Speaker 4>and it is a regulatory problem. If I'm going to

902
00:58:26.679 --> 00:58:32.239
<v Speaker 4>change this piece of the testing bed for an airplane,

903
00:58:32.719 --> 00:58:36.840
<v Speaker 4>or this piece of code for the design software for

904
00:58:36.880 --> 00:58:39.119
<v Speaker 4>an airplane. I need to be able to have a

905
00:58:39.159 --> 00:58:42.119
<v Speaker 4>conversation with somebody who's not a software engineer about the

906
00:58:42.159 --> 00:58:45.679
<v Speaker 4>consequences of that, right, because I need to talk to

907
00:58:45.719 --> 00:58:48.719
<v Speaker 4>the civil engineer, I need to talk to the test manager, youvely,

908
00:58:49.039 --> 00:58:50.639
<v Speaker 4>and I need to talk to a lot of people

909
00:58:50.639 --> 00:58:53.239
<v Speaker 4>about the consequence of doing it and the way to

910
00:58:53.320 --> 00:58:57.000
<v Speaker 4>do it, and are there any consequences outside of my

911
00:58:57.239 --> 00:58:59.960
<v Speaker 4>system that we need to have a conversation about it.

912
00:59:01.360 --> 00:59:03.639
<v Speaker 4>It is just sort of like trying to get as

913
00:59:03.760 --> 00:59:08.079
<v Speaker 4>many people joining that conversation as possible, And for that

914
00:59:08.320 --> 00:59:13.599
<v Speaker 4>it seems to work better if it's not quite colde

915
00:59:13.920 --> 00:59:16.760
<v Speaker 4>because then more people can participate in that conversation.

916
00:59:16.880 --> 00:59:18.960
<v Speaker 6>Right, Yeah, I think that makes a lot of sense.

917
00:59:19.920 --> 00:59:24.639
<v Speaker 6>I'm still personally trying to find the silver bullet, and

918
00:59:24.679 --> 00:59:26.159
<v Speaker 6>the closest I've gotten is Mermaid.

919
00:59:26.920 --> 00:59:32.519
<v Speaker 4>Yeah, and that also works quite well. Actually, it's just

920
00:59:34.599 --> 00:59:40.079
<v Speaker 4>it works pretty It works pretty reasonable, and it is

921
00:59:40.119 --> 00:59:43.039
<v Speaker 4>definitely a diagram as text. Right, So I've also used

922
00:59:43.079 --> 00:59:47.559
<v Speaker 4>that a ton and it's decent enough. I find that

923
00:59:48.679 --> 00:59:50.480
<v Speaker 4>it has some problems when you get up to really

924
00:59:50.559 --> 00:59:53.559
<v Speaker 4>large size stuff like it's hard to get enough in

925
00:59:53.639 --> 00:59:58.519
<v Speaker 4>there and still have it be viewable and understandable as

926
00:59:58.519 --> 01:00:03.400
<v Speaker 4>a human. But I mean a lot of like building

927
01:00:03.599 --> 01:00:06.239
<v Speaker 4>these systems and a lot of participating in building them

928
01:00:06.400 --> 01:00:10.400
<v Speaker 4>is surprisingly not about code. It's about talking to a

929
01:00:10.400 --> 01:00:12.920
<v Speaker 4>bunch of people who have nothing to do with software

930
01:00:12.960 --> 01:00:17.320
<v Speaker 4>development and figuring out if you're going to break their lives, right, Like,

931
01:00:17.360 --> 01:00:19.800
<v Speaker 4>are you going to break something completely insane that you

932
01:00:19.840 --> 01:00:22.960
<v Speaker 4>had no idea that you ever were ever going to

933
01:00:22.960 --> 01:00:28.360
<v Speaker 4>touch because you know, in the case of this, well,

934
01:00:28.360 --> 01:00:31.960
<v Speaker 4>I'm going to change this thing in my design software,

935
01:00:32.480 --> 01:00:38.760
<v Speaker 4>and then suddenly somebody in the factory somewhere is totally

936
01:00:38.840 --> 01:00:41.400
<v Speaker 4>confused about how to build an airplane because I did

937
01:00:41.480 --> 01:00:45.360
<v Speaker 4>something that you know. So it's really not that much

938
01:00:45.400 --> 01:00:48.320
<v Speaker 4>of a software challenge. I mean it is, but it

939
01:00:48.440 --> 01:00:51.519
<v Speaker 4>is to high degree a communication challenge and sort of like,

940
01:00:51.880 --> 01:00:54.880
<v Speaker 4>how do we even communicate what this software does to

941
01:00:55.039 --> 01:00:57.239
<v Speaker 4>people so that they can use it and so we

942
01:00:57.280 --> 01:01:00.440
<v Speaker 4>can reason about the safety of it together the.

943
01:01:00.440 --> 01:01:05.719
<v Speaker 1>Rine, Yeah, it makes sense in the I mean, I've

944
01:01:05.719 --> 01:01:08.480
<v Speaker 1>worked on things at this level of complexity that you

945
01:01:08.480 --> 01:01:14.239
<v Speaker 1>have to get right so I worked at Morgan Stanley,

946
01:01:14.760 --> 01:01:18.199
<v Speaker 1>and I mean we weren't doing like banking level stuff,

947
01:01:18.199 --> 01:01:23.360
<v Speaker 1>but we were doing like investment level and business information stuff, right,

948
01:01:23.440 --> 01:01:25.800
<v Speaker 1>And so yeah, the world didn't end if we got

949
01:01:25.800 --> 01:01:28.920
<v Speaker 1>it wrong, but we kind of needed it to get right.

950
01:01:29.119 --> 01:01:32.000
<v Speaker 2>And a lot of it was just a matter of.

951
01:01:32.039 --> 01:01:34.320
<v Speaker 1>Like you said, making sure that all the people who

952
01:01:34.440 --> 01:01:36.760
<v Speaker 1>understand all of the concerns and all the things that

953
01:01:36.800 --> 01:01:39.719
<v Speaker 1>it touched are able to weigh in and be part

954
01:01:39.760 --> 01:01:43.079
<v Speaker 1>of the conversation and that way. Yeah, you don't do

955
01:01:43.199 --> 01:01:46.960
<v Speaker 1>things without understanding the implications of how it's going to ripple.

956
01:01:48.079 --> 01:01:54.119
<v Speaker 1>I'm working a contract now, and you know, I'm still

957
01:01:54.119 --> 01:01:56.400
<v Speaker 1>trying to figure out the ins and outs of the system,

958
01:01:57.480 --> 01:02:01.920
<v Speaker 1>and they're they're managing funds and stuff like that, right,

959
01:02:02.480 --> 01:02:06.760
<v Speaker 1>and so yeah, I'm definitely feeling it here where I

960
01:02:06.760 --> 01:02:08.800
<v Speaker 1>don't want to make any changes that ripple through the

961
01:02:08.840 --> 01:02:12.280
<v Speaker 1>system and right. And so this is where you when

962
01:02:12.280 --> 01:02:14.920
<v Speaker 1>you're talking about like testing and documentation and things like that,

963
01:02:15.360 --> 01:02:18.679
<v Speaker 1>where the documentation really isn't around and there are a

964
01:02:18.760 --> 01:02:20.480
<v Speaker 1>lot of other things. I wound up having to ask

965
01:02:20.519 --> 01:02:22.199
<v Speaker 1>a lot of questions and I'm still not sure that

966
01:02:22.239 --> 01:02:26.280
<v Speaker 1>all of my assumptions are correct. So yeah, a lot

967
01:02:26.280 --> 01:02:28.679
<v Speaker 1>of this really helps in the sense of, oh okay,

968
01:02:29.639 --> 01:02:37.079
<v Speaker 1>if if we're gonna nail down robust, you know, reliable things,

969
01:02:37.760 --> 01:02:40.239
<v Speaker 1>then then yeah, you know, all of these things are important.

970
01:02:40.679 --> 01:02:43.679
<v Speaker 1>And I think part of my issue with some of

971
01:02:43.679 --> 01:02:45.679
<v Speaker 1>it is just that I like to just get in

972
01:02:45.719 --> 01:02:50.039
<v Speaker 1>and solve problems. Right, I'm my mentality. I was talking

973
01:02:50.039 --> 01:02:53.280
<v Speaker 1>to some other friends and the other day and my mentality.

974
01:02:52.800 --> 01:02:54.360
<v Speaker 2>Is go go go, go, go, go go.

975
01:02:54.960 --> 01:03:00.079
<v Speaker 1>And so I yeah, having to slow down and you know,

976
01:03:01.480 --> 01:03:03.960
<v Speaker 1>dot all my I joke and say I dot all,

977
01:03:03.960 --> 01:03:05.440
<v Speaker 1>my tea's across all my eyes.

978
01:03:05.960 --> 01:03:12.440
<v Speaker 2>It just it's you know, it's it's not my natural state.

979
01:03:13.320 --> 01:03:16.559
<v Speaker 1>And I think a lot of developers, yeah, they just

980
01:03:16.639 --> 01:03:19.679
<v Speaker 1>they just want to write great code that solves problems.

981
01:03:19.880 --> 01:03:23.440
<v Speaker 1>And so the meetings are tedious, the conversations are boring,

982
01:03:25.480 --> 01:03:27.840
<v Speaker 1>you know, and you know, why can't I just go

983
01:03:27.920 --> 01:03:28.440
<v Speaker 1>in and just.

984
01:03:29.000 --> 01:03:33.320
<v Speaker 2>Make it work? And the reality is is, you know, yeah,

985
01:03:33.519 --> 01:03:35.079
<v Speaker 2>what we're what we're talking about here?

986
01:03:35.280 --> 01:03:37.519
<v Speaker 1>And so I think I think it's not just we

987
01:03:37.599 --> 01:03:40.320
<v Speaker 1>have these specific concerns, whether the regulatory or something else.

988
01:03:40.679 --> 01:03:44.159
<v Speaker 1>I think it's also that there's enough complexity to it

989
01:03:44.559 --> 01:03:46.079
<v Speaker 1>to where you really do have to.

990
01:03:46.039 --> 01:03:48.000
<v Speaker 2>Get in and understand the nuance of what you're doing.

991
01:03:49.559 --> 01:03:53.719
<v Speaker 4>Yeah, and I think also the breadth of what you're doing, right,

992
01:03:53.800 --> 01:03:56.880
<v Speaker 4>Like I know this for myself. Right when I was

993
01:03:57.079 --> 01:04:00.519
<v Speaker 4>younger and started developing code, right, it was like, well,

994
01:04:00.559 --> 01:04:04.199
<v Speaker 4>there's only one truth, right, Like either it's one plus

995
01:04:04.199 --> 01:04:07.840
<v Speaker 4>one is two or it's wrong. Right, But that's just

996
01:04:08.000 --> 01:04:13.280
<v Speaker 4>not the case when you have these really big connected systems,

997
01:04:13.360 --> 01:04:18.960
<v Speaker 4>right where like, well, what happens if I change this protocol? Well,

998
01:04:19.000 --> 01:04:21.679
<v Speaker 4>now it's right because it's a different protocol, But now

999
01:04:21.719 --> 01:04:23.920
<v Speaker 4>it's wrong because it's a different protocol, So it can

1000
01:04:23.960 --> 01:04:27.760
<v Speaker 4>be both at the same time, right, because now you

1001
01:04:27.800 --> 01:04:30.199
<v Speaker 4>know all the other people who used it for one

1002
01:04:30.239 --> 01:04:32.800
<v Speaker 4>protocol can't use the other, and like it just gets

1003
01:04:32.840 --> 01:04:37.599
<v Speaker 4>really messy. I think at some point I realized that

1004
01:04:37.719 --> 01:04:41.920
<v Speaker 4>I like doing documentation, and that really helped to sort

1005
01:04:41.960 --> 01:04:48.559
<v Speaker 4>of make me be confident that this could be somewhere

1006
01:04:48.559 --> 01:04:50.400
<v Speaker 4>you can do a career, like you can do a

1007
01:04:50.440 --> 01:04:55.679
<v Speaker 4>career and something that's not obviously developer ish territory, right, Like,

1008
01:04:57.159 --> 01:05:00.079
<v Speaker 4>because I actually enjoyed doing like I could say to

1009
01:05:00.199 --> 01:05:03.199
<v Speaker 4>diagrams and reasoning outside of the code and all of

1010
01:05:03.199 --> 01:05:06.239
<v Speaker 4>these things I found was pretty interesting, and that makes

1011
01:05:06.280 --> 01:05:10.480
<v Speaker 4>it easier for to be me right, Like, it's more

1012
01:05:10.559 --> 01:05:13.800
<v Speaker 4>fun to have that conversation with everybody to figure out, well,

1013
01:05:14.280 --> 01:05:17.760
<v Speaker 4>if we do this thing over there in wherever we

1014
01:05:18.199 --> 01:05:22.519
<v Speaker 4>are operating in Australia, that's fine. But now we've done

1015
01:05:22.599 --> 01:05:27.119
<v Speaker 4>this change, so what happens to our operations in Austria,

1016
01:05:28.079 --> 01:05:31.159
<v Speaker 4>Like is that the same text system? Can we do both?

1017
01:05:31.239 --> 01:05:34.559
<v Speaker 4>Like it just it can become really complicated when you

1018
01:05:34.760 --> 01:05:38.880
<v Speaker 4>have when you're operating under multiple jurisdictions and multiple governances,

1019
01:05:38.960 --> 01:05:45.079
<v Speaker 4>right then that that can become complicated as well. And

1020
01:05:46.199 --> 01:05:50.079
<v Speaker 4>you know you're doing currency conversions, or you're doing unit conversions,

1021
01:05:50.199 --> 01:05:52.920
<v Speaker 4>or you're doing all of these things. Like it's so

1022
01:05:53.119 --> 01:05:58.039
<v Speaker 4>hard that I know that even the space agencies are

1023
01:05:58.039 --> 01:06:02.079
<v Speaker 4>getting it wrong. And sometimes there's stuff just won't work

1024
01:06:02.119 --> 01:06:04.960
<v Speaker 4>when you get it into space right because somebody miss

1025
01:06:05.159 --> 01:06:10.639
<v Speaker 4>uh converted interest to centimeters right, And so it is

1026
01:06:10.760 --> 01:06:13.119
<v Speaker 4>just and that should like to if you go to

1027
01:06:13.239 --> 01:06:17.360
<v Speaker 4>a a freak out of college developer and says to

1028
01:06:17.440 --> 01:06:21.039
<v Speaker 4>him that I need a unit unit conversion system, a

1029
01:06:21.199 --> 01:06:23.920
<v Speaker 4>unit conversion method that can go from interest to centimeters,

1030
01:06:23.960 --> 01:06:32.679
<v Speaker 4>that's pretty straightforward. That's a that's a pretty straightforward ask, right,

1031
01:06:32.760 --> 01:06:35.159
<v Speaker 4>and you can do that method pretty quickly. It's not

1032
01:06:35.519 --> 01:06:39.280
<v Speaker 4>really super hard. What is really super hard is getting

1033
01:06:40.320 --> 01:06:42.480
<v Speaker 4>people to use it right. So you need to build

1034
01:06:42.599 --> 01:06:47.719
<v Speaker 4>a unit conversion method that is easy to use, fun

1035
01:06:47.800 --> 01:06:51.559
<v Speaker 4>to use at hand when you need to use it,

1036
01:06:53.519 --> 01:06:55.760
<v Speaker 4>so that you will in fact use it because otherwise

1037
01:06:55.760 --> 01:06:57.039
<v Speaker 4>you're going to do it in your head. And then

1038
01:06:57.079 --> 01:06:59.760
<v Speaker 4>it doesn't really matter that you build a piece of software, right,

1039
01:07:00.079 --> 01:07:03.800
<v Speaker 4>So like it, there's a lot of other components to

1040
01:07:04.960 --> 01:07:08.239
<v Speaker 4>this than just the software, Like there's a lot of things,

1041
01:07:08.280 --> 01:07:09.800
<v Speaker 4>like you know, there's a lot of backup, a lot

1042
01:07:09.840 --> 01:07:13.199
<v Speaker 4>of everything. But it is also about making sure that

1043
01:07:13.239 --> 01:07:15.639
<v Speaker 4>the people who use it use it correctly. And the

1044
01:07:15.760 --> 01:07:18.800
<v Speaker 4>way to do that, like we talked about before, like

1045
01:07:18.880 --> 01:07:22.039
<v Speaker 4>with the TSB and everything, it's not to blame the

1046
01:07:22.079 --> 01:07:24.119
<v Speaker 4>person for not using the thing. It's to blame the

1047
01:07:24.159 --> 01:07:26.719
<v Speaker 4>thing for not being available when it was needed. Right,

1048
01:07:27.440 --> 01:07:29.159
<v Speaker 4>So you need to be like, if I have a

1049
01:07:29.239 --> 01:07:32.400
<v Speaker 4>unit conversion thing and it's hidden behind you know, a

1050
01:07:32.519 --> 01:07:35.639
<v Speaker 4>multiple three dot options that you need to figure out

1051
01:07:35.800 --> 01:07:39.000
<v Speaker 4>five levels in, that's the wrong place to have it, then, right,

1052
01:07:39.840 --> 01:07:41.559
<v Speaker 4>you don't blame the person for not using it. You

1053
01:07:41.559 --> 01:07:43.679
<v Speaker 4>blame the system for not putting it in his face

1054
01:07:43.679 --> 01:07:47.920
<v Speaker 4>when he needed to convert the measurement.

1055
01:07:49.480 --> 01:07:51.280
<v Speaker 2>Yeah, I like.

1056
01:07:51.400 --> 01:07:56.000
<v Speaker 1>I like that just from the standpoint of I mean,

1057
01:07:59.239 --> 01:08:01.360
<v Speaker 1>I guess, I guess where my brain goes is is

1058
01:08:01.400 --> 01:08:04.119
<v Speaker 1>everybody has the responsibility to understand the system and how

1059
01:08:04.159 --> 01:08:08.400
<v Speaker 1>it works, right, And so everybody has the responsibility then too,

1060
01:08:09.519 --> 01:08:15.719
<v Speaker 1>you know, to be aware that this method exists. But

1061
01:08:15.960 --> 01:08:18.119
<v Speaker 1>at the same time, if I create it, then it's

1062
01:08:18.159 --> 01:08:20.560
<v Speaker 1>also my responsibility to make sure everybody knows it's there

1063
01:08:20.560 --> 01:08:25.279
<v Speaker 1>and knows how to use it. And I also agree

1064
01:08:25.279 --> 01:08:27.760
<v Speaker 1>though that if you make it easy or natural to

1065
01:08:27.800 --> 01:08:29.640
<v Speaker 1>do the right thing, then people.

1066
01:08:29.359 --> 01:08:35.279
<v Speaker 2>Will generally do the right thing. Yeah, and so yeah.

1067
01:08:34.840 --> 01:08:38.319
<v Speaker 1>I think I agree with you, But I don't want

1068
01:08:38.359 --> 01:08:41.119
<v Speaker 1>to absolve anybody of the responsibility of learning to do

1069
01:08:41.119 --> 01:08:41.840
<v Speaker 1>the right thing either.

1070
01:08:42.319 --> 01:08:44.159
<v Speaker 4>No, No, I mean that's not what it. I mean.

1071
01:08:44.199 --> 01:08:47.880
<v Speaker 4>You can absolutely end up being blamed for crashing a

1072
01:08:47.920 --> 01:08:52.000
<v Speaker 4>flamee Like, it's not entirely out of the realms of

1073
01:08:52.439 --> 01:08:55.279
<v Speaker 4>like the pilot can be blamed, right, But it is

1074
01:08:55.520 --> 01:08:59.600
<v Speaker 4>also about looking at did we actually provide the correct

1075
01:08:59.640 --> 01:09:02.279
<v Speaker 4>tuning at the correct time, with the correct intensity and

1076
01:09:02.880 --> 01:09:07.439
<v Speaker 4>all of this, right, And it's the same here, like, well,

1077
01:09:07.720 --> 01:09:12.079
<v Speaker 4>the system didn't work well, did we provide enough, did

1078
01:09:12.079 --> 01:09:14.920
<v Speaker 4>we scale enough? Did we have enough compute resources? Did

1079
01:09:14.920 --> 01:09:20.479
<v Speaker 4>we have enough database storage? Was it just so slow

1080
01:09:20.640 --> 01:09:24.039
<v Speaker 4>that people couldn't use it and it crashed and somebody

1081
01:09:24.239 --> 01:09:27.640
<v Speaker 4>couldn't get their voting, Because if somebody couldn't get their voting,

1082
01:09:27.800 --> 01:09:29.479
<v Speaker 4>then you know, we sort of we get into the

1083
01:09:29.560 --> 01:09:33.600
<v Speaker 4>territory of oh, somebody prevented me from voting situation. Right,

1084
01:09:34.079 --> 01:09:37.840
<v Speaker 4>So it's like, yeah, they could have done it again,

1085
01:09:38.119 --> 01:09:40.279
<v Speaker 4>Like they could have just waited five minutes till the

1086
01:09:40.319 --> 01:09:44.600
<v Speaker 4>peak was down and voted again. But that's like it's

1087
01:09:44.640 --> 01:09:49.039
<v Speaker 4>also not really therefore, right, So it's there's a lot

1088
01:09:49.039 --> 01:09:53.119
<v Speaker 4>of there's a lot of sort of like ancillary non

1089
01:09:53.159 --> 01:09:57.119
<v Speaker 4>developer stuff to talk about when when designing. I'm pretty

1090
01:09:57.119 --> 01:10:01.439
<v Speaker 4>sure there is on old systems, right. But the fun

1091
01:10:01.439 --> 01:10:05.640
<v Speaker 4>thing here is just that this happens to include other engineers,

1092
01:10:05.680 --> 01:10:09.159
<v Speaker 4>which is very fun, And it happens to include things

1093
01:10:09.239 --> 01:10:16.600
<v Speaker 4>like cryptographers and people who actually like politicians or whatever

1094
01:10:16.600 --> 01:10:18.760
<v Speaker 4>it is. It's just I like the types of people

1095
01:10:18.840 --> 01:10:21.520
<v Speaker 4>that I get to talk and interact with, right in

1096
01:10:22.079 --> 01:10:27.199
<v Speaker 4>this rather than I get to talk less with marketing

1097
01:10:27.439 --> 01:10:31.439
<v Speaker 4>and social media and more with like people who build

1098
01:10:31.520 --> 01:10:35.479
<v Speaker 4>spaceships and aeroplanes, and I find that that's basically what

1099
01:10:35.560 --> 01:10:38.840
<v Speaker 4>drew me here, right, is this idea that I get

1100
01:10:38.880 --> 01:10:41.640
<v Speaker 4>to talk to other people who also have this engineering

1101
01:10:42.319 --> 01:10:47.119
<v Speaker 4>spirit and this idea to build something in the same

1102
01:10:47.520 --> 01:10:48.560
<v Speaker 4>mindset that I do.

1103
01:10:48.960 --> 01:10:49.399
<v Speaker 2>Awesome.

1104
01:10:49.920 --> 01:10:52.159
<v Speaker 1>All right, well, I think we're going to go to

1105
01:10:52.239 --> 01:10:55.279
<v Speaker 1>picks because we've been talking for an hour and fifteen minutes.

1106
01:10:57.760 --> 01:11:00.199
<v Speaker 1>This is cool, though, if people want to can act

1107
01:11:00.279 --> 01:11:02.520
<v Speaker 1>with you, or if they have questions about what you're doing,

1108
01:11:03.399 --> 01:11:05.039
<v Speaker 1>you know, maybe you want to pick your brain about

1109
01:11:05.039 --> 01:11:05.720
<v Speaker 1>some of this stuff.

1110
01:11:06.000 --> 01:11:07.720
<v Speaker 2>How they find you on the internet.

1111
01:11:08.439 --> 01:11:11.439
<v Speaker 4>I think go to LinkedIn. That's uh. I have more

1112
01:11:11.560 --> 01:11:14.760
<v Speaker 4>or less try to absolve myself of all social media,

1113
01:11:14.840 --> 01:11:18.239
<v Speaker 4>so LinkedIn is probably your best bet. It's my name,

1114
01:11:19.159 --> 01:11:21.439
<v Speaker 4>It's right there on the screeny thing there it is.

1115
01:11:23.359 --> 01:11:27.560
<v Speaker 4>And then also go go on Discorde. You can ping

1116
01:11:27.640 --> 01:11:33.520
<v Speaker 4>me there, PM me like you did. I'm both on

1117
01:11:33.600 --> 01:11:37.399
<v Speaker 4>the Camal, the rails and the Ruby servers, so you

1118
01:11:37.439 --> 01:11:41.159
<v Speaker 4>can just go find me there. It's E K A

1119
01:11:41.520 --> 01:11:43.760
<v Speaker 4>M P P. So just my initial letter and my

1120
01:11:43.880 --> 01:11:44.359
<v Speaker 4>last name.

1121
01:11:46.159 --> 01:11:49.880
<v Speaker 2>Nice I didn't know that there were Ruby and Rails discords.

1122
01:11:49.880 --> 01:11:50.800
<v Speaker 2>I'll have to go find.

1123
01:11:50.600 --> 01:11:55.199
<v Speaker 4>Those I can. I can send you invite links.

1124
01:11:55.039 --> 01:11:56.640
<v Speaker 2>That would be perfect cool.

1125
01:11:57.159 --> 01:12:00.479
<v Speaker 4>All right, there's someone for like rails developed. That's the

1126
01:12:00.560 --> 01:12:02.760
<v Speaker 4>Rails one, and then there's one for Ruby, which is

1127
01:12:02.800 --> 01:12:05.680
<v Speaker 4>more like application support and like, oh, I don't understand

1128
01:12:05.720 --> 01:12:07.680
<v Speaker 4>what this method does or I need to change this,

1129
01:12:08.239 --> 01:12:11.319
<v Speaker 4>whereas the Rails one is more for like, I need

1130
01:12:11.760 --> 01:12:17.720
<v Speaker 4>approvals or reviews of pians for the actual coal. So

1131
01:12:18.239 --> 01:12:21.720
<v Speaker 4>that's more about supporting of that. So it's less interesting

1132
01:12:21.760 --> 01:12:23.800
<v Speaker 4>if you're trying to solve a business problem, but it

1133
01:12:23.840 --> 01:12:26.359
<v Speaker 4>is kind of cool if you want to just peak

1134
01:12:26.600 --> 01:12:28.000
<v Speaker 4>at what the others are doing.

1135
01:12:29.720 --> 01:12:34.600
<v Speaker 1>Nice, okay, well let's go ahead and do some pics, Valentino,

1136
01:12:34.720 --> 01:12:35.880
<v Speaker 1>Do you want to start with picks?

1137
01:12:37.319 --> 01:12:42.279
<v Speaker 6>Sure, I've got nothing but AI picks. Today, there's been

1138
01:12:42.279 --> 01:12:45.880
<v Speaker 6>a lot of activity in the Ruby world. Andrew Kine

1139
01:12:46.039 --> 01:12:51.800
<v Speaker 6>has released yet another AI gem bless his heart. It's

1140
01:12:51.800 --> 01:12:57.199
<v Speaker 6>called Informers, and it basically lets you run inferants in

1141
01:12:57.319 --> 01:13:04.159
<v Speaker 6>Ruby on Onyx models. So lots of hugging face models

1142
01:13:04.199 --> 01:13:07.279
<v Speaker 6>are on supported and you can now just run inference

1143
01:13:07.880 --> 01:13:10.039
<v Speaker 6>with those. And he also has transformers are b if

1144
01:13:10.039 --> 01:13:12.760
<v Speaker 6>you are interested in running inference on non onyx models.

1145
01:13:13.079 --> 01:13:16.239
<v Speaker 6>So now we have like a complete picture hopefully those

1146
01:13:17.039 --> 01:13:22.279
<v Speaker 6>There are some some missing pieces still for larger models,

1147
01:13:22.279 --> 01:13:25.720
<v Speaker 6>but it has a ton of pipelines already built in,

1148
01:13:25.880 --> 01:13:30.640
<v Speaker 6>so I would suggest checking that out. The next pick,

1149
01:13:31.680 --> 01:13:37.560
<v Speaker 6>somebody built this awesome chat app where they've aggregated all

1150
01:13:37.640 --> 01:13:42.000
<v Speaker 6>of the rails and Ruby like articles and blogs and

1151
01:13:42.319 --> 01:13:45.439
<v Speaker 6>guides and everything like that, so you can basically rag

1152
01:13:45.560 --> 01:13:51.680
<v Speaker 6>the entire rails community ecosystem in a chat GPT style

1153
01:13:51.760 --> 01:13:55.520
<v Speaker 6>interface and it's it's remarkable and it does like citations

1154
01:13:55.560 --> 01:13:58.000
<v Speaker 6>and everything like that, so you can see the original

1155
01:13:58.079 --> 01:14:01.520
<v Speaker 6>article that reference whatever it was you're interested in. Uh,

1156
01:14:01.920 --> 01:14:07.039
<v Speaker 6>it's really awesome. It's called ship on Rails AH, and

1157
01:14:07.159 --> 01:14:11.600
<v Speaker 6>it's built with this really cool tool called Nausea, which

1158
01:14:11.640 --> 01:14:15.159
<v Speaker 6>provides basically like a rails app ready to go, so

1159
01:14:15.159 --> 01:14:18.640
<v Speaker 6>that you can ingest your own documents to rag against

1160
01:14:19.119 --> 01:14:22.760
<v Speaker 6>and do a very similar thing. It's really cool, so

1161
01:14:22.840 --> 01:14:24.199
<v Speaker 6>i'd recommend checking all those out.

1162
01:14:25.880 --> 01:14:28.239
<v Speaker 2>Nice. How about you are USh?

1163
01:14:29.800 --> 01:14:32.000
<v Speaker 3>I'm not sure what to take for picks this this week.

1164
01:14:32.039 --> 01:14:36.359
<v Speaker 3>I haven't really thought of anything. It's a it's a

1165
01:14:36.720 --> 01:14:38.880
<v Speaker 3>it's a cheap one, but I'm gonna go with Blue

1166
01:14:38.880 --> 01:14:40.880
<v Speaker 3>Sky because I'm quite enjoying blue Ska in the last

1167
01:14:40.880 --> 01:14:44.640
<v Speaker 3>week as I finally signed up for it, and a

1168
01:14:44.680 --> 01:14:48.720
<v Speaker 3>lot of Ruby folks have I have signed up recently.

1169
01:14:49.840 --> 01:14:52.399
<v Speaker 3>It's quite a lot of activity on there. I'm quite

1170
01:14:52.520 --> 01:14:55.000
<v Speaker 3>quite enjoying it as a social network. Hopefully it can

1171
01:14:55.039 --> 01:14:58.720
<v Speaker 3>stay the way it is. I'm active on both blue

1172
01:14:58.720 --> 01:15:03.000
<v Speaker 3>Sky and masterdon for But yeah, we'll see what happens

1173
01:15:03.000 --> 01:15:05.680
<v Speaker 3>because Blue Sky is still a VC fund that privately

1174
01:15:05.720 --> 01:15:09.439
<v Speaker 3>held the company, so we'd love to see how long

1175
01:15:09.800 --> 01:15:13.119
<v Speaker 3>things remain good. But for now, I'm quite quite happy

1176
01:15:13.159 --> 01:15:16.720
<v Speaker 3>with it. What else can I pick? I haven't really

1177
01:15:16.720 --> 01:15:20.079
<v Speaker 3>watched anything or anything new recently because I think I

1178
01:15:20.479 --> 01:15:22.960
<v Speaker 3>had picked a TV show called Shrinking, which I did

1179
01:15:23.600 --> 01:15:25.439
<v Speaker 3>the last time, so I don't want to pick that again.

1180
01:15:26.600 --> 01:15:28.479
<v Speaker 3>I'll go with the music pick because I always go

1181
01:15:28.520 --> 01:15:31.680
<v Speaker 3>with the music pick when I'm when I'm struggling. What's

1182
01:15:31.720 --> 01:15:34.399
<v Speaker 3>in fun of Me? The new Ts for Fears album?

1183
01:15:34.520 --> 01:15:37.640
<v Speaker 3>Check this one out. It's really good. It's a live

1184
01:15:37.680 --> 01:15:41.159
<v Speaker 3>album with a few new songs from eighties pop band

1185
01:15:41.199 --> 01:15:46.000
<v Speaker 3>Tis for Fears. So yeah, I think I'll go with those.

1186
01:15:48.520 --> 01:15:48.960
<v Speaker 2>Awesome.

1187
01:15:49.159 --> 01:15:50.800
<v Speaker 1>I've had a number of people tell me I need

1188
01:15:50.800 --> 01:16:02.000
<v Speaker 1>to join Blue Sky. So anyway, let's see, I'm gonna

1189
01:16:02.000 --> 01:16:07.439
<v Speaker 1>throw in some picks. So I played, I played a

1190
01:16:07.479 --> 01:16:10.119
<v Speaker 1>new game. I actually played a couple of new games

1191
01:16:10.119 --> 01:16:16.119
<v Speaker 1>this week because the game convention that I usually teach

1192
01:16:16.159 --> 01:16:19.840
<v Speaker 1>games at is UH is going to be on Saturday,

1193
01:16:19.880 --> 01:16:22.439
<v Speaker 1>and so I need to be able to teach these games.

1194
01:16:23.800 --> 01:16:26.640
<v Speaker 2>So I'm gonna pick one of those. It's called MOLEM

1195
01:16:27.560 --> 01:16:28.720
<v Speaker 2>l M L e.

1196
01:16:28.760 --> 01:16:37.479
<v Speaker 1>M, and essentially what it is is it's how do

1197
01:16:37.520 --> 01:16:43.279
<v Speaker 1>you describe it, It's it's cat astronauts, and the way

1198
01:16:43.319 --> 01:16:46.039
<v Speaker 1>that it works it's it's a relatively simple game. It

1199
01:16:46.119 --> 01:16:49.199
<v Speaker 1>was almost too simple for me, to be honest, But

1200
01:16:50.399 --> 01:16:55.399
<v Speaker 1>if you're kind of a casual board gamer, right, it's

1201
01:16:55.439 --> 01:16:59.920
<v Speaker 1>it's definitely approachable. So let me pull it up a

1202
01:17:00.119 --> 01:17:04.119
<v Speaker 1>board game geek. But yeah, so what the way that

1203
01:17:04.159 --> 01:17:13.159
<v Speaker 1>it works is you have astronaut cats that are going

1204
01:17:13.479 --> 01:17:17.640
<v Speaker 1>going into space and they're basically occupying planets and moons,

1205
01:17:18.079 --> 01:17:19.520
<v Speaker 1>and so you.

1206
01:17:19.319 --> 01:17:20.800
<v Speaker 2>Pick one of your.

1207
01:17:22.439 --> 01:17:26.079
<v Speaker 1>Your cats, put it on the rocket, and somebody's the

1208
01:17:26.119 --> 01:17:29.800
<v Speaker 1>captain and they roll the dice and if they're if

1209
01:17:29.840 --> 01:17:34.920
<v Speaker 1>the dice match what's on the space on the board

1210
01:17:34.920 --> 01:17:39.319
<v Speaker 1>that you're on. Then you can choose which dice to

1211
01:17:39.439 --> 01:17:42.159
<v Speaker 1>use in order to move up the board. Right, And

1212
01:17:42.239 --> 01:17:44.560
<v Speaker 1>so if you if you have boosters, boosters move you

1213
01:17:44.640 --> 01:17:48.119
<v Speaker 1>up for free. The other ones you have to give

1214
01:17:48.199 --> 01:17:51.199
<v Speaker 1>up the dice in order to move. And so if

1215
01:17:51.239 --> 01:17:54.520
<v Speaker 1>you ever get to the point where you roll the

1216
01:17:54.560 --> 01:17:58.800
<v Speaker 1>dice and you you can't use any of the numbers,

1217
01:17:58.840 --> 01:18:04.800
<v Speaker 1>then use the ship. And at any point people can

1218
01:18:04.840 --> 01:18:10.119
<v Speaker 1>get off the ships onto moons or planets, and you

1219
01:18:10.199 --> 01:18:11.960
<v Speaker 1>get points for having the most cats.

1220
01:18:12.039 --> 01:18:14.920
<v Speaker 2>On planets, you have points for every moon you occupy.

1221
01:18:16.000 --> 01:18:19.520
<v Speaker 1>If you go away to deep space, then you get

1222
01:18:19.520 --> 01:18:25.000
<v Speaker 1>bonuses for that. And then the different cats have different abilities, right,

1223
01:18:25.079 --> 01:18:28.439
<v Speaker 1>so one of the cats let you start further up

1224
01:18:28.479 --> 01:18:31.760
<v Speaker 1>the board. One of the cats let you you know,

1225
01:18:31.880 --> 01:18:34.439
<v Speaker 1>let you get off the ship after it crashes, right,

1226
01:18:34.520 --> 01:18:36.720
<v Speaker 1>so you can go to the planet it's next to

1227
01:18:37.359 --> 01:18:41.399
<v Speaker 1>or whatever. When it crashes. One of them gives you

1228
01:18:41.439 --> 01:18:45.239
<v Speaker 1>a bonus, doubles your points for the planet it's on.

1229
01:18:45.239 --> 01:18:47.840
<v Speaker 1>One of them doubles the points for the moon it's on. Anyway,

1230
01:18:47.880 --> 01:18:49.880
<v Speaker 1>you get the idea. One of them doubles the points

1231
01:18:49.920 --> 01:18:52.920
<v Speaker 1>if you're in deep space, but deep space is hard.

1232
01:18:52.960 --> 01:18:54.800
<v Speaker 1>I've played it once and we never made it to

1233
01:18:54.840 --> 01:18:57.720
<v Speaker 1>deep space. We got close a couple of times, but

1234
01:18:57.840 --> 01:19:00.520
<v Speaker 1>then I was talking to some other people a couple

1235
01:19:00.600 --> 01:19:03.119
<v Speaker 1>of other times, and one of the times they played,

1236
01:19:03.159 --> 01:19:05.159
<v Speaker 1>they made it deep space like three or four times.

1237
01:19:05.680 --> 01:19:09.239
<v Speaker 1>So anyway, so if you're the captain, you're rolling, and

1238
01:19:09.279 --> 01:19:11.479
<v Speaker 1>then you just rotate who the captain is. If the

1239
01:19:11.520 --> 01:19:13.479
<v Speaker 1>captain gets off the ship, then the next person in

1240
01:19:13.600 --> 01:19:17.039
<v Speaker 1>line just finishes out that round.

1241
01:19:17.399 --> 01:19:19.319
<v Speaker 2>Anyway, that's basically the game.

1242
01:19:19.880 --> 01:19:22.199
<v Speaker 1>Or game Geek has it as a at a one

1243
01:19:22.239 --> 01:19:23.319
<v Speaker 1>point six y eight weight.

1244
01:19:24.880 --> 01:19:29.199
<v Speaker 2>It says ages eight plus, and yeah, I have an

1245
01:19:29.199 --> 01:19:29.680
<v Speaker 2>eight year old.

1246
01:19:29.760 --> 01:19:33.000
<v Speaker 1>She could definitely play it. It says thirty to sixty minutes.

1247
01:19:33.039 --> 01:19:36.079
<v Speaker 1>That's probably about accurate play two to five players. I

1248
01:19:36.159 --> 01:19:38.359
<v Speaker 1>played it with four players and that felt pretty good.

1249
01:19:38.439 --> 01:19:45.800
<v Speaker 1>So it's mele M L E M Space Agency and yeah, anyway,

1250
01:19:45.880 --> 01:19:49.000
<v Speaker 1>check it out.

1251
01:19:49.159 --> 01:19:59.960
<v Speaker 2>And then I'll just put a link in the comments here.

1252
01:19:59.520 --> 01:20:07.640
<v Speaker 1>And then let's see. I'm not sure if I really

1253
01:20:07.680 --> 01:20:09.720
<v Speaker 1>have any other picks. I know, I've kind of been

1254
01:20:11.520 --> 01:20:14.039
<v Speaker 1>doing other things and getting involved in other things, but

1255
01:20:16.239 --> 01:20:18.760
<v Speaker 1>I guess the big thing that I went through this

1256
01:20:19.640 --> 01:20:22.840
<v Speaker 1>lately as I went up to retreat up in Sundance,

1257
01:20:23.439 --> 01:20:26.039
<v Speaker 1>which is actually like forty five minutes from here. If

1258
01:20:26.079 --> 01:20:28.880
<v Speaker 1>you heard of the Sundance Film Festival, they do actually

1259
01:20:28.880 --> 01:20:31.399
<v Speaker 1>do that in park City, not in Sundance, but.

1260
01:20:33.319 --> 01:20:35.119
<v Speaker 2>From here, it's about.

1261
01:20:35.159 --> 01:20:40.039
<v Speaker 1>Two thirds of the way to park City and anyway,

1262
01:20:40.159 --> 01:20:45.000
<v Speaker 1>it's up Provo Canyon. And these guys were running essentially

1263
01:20:45.039 --> 01:20:51.840
<v Speaker 1>a Mastermind for three days for Christian entrepreneurs, and so

1264
01:20:51.880 --> 01:20:53.680
<v Speaker 1>we did a lot of faith based stuff, we did

1265
01:20:53.680 --> 01:20:56.960
<v Speaker 1>a lot of business based stuff, and it was amazing

1266
01:20:57.000 --> 01:20:59.680
<v Speaker 1>because they just kind of helped me get clarity on

1267
01:21:00.960 --> 01:21:02.600
<v Speaker 1>what I want to do and who I want to

1268
01:21:02.640 --> 01:21:04.680
<v Speaker 1>be and what kind of difference I want to make.

1269
01:21:06.039 --> 01:21:11.760
<v Speaker 1>So just keep an eye out because I have stuff

1270
01:21:12.560 --> 01:21:17.239
<v Speaker 1>in the works. But it was terrific and I really

1271
01:21:17.279 --> 01:21:20.079
<v Speaker 1>want to just put forward. I guess that just connecting

1272
01:21:20.079 --> 01:21:21.920
<v Speaker 1>with other people who are doing what you're doing, or

1273
01:21:21.960 --> 01:21:25.479
<v Speaker 1>who are learning what you're learning, or who are maybe

1274
01:21:25.520 --> 01:21:27.600
<v Speaker 1>a little ahead of you want on the path you

1275
01:21:27.640 --> 01:21:31.880
<v Speaker 1>want to go down so helpful, So so helpful, you know,

1276
01:21:32.000 --> 01:21:33.399
<v Speaker 1>kind of like what we were talking about with like the

1277
01:21:33.399 --> 01:21:38.000
<v Speaker 1>Discord servers, right, So much help helpful stuff there. So Anyway,

1278
01:21:39.800 --> 01:21:43.159
<v Speaker 1>those are my picks, Emil, what are your picks?

1279
01:21:43.520 --> 01:21:47.159
<v Speaker 4>And so recently, I'm going to pick a book. I

1280
01:21:47.199 --> 01:21:52.000
<v Speaker 4>recently read a book called How Big Things Get Done

1281
01:21:53.640 --> 01:21:57.399
<v Speaker 4>and it's by a Danish guy called bat Flubia. So

1282
01:21:57.960 --> 01:22:00.000
<v Speaker 4>what he did was that he went I don't know

1283
01:22:00.079 --> 01:22:03.159
<v Speaker 4>if you guys know it, but he went through statistical

1284
01:22:03.319 --> 01:22:08.199
<v Speaker 4>data on overruns on big projects, like how far behind

1285
01:22:08.399 --> 01:22:11.760
<v Speaker 4>is an IT project in general? How much of an

1286
01:22:11.760 --> 01:22:15.399
<v Speaker 4>overrun on cost do you get? How much of an

1287
01:22:15.399 --> 01:22:17.880
<v Speaker 4>overrun on time do you get? And he goes through

1288
01:22:18.199 --> 01:22:22.479
<v Speaker 4>sort of like these different industries and different factors that

1289
01:22:22.640 --> 01:22:27.199
<v Speaker 4>play into to why why big things fail and why

1290
01:22:27.279 --> 01:22:30.439
<v Speaker 4>some big things get done right, like what are the

1291
01:22:30.520 --> 01:22:33.880
<v Speaker 4>ways to make sure that big things gets done and

1292
01:22:33.920 --> 01:22:36.239
<v Speaker 4>what are the pitfalls and everything, And he goes through

1293
01:22:36.279 --> 01:22:40.319
<v Speaker 4>everything from the Sydney House Sydney Opera House to like

1294
01:22:41.119 --> 01:22:44.800
<v Speaker 4>big government IT projects that fail. It's just super cool

1295
01:22:44.840 --> 01:22:47.880
<v Speaker 4>because it's very sort of data driven and he has

1296
01:22:48.600 --> 01:22:52.680
<v Speaker 4>spent his career collecting data on why big projects fail,

1297
01:22:52.760 --> 01:22:55.520
<v Speaker 4>why all kinds of projects fail. So it's a really

1298
01:22:55.520 --> 01:23:01.600
<v Speaker 4>interesting sort of window into do this if you really

1299
01:23:01.640 --> 01:23:05.199
<v Speaker 4>want to mess it up? So by inversion, if you

1300
01:23:05.439 --> 01:23:07.479
<v Speaker 4>don't want to mess it up. Don't do all of this,

1301
01:23:07.640 --> 01:23:09.520
<v Speaker 4>do do the other thing. Right, is that that's kind

1302
01:23:09.520 --> 01:23:13.720
<v Speaker 4>of an interesting statistics to have, and so yeah, how

1303
01:23:13.800 --> 01:23:16.600
<v Speaker 4>big things get done? I found that was really.

1304
01:23:16.399 --> 01:23:19.840
<v Speaker 2>Cool, awesome.

1305
01:23:20.199 --> 01:23:23.399
<v Speaker 1>All right, well, thanks for coming, Emil. We're gonna go

1306
01:23:23.439 --> 01:23:24.279
<v Speaker 1>ahead and wrap it here.

1307
01:23:25.680 --> 01:23:26.479
<v Speaker 4>Thank you for having me.

1308
01:23:26.640 --> 01:23:29.319
<v Speaker 2>It was a pleasure, and until next time, Max out
