WEBVTT

1
00:00:05.320 --> 00:00:08.720
<v Speaker 1>Hey, everyone, welcome to another episode of Ruby Roaks. I'm

2
00:00:08.800 --> 00:00:12.560
<v Speaker 1>David Kimura, and today on our panel we have John Epperson, Hello,

3
00:00:13.160 --> 00:00:17.519
<v Speaker 1>and Luke Sutter's Hi. And today we are talking with

4
00:00:17.640 --> 00:00:20.399
<v Speaker 1>a special guest, Yvonne named Chenko.

5
00:00:20.879 --> 00:00:22.280
<v Speaker 2>Hi. Guys, thanks poin inviting.

6
00:00:22.879 --> 00:00:24.960
<v Speaker 1>Yeah, so do you mind telling us a bit about

7
00:00:25.000 --> 00:00:27.160
<v Speaker 1>who you are, some of the things you're working for,

8
00:00:27.320 --> 00:00:28.839
<v Speaker 1>and all that good stuff.

9
00:00:29.320 --> 00:00:34.159
<v Speaker 3>Of course, these days, I'm freelancer, also consulting from time

10
00:00:34.200 --> 00:00:38.799
<v Speaker 3>to time. But I started to use Ruby and reels

11
00:00:39.000 --> 00:00:42.679
<v Speaker 3>in two thousand and six, and since then I was

12
00:00:42.719 --> 00:00:45.560
<v Speaker 3>doing a lot of different stuff. I was an owner,

13
00:00:46.280 --> 00:00:51.600
<v Speaker 3>a co founder of two agencies, organizing conference, speaking a lot,

14
00:00:51.920 --> 00:00:53.439
<v Speaker 3>and all the different stuff.

15
00:00:53.719 --> 00:00:56.399
<v Speaker 1>Awesome. So what have you been up to lately?

16
00:00:57.200 --> 00:01:00.960
<v Speaker 3>Just some freelance and some consulting. Also is amount of teaching,

17
00:01:01.079 --> 00:01:01.520
<v Speaker 3>of course.

18
00:01:01.840 --> 00:01:04.560
<v Speaker 1>And we had you come on to talk about one

19
00:01:04.599 --> 00:01:07.040
<v Speaker 1>of the talks that you gave a Ruby comp called

20
00:01:07.359 --> 00:01:12.799
<v Speaker 1>less Abstract Surprising Effects of expressing rules and or of

21
00:01:13.359 --> 00:01:14.959
<v Speaker 1>object oriented programming.

22
00:01:15.519 --> 00:01:20.640
<v Speaker 3>Yeah, in a visual way, uh, in pictures in pictures, right?

23
00:01:21.040 --> 00:01:21.760
<v Speaker 2>Would you mind.

24
00:01:21.560 --> 00:01:24.200
<v Speaker 1>Giving us a highlight overview of that talk?

25
00:01:24.840 --> 00:01:25.159
<v Speaker 2>Sure?

26
00:01:25.799 --> 00:01:30.040
<v Speaker 3>The whole thing started as a conversation. I guess a

27
00:01:30.120 --> 00:01:34.280
<v Speaker 3>year ago. It's another conference in Saint Petersburg and me

28
00:01:34.439 --> 00:01:38.519
<v Speaker 3>and some other people who are also involved in teaching rubists,

29
00:01:38.920 --> 00:01:42.599
<v Speaker 3>we were we had a discussion that sometimes it's very

30
00:01:42.680 --> 00:01:47.879
<v Speaker 3>hard to explain some abstract concepts to the newcomers. And

31
00:01:48.120 --> 00:01:52.040
<v Speaker 3>there was one rhetorical question which was said. It sounded like,

32
00:01:52.760 --> 00:01:56.000
<v Speaker 3>wouldn't be great if we could illustrate let's say, dependency

33
00:01:56.040 --> 00:01:59.799
<v Speaker 3>injection with just one picture and so that everyone can

34
00:02:00.159 --> 00:02:02.920
<v Speaker 3>standard and understand it in.

35
00:02:02.840 --> 00:02:03.680
<v Speaker 2>The correct way.

36
00:02:04.480 --> 00:02:09.199
<v Speaker 3>So yeah, that was just a rhetorical question, as I said.

37
00:02:09.599 --> 00:02:14.360
<v Speaker 3>But later when I was teaching another tacke of students

38
00:02:14.919 --> 00:02:19.400
<v Speaker 3>and I was drawing picture to them, and those pictures

39
00:02:19.439 --> 00:02:24.360
<v Speaker 3>were like pictures of little dudes, and those pictures were

40
00:02:24.439 --> 00:02:28.080
<v Speaker 3>meant to be classes. So I was playing in OP

41
00:02:28.240 --> 00:02:33.960
<v Speaker 3>to them, and then I recalled this question, and I thought,

42
00:02:34.039 --> 00:02:37.599
<v Speaker 3>what could be like the next step to destrade more

43
00:02:37.680 --> 00:02:40.360
<v Speaker 3>stuff of the OP in a visual way. And I

44
00:02:40.400 --> 00:02:44.319
<v Speaker 3>started drawing like arms to those dudes, and I thought,

45
00:02:44.439 --> 00:02:49.360
<v Speaker 3>all right, let's those arms express methods in our code.

46
00:02:49.759 --> 00:02:52.800
<v Speaker 2>And then and more and more and more, and.

47
00:02:54.199 --> 00:02:59.400
<v Speaker 3>I managed to develop some kind of visual language to

48
00:02:59.599 --> 00:03:02.520
<v Speaker 3>express ask what's going on in your code.

49
00:03:03.080 --> 00:03:05.599
<v Speaker 2>So yeah, something like this.

50
00:03:06.000 --> 00:03:09.479
<v Speaker 4>I mean, your pictures are awesome. Did you come to

51
00:03:09.520 --> 00:03:12.680
<v Speaker 4>a conclusion, did you measure that this works?

52
00:03:13.120 --> 00:03:16.400
<v Speaker 3>So in my talks, I was just excited that it

53
00:03:16.479 --> 00:03:20.360
<v Speaker 3>all makes sense despite of the fact that it's still

54
00:03:20.400 --> 00:03:24.039
<v Speaker 3>all weird, and I was excited about it and wanted

55
00:03:24.080 --> 00:03:28.240
<v Speaker 3>to present this basically to show that. But I think

56
00:03:28.280 --> 00:03:33.159
<v Speaker 3>it was helpful for me in several ways. First of all,

57
00:03:33.479 --> 00:03:36.840
<v Speaker 3>I was able to explain some concepts of few to

58
00:03:36.919 --> 00:03:42.840
<v Speaker 3>my students. Secondly, I was using it in my freelancing

59
00:03:42.879 --> 00:03:46.319
<v Speaker 3>projects as well, so I found it useful when you

60
00:03:46.680 --> 00:03:52.280
<v Speaker 3>have some complex case when you don't know how to

61
00:03:52.400 --> 00:03:56.960
<v Speaker 3>model it correctly, or you just have some complicated set

62
00:03:56.960 --> 00:04:01.199
<v Speaker 3>of classes when you're solving some specific pro What I

63
00:04:01.240 --> 00:04:04.599
<v Speaker 3>did is that I, let's say I had five or

64
00:04:04.599 --> 00:04:07.599
<v Speaker 3>six classes and I didn't like the design, so I

65
00:04:07.759 --> 00:04:11.360
<v Speaker 3>just decided to draw all of them in using this

66
00:04:11.520 --> 00:04:15.439
<v Speaker 3>visual language, and from that I started gaining like insights

67
00:04:15.719 --> 00:04:21.199
<v Speaker 3>that like this, uh, this method is duplicated in several places,

68
00:04:21.800 --> 00:04:22.759
<v Speaker 3>and and.

69
00:04:22.680 --> 00:04:23.879
<v Speaker 2>So on and so on and so on.

70
00:04:23.959 --> 00:04:28.040
<v Speaker 3>So yeah, it was useful in in my practice as well.

71
00:04:28.399 --> 00:04:32.000
<v Speaker 3>But I'm not sure how to how to share it

72
00:04:32.560 --> 00:04:37.120
<v Speaker 3>with more people and how to make more useful. But yeah,

73
00:04:37.199 --> 00:04:39.560
<v Speaker 3>I had some attempts in that as well.

74
00:04:40.120 --> 00:04:43.040
<v Speaker 5>I thought it was a really interesting idea because a

75
00:04:43.079 --> 00:04:45.720
<v Speaker 5>lot of people can do it, you know, just kind

76
00:04:45.720 --> 00:04:50.120
<v Speaker 5>of passing the dependencies as arguments. But I don't really

77
00:04:50.720 --> 00:04:53.720
<v Speaker 5>have an understanding of it, and I think getting that

78
00:04:53.879 --> 00:04:56.839
<v Speaker 5>visual model when your head really goes a long way.

79
00:04:57.319 --> 00:05:00.319
<v Speaker 5>Did you did you find the people reacted well to it?

80
00:05:00.800 --> 00:05:01.040
<v Speaker 2>Yeah?

81
00:05:01.079 --> 00:05:05.120
<v Speaker 3>People usually like it a lot because it's a very

82
00:05:05.160 --> 00:05:07.639
<v Speaker 3>surprising way of thinking about the.

83
00:05:07.560 --> 00:05:08.240
<v Speaker 2>Code for them.

84
00:05:08.920 --> 00:05:13.879
<v Speaker 3>So yeah, people are really excited, but I don't think

85
00:05:13.959 --> 00:05:17.240
<v Speaker 3>many of them find it very practical so far.

86
00:05:17.639 --> 00:05:21.480
<v Speaker 5>I assume as you're during the rails mountain, the mountain

87
00:05:21.560 --> 00:05:25.879
<v Speaker 5>of learning rails, Yeah, this is a yeah, I should

88
00:05:25.959 --> 00:05:30.199
<v Speaker 5>chat about it. Yeah, this is a really interesting thing.

89
00:05:30.879 --> 00:05:33.199
<v Speaker 5>What is at the top? What is at the top

90
00:05:33.279 --> 00:05:34.519
<v Speaker 5>of the rails mountain?

91
00:05:35.040 --> 00:05:37.360
<v Speaker 3>So I would say it's not a rails mountain, it's

92
00:05:37.399 --> 00:05:42.879
<v Speaker 3>a cycle of not a cycle, but well, let's say

93
00:05:42.920 --> 00:05:48.040
<v Speaker 3>life cycle of every rails developer. So it's also another

94
00:05:48.079 --> 00:05:53.120
<v Speaker 3>model I developed for another talk in Ukraine, and I

95
00:05:53.160 --> 00:05:57.720
<v Speaker 3>simply spotted that many of Ruby developers go through the

96
00:05:57.800 --> 00:06:01.839
<v Speaker 3>same steps and I was on many of them as well.

97
00:06:01.959 --> 00:06:05.399
<v Speaker 3>So the first step when you love rails, when you

98
00:06:05.439 --> 00:06:09.879
<v Speaker 3>believe in Rail's way and you just fell in love.

99
00:06:10.560 --> 00:06:13.600
<v Speaker 3>Then later on you started getting some problems and you

100
00:06:13.680 --> 00:06:19.000
<v Speaker 3>fix them with some magic, and after like several attempts

101
00:06:19.000 --> 00:06:22.800
<v Speaker 3>to fix stuff with magic, you might get disappointed in

102
00:06:22.879 --> 00:06:25.920
<v Speaker 3>rails way. And then you switch to another step where

103
00:06:25.959 --> 00:06:32.600
<v Speaker 3>you start learning about all the alternative approaches like solid dryer,

104
00:06:32.720 --> 00:06:36.839
<v Speaker 3>be I don't know, trail blazer service objects and so

105
00:06:36.879 --> 00:06:42.920
<v Speaker 3>on of course patterns. Then you can, of course find

106
00:06:43.000 --> 00:06:48.639
<v Speaker 3>your spot where you feel comfortable because like your projects

107
00:06:48.680 --> 00:06:53.160
<v Speaker 3>of a specific size, or like you just found your

108
00:06:53.199 --> 00:06:58.839
<v Speaker 3>way of managing complexity in web publications. But many people

109
00:06:59.360 --> 00:07:03.160
<v Speaker 3>they decided that all right, something is wrong with the Ruby,

110
00:07:03.279 --> 00:07:08.240
<v Speaker 3>something might be wrong with the way we develop applications,

111
00:07:08.560 --> 00:07:12.639
<v Speaker 3>and they started to leave and they decided they should

112
00:07:12.680 --> 00:07:18.480
<v Speaker 3>try other languages, other approaches. And this is step three

113
00:07:18.879 --> 00:07:20.959
<v Speaker 3>and step four, like the final the top of the

114
00:07:21.000 --> 00:07:24.920
<v Speaker 3>mountain is when you managed to learn from all those

115
00:07:24.959 --> 00:07:27.800
<v Speaker 3>approaches in different ecosystems and.

116
00:07:27.839 --> 00:07:30.680
<v Speaker 2>You well on the top level.

117
00:07:30.759 --> 00:07:33.879
<v Speaker 3>It actually doesn't matter for you what technology you use,

118
00:07:34.399 --> 00:07:36.879
<v Speaker 3>but you can return to Ruby, and you can return

119
00:07:36.920 --> 00:07:40.360
<v Speaker 3>to Rails with all this knowledge, and you've broken the metrics,

120
00:07:40.680 --> 00:07:43.240
<v Speaker 3>so now you know how to do stuff.

121
00:07:43.600 --> 00:07:45.360
<v Speaker 2>So that's the final step.

122
00:07:45.680 --> 00:07:48.879
<v Speaker 1>Yeah, I think for me getting up to that matrix's

123
00:07:49.040 --> 00:07:55.240
<v Speaker 1>broken place, it originally came from me learning Rails before

124
00:07:55.240 --> 00:07:58.079
<v Speaker 1>I learned Ruby. That was probably one of the biggest

125
00:07:58.079 --> 00:08:01.639
<v Speaker 1>mistakes that I made. I just dove right into Rails

126
00:08:02.040 --> 00:08:06.800
<v Speaker 1>without understanding how Ruby classes worked, how to create true,

127
00:08:07.360 --> 00:08:11.720
<v Speaker 1>plain old Ruby objects, and so I would have super

128
00:08:11.759 --> 00:08:16.439
<v Speaker 1>fat controllers with super fat models. Things were not maintainable,

129
00:08:16.720 --> 00:08:20.439
<v Speaker 1>they were not manageable. I had zero unit tests on

130
00:08:20.560 --> 00:08:25.680
<v Speaker 1>my old applications, and I thought that man rails isn't

131
00:08:25.680 --> 00:08:29.920
<v Speaker 1>really all that intuitive, it's not all that great. So

132
00:08:30.439 --> 00:08:33.919
<v Speaker 1>it really was, hey, maybe I'm just a bad programmer,

133
00:08:34.480 --> 00:08:37.279
<v Speaker 1>which is kind of down in your Rails disciple way.

134
00:08:37.759 --> 00:08:41.000
<v Speaker 1>So for me, it was getting up to that peak

135
00:08:41.039 --> 00:08:45.600
<v Speaker 1>of the mountain by actually learning Ruby, picking up on

136
00:08:45.759 --> 00:08:51.039
<v Speaker 1>some Ruby techniques like minimalization, or just creating Ruby objects

137
00:08:51.120 --> 00:08:55.399
<v Speaker 1>instead of just relying what just rails provides. So becoming

138
00:08:55.440 --> 00:08:59.039
<v Speaker 1>a better Ruby developer made me understand a lot more

139
00:08:59.120 --> 00:09:00.799
<v Speaker 1>and become a better Else developer.

140
00:09:00.960 --> 00:09:01.440
<v Speaker 6>Essentially.

141
00:09:02.200 --> 00:09:07.440
<v Speaker 5>Do you think that people hit that stage faster with

142
00:09:08.159 --> 00:09:12.639
<v Speaker 5>Ruby and rails because it's so good at accelerating you

143
00:09:12.799 --> 00:09:14.320
<v Speaker 5>through the early stuff.

144
00:09:14.639 --> 00:09:17.919
<v Speaker 1>For me, I would say no, I was a pretty

145
00:09:17.919 --> 00:09:22.759
<v Speaker 1>horrible developer for a long time, mostly because I was

146
00:09:22.799 --> 00:09:25.639
<v Speaker 1>just trying to do things by myself. I wasn't including

147
00:09:25.679 --> 00:09:29.679
<v Speaker 1>other people in my work, and that inherently limited me

148
00:09:29.960 --> 00:09:31.840
<v Speaker 1>on what I was able to do.

149
00:09:32.440 --> 00:09:35.519
<v Speaker 4>So Von, I feel like I'm seeing a pattern here

150
00:09:35.639 --> 00:09:38.600
<v Speaker 4>that you are taking these abstract concepts and putting them

151
00:09:38.600 --> 00:09:41.840
<v Speaker 4>into pictures and for the most part, like you seem

152
00:09:41.879 --> 00:09:44.399
<v Speaker 4>to be getting good reception of it. Like I myself

153
00:09:44.440 --> 00:09:47.159
<v Speaker 4>am connecting with this kind of stuff. I feel like

154
00:09:47.200 --> 00:09:49.519
<v Speaker 4>it's kind of analogous to you know that, maybe that

155
00:09:49.600 --> 00:09:51.960
<v Speaker 4>one dude that you know that like maybe it makes

156
00:09:52.000 --> 00:09:54.799
<v Speaker 4>good analogies all the time kind of thing. I feel

157
00:09:54.840 --> 00:09:57.480
<v Speaker 4>like it's kind of like that, like that kind of

158
00:09:57.480 --> 00:10:00.519
<v Speaker 4>a person tends to be able to Maybe it's a

159
00:10:00.519 --> 00:10:03.080
<v Speaker 4>skill of a teacher. I don't know exactly where I'm

160
00:10:03.080 --> 00:10:05.240
<v Speaker 4>going with this, but I feel like there's something here,

161
00:10:05.279 --> 00:10:06.960
<v Speaker 4>which is I think what you're coming to tell us

162
00:10:07.000 --> 00:10:10.039
<v Speaker 4>they like, Hey, maybe I don't have a system, I

163
00:10:10.080 --> 00:10:13.279
<v Speaker 4>haven't measured it yet, but but here's the beginnings of

164
00:10:13.320 --> 00:10:15.440
<v Speaker 4>one is that where you feel like you are in

165
00:10:15.440 --> 00:10:17.200
<v Speaker 4>the process or do you feel like you're further along?

166
00:10:17.600 --> 00:10:18.759
<v Speaker 2>So, yeah, I do.

167
00:10:19.759 --> 00:10:23.399
<v Speaker 3>I do a lot of teaching, and like a lot

168
00:10:23.440 --> 00:10:27.600
<v Speaker 3>of my relatives at teachers, so I have some something

169
00:10:28.679 --> 00:10:34.080
<v Speaker 3>something like this, and yeah, these things I'm talking about

170
00:10:34.120 --> 00:10:37.159
<v Speaker 3>here and there, they are kind of a part of

171
00:10:37.200 --> 00:10:38.600
<v Speaker 3>a bigger system that I have.

172
00:10:38.639 --> 00:10:39.279
<v Speaker 2>In my mind.

173
00:10:39.840 --> 00:10:45.360
<v Speaker 3>And also I've tried to write a book. It should

174
00:10:45.440 --> 00:10:49.960
<v Speaker 3>called Painless Rails. But yeah, it's already two years after

175
00:10:50.000 --> 00:10:53.080
<v Speaker 3>I started writing it and right now it's in postponed state.

176
00:10:53.519 --> 00:10:59.000
<v Speaker 3>But like the bigger the big goal for me is

177
00:10:59.080 --> 00:11:07.360
<v Speaker 3>to make development using rails joyful again. Because I'm a freelancer,

178
00:11:07.519 --> 00:11:12.200
<v Speaker 3>I usually I frequently switched from project to project, and

179
00:11:12.960 --> 00:11:17.360
<v Speaker 3>I see that a lot of people they inventing their

180
00:11:17.360 --> 00:11:21.000
<v Speaker 3>own bicycles. I mean, remember those times when we had

181
00:11:21.080 --> 00:11:25.399
<v Speaker 3>like single rails, way, when we were all on the

182
00:11:25.440 --> 00:11:31.039
<v Speaker 3>step one of this mountain. We all were enjoying the process.

183
00:11:31.600 --> 00:11:36.320
<v Speaker 3>And then we started like inventing more approaches because like

184
00:11:36.639 --> 00:11:40.120
<v Speaker 3>we all grew, our projects become bigger and more complex.

185
00:11:40.440 --> 00:11:45.600
<v Speaker 3>We needed some other methods to manage complexity. But we

186
00:11:45.720 --> 00:11:50.039
<v Speaker 3>ended up having like dozens of different approaches and there's

187
00:11:50.159 --> 00:11:54.000
<v Speaker 3>no single unified way of doing that. Now, I think

188
00:11:54.200 --> 00:12:00.519
<v Speaker 3>ideally we should have one unified approach again would feed

189
00:12:00.879 --> 00:12:05.159
<v Speaker 3>to ninety percent of all projects. Of course, like the

190
00:12:05.240 --> 00:12:09.600
<v Speaker 3>domain models and a lot of specifics is different. But

191
00:12:10.240 --> 00:12:14.080
<v Speaker 3>I'm still pretty sure that for ninety percent of ninety

192
00:12:14.120 --> 00:12:17.120
<v Speaker 3>percent of a project, for ninety percent of functionality of

193
00:12:17.240 --> 00:12:22.120
<v Speaker 3>ninety percent of all rails projects or web projects on Ruby,

194
00:12:22.639 --> 00:12:26.240
<v Speaker 3>we can develop a single unified way. Like imagine if

195
00:12:26.240 --> 00:12:31.080
<v Speaker 3>we could measure mathematically like a different a progress like

196
00:12:31.120 --> 00:12:36.480
<v Speaker 3>with Trailblaser, we have a complex situatio of I don't

197
00:12:36.480 --> 00:12:41.480
<v Speaker 3>know five, and some another metric of I don't know ten,

198
00:12:42.120 --> 00:12:45.600
<v Speaker 3>and for another like wul rails approach, we.

199
00:12:45.679 --> 00:12:47.799
<v Speaker 2>Have like those numbers of.

200
00:12:47.960 --> 00:12:52.240
<v Speaker 3>Seven and six, and we could just compare those approaches

201
00:12:52.759 --> 00:12:57.320
<v Speaker 3>and let's say and this this approach is optimal. And

202
00:12:57.399 --> 00:13:03.320
<v Speaker 3>while it sounds pretty like fantastic, I would say I

203
00:13:03.360 --> 00:13:05.120
<v Speaker 3>still think it's doable.

204
00:13:05.399 --> 00:13:09.000
<v Speaker 2>Man, I can explain it, but it's gonna take some time.

205
00:13:09.559 --> 00:13:12.519
<v Speaker 4>So from my perspective, I think that that right there,

206
00:13:12.639 --> 00:13:16.320
<v Speaker 4>that motivation to sort of like get the I don't

207
00:13:16.360 --> 00:13:18.879
<v Speaker 4>know that there's I look at this as sort of

208
00:13:18.879 --> 00:13:22.159
<v Speaker 4>being a platonic thing that there's there's a perfect thing

209
00:13:22.240 --> 00:13:24.360
<v Speaker 4>out there and we're all trying to go get it, right,

210
00:13:24.559 --> 00:13:26.519
<v Speaker 4>We're all trying to seek it. And I feel like

211
00:13:26.639 --> 00:13:29.200
<v Speaker 4>that is sort of like the motivation that drives like

212
00:13:29.720 --> 00:13:31.679
<v Speaker 4>half of the things that you see out in the world.

213
00:13:31.840 --> 00:13:34.399
<v Speaker 4>You know, somebody's upset about rails, you know. Now we

214
00:13:34.480 --> 00:13:38.840
<v Speaker 4>have what Sinatra Anami. I mean, they're even on your mountain, right,

215
00:13:38.879 --> 00:13:43.159
<v Speaker 4>like they're so popular. Trailblazer is not exactly competitor rails

216
00:13:43.159 --> 00:13:47.120
<v Speaker 4>so much, but it's it's competing against like pieces of it.

217
00:13:47.200 --> 00:13:47.360
<v Speaker 6>Right.

218
00:13:48.159 --> 00:13:50.200
<v Speaker 4>But like we have these things where somebody's like I'm

219
00:13:50.240 --> 00:13:52.279
<v Speaker 4>going to try and seek that one thing, right or

220
00:13:52.519 --> 00:13:54.639
<v Speaker 4>you know, in JavaScript world, we have this like we

221
00:13:54.720 --> 00:13:58.080
<v Speaker 4>have React, now we have you. Somebody's gonna come up

222
00:13:58.120 --> 00:14:02.440
<v Speaker 4>with another, you know framework. I mean Angular is kind

223
00:14:02.480 --> 00:14:05.000
<v Speaker 4>of like sort of underway, and Ember is basically kind

224
00:14:05.039 --> 00:14:05.759
<v Speaker 4>of gone.

225
00:14:06.279 --> 00:14:07.960
<v Speaker 6>You know, we're not even talking about.

226
00:14:08.360 --> 00:14:11.720
<v Speaker 4>The generation before that, right, Like that are just gone now,

227
00:14:11.840 --> 00:14:14.480
<v Speaker 4>Like people are always like trying to recreate this bicycle

228
00:14:14.519 --> 00:14:16.919
<v Speaker 4>to achieve that one place. I don't know that we

229
00:14:16.960 --> 00:14:19.000
<v Speaker 4>can stop that cycle.

230
00:14:19.679 --> 00:14:22.720
<v Speaker 5>I think there's always going to be more churn in

231
00:14:22.840 --> 00:14:24.919
<v Speaker 5>the front end than the back end.

232
00:14:25.399 --> 00:14:28.399
<v Speaker 4>That wasn't my conclusion, but you're welcome to make that conclusion.

233
00:14:29.720 --> 00:14:33.279
<v Speaker 3>So let me explain what I mean sure, and why

234
00:14:33.320 --> 00:14:39.039
<v Speaker 3>I think it's achievable, well at least theoretically. So, first

235
00:14:39.080 --> 00:14:43.320
<v Speaker 3>of all, this approach of expressing code in.

236
00:14:44.320 --> 00:14:46.000
<v Speaker 2>Pictures of little dudes.

237
00:14:46.600 --> 00:14:51.200
<v Speaker 3>So what ways to analyze our code we have right now?

238
00:14:51.279 --> 00:14:54.360
<v Speaker 3>So we have code coverage, for example, we have some

239
00:14:54.399 --> 00:14:57.879
<v Speaker 3>complexity metrics with flog or some other stuff with.

240
00:14:57.919 --> 00:15:01.039
<v Speaker 2>Rugby Critick, but those are numbers.

241
00:15:01.200 --> 00:15:04.799
<v Speaker 3>And let's say you have a class of five hundred

242
00:15:04.879 --> 00:15:08.279
<v Speaker 3>lines of code, and alright, you have a metric that

243
00:15:08.360 --> 00:15:13.600
<v Speaker 3>your class has complexity of something like I don't know, fifteen,

244
00:15:14.840 --> 00:15:17.799
<v Speaker 3>and that doesn't give you like a lot of information

245
00:15:17.919 --> 00:15:18.720
<v Speaker 3>you can work with.

246
00:15:19.279 --> 00:15:21.200
<v Speaker 2>And most of.

247
00:15:21.120 --> 00:15:26.639
<v Speaker 3>The tools give us very low level hints on code quality.

248
00:15:26.679 --> 00:15:30.600
<v Speaker 2>And we tend to think that rubocop hints are.

249
00:15:30.720 --> 00:15:34.360
<v Speaker 3>About code quality, but I think those are just about

250
00:15:34.399 --> 00:15:38.000
<v Speaker 3>code style mostly, and they can't show you that something

251
00:15:38.120 --> 00:15:42.399
<v Speaker 3>is wrong, but they can't give you a high level hints.

252
00:15:42.639 --> 00:15:47.039
<v Speaker 2>And now let's say we take the same.

253
00:15:46.759 --> 00:15:49.759
<v Speaker 3>Class of five hundred lines and when we try to

254
00:15:49.799 --> 00:15:52.399
<v Speaker 3>express it with the picture of little dudes, we can

255
00:15:52.559 --> 00:15:55.879
<v Speaker 3>have like here's old guy and this guy.

256
00:15:56.279 --> 00:15:57.360
<v Speaker 2>So since all.

257
00:15:57.200 --> 00:16:02.039
<v Speaker 3>The arms are methods, let's say we have seven methods.

258
00:16:02.159 --> 00:16:06.080
<v Speaker 3>So our guy has seven arms, and we see like this,

259
00:16:06.879 --> 00:16:10.720
<v Speaker 3>and yeah, in my talk, I was showing like the

260
00:16:11.279 --> 00:16:14.240
<v Speaker 3>if the method is to loan, then the army is

261
00:16:14.320 --> 00:16:17.000
<v Speaker 3>kind of lone and wavy. And from that picture you

262
00:16:17.080 --> 00:16:20.320
<v Speaker 3>already see that it's not very good to have such

263
00:16:20.320 --> 00:16:20.720
<v Speaker 3>an army.

264
00:16:20.799 --> 00:16:22.360
<v Speaker 2>It's not very convenient.

265
00:16:22.879 --> 00:16:28.000
<v Speaker 3>And for another method you have you have seven arguments there,

266
00:16:28.480 --> 00:16:31.799
<v Speaker 3>and seven arguments are seven fingers, and the army with

267
00:16:31.919 --> 00:16:35.840
<v Speaker 3>seven fingers is not convenient also, and so on and

268
00:16:35.879 --> 00:16:38.120
<v Speaker 3>so on and so on like and now you have

269
00:16:39.039 --> 00:16:43.120
<v Speaker 3>this class and the properties of the code expressing in

270
00:16:43.240 --> 00:16:48.799
<v Speaker 3>one little compact picture, and your brain is actually, well,

271
00:16:49.639 --> 00:16:55.320
<v Speaker 3>it works with visual objects much better when with the text,

272
00:16:55.879 --> 00:16:59.639
<v Speaker 3>and it takes you less time to understand.

273
00:16:59.519 --> 00:17:00.919
<v Speaker 2>Property of this picture.

274
00:17:01.559 --> 00:17:05.839
<v Speaker 3>And actually, there is a thing called channal faces, and

275
00:17:05.880 --> 00:17:06.519
<v Speaker 3>it's used.

276
00:17:07.279 --> 00:17:08.319
<v Speaker 2>You can google for it.

277
00:17:08.640 --> 00:17:14.000
<v Speaker 3>And this is a technique when people used faces with

278
00:17:14.079 --> 00:17:18.039
<v Speaker 3>different expressions to show multi dimensional data. For example, you

279
00:17:18.079 --> 00:17:21.119
<v Speaker 3>have a table with a lot of columns and you

280
00:17:21.200 --> 00:17:21.599
<v Speaker 3>have to.

281
00:17:23.240 --> 00:17:25.039
<v Speaker 2>Like, I don't know, it's.

282
00:17:24.640 --> 00:17:29.920
<v Speaker 3>Something like it's showing some death rates or some information

283
00:17:29.960 --> 00:17:34.519
<v Speaker 3>about health in different states. And for example, death rate

284
00:17:35.000 --> 00:17:38.599
<v Speaker 3>is expressed with the size of eyes and like and

285
00:17:38.920 --> 00:17:42.319
<v Speaker 3>I don't know, something else is expressed with the size

286
00:17:42.319 --> 00:17:44.640
<v Speaker 3>of mouth and so on and so on. So and

287
00:17:44.680 --> 00:17:51.160
<v Speaker 3>this uses parts of our brain which recognize faces. And

288
00:17:51.240 --> 00:17:54.079
<v Speaker 3>with this you can get very efficient. And this I

289
00:17:54.160 --> 00:17:58.559
<v Speaker 3>found very close, this channal faces thing. And yeah, and

290
00:17:58.799 --> 00:18:03.200
<v Speaker 3>what I found that if you use this in dynamics.

291
00:18:03.680 --> 00:18:06.119
<v Speaker 3>So let's say we we have this picture of a

292
00:18:06.240 --> 00:18:10.799
<v Speaker 3>five one hundred lines class and then we get a

293
00:18:10.839 --> 00:18:14.319
<v Speaker 3>pull request which changes this class and maybe some others.

294
00:18:14.720 --> 00:18:19.200
<v Speaker 3>Then we can have another picture. Then this arm is gone,

295
00:18:20.200 --> 00:18:25.559
<v Speaker 3>this arm got two new fingers, and this arm.

296
00:18:25.359 --> 00:18:28.400
<v Speaker 2>Become longer, and so on and so on.

297
00:18:28.480 --> 00:18:33.720
<v Speaker 3>So now you can, like very compactly you can see

298
00:18:34.279 --> 00:18:40.960
<v Speaker 3>what differences, what high high level differences were added to

299
00:18:41.000 --> 00:18:41.519
<v Speaker 3>your system.

300
00:18:41.839 --> 00:18:46.680
<v Speaker 5>So this is so that would be kind of part

301
00:18:46.720 --> 00:18:50.559
<v Speaker 5>of some kind of continuous integration system.

302
00:18:51.640 --> 00:18:55.599
<v Speaker 3>Yes, correct, Actually, so two links I've sent to you,

303
00:18:56.039 --> 00:19:01.319
<v Speaker 3>the one which called dudes up. This is a prototype

304
00:19:01.759 --> 00:19:04.359
<v Speaker 3>which is developed by my student.

305
00:19:04.519 --> 00:19:05.880
<v Speaker 2>Which already does that.

306
00:19:06.119 --> 00:19:10.480
<v Speaker 3>Actually, so you can plug it to your pository and

307
00:19:10.839 --> 00:19:14.119
<v Speaker 3>it will start posting you pictures of those little dudes.

308
00:19:14.160 --> 00:19:15.839
<v Speaker 2>Whenever you create full request?

309
00:19:16.240 --> 00:19:18.559
<v Speaker 4>Does it work on Ruby? It looks like as a

310
00:19:18.599 --> 00:19:19.839
<v Speaker 4>gem f on a cat file.

311
00:19:20.400 --> 00:19:23.640
<v Speaker 3>Yeah, it should work. I Unfortunately I didn't have the

312
00:19:23.720 --> 00:19:26.000
<v Speaker 3>chance to play with it a lot. And as I said,

313
00:19:26.000 --> 00:19:28.440
<v Speaker 3>it's a prototype, but it should work.

314
00:19:28.720 --> 00:19:33.599
<v Speaker 4>Okay, awesome, let's see here. I'm not sure it looks

315
00:19:33.640 --> 00:19:36.519
<v Speaker 4>like an app. All right, well we'll link it in

316
00:19:36.559 --> 00:19:37.720
<v Speaker 4>the stuff or whatever you play with.

317
00:19:37.799 --> 00:19:42.440
<v Speaker 3>Oh yeah, so the gem is the last one called

318
00:19:42.519 --> 00:19:47.400
<v Speaker 3>Judity and Dude's tap is. Yeah, it's an app. Basically

319
00:19:47.480 --> 00:19:52.440
<v Speaker 3>it should be deployed first to Yeah, but I think

320
00:19:52.480 --> 00:19:54.920
<v Speaker 3>I should just do that so that you could be

321
00:19:54.960 --> 00:19:57.200
<v Speaker 3>able to plug it to your report.

322
00:19:57.680 --> 00:19:59.119
<v Speaker 6>Should they work together or something?

323
00:20:01.240 --> 00:20:03.680
<v Speaker 3>Is a gem that you can pluck to your repository.

324
00:20:03.880 --> 00:20:07.440
<v Speaker 3>And I believe it's a common line utility and you

325
00:20:07.440 --> 00:20:15.039
<v Speaker 3>can say, well, please express these classes as those pictures

326
00:20:15.039 --> 00:20:17.000
<v Speaker 3>of little nets and you will get that.

327
00:20:17.440 --> 00:20:18.559
<v Speaker 6>Gotcha?

328
00:20:19.480 --> 00:20:25.720
<v Speaker 3>Do gl is the Yeah, it's a librariation of it. Yeah,

329
00:20:25.759 --> 00:20:29.279
<v Speaker 3>it's the core of the whole thing which actually draws

330
00:20:29.319 --> 00:20:35.160
<v Speaker 3>all those Uh. This can potentially change a way of

331
00:20:35.240 --> 00:20:41.359
<v Speaker 3>thinking about code complexity, and of course it requires a

332
00:20:41.400 --> 00:20:45.200
<v Speaker 3>lot of more research, and I don't know marketing, sure,

333
00:20:45.240 --> 00:20:47.160
<v Speaker 3>but yeah, I like it.

334
00:20:47.279 --> 00:20:51.119
<v Speaker 4>So it sounds like what you're arguing here, Please correct

335
00:20:51.160 --> 00:20:53.160
<v Speaker 4>me if I'm wrong. Sounds like what you're kind of

336
00:20:53.279 --> 00:20:59.759
<v Speaker 4>making an argument for is that if you express your

337
00:20:59.799 --> 00:21:04.640
<v Speaker 4>code quality in this visual kind of language, you basically

338
00:21:04.720 --> 00:21:09.319
<v Speaker 4>can do I think two things. One you're cutting down

339
00:21:09.319 --> 00:21:14.559
<v Speaker 4>on noise, and two you're increasing bandwidth because we're using

340
00:21:14.559 --> 00:21:16.359
<v Speaker 4>more parts of our brain to help kind of handle

341
00:21:16.359 --> 00:21:19.200
<v Speaker 4>this or whatever, So you're communicating with more bandwidth.

342
00:21:19.559 --> 00:21:23.359
<v Speaker 3>Correct, Yes, I mean the amount of information you can

343
00:21:24.400 --> 00:21:28.039
<v Speaker 3>express in one place is also important. Like remember that

344
00:21:28.240 --> 00:21:32.079
<v Speaker 3>our brain can handle only like seven five to seven

345
00:21:32.160 --> 00:21:35.160
<v Speaker 3>things in one bite like here.

346
00:21:35.759 --> 00:21:37.400
<v Speaker 2>Because of the compactness, you.

347
00:21:37.359 --> 00:21:40.200
<v Speaker 3>Can place like a decent amount of colde and analyze

348
00:21:40.200 --> 00:21:42.359
<v Speaker 3>it in one place on one picture.

349
00:21:42.720 --> 00:21:45.240
<v Speaker 1>Yeah, And I think that where I like this is

350
00:21:46.079 --> 00:21:50.319
<v Speaker 1>the at a glance visual of where things are at.

351
00:21:50.720 --> 00:21:54.640
<v Speaker 1>So if I guess one of these little people or

352
00:21:54.799 --> 00:21:58.400
<v Speaker 1>dudes as looks like they're called, if one of them

353
00:21:58.480 --> 00:22:03.240
<v Speaker 1>has ten different norms, that would essentially be like ten

354
00:22:03.319 --> 00:22:09.079
<v Speaker 1>different public methods that that class has, which in a

355
00:22:09.079 --> 00:22:12.759
<v Speaker 1>lot of cases, if you're creating a poro, would not

356
00:22:12.880 --> 00:22:16.599
<v Speaker 1>be ideal. So right off the bat, you could say, wow,

357
00:22:16.759 --> 00:22:20.640
<v Speaker 1>this class has some serious complexity because you have ten

358
00:22:20.680 --> 00:22:24.359
<v Speaker 1>different entry points to be able to interact with this class.

359
00:22:24.680 --> 00:22:27.319
<v Speaker 1>Maybe we should simplify it so it only has one

360
00:22:27.400 --> 00:22:31.160
<v Speaker 1>arm at most two and then create other smaller classes

361
00:22:31.200 --> 00:22:35.440
<v Speaker 1>to handle whatever the other methods public methods were that

362
00:22:35.480 --> 00:22:37.680
<v Speaker 1>this class was originally housing.

363
00:22:38.240 --> 00:22:40.319
<v Speaker 2>Correct. Yes, that's a good example.

364
00:22:40.640 --> 00:22:44.640
<v Speaker 3>I did similar thing in my talk in a trubconf

365
00:22:44.759 --> 00:22:49.119
<v Speaker 3>I just took another talk of Sandy Mats where she

366
00:22:50.480 --> 00:22:51.480
<v Speaker 3>was doing exactly that.

367
00:22:51.920 --> 00:22:56.000
<v Speaker 2>She took one huge class and step by step.

368
00:22:55.799 --> 00:22:59.880
<v Speaker 3>She splitted it into something like fifteen smaller classes, and

369
00:23:00.200 --> 00:23:03.279
<v Speaker 3>I basically illustrated the whole thing.

370
00:23:03.720 --> 00:23:07.799
<v Speaker 2>So and yeah, you can see it in the talk itself.

371
00:23:08.200 --> 00:23:11.680
<v Speaker 4>I mean kudos to Sandy Metz for like kind of

372
00:23:11.799 --> 00:23:16.359
<v Speaker 4>basically doing this for so long and giving good talks

373
00:23:16.480 --> 00:23:20.400
<v Speaker 4>right on it. But yeah, I definitely am am coming

374
00:23:20.400 --> 00:23:22.920
<v Speaker 4>around to the thing here that having a visual would

375
00:23:22.960 --> 00:23:26.000
<v Speaker 4>make communicating about that stuff a lot faster, because I

376
00:23:26.000 --> 00:23:29.240
<v Speaker 4>think one of the things that I've definitely encountered is

377
00:23:29.279 --> 00:23:33.319
<v Speaker 4>that while I've spent a lot of time looking at

378
00:23:33.319 --> 00:23:36.160
<v Speaker 4>talks like Katrina Owen is also really good at this right,

379
00:23:36.960 --> 00:23:41.359
<v Speaker 4>But like watching talks and reading about stuff, and I

380
00:23:41.400 --> 00:23:44.240
<v Speaker 4>feel like I'm pretty good at identifying these things, you know,

381
00:23:44.359 --> 00:23:47.319
<v Speaker 4>and I'll comment on them and prs and things like this.

382
00:23:48.000 --> 00:23:50.680
<v Speaker 4>I feel like it's a very hard thing, even for programmers,

383
00:23:50.720 --> 00:23:53.599
<v Speaker 4>who you know, we were like, oh, programmers are smarter

384
00:23:53.680 --> 00:23:56.000
<v Speaker 4>than the average bear, and therefore they should be able

385
00:23:56.000 --> 00:23:59.559
<v Speaker 4>to get this stuff. But I think it's a hard

386
00:23:59.599 --> 00:24:03.559
<v Speaker 4>concept for everyone. Maybe visual language would help overcome some

387
00:24:03.640 --> 00:24:04.559
<v Speaker 4>of those barriers.

388
00:24:04.799 --> 00:24:07.880
<v Speaker 1>I know for me it definitely would. And just take

389
00:24:07.920 --> 00:24:11.319
<v Speaker 1>the example this kind of like off topic but related,

390
00:24:11.759 --> 00:24:15.640
<v Speaker 1>but like a con bond board, a combine board usually

391
00:24:15.640 --> 00:24:19.920
<v Speaker 1>has three columns to do, doing and done. And that's

392
00:24:19.960 --> 00:24:25.480
<v Speaker 1>great for single flow tasks, tasks that don't require anything

393
00:24:25.519 --> 00:24:28.240
<v Speaker 1>other than a to do doing or done.

394
00:24:28.839 --> 00:24:32.359
<v Speaker 5>The most important column which is that won't do column.

395
00:24:32.279 --> 00:24:37.640
<v Speaker 1>A yeah yeah if yeah. But anyways, my problem with

396
00:24:37.720 --> 00:24:40.960
<v Speaker 1>that kind of style is that you don't have a

397
00:24:41.039 --> 00:24:45.039
<v Speaker 1>great visualization. Okay, so this story that we have now

398
00:24:45.200 --> 00:24:48.680
<v Speaker 1>developed this feature on, it's done? What is done even mean?

399
00:24:49.200 --> 00:24:52.519
<v Speaker 1>Does it mean that it has gone through the proper

400
00:24:52.559 --> 00:24:57.400
<v Speaker 1>code reviews, that it has passed a QA checkpoint, that

401
00:24:58.319 --> 00:25:01.119
<v Speaker 1>it's been deployed? You know what what does that actually mean?

402
00:25:01.720 --> 00:25:07.279
<v Speaker 1>So in a CIACD kind of world where or a

403
00:25:07.319 --> 00:25:11.240
<v Speaker 1>more proper development life cycle world, you have many more

404
00:25:11.319 --> 00:25:14.279
<v Speaker 1>steps than just to do doing and done, And so

405
00:25:14.400 --> 00:25:17.880
<v Speaker 1>I like my board's actually more visual where you do

406
00:25:17.960 --> 00:25:22.200
<v Speaker 1>have several different columns, each column representing the next step

407
00:25:22.400 --> 00:25:26.160
<v Speaker 1>for that story. So you're able to then see at

408
00:25:26.200 --> 00:25:29.359
<v Speaker 1>a glance, Okay, all of my work is done. There's

409
00:25:29.440 --> 00:25:32.559
<v Speaker 1>no more expectations for me this sprint. Why don't I

410
00:25:32.599 --> 00:25:35.640
<v Speaker 1>pull something else in or learn something or do something else.

411
00:25:36.279 --> 00:25:39.319
<v Speaker 1>So that way there is no confusion of oh, the

412
00:25:39.400 --> 00:25:42.599
<v Speaker 1>story is done, but it's still actually waiting for a

413
00:25:42.640 --> 00:25:45.119
<v Speaker 1>code review and waiting to get deployed to our staging

414
00:25:45.200 --> 00:25:49.759
<v Speaker 1>environment something like that. So I see the visual aspect

415
00:25:49.839 --> 00:25:53.039
<v Speaker 1>that we're talking about here with the little dudes being

416
00:25:53.200 --> 00:25:58.160
<v Speaker 1>very helpful in not only as a for new developers

417
00:25:58.200 --> 00:26:01.359
<v Speaker 1>but for season developers to see at a glance, what

418
00:26:01.519 --> 00:26:05.200
<v Speaker 1>is the current situation where things currently at, How healthy

419
00:26:05.279 --> 00:26:08.599
<v Speaker 1>is our actual code, What's what's the status of our

420
00:26:08.640 --> 00:26:13.680
<v Speaker 1>actual stories? Just that at a simple glance view, having

421
00:26:14.440 --> 00:26:16.519
<v Speaker 1>knowledgeable and actionable information.

422
00:26:17.160 --> 00:26:20.599
<v Speaker 3>Yeah, I think it can be also useful if you

423
00:26:20.680 --> 00:26:24.039
<v Speaker 3>want to pass the knowledge about some system you're developing,

424
00:26:24.640 --> 00:26:28.519
<v Speaker 3>and like especially of some part of some of some

425
00:26:28.559 --> 00:26:32.319
<v Speaker 3>tricky part of the system. Definitely you can draw it

426
00:26:32.400 --> 00:26:36.319
<v Speaker 3>in this way and then first of all, you're sharing

427
00:26:36.359 --> 00:26:39.559
<v Speaker 3>this picture and then you explain what it means, like

428
00:26:39.839 --> 00:26:42.880
<v Speaker 3>and yeah, and this way you can get like a

429
00:26:42.960 --> 00:26:47.480
<v Speaker 3>more compact way to to to explain things. And I

430
00:26:47.519 --> 00:26:52.559
<v Speaker 3>guess you can hope that people will understand it's more correct.

431
00:26:52.799 --> 00:26:54.839
<v Speaker 3>I hope that it will work it this way.

432
00:26:55.079 --> 00:26:55.359
<v Speaker 6>I think.

433
00:26:55.400 --> 00:26:58.519
<v Speaker 4>So I definitely am really into this image thing. I

434
00:26:58.559 --> 00:27:00.000
<v Speaker 4>think I also agree with you, Dave right.

435
00:27:00.720 --> 00:27:01.240
<v Speaker 6>I agree.

436
00:27:01.440 --> 00:27:03.880
<v Speaker 4>I have a small critique, but I mostly agree about

437
00:27:03.880 --> 00:27:06.880
<v Speaker 4>the combon board thing, as I say, because my combin board,

438
00:27:07.319 --> 00:27:09.640
<v Speaker 4>I think everyone has a common board that like you

439
00:27:09.720 --> 00:27:12.799
<v Speaker 4>make a trade off decision between having enough columns to

440
00:27:12.839 --> 00:27:15.200
<v Speaker 4>actually capture all the states that you care about, you know,

441
00:27:15.200 --> 00:27:18.079
<v Speaker 4>because my combon board is like seven columns big, because

442
00:27:18.559 --> 00:27:20.799
<v Speaker 4>you know, I'm focused on.

443
00:27:21.279 --> 00:27:23.200
<v Speaker 2>Well, how did you get the seven?

444
00:27:23.640 --> 00:27:24.000
<v Speaker 6>All right?

445
00:27:24.079 --> 00:27:26.279
<v Speaker 4>So I have the like the needs grooming column right,

446
00:27:26.839 --> 00:27:30.359
<v Speaker 4>the actual backlog, you know, Then you have in progress.

447
00:27:30.440 --> 00:27:33.039
<v Speaker 4>Then I have an in review column, which means that hey,

448
00:27:33.160 --> 00:27:35.680
<v Speaker 4>somebody else is supposed to like look at this thing

449
00:27:35.720 --> 00:27:38.319
<v Speaker 4>and do you know, do something, and then there's a

450
00:27:38.400 --> 00:27:41.119
<v Speaker 4>ready to deploy column, and then there's it completed, and

451
00:27:41.160 --> 00:27:43.359
<v Speaker 4>then of course the ice box, right, because you can't

452
00:27:43.359 --> 00:27:47.079
<v Speaker 4>forget the icebox or seven. Okay, well that visually I

453
00:27:47.119 --> 00:27:49.079
<v Speaker 4>have a large screen here, and that visually takes up

454
00:27:49.119 --> 00:27:51.119
<v Speaker 4>the whole screen if I'm on my laptop screen.

455
00:27:51.400 --> 00:27:54.160
<v Speaker 6>I think the seventh column is hidden. You know, it's not.

456
00:27:54.240 --> 00:27:57.079
<v Speaker 5>Good screen can board.

457
00:27:57.000 --> 00:27:59.519
<v Speaker 4>Right, But anyway, so I'm not trying to get too

458
00:28:00.160 --> 00:28:02.839
<v Speaker 4>down and nuts, but my point is there is visual

459
00:28:02.839 --> 00:28:06.720
<v Speaker 4>information being drawn from this, but I think it's a

460
00:28:06.880 --> 00:28:10.960
<v Speaker 4>stretched prop like this is a problem where the illustration

461
00:28:11.079 --> 00:28:14.279
<v Speaker 4>is stretched too far right, And I think that what

462
00:28:14.799 --> 00:28:18.359
<v Speaker 4>is making me really comfortable about this code thing is,

463
00:28:18.880 --> 00:28:21.279
<v Speaker 4>at least so far, I can't think of a way

464
00:28:21.559 --> 00:28:24.200
<v Speaker 4>right in which this gets stretched, like I think, Yvon,

465
00:28:24.400 --> 00:28:27.279
<v Speaker 4>like you've captured basically most of the problems I can

466
00:28:27.319 --> 00:28:27.599
<v Speaker 4>think of.

467
00:28:27.720 --> 00:28:29.160
<v Speaker 6>So we're just talking.

468
00:28:28.880 --> 00:28:32.799
<v Speaker 4>About a high bandwidth communication solution for something that's a

469
00:28:32.839 --> 00:28:33.720
<v Speaker 4>problem right now.

470
00:28:34.240 --> 00:28:36.039
<v Speaker 6>It's just an easy cell, I think.

471
00:28:36.240 --> 00:28:42.160
<v Speaker 5>Yeah, I mean the potential is enormous. Ivan. I really

472
00:28:42.279 --> 00:28:45.599
<v Speaker 5>liked your bit in your talk when you talked about

473
00:28:45.640 --> 00:28:51.519
<v Speaker 5>the exceptions and how you visualize exceptions as a vomit.

474
00:28:52.119 --> 00:28:56.640
<v Speaker 3>Yeah, basically things go wrong, and you should understand me

475
00:28:56.720 --> 00:29:02.240
<v Speaker 3>that most of the things I haven't tried to it

476
00:29:02.319 --> 00:29:05.799
<v Speaker 3>was not hard. Like they really drive you when once

477
00:29:05.839 --> 00:29:10.039
<v Speaker 3>you get these basical laws of your universe, like you

478
00:29:10.480 --> 00:29:13.079
<v Speaker 3>basically think, all right, and how this thing will look like,

479
00:29:13.599 --> 00:29:16.920
<v Speaker 3>and like, yeah, it's it's it's obvious.

480
00:29:16.599 --> 00:29:23.200
<v Speaker 5>Not like something woman that was really evocative. And what

481
00:29:23.279 --> 00:29:28.359
<v Speaker 5>it immediately occurs to me is some kind of monitoring

482
00:29:28.440 --> 00:29:37.000
<v Speaker 5>system combined the concept of the regurgitating exceptions with the dudes,

483
00:29:37.720 --> 00:29:43.000
<v Speaker 5>and you can assign the regurgitations to the dudes so

484
00:29:43.039 --> 00:29:47.119
<v Speaker 5>you can see which classes are being physically sick.

485
00:29:47.480 --> 00:29:48.680
<v Speaker 6>I did just look through the repo.

486
00:29:49.240 --> 00:29:52.480
<v Speaker 4>There's nothing about failing tests like and the guy throwing up.

487
00:29:53.039 --> 00:29:54.839
<v Speaker 6>It's not implemented yet.

488
00:29:54.720 --> 00:29:56.200
<v Speaker 5>But that's my weekend gun.

489
00:29:58.200 --> 00:30:01.079
<v Speaker 1>In some ways, this reminds me a gym that I

490
00:30:01.240 --> 00:30:05.200
<v Speaker 1>played around with a while ago, several years ago, rails erd.

491
00:30:05.880 --> 00:30:09.119
<v Speaker 1>But this has a much better at a glance visualization

492
00:30:09.319 --> 00:30:14.720
<v Speaker 1>of communicating data and state of your rail's application. So

493
00:30:14.920 --> 00:30:16.960
<v Speaker 1>I think it's really cool. I may check this out

494
00:30:17.000 --> 00:30:17.559
<v Speaker 1>a bit further.

495
00:30:18.160 --> 00:30:20.960
<v Speaker 5>I do have some problems with it. Ivan wonder. The

496
00:30:21.160 --> 00:30:25.559
<v Speaker 5>things that struck me as odd was the methods with

497
00:30:25.759 --> 00:30:29.559
<v Speaker 5>too many lines of code in them were depicted as

498
00:30:29.599 --> 00:30:34.359
<v Speaker 5>swollen arms. So the methods of the arms already and

499
00:30:34.400 --> 00:30:38.119
<v Speaker 5>when they have too many things in them they become swollen.

500
00:30:38.559 --> 00:30:40.680
<v Speaker 2>Correct, not exactly like this.

501
00:30:41.079 --> 00:30:46.680
<v Speaker 3>So if the method is long, then you have a

502
00:30:46.720 --> 00:30:52.160
<v Speaker 3>long wavy arm. Your arm gets swollen if there is

503
00:30:52.359 --> 00:30:54.200
<v Speaker 3>too many conditional logic in it.

504
00:30:54.640 --> 00:30:58.000
<v Speaker 2>So it means like you get it right.

505
00:30:58.599 --> 00:30:59.960
<v Speaker 5>It's a complexity score.

506
00:31:00.519 --> 00:31:05.960
<v Speaker 3>It's kind of so because so basically this here it's

507
00:31:06.160 --> 00:31:12.519
<v Speaker 3>used to demonstrate the nature of complexity. This is what

508
00:31:13.960 --> 00:31:21.799
<v Speaker 3>I came to. So I think with this, with this approach,

509
00:31:21.880 --> 00:31:25.200
<v Speaker 3>you can show that there are two types of complexity.

510
00:31:25.640 --> 00:31:31.000
<v Speaker 3>One of one is internal where you have like swollen arms,

511
00:31:31.039 --> 00:31:36.359
<v Speaker 3>long arms and too many methods and too many internal methods.

512
00:31:36.880 --> 00:31:38.440
<v Speaker 2>This is all internal complexity.

513
00:31:38.880 --> 00:31:44.519
<v Speaker 3>And external complexity is where you have small.

514
00:31:44.799 --> 00:31:46.759
<v Speaker 2>Classes but you have tons of them.

515
00:31:47.200 --> 00:31:50.599
<v Speaker 3>So basically, the point I was making in the end

516
00:31:50.640 --> 00:31:54.240
<v Speaker 3>of my talk after I illustrated send them stock is

517
00:31:54.240 --> 00:31:56.240
<v Speaker 3>that complexity actually.

518
00:31:56.240 --> 00:31:58.839
<v Speaker 2>Didn't go away, it just changed the form.

519
00:31:59.440 --> 00:32:03.880
<v Speaker 3>So and so it was all internal complexity. It was

520
00:32:03.920 --> 00:32:07.000
<v Speaker 3>all in one single class. And now we have fifteen

521
00:32:07.759 --> 00:32:12.039
<v Speaker 3>classes and the complexity is now external. So we managed

522
00:32:12.559 --> 00:32:17.200
<v Speaker 3>complexity in this way. But sometimes you can have a

523
00:32:17.200 --> 00:32:20.680
<v Speaker 3>lot of classes, but it's still hard to deal with

524
00:32:20.720 --> 00:32:24.599
<v Speaker 3>those classes, so it means you've gone too far with

525
00:32:24.720 --> 00:32:30.319
<v Speaker 3>your OPO, like basically designed. So that's the idea, And

526
00:32:30.920 --> 00:32:33.599
<v Speaker 3>I think that when we are saying that we want

527
00:32:33.599 --> 00:32:37.400
<v Speaker 3>to write in like the good code, the whole question

528
00:32:37.519 --> 00:32:42.000
<v Speaker 3>is about the balance between internal complexity and external complexity.

529
00:32:42.400 --> 00:32:46.680
<v Speaker 3>So sometimes it's okay to have like conditions. Sometimes you

530
00:32:46.759 --> 00:32:50.599
<v Speaker 3>have to split it into polymorphic classes, but that's up

531
00:32:50.640 --> 00:32:52.119
<v Speaker 3>to you to decide.

532
00:32:52.319 --> 00:32:54.000
<v Speaker 4>Yeah, I think I think that's kind of what I

533
00:32:54.039 --> 00:32:57.000
<v Speaker 4>was hinting at a little bit earlier, right, Like, I

534
00:32:57.039 --> 00:33:01.000
<v Speaker 4>think it's very difficult for people to actually recognize and

535
00:33:01.359 --> 00:33:05.440
<v Speaker 4>know where they've put their complexity. Right, people are really

536
00:33:05.519 --> 00:33:09.000
<v Speaker 4>quick to recognize, you know, fat controllers and fat models,

537
00:33:09.279 --> 00:33:11.839
<v Speaker 4>but like, underneath the hood, the reason why fat controllers

538
00:33:11.839 --> 00:33:16.720
<v Speaker 4>for fat models bother us is because of you know, Okay,

539
00:33:16.799 --> 00:33:19.400
<v Speaker 4>I have a ton of conditionals in all of my methods,

540
00:33:19.559 --> 00:33:21.880
<v Speaker 4>or I have a million lines in every method right

541
00:33:21.920 --> 00:33:26.200
<v Speaker 4>I'm basically writing imperative code inside my op box here,

542
00:33:26.799 --> 00:33:30.640
<v Speaker 4>And uh, maybe there's a different Maybe there's a different

543
00:33:30.640 --> 00:33:32.519
<v Speaker 4>way to put that right, Like maybe this method is

544
00:33:32.559 --> 00:33:34.839
<v Speaker 4>super hard to test or something, right, Like, there's a

545
00:33:34.839 --> 00:33:36.599
<v Speaker 4>lot of reasons why you might want to move it out.

546
00:33:36.599 --> 00:33:38.839
<v Speaker 4>And typically I feel like we're like, look, if we

547
00:33:38.839 --> 00:33:42.680
<v Speaker 4>can write easy tests, then this is pretty good code

548
00:33:42.680 --> 00:33:44.599
<v Speaker 4>and I can maintain it or whatever, And that's sort

549
00:33:44.599 --> 00:33:47.960
<v Speaker 4>of like our way to measure that our complexity isn't

550
00:33:47.960 --> 00:33:50.440
<v Speaker 4>out of sorts. But yeah, I think the reason why

551
00:33:50.480 --> 00:33:54.359
<v Speaker 4>this tool is awesome the way that I'm understanding from you, Yvon,

552
00:33:54.680 --> 00:33:57.119
<v Speaker 4>is it's awesome because it makes it really quick to

553
00:33:57.160 --> 00:34:00.200
<v Speaker 4>be able to communicate to somebody else. This is where

554
00:34:00.079 --> 00:34:04.559
<v Speaker 4>all the this is, this is how all the pieces lie, right, Like, Okay,

555
00:34:04.640 --> 00:34:07.119
<v Speaker 4>there's a bunch of skinning skinny long arms, or there's

556
00:34:07.119 --> 00:34:09.559
<v Speaker 4>a bunch of fat long arms, or there's just fat

557
00:34:09.679 --> 00:34:11.719
<v Speaker 4>arms or whatever. Like I suddenly I am giving you

558
00:34:11.760 --> 00:34:13.880
<v Speaker 4>a ton of information about where you chose to put

559
00:34:13.920 --> 00:34:15.920
<v Speaker 4>your complexity exactly right.

560
00:34:16.440 --> 00:34:21.519
<v Speaker 3>And when I'm talking about the optimal way of developing

561
00:34:21.559 --> 00:34:26.159
<v Speaker 3>application using some approach like let's say rails, I'm actually

562
00:34:26.159 --> 00:34:29.199
<v Speaker 3>it's talking about this so we can quantify the way

563
00:34:29.239 --> 00:34:32.639
<v Speaker 3>we work, Like let's say, if we.

564
00:34:31.960 --> 00:34:35.199
<v Speaker 2>Like every requirement we get from the customer.

565
00:34:35.639 --> 00:34:39.760
<v Speaker 3>We we can quantify in a way like here we

566
00:34:39.800 --> 00:34:45.039
<v Speaker 3>should add a new entity like here we we have

567
00:34:45.119 --> 00:34:49.360
<v Speaker 3>a fork in business logic. Here we have something else

568
00:34:49.400 --> 00:34:52.079
<v Speaker 3>and something else and something else. And let's say we

569
00:34:52.079 --> 00:34:56.280
<v Speaker 3>we we've done that. And also we can with this

570
00:34:56.400 --> 00:35:01.400
<v Speaker 3>visual approach, we can quantify different approaches like Trailblazer approach,

571
00:35:01.559 --> 00:35:06.360
<v Speaker 3>like dryer be approach, Hanani and rails and I don't know,

572
00:35:06.480 --> 00:35:10.599
<v Speaker 3>rails plus service objects. For every specific approach, you can

573
00:35:10.679 --> 00:35:16.280
<v Speaker 3>say that, all right, in rails, I just threw another

574
00:35:16.400 --> 00:35:21.360
<v Speaker 3>condition in my controller and I'll be fine, and you

575
00:35:21.400 --> 00:35:24.519
<v Speaker 3>can visually see that, all right, this arm got got

576
00:35:24.519 --> 00:35:30.679
<v Speaker 3>bigger or got more fat fatter. With another approach, with Hanani,

577
00:35:31.280 --> 00:35:37.760
<v Speaker 3>I've added one repository, one service, one class for my action.

578
00:35:38.519 --> 00:35:42.480
<v Speaker 3>And I see that I've added another kind of complexity.

579
00:35:42.519 --> 00:35:45.719
<v Speaker 3>I've added three more classes. And this way you can compare,

580
00:35:46.039 --> 00:35:49.440
<v Speaker 3>so you can see that here we added internal complexity.

581
00:35:49.519 --> 00:35:53.000
<v Speaker 3>Here we are added external complexity. And now with this

582
00:35:53.079 --> 00:35:57.000
<v Speaker 3>approach we can measure for every typical feature we're developing.

583
00:35:57.559 --> 00:36:01.440
<v Speaker 3>Of course we can, we can, we should really simplify this,

584
00:36:01.840 --> 00:36:06.440
<v Speaker 3>but for theoretical ways, it should be enough. So for

585
00:36:06.519 --> 00:36:10.480
<v Speaker 3>this way, we get this amount of internal complexity, this

586
00:36:10.559 --> 00:36:15.320
<v Speaker 3>amount of external complexity, and we can now compare those numbers.

587
00:36:15.599 --> 00:36:20.039
<v Speaker 3>So whatever those numbers are, and if we can compare

588
00:36:20.119 --> 00:36:23.800
<v Speaker 3>those numbers, we potentially we can find this balance. We

589
00:36:24.000 --> 00:36:29.400
<v Speaker 3>could find that optimal approach which would add an optimal

590
00:36:29.440 --> 00:36:34.199
<v Speaker 3>amount of internal complexity and optimal amount of external complexity.

591
00:36:34.519 --> 00:36:36.840
<v Speaker 3>This is what I was talking about actually when I

592
00:36:36.880 --> 00:36:42.079
<v Speaker 3>was saying that, I think that it is still possible

593
00:36:42.159 --> 00:36:45.639
<v Speaker 3>to find an optimal way of managing complexity in Reil

594
00:36:45.719 --> 00:36:51.360
<v Speaker 3>supplications or whatever, web applications, in written and ruby, well

595
00:36:51.400 --> 00:36:55.559
<v Speaker 3>actually in any language, because it's nothing limits its usage

596
00:36:55.599 --> 00:36:58.000
<v Speaker 3>to the language itself.

597
00:36:58.360 --> 00:37:01.599
<v Speaker 4>Sure, I mean we put a value too, like a

598
00:37:01.719 --> 00:37:04.760
<v Speaker 4>dude versus a fat arm, for example. Once we have

599
00:37:04.800 --> 00:37:06.840
<v Speaker 4>those values, then we should be able to compare them.

600
00:37:07.039 --> 00:37:09.199
<v Speaker 6>Right. Is that's what we're getting at here?

601
00:37:09.599 --> 00:37:09.800
<v Speaker 2>Right?

602
00:37:09.920 --> 00:37:13.039
<v Speaker 3>Yeah? You basically visualize all the trade offs you're doing,

603
00:37:13.679 --> 00:37:16.719
<v Speaker 3>so we you're changing this thing for that thing.

604
00:37:17.119 --> 00:37:18.000
<v Speaker 2>This is what you get.

605
00:37:18.360 --> 00:37:22.880
<v Speaker 5>It's a fascinating idea. I still think the the complex methods.

606
00:37:22.920 --> 00:37:26.639
<v Speaker 5>If the arms are big, people might like that because

607
00:37:26.639 --> 00:37:29.440
<v Speaker 5>they like to have big arms. So they think that

608
00:37:29.480 --> 00:37:34.119
<v Speaker 5>these aren't swollen methods, they're kind of muscular methods.

609
00:37:34.599 --> 00:37:37.679
<v Speaker 3>Well, if you add a few most segments to the term,

610
00:37:37.760 --> 00:37:40.480
<v Speaker 3>you don't like it, you don't, you will not like

611
00:37:40.559 --> 00:37:41.559
<v Speaker 3>that much.

612
00:37:42.559 --> 00:37:45.480
<v Speaker 4>Yeah, go look at uh go get look at the

613
00:37:45.559 --> 00:37:49.199
<v Speaker 4>images on digity or whatever. They look a lot less

614
00:37:49.239 --> 00:37:51.639
<v Speaker 4>like swollen arms and they look more like I don't know,

615
00:37:51.719 --> 00:37:56.679
<v Speaker 4>resistors or like like those images those diagrams of in

616
00:37:56.760 --> 00:37:59.599
<v Speaker 4>like biology class of like the I don't know, the

617
00:37:59.639 --> 00:38:02.360
<v Speaker 4>sheets wrapping around your nerves or whatever whatever that's called.

618
00:38:02.719 --> 00:38:04.599
<v Speaker 6>It don't look like small arms. Yeah.

619
00:38:04.639 --> 00:38:07.199
<v Speaker 2>Of course, as I said, it's a prototype. It's a

620
00:38:07.360 --> 00:38:09.199
<v Speaker 2>very simplistic pictures.

621
00:38:09.280 --> 00:38:13.119
<v Speaker 3>But yeah, they're still able to express the initial Leadzier.

622
00:38:13.360 --> 00:38:15.480
<v Speaker 4>I think, oh yeah, yeah, no, No, that's what I'm

623
00:38:15.480 --> 00:38:17.239
<v Speaker 4>not critiquing. I'm saying that I don't think you have

624
00:38:17.320 --> 00:38:20.039
<v Speaker 4>to worry about people confusing them for small arms.

625
00:38:20.039 --> 00:38:20.719
<v Speaker 6>I think we're good.

626
00:38:21.320 --> 00:38:22.000
<v Speaker 2>Yeah.

627
00:38:22.079 --> 00:38:24.400
<v Speaker 4>I think I'm gonna add this to a project legit,

628
00:38:24.519 --> 00:38:27.280
<v Speaker 4>because I mean, I have a project dot there right

629
00:38:27.320 --> 00:38:30.440
<v Speaker 4>now that I'm kind of working on, and you know,

630
00:38:30.920 --> 00:38:34.199
<v Speaker 4>I'm running Rubacopriek and Rail's Best Practices on it, and

631
00:38:34.760 --> 00:38:36.480
<v Speaker 4>you know, I mean, it's a pain in the butt

632
00:38:36.519 --> 00:38:39.320
<v Speaker 4>to test. All three probably need to doc rize the

633
00:38:39.400 --> 00:38:41.320
<v Speaker 4>dude's hub saying, but yeah, I bet we could.

634
00:38:41.519 --> 00:38:42.280
<v Speaker 6>I bet you could do this.

635
00:38:42.880 --> 00:38:46.400
<v Speaker 2>Yeah, that would be great. Yeah, and please give me

636
00:38:46.480 --> 00:38:47.159
<v Speaker 2>some feedback.

637
00:38:47.440 --> 00:38:50.760
<v Speaker 1>Cool. If if people want to follow you and see

638
00:38:50.800 --> 00:38:52.559
<v Speaker 1>what you're doing online, where should they go?

639
00:38:53.039 --> 00:38:58.760
<v Speaker 2>So on Twitter? I I am, I an E m IM.

640
00:38:58.320 --> 00:39:03.119
<v Speaker 3>I guess and yeah, I think it's it's a good point.

641
00:39:03.360 --> 00:39:06.239
<v Speaker 3>If you want to see other stuff I was working

642
00:39:06.280 --> 00:39:10.599
<v Speaker 3>on at im dot as so you can see some

643
00:39:10.679 --> 00:39:16.000
<v Speaker 3>other projects of mine, And yeah, that's it's probably of

644
00:39:16.039 --> 00:39:20.039
<v Speaker 3>course my tungus bro I was working on as well.

645
00:39:20.480 --> 00:39:24.199
<v Speaker 1>Awesome. Let's go ahead and move on to some picks. Luke,

646
00:39:24.239 --> 00:39:25.360
<v Speaker 1>do you want to start us off?

647
00:39:25.960 --> 00:39:30.079
<v Speaker 5>My pick, because I've been doing it all week, is Linode,

648
00:39:30.480 --> 00:39:34.199
<v Speaker 5>the hosting company. I've been watching some of their videos

649
00:39:34.199 --> 00:39:38.199
<v Speaker 5>from last year, which was I think their nineteenth anniversary,

650
00:39:38.800 --> 00:39:43.360
<v Speaker 5>and the founder was pointing out that Linode is an

651
00:39:43.400 --> 00:39:48.360
<v Speaker 5>older company than Amazon Web Services for cloud hosting, so

652
00:39:48.719 --> 00:39:51.960
<v Speaker 5>check them out linodelinode dot com.

653
00:39:52.039 --> 00:39:54.760
<v Speaker 1>Awesome, And John, do you have any I do?

654
00:39:55.239 --> 00:39:58.039
<v Speaker 4>My first one is it's sort of a mixed PSA

655
00:39:58.760 --> 00:40:03.079
<v Speaker 4>slash you know, Rediscovery whatever. Back when I was like

656
00:40:03.760 --> 00:40:07.760
<v Speaker 4>super poor in college, you know, and working out was

657
00:40:07.920 --> 00:40:12.039
<v Speaker 4>like too expensive. You know, I did push ups and

658
00:40:12.039 --> 00:40:13.760
<v Speaker 4>sit ups like all the time. That was the same

659
00:40:13.840 --> 00:40:17.000
<v Speaker 4>that I did. And you know, now that you have

660
00:40:17.079 --> 00:40:19.599
<v Speaker 4>to be at home, you know, just like reminded.

661
00:40:19.719 --> 00:40:21.400
<v Speaker 6>I've been doing my push ups and sit ups again.

662
00:40:22.079 --> 00:40:24.360
<v Speaker 4>I've actually been doing it for a few months, but

663
00:40:24.360 --> 00:40:26.760
<v Speaker 4>but I'm just like reminded of how awesome a choice

664
00:40:26.760 --> 00:40:28.920
<v Speaker 4>that is. Since I don't I can't go out to

665
00:40:28.960 --> 00:40:32.440
<v Speaker 4>work out anywhere else. So so yep, that was pick

666
00:40:32.559 --> 00:40:33.000
<v Speaker 4>number one.

667
00:40:33.280 --> 00:40:35.960
<v Speaker 5>I've got to ask how many push ups can you do?

668
00:40:36.679 --> 00:40:38.840
<v Speaker 4>How many can I do? Or how many do I

669
00:40:38.920 --> 00:40:41.599
<v Speaker 4>do every day? Because those are completely different numbers.

670
00:40:41.719 --> 00:40:43.519
<v Speaker 5>Well, I want to note both the numbers.

671
00:40:43.760 --> 00:40:48.000
<v Speaker 4>Okay, well I can do about fifty or sixty and

672
00:40:48.079 --> 00:40:50.960
<v Speaker 4>one go, which is I don't know, it's okay, God.

673
00:40:51.320 --> 00:40:53.199
<v Speaker 5>You're going to end up looking like one of the

674
00:40:53.239 --> 00:40:54.639
<v Speaker 5>Ivans Method people.

675
00:40:54.840 --> 00:40:56.559
<v Speaker 4>I feel like if I look like one of Ivan's

676
00:40:56.599 --> 00:40:58.360
<v Speaker 4>method people would be harder for me to do those

677
00:40:58.360 --> 00:40:59.320
<v Speaker 4>push ups and sit ups.

678
00:41:02.360 --> 00:41:04.079
<v Speaker 6>But no, I I do.

679
00:41:04.280 --> 00:41:08.360
<v Speaker 4>I do twenty in two sets every day. So because

680
00:41:08.400 --> 00:41:11.360
<v Speaker 4>you don't want to go to your limit whatever anyway

681
00:41:11.400 --> 00:41:13.840
<v Speaker 4>I should. I should be jumping it up to twenty

682
00:41:13.840 --> 00:41:16.920
<v Speaker 4>five soon, I think, and I'm not feeling it yet. Okay,

683
00:41:16.960 --> 00:41:20.159
<v Speaker 4>So the second thing that I was trying to but

684
00:41:20.239 --> 00:41:23.920
<v Speaker 4>my second pick is so I have an acre and

685
00:41:23.960 --> 00:41:26.719
<v Speaker 4>a quarter and I'm backed up to some woods and

686
00:41:27.039 --> 00:41:29.199
<v Speaker 4>the whole area around me is very woody and stuff.

687
00:41:29.280 --> 00:41:32.119
<v Speaker 4>So I have lots of brush things that are hard

688
00:41:32.119 --> 00:41:35.519
<v Speaker 4>to mow around. I live on a hill, you know,

689
00:41:36.400 --> 00:41:39.280
<v Speaker 4>so like I can't. I can't mow that hill, at

690
00:41:39.360 --> 00:41:42.840
<v Speaker 4>least not on a riding lawn mower. So I do

691
00:41:43.440 --> 00:41:46.400
<v Speaker 4>I have, you know, a pretty heavy duty weed whacker,

692
00:41:46.920 --> 00:41:49.480
<v Speaker 4>you know, and I've just like, you know, I don't know,

693
00:41:49.480 --> 00:41:54.119
<v Speaker 4>I bought the thickest string that it could handle whatever. Cool, great,

694
00:41:55.280 --> 00:41:57.639
<v Speaker 4>but it's just what I don't know. It just broke

695
00:41:57.679 --> 00:42:00.119
<v Speaker 4>all the time and everything. So anyway, the thing that

696
00:42:00.159 --> 00:42:03.079
<v Speaker 4>I'm picking is like I bought a head to replace

697
00:42:03.119 --> 00:42:05.559
<v Speaker 4>it so that I could not only use sticker string,

698
00:42:05.840 --> 00:42:09.199
<v Speaker 4>but that like I bought a head that I cut

699
00:42:09.239 --> 00:42:11.400
<v Speaker 4>off these eight inch strings and just like stick them

700
00:42:11.440 --> 00:42:15.400
<v Speaker 4>in instead of having like a reel that bumps and

701
00:42:15.400 --> 00:42:19.599
<v Speaker 4>then like I don't know, stops working for whatever reason. Anyway,

702
00:42:19.719 --> 00:42:21.800
<v Speaker 4>I've been super happy with the fact that I like

703
00:42:21.880 --> 00:42:24.000
<v Speaker 4>replaced my head. So I'm not saying you should do

704
00:42:24.039 --> 00:42:26.800
<v Speaker 4>exactly what I did, but I like looked up online

705
00:42:26.880 --> 00:42:31.280
<v Speaker 4>how this stuff worked, and I came away, bought ahead,

706
00:42:31.559 --> 00:42:35.000
<v Speaker 4>replaced it on my weed whacker, and now instead of

707
00:42:35.039 --> 00:42:37.719
<v Speaker 4>taking two and a half hours, it takes two Still

708
00:42:37.760 --> 00:42:40.079
<v Speaker 4>a lot of time shaved about a half hour, but like,

709
00:42:40.199 --> 00:42:42.440
<v Speaker 4>that's a half hour of like me being pissed because

710
00:42:42.440 --> 00:42:46.559
<v Speaker 4>my string broke, so it's totally worth it. Yeah, it's

711
00:42:46.559 --> 00:42:48.599
<v Speaker 4>just been a better experience. So yeah, I don't know,

712
00:42:48.800 --> 00:42:50.639
<v Speaker 4>find the weed whacker head that works for you.

713
00:42:51.440 --> 00:42:52.159
<v Speaker 6>That's my pick.

714
00:42:52.599 --> 00:42:55.400
<v Speaker 1>Cool and avone, Do you have any picks?

715
00:42:56.199 --> 00:43:00.800
<v Speaker 2>Nope, I actually didn't prepare anything. Well.

716
00:43:00.840 --> 00:43:05.760
<v Speaker 3>I would say if you never tried, try using If

717
00:43:05.800 --> 00:43:09.480
<v Speaker 3>you're into vs code, try using viscode remote.

718
00:43:09.960 --> 00:43:10.920
<v Speaker 2>I switched to.

719
00:43:10.960 --> 00:43:15.079
<v Speaker 3>This way of working like several months ago, so whenever

720
00:43:15.119 --> 00:43:19.400
<v Speaker 3>I start new projects, I no longer set it up

721
00:43:19.440 --> 00:43:25.400
<v Speaker 3>on my local machine. I simply spin up another virtual

722
00:43:25.480 --> 00:43:30.920
<v Speaker 3>server on clean Ote, on Scaleways on Amazon and set

723
00:43:31.000 --> 00:43:34.679
<v Speaker 3>my stuff, set up my stuff there and simply work

724
00:43:36.039 --> 00:43:40.519
<v Speaker 3>using Visco Remote work. As it's in my log as

725
00:43:40.559 --> 00:43:43.559
<v Speaker 3>it is on my local machine, so if you never

726
00:43:43.599 --> 00:43:45.599
<v Speaker 3>tried that, I highly recommend.

727
00:43:45.159 --> 00:43:48.480
<v Speaker 1>It cool and I'll jump in with a few picks.

728
00:43:48.480 --> 00:43:52.159
<v Speaker 1>So the first pick is the discount code learn from

729
00:43:52.199 --> 00:43:55.480
<v Speaker 1>Home on a site that I run, Drifting Ruby, which

730
00:43:55.559 --> 00:43:58.400
<v Speaker 1>is a series of screen cast believe I'm up to

731
00:43:58.800 --> 00:44:02.760
<v Speaker 1>over two hundred and thirty now, so learn from Home.

732
00:44:03.199 --> 00:44:05.719
<v Speaker 1>And a second pick as far as just talking about

733
00:44:05.760 --> 00:44:09.079
<v Speaker 1>code quality and stuff, is a pretty cool gym called reek,

734
00:44:09.440 --> 00:44:12.199
<v Speaker 1>which will give you a nice kind of more of

735
00:44:12.239 --> 00:44:17.199
<v Speaker 1>a table visualization similar to what simple cub does of

736
00:44:17.280 --> 00:44:21.320
<v Speaker 1>all the different code complexity issues that you might have

737
00:44:21.360 --> 00:44:24.800
<v Speaker 1>within your application. And a third pick, which is kind

738
00:44:24.840 --> 00:44:26.840
<v Speaker 1>of more of an anti pick. It's a love hate

739
00:44:26.840 --> 00:44:29.920
<v Speaker 1>thing is I've been really diving a lot more into

740
00:44:30.119 --> 00:44:34.000
<v Speaker 1>Kubernetes lately and it's a lot of fun. I've been

741
00:44:34.039 --> 00:44:37.880
<v Speaker 1>having some enjoyment doing it and then also a lot

742
00:44:37.920 --> 00:44:41.719
<v Speaker 1>of frustration. So that's kind of a pick anti pick.

743
00:44:42.840 --> 00:44:47.039
<v Speaker 4>So have another episode on that stuff so that you

744
00:44:47.119 --> 00:44:50.559
<v Speaker 4>can talk about how your views have evolved or not evolved.

745
00:44:52.280 --> 00:44:55.760
<v Speaker 1>Well, so I will say I am working on a

746
00:44:55.800 --> 00:44:59.360
<v Speaker 1>pretty cool templating thing that I'm going to start all

747
00:44:59.440 --> 00:45:02.320
<v Speaker 1>my new applications, not the ones that I do for dritchery,

748
00:45:02.360 --> 00:45:05.039
<v Speaker 1>because I'll like Kumudo slim, but any application that I

749
00:45:05.079 --> 00:45:09.280
<v Speaker 1>do personally, it's going to have the doctor composed and

750
00:45:09.360 --> 00:45:13.840
<v Speaker 1>doctor file built into the new rails app. It's going

751
00:45:13.920 --> 00:45:17.880
<v Speaker 1>to then also generate all of the YAMO files for

752
00:45:18.119 --> 00:45:22.239
<v Speaker 1>deploying that application over to a Kubernetes cluster that has

753
00:45:22.280 --> 00:45:24.440
<v Speaker 1>an ingress enabled, so all you have to do is

754
00:45:24.840 --> 00:45:28.079
<v Speaker 1>deploy it and they'll create a whole new environment. So

755
00:45:28.679 --> 00:45:31.760
<v Speaker 1>I've been playing a round with that quite a bit lately.

756
00:45:32.480 --> 00:45:35.599
<v Speaker 6>Cool. But also i'd give a thumbs up for Riek two.

757
00:45:35.719 --> 00:45:37.840
<v Speaker 6>I do use it, and I do love it. Right.

758
00:45:38.840 --> 00:45:43.079
<v Speaker 4>I just having multiple code quality checks in one tool,

759
00:45:43.360 --> 00:45:45.360
<v Speaker 4>and I also don't want to go out there and

760
00:45:45.679 --> 00:45:46.559
<v Speaker 4>pay for one to either.

761
00:45:47.079 --> 00:45:51.039
<v Speaker 1>And I think there's another one called standard RB something

762
00:45:51.119 --> 00:45:54.679
<v Speaker 1>like that, which will actually do all of the linking

763
00:45:54.760 --> 00:45:57.199
<v Speaker 1>changes for you, and it's a pretty safe one. I

764
00:45:57.239 --> 00:46:00.920
<v Speaker 1>think test double mates. It can't remember, it's been a

765
00:46:00.960 --> 00:46:01.920
<v Speaker 1>while since I've seen it.

766
00:46:02.239 --> 00:46:04.679
<v Speaker 6>Yeah, I vaguely recall it. I'm just checking out it

767
00:46:04.800 --> 00:46:06.360
<v Speaker 6>is standard IV that is the same yep.

768
00:46:06.639 --> 00:46:06.920
<v Speaker 5>Cool?

769
00:46:07.440 --> 00:46:10.400
<v Speaker 1>All right, well, Ivine, I appreciate you coming on and

770
00:46:10.440 --> 00:46:13.039
<v Speaker 1>talking with us, and that's a wrap.

771
00:46:13.360 --> 00:46:15.159
<v Speaker 2>Thank you guys, thanks swimming lights and me.

772
00:46:15.360 --> 00:46:16.000
<v Speaker 6>Thanks for coming.

773
00:46:16.320 --> 00:46:16.519
<v Speaker 2>Yeah.

774
00:46:16.599 --> 00:46:18.440
<v Speaker 5>Thanks, that was really really interesting.
