WEBVTT

1
00:00:06.200 --> 00:00:08.919
<v Speaker 1>Hey everybody, and welcome to another episode of the Ruby

2
00:00:08.960 --> 00:00:13.119
<v Speaker 1>Rokes podcast. This week, on our panel, we have John Epperson. Hello, everybody,

3
00:00:13.119 --> 00:00:17.000
<v Speaker 1>book stutters Hello. I'm Charles Maxwood from dev chat dot tv.

4
00:00:17.280 --> 00:00:18.920
<v Speaker 1>I just want to shout out go check out dev

5
00:00:19.000 --> 00:00:21.480
<v Speaker 1>influencers dot com if you're looking to be a dev influencer.

6
00:00:21.719 --> 00:00:24.359
<v Speaker 1>I guess that's pretty straightforward. We have a special guest

7
00:00:24.359 --> 00:00:27.519
<v Speaker 1>this week, and that's Voluntino Stole Valentino, do you want

8
00:00:27.519 --> 00:00:29.839
<v Speaker 1>to introduce yourself, let everybody know why you're offesome and

9
00:00:29.839 --> 00:00:31.000
<v Speaker 1>all that good stuff.

10
00:00:30.760 --> 00:00:31.160
<v Speaker 2>Say there?

11
00:00:31.239 --> 00:00:31.440
<v Speaker 3>Sure.

12
00:00:31.920 --> 00:00:35.000
<v Speaker 2>I'm a software engineer at doc Simity. I've been working

13
00:00:35.000 --> 00:00:37.640
<v Speaker 2>there for quite some time now. I've been working on

14
00:00:37.719 --> 00:00:39.679
<v Speaker 2>Ruby quite a long time, and it's kind of my

15
00:00:39.759 --> 00:00:42.799
<v Speaker 2>go to crutch of a language, if you will. But

16
00:00:43.439 --> 00:00:46.960
<v Speaker 2>I really enjoy hacking away on embedded systems with Ruby.

17
00:00:47.039 --> 00:00:50.799
<v Speaker 2>That's been my latest craze. And you know, I've really

18
00:00:50.840 --> 00:00:54.719
<v Speaker 2>been digging deep into the Ruby core library and kind

19
00:00:54.719 --> 00:00:58.600
<v Speaker 2>of just exploring it and it's really not that scary.

20
00:00:58.960 --> 00:01:02.520
<v Speaker 2>So I'm hoping to kind of make people a little

21
00:01:02.920 --> 00:01:06.599
<v Speaker 2>make it a little more approachable for people, and hopefully

22
00:01:06.640 --> 00:01:09.519
<v Speaker 2>get some more contributors out of it, including myself.

23
00:01:10.079 --> 00:01:12.719
<v Speaker 1>Nice, So we have you on the docket to talk

24
00:01:12.719 --> 00:01:15.760
<v Speaker 1>about the hidden gems of Ruby's IRB. But before we

25
00:01:15.879 --> 00:01:19.200
<v Speaker 1>dive into that, you said embedded systems with Ruby. So

26
00:01:19.239 --> 00:01:22.000
<v Speaker 1>are you using what is it m ruby for that?

27
00:01:22.640 --> 00:01:26.959
<v Speaker 2>Or for some projects I have? Primarily I've been working

28
00:01:27.000 --> 00:01:31.239
<v Speaker 2>on a Raspberry Pie. I'm no expert, so I picked

29
00:01:31.280 --> 00:01:34.400
<v Speaker 2>up one of those starter kits that has a bajillion

30
00:01:34.840 --> 00:01:39.120
<v Speaker 2>tiny little components to work with and slowly chipping away

31
00:01:39.280 --> 00:01:43.760
<v Speaker 2>at converting some Python examples to prepare for this episode.

32
00:01:43.879 --> 00:01:49.120
<v Speaker 3>I also bought a collection of roster Pie related devices.

33
00:01:49.319 --> 00:01:53.200
<v Speaker 3>Oh there you go too, could code along with Valentino's

34
00:01:53.359 --> 00:01:58.640
<v Speaker 3>Ruby guide, and as he says, the Python Python is infested,

35
00:01:59.159 --> 00:02:05.200
<v Speaker 3>absolutely infested the rollsby pint ecosystem. There's Python everywhere and

36
00:02:05.599 --> 00:02:08.400
<v Speaker 3>trying to try to root it out, trying to root

37
00:02:08.439 --> 00:02:10.719
<v Speaker 3>it out of the hard but getting getting a kind

38
00:02:10.719 --> 00:02:13.680
<v Speaker 3>of Ruby pitch fork and digging all of a Python

39
00:02:13.719 --> 00:02:16.879
<v Speaker 3>out of the examples is a really fantastic work. So

40
00:02:16.919 --> 00:02:18.120
<v Speaker 3>thank you very much for doing that.

41
00:02:18.479 --> 00:02:23.879
<v Speaker 1>Code by code, we'll make it through gross python anyway.

42
00:02:24.159 --> 00:02:27.719
<v Speaker 1>So yeah, well we'll send people over to your Raspberry

43
00:02:27.759 --> 00:02:30.919
<v Speaker 1>Pie Ruby stuff because that that that's just cool stuff.

44
00:02:30.960 --> 00:02:33.400
<v Speaker 1>In fact, we should just get you back to nerd

45
00:02:33.479 --> 00:02:37.560
<v Speaker 1>out with that on anyway. Sure, but yeah, let's talk

46
00:02:37.599 --> 00:02:40.000
<v Speaker 1>about IRB because it's a tool that we kind of

47
00:02:40.039 --> 00:02:43.800
<v Speaker 1>all go to. Whether we realize that it's the Rails

48
00:02:43.840 --> 00:02:47.000
<v Speaker 1>console kind of runs on top of IRB, or whether

49
00:02:47.000 --> 00:02:49.479
<v Speaker 1>we just run it ourselves and then run stuff in it.

50
00:02:49.840 --> 00:02:52.000
<v Speaker 1>Why don't we kind of go with kind of a

51
00:02:52.080 --> 00:02:54.599
<v Speaker 1>high level overview of what IRB is for people who

52
00:02:54.639 --> 00:02:57.479
<v Speaker 1>are just getting into Ruby, and then we can just

53
00:02:57.520 --> 00:02:59.680
<v Speaker 1>assume that people know it and use it and we

54
00:02:59.719 --> 00:03:03.400
<v Speaker 1>can into okay, stuff you didn't know about, right, Sure?

55
00:03:03.680 --> 00:03:07.879
<v Speaker 2>Yeah, I mean IRB's basically just a repel. You give

56
00:03:07.919 --> 00:03:12.479
<v Speaker 2>it input and it'll evaluate the Ruby that you give it,

57
00:03:12.520 --> 00:03:16.039
<v Speaker 2>analyze the syntax of it, and then directly show you

58
00:03:16.080 --> 00:03:18.159
<v Speaker 2>the output for whatever that it is that you give it.

59
00:03:18.719 --> 00:03:21.240
<v Speaker 2>So people work in repels all the time. If you

60
00:03:21.280 --> 00:03:24.159
<v Speaker 2>open up any console that's a repel and a bash

61
00:03:24.199 --> 00:03:29.400
<v Speaker 2>shell basically. But Ruby's IRB kind of has a hierarchy

62
00:03:29.479 --> 00:03:32.759
<v Speaker 2>to it that you know, breaks it all the different

63
00:03:33.439 --> 00:03:37.240
<v Speaker 2>pieces of it into little modules that then pipe through

64
00:03:37.680 --> 00:03:41.080
<v Speaker 2>as it's going through and evaluating just the strings that

65
00:03:41.120 --> 00:03:43.639
<v Speaker 2>you're giving it, and it does that in real time,

66
00:03:44.159 --> 00:03:47.639
<v Speaker 2>and it does that basically in what they call a

67
00:03:47.719 --> 00:03:52.479
<v Speaker 2>session and wraps that in a context and then evaluates

68
00:03:52.479 --> 00:03:57.560
<v Speaker 2>it inside of a binding, which is really the underpinnings

69
00:03:57.639 --> 00:04:03.360
<v Speaker 2>of Ruby. Ruby's core evaluation is the binding object, and

70
00:04:03.400 --> 00:04:07.840
<v Speaker 2>then through the binding, it can basically compile Ruby on

71
00:04:07.879 --> 00:04:12.759
<v Speaker 2>the fly into you know, low level code and do

72
00:04:12.919 --> 00:04:15.199
<v Speaker 2>whatever it is that you tell it to do. You

73
00:04:15.199 --> 00:04:19.120
<v Speaker 2>know IRB. It's kind of like what gets you really

74
00:04:19.160 --> 00:04:19.879
<v Speaker 2>into Ruby?

75
00:04:19.959 --> 00:04:20.160
<v Speaker 1>Right.

76
00:04:20.759 --> 00:04:23.519
<v Speaker 2>You go and you're trying to learn a new like

77
00:04:23.839 --> 00:04:27.279
<v Speaker 2>try and learn any new language, even JavaScript as an example.

78
00:04:27.680 --> 00:04:29.199
<v Speaker 2>You'll go and what do you do is you open

79
00:04:29.279 --> 00:04:33.000
<v Speaker 2>up the JavaScript console and you try and play around

80
00:04:33.040 --> 00:04:37.959
<v Speaker 2>and move elements around, or you know, try and be

81
00:04:38.079 --> 00:04:40.959
<v Speaker 2>the first to purchase a pair of sneakers or something

82
00:04:41.000 --> 00:04:44.480
<v Speaker 2>like that. But you know what, learning Ruby is so

83
00:04:44.639 --> 00:04:46.480
<v Speaker 2>easy to do the same thing. You open up the

84
00:04:46.560 --> 00:04:49.480
<v Speaker 2>IRB session and then just type anything that you want

85
00:04:49.720 --> 00:04:52.959
<v Speaker 2>and you could play around with the language. It's pretty powerful.

86
00:04:53.439 --> 00:04:56.920
<v Speaker 1>Yep, absolutely so, yeah, I don't want to go too

87
00:04:57.000 --> 00:05:00.680
<v Speaker 1>deep into you know what it is, and you kind

88
00:05:00.720 --> 00:05:03.759
<v Speaker 1>of connected the dots, I guess on how it evaluates

89
00:05:03.800 --> 00:05:06.879
<v Speaker 1>the code but but I'm always looking for kind of

90
00:05:06.879 --> 00:05:10.839
<v Speaker 1>the neat tricks, right, So let's start there and then

91
00:05:10.879 --> 00:05:12.680
<v Speaker 1>if we have time, we can come back around to

92
00:05:13.759 --> 00:05:18.160
<v Speaker 1>internals or other things you learn while you dove into this. Sure, so,

93
00:05:18.160 --> 00:05:20.040
<v Speaker 1>so what are the neat tricks like? What what were

94
00:05:20.079 --> 00:05:22.839
<v Speaker 1>the things that you didn't know? It did? That? It

95
00:05:23.079 --> 00:05:23.680
<v Speaker 1>that it does?

96
00:05:24.240 --> 00:05:29.199
<v Speaker 2>So coming into this definitely the customization of the prompt itself.

97
00:05:29.600 --> 00:05:33.600
<v Speaker 2>So I believe it it was Matt Swanson that I

98
00:05:33.800 --> 00:05:37.639
<v Speaker 2>discovered the uh, you know, customization of the prompt for

99
00:05:37.920 --> 00:05:41.240
<v Speaker 2>when you're in a production server that you could just

100
00:05:41.519 --> 00:05:46.199
<v Speaker 2>signal pay. This is a different server than your development console,

101
00:05:46.279 --> 00:05:48.360
<v Speaker 2>you might want to be careful what you write in here.

102
00:05:48.759 --> 00:05:51.040
<v Speaker 2>And from there it kind of just exploded into okay,

103
00:05:51.079 --> 00:05:54.680
<v Speaker 2>well what else is in this customization? And you know,

104
00:05:54.759 --> 00:05:57.959
<v Speaker 2>you open up your you find out you start you

105
00:05:58.040 --> 00:06:00.480
<v Speaker 2>start with the I R B r C as like

106
00:06:00.519 --> 00:06:03.160
<v Speaker 2>your starting point, and it kind of leads you into

107
00:06:03.600 --> 00:06:08.240
<v Speaker 2>the rabbit hole of customization. And what I realize is

108
00:06:08.240 --> 00:06:12.040
<v Speaker 2>that you can basically make this file that will evaluate

109
00:06:12.120 --> 00:06:15.000
<v Speaker 2>anytime you open up I RB and do whatever you

110
00:06:15.040 --> 00:06:18.759
<v Speaker 2>want with it. So anytime you're trying to you know,

111
00:06:18.879 --> 00:06:23.199
<v Speaker 2>open up specific set of code in a specific context,

112
00:06:23.720 --> 00:06:26.639
<v Speaker 2>you can make a custom i RB file for whatever

113
00:06:26.680 --> 00:06:29.920
<v Speaker 2>that context might be. So that was probably my biggest

114
00:06:30.160 --> 00:06:33.879
<v Speaker 2>you know aha moment is And as an example, what

115
00:06:33.959 --> 00:06:39.120
<v Speaker 2>we eventually ended up doing Docimity was making a special

116
00:06:39.199 --> 00:06:45.279
<v Speaker 2>Rails console that tagged the system internally to say, hey,

117
00:06:45.560 --> 00:06:48.680
<v Speaker 2>any changes made to the database, you know, make sure

118
00:06:48.680 --> 00:06:52.519
<v Speaker 2>they're attributed to whoever the current user is. So we

119
00:06:52.639 --> 00:06:56.600
<v Speaker 2>implemented that and then allowed you know, full auditing for

120
00:06:56.680 --> 00:06:59.639
<v Speaker 2>whatever user was logged into the system, you know, with

121
00:06:59.800 --> 00:07:03.639
<v Speaker 2>just a simple little Rails customization.

122
00:07:04.040 --> 00:07:07.160
<v Speaker 1>Gotcha. So so then we know, you know, John is

123
00:07:07.160 --> 00:07:11.000
<v Speaker 1>a witch. He turned me into a news right, Yeah, exactly,

124
00:07:11.319 --> 00:07:15.439
<v Speaker 1>I got I got better anyway. Yeah, but yeah, you

125
00:07:15.439 --> 00:07:18.199
<v Speaker 1>could see where that change happened, right, and you can

126
00:07:18.199 --> 00:07:21.360
<v Speaker 1>go and you can reverse it or go slap somebody's

127
00:07:21.399 --> 00:07:23.519
<v Speaker 1>hand or something like that, right, Yeah.

128
00:07:23.639 --> 00:07:26.720
<v Speaker 2>More for accountability than anything else, you say, hey, you

129
00:07:26.759 --> 00:07:30.040
<v Speaker 2>know what were you doing during this change? Sometimes you

130
00:07:30.120 --> 00:07:34.759
<v Speaker 2>just need to audit the specific scenario of a change

131
00:07:34.839 --> 00:07:36.680
<v Speaker 2>so that you can go and make sure it didn't

132
00:07:36.680 --> 00:07:39.720
<v Speaker 2>affect anything else, you know, as a side effect.

133
00:07:40.040 --> 00:07:43.399
<v Speaker 1>Yeah, makes sense. Do either of you, Luke or John

134
00:07:43.800 --> 00:07:46.560
<v Speaker 1>use a custom I what is I RBRC.

135
00:07:47.199 --> 00:07:48.639
<v Speaker 3>I didn't even know it existed?

136
00:07:49.000 --> 00:07:51.240
<v Speaker 4>Is this the same thing as Pride? Because I use

137
00:07:51.279 --> 00:07:55.720
<v Speaker 4>PRIE all the time. But but I feel like a

138
00:07:55.800 --> 00:08:00.959
<v Speaker 4>question for me. You know, he's good, he's a Pride.

139
00:08:01.160 --> 00:08:05.920
<v Speaker 2>No short answer, No. I mean there's a kind of

140
00:08:05.920 --> 00:08:09.279
<v Speaker 2>a discrepancy to here, and it's two worlds colliding where

141
00:08:09.399 --> 00:08:12.839
<v Speaker 2>somebody made a better I RB at one point, and

142
00:08:12.879 --> 00:08:15.839
<v Speaker 2>now kind of the features of PRIE are sneaking into

143
00:08:16.600 --> 00:08:20.519
<v Speaker 2>the native Ruby I RB and awesome yep, So I

144
00:08:20.519 --> 00:08:24.560
<v Speaker 2>mean they're very they're completely different.

145
00:08:24.240 --> 00:08:27.240
<v Speaker 1>Things at this point. What about the Rails console? Then

146
00:08:27.519 --> 00:08:29.920
<v Speaker 1>it's built on top of I RB, right.

147
00:08:29.959 --> 00:08:32.200
<v Speaker 2>Yes, Reils console is wrapped.

148
00:08:31.879 --> 00:08:34.960
<v Speaker 4>On IRB unless stall reels PRIE and then new hook

149
00:08:35.000 --> 00:08:35.759
<v Speaker 4>and prime.

150
00:08:39.600 --> 00:08:42.120
<v Speaker 1>Yeah, and it PRIBE has a prior C, doesn't it?

151
00:08:42.799 --> 00:08:43.120
<v Speaker 4>It does?

152
00:08:43.519 --> 00:08:46.440
<v Speaker 1>Ye? So so what does RAILS do in order to

153
00:08:46.759 --> 00:08:49.759
<v Speaker 1>uh torture or otherwise modify IRB.

154
00:08:50.320 --> 00:08:51.440
<v Speaker 2>I haven't looked into it.

155
00:08:52.080 --> 00:08:54.480
<v Speaker 4>You haven't looked at that, Okay. I don't know that

156
00:08:54.519 --> 00:08:58.559
<v Speaker 4>it's torturing it my understanding. So so you know, obviously,

157
00:08:58.600 --> 00:09:00.639
<v Speaker 4>if I'm wrong, let me let us know. But my

158
00:09:00.759 --> 00:09:03.080
<v Speaker 4>understanding is that most of what Rails is doing with

159
00:09:03.200 --> 00:09:06.360
<v Speaker 4>its shell is just loading a bunch of Rails files.

160
00:09:06.720 --> 00:09:09.600
<v Speaker 4>You're just loading your environment, right, so you're adding to

161
00:09:09.639 --> 00:09:10.320
<v Speaker 4>the context.

162
00:09:10.639 --> 00:09:10.879
<v Speaker 1>Yeah.

163
00:09:10.960 --> 00:09:13.240
<v Speaker 4>I mean if you open an IRB show, right, even

164
00:09:13.279 --> 00:09:16.200
<v Speaker 4>if you open it in your Rails directory, you don't

165
00:09:16.240 --> 00:09:18.559
<v Speaker 4>have all those files loaded. But if you open your

166
00:09:18.600 --> 00:09:21.120
<v Speaker 4>Rails console, it's already just like if you're running a

167
00:09:21.159 --> 00:09:23.840
<v Speaker 4>rail server preloaded everything and run the initializers and all

168
00:09:23.879 --> 00:09:24.519
<v Speaker 4>that kind of stuff.

169
00:09:24.639 --> 00:09:25.000
<v Speaker 1>Gotcha.

170
00:09:25.360 --> 00:09:29.279
<v Speaker 2>Yeah, So as far as like what Rails is doing,

171
00:09:29.440 --> 00:09:34.399
<v Speaker 2>it's probably just an elaborate IRB r C because anything

172
00:09:34.480 --> 00:09:38.240
<v Speaker 2>you have in your IRB C will be in the

173
00:09:38.279 --> 00:09:41.720
<v Speaker 2>context of whatever the ends up being the IRB session

174
00:09:41.720 --> 00:09:45.360
<v Speaker 2>you're in. So when you do rail C, I imagine it

175
00:09:45.519 --> 00:09:50.080
<v Speaker 2>just loads the application and makes you know, a few

176
00:09:50.519 --> 00:09:54.120
<v Speaker 2>things available to the terminal, like you know, the reload

177
00:09:54.159 --> 00:09:55.480
<v Speaker 2>command or something like that.

178
00:09:55.879 --> 00:09:58.919
<v Speaker 1>Yeah, that makes sense. Well, the reload can't command is

179
00:09:58.960 --> 00:10:01.679
<v Speaker 1>just part of Rails anyway, so yeah, I mean that

180
00:10:01.679 --> 00:10:04.159
<v Speaker 1>that yeah, makes sense that that would be in there.

181
00:10:04.440 --> 00:10:07.240
<v Speaker 2>Yeah, So I mean that's that's kind of the value

182
00:10:07.240 --> 00:10:09.200
<v Speaker 2>of the IRB C too, is like you can define

183
00:10:09.240 --> 00:10:12.159
<v Speaker 2>methods in there that do whatever you want. So you know,

184
00:10:12.279 --> 00:10:15.000
<v Speaker 2>Rails has the customizations with a bunch of methods that

185
00:10:15.080 --> 00:10:18.240
<v Speaker 2>it'll inject into the session and you know, give you

186
00:10:18.240 --> 00:10:23.000
<v Speaker 2>that available. So I have some myself which will give

187
00:10:23.039 --> 00:10:26.480
<v Speaker 2>me me as an example. So then I have a

188
00:10:26.840 --> 00:10:30.200
<v Speaker 2>who am I basically that gives you access to your

189
00:10:30.200 --> 00:10:34.440
<v Speaker 2>current user's name and you know a bunch of related

190
00:10:34.480 --> 00:10:35.000
<v Speaker 2>ones to that.

191
00:10:35.360 --> 00:10:37.320
<v Speaker 1>See, and now I want to create an evil I

192
00:10:37.480 --> 00:10:41.919
<v Speaker 1>rb r C that like redefines common methods off of kernel.

193
00:10:42.480 --> 00:10:44.039
<v Speaker 2>I mean what you could do is you can make

194
00:10:44.360 --> 00:10:49.279
<v Speaker 2>your own input method that then remaps all of the characters,

195
00:10:49.799 --> 00:10:52.039
<v Speaker 2>so as you're typing, it'll output a different character.

196
00:10:52.480 --> 00:10:52.720
<v Speaker 1>Yeah.

197
00:10:52.840 --> 00:10:57.720
<v Speaker 4>Yeah, sounds like my my Apple Butterfly keyboard.

198
00:11:00.879 --> 00:11:03.799
<v Speaker 1>Already implemented in hardware. That's what John John is saying.

199
00:11:05.080 --> 00:11:05.679
<v Speaker 4>It's good.

200
00:11:05.840 --> 00:11:10.480
<v Speaker 1>It's yeah, it works my Butterfly keyboard. It didn't do that.

201
00:11:10.639 --> 00:11:15.879
<v Speaker 1>It was just p pppppppppp you know. Ye, I just

202
00:11:15.960 --> 00:11:16.720
<v Speaker 1>tapped it once.

203
00:11:17.399 --> 00:11:20.720
<v Speaker 4>So all right, so I have this really sweet So

204
00:11:20.720 --> 00:11:23.120
<v Speaker 4>so first of all, I've actually done the auditing thing. Right,

205
00:11:23.120 --> 00:11:25.120
<v Speaker 4>we did do it through an irbr C or whatever.

206
00:11:25.559 --> 00:11:28.320
<v Speaker 4>Uh we did differently or whatever, So that totally makes

207
00:11:28.360 --> 00:11:30.919
<v Speaker 4>sense to me. But you guys, you guys implemented that

208
00:11:31.159 --> 00:11:31.679
<v Speaker 4>through your I.

209
00:11:31.840 --> 00:11:34.480
<v Speaker 2>R B r C, not technically the IRB r C.

210
00:11:34.720 --> 00:11:39.120
<v Speaker 2>We have a custom initializer for RAILS itself that will

211
00:11:39.639 --> 00:11:43.240
<v Speaker 2>just make some modifications to the RAILS console itself and

212
00:11:43.279 --> 00:11:46.240
<v Speaker 2>then start up kind of call super on it.

213
00:11:46.480 --> 00:11:49.720
<v Speaker 4>Okay, So so we're just talking about extensions here to

214
00:11:49.879 --> 00:11:53.279
<v Speaker 4>our environment, all right, yep, no worries, No worries.

215
00:11:53.759 --> 00:11:58.559
<v Speaker 3>So this kind of environment automation and warning is kind

216
00:11:58.559 --> 00:12:01.960
<v Speaker 3>of really important for you because you're dealing with medical

217
00:12:02.039 --> 00:12:04.840
<v Speaker 3>data and things, so it's kind of really important you

218
00:12:04.840 --> 00:12:05.679
<v Speaker 3>don't get it wrong.

219
00:12:06.039 --> 00:12:08.919
<v Speaker 2>Yeah, that's right, And I mean the customization of the

220
00:12:08.919 --> 00:12:12.799
<v Speaker 2>prompt too, is just hugely helpful, especially when you have

221
00:12:12.840 --> 00:12:16.600
<v Speaker 2>to jump contexts through many servers. So we have a

222
00:12:16.679 --> 00:12:21.960
<v Speaker 2>proximity a series of staging servers that are separate from development, right,

223
00:12:22.039 --> 00:12:24.639
<v Speaker 2>so that we can add quality control and test out

224
00:12:25.440 --> 00:12:28.360
<v Speaker 2>a lot of our changes. And then we have several

225
00:12:28.399 --> 00:12:31.600
<v Speaker 2>production servers that are you know, are all different and

226
00:12:31.600 --> 00:12:34.480
<v Speaker 2>it's nice to see them labeled so you know instantly,

227
00:12:35.159 --> 00:12:38.639
<v Speaker 2>Especially if you have a bunch of different terminal windows

228
00:12:38.639 --> 00:12:41.639
<v Speaker 2>open right that all have an IRB session in it,

229
00:12:42.120 --> 00:12:45.080
<v Speaker 2>you don't want to get confused about which one you're

230
00:12:45.080 --> 00:12:45.879
<v Speaker 2>in right.

231
00:12:46.240 --> 00:12:48.600
<v Speaker 1>Of course, I've worked at a lot of places that

232
00:12:48.639 --> 00:12:51.399
<v Speaker 1>don't even give you that kind of access to the

233
00:12:51.440 --> 00:12:55.120
<v Speaker 1>production systems to even be able to run IRB. Right.

234
00:12:55.559 --> 00:12:58.200
<v Speaker 1>I mean you might your ops people might be able

235
00:12:58.200 --> 00:12:59.360
<v Speaker 1>to do it right, and you might be able to

236
00:12:59.360 --> 00:13:03.240
<v Speaker 1>give them specific constructions or check in rate task or

237
00:13:03.240 --> 00:13:04.840
<v Speaker 1>something that we'll do with the work and then they

238
00:13:04.840 --> 00:13:06.320
<v Speaker 1>can run the rate task for you.

239
00:13:06.399 --> 00:13:09.559
<v Speaker 2>But yeah, yeah, and I mean we don't all have access,

240
00:13:10.720 --> 00:13:12.799
<v Speaker 2>and it's it's certainly.

241
00:13:12.440 --> 00:13:16.279
<v Speaker 4>Limited, but somebody's got to lug in when all the

242
00:13:16.399 --> 00:13:24.200
<v Speaker 4>systems go down and it's Friday afternoon and just it

243
00:13:24.320 --> 00:13:25.320
<v Speaker 4>just happens, you know.

244
00:13:25.559 --> 00:13:27.840
<v Speaker 3>Yeah, this is the kind of double edged problem of

245
00:13:28.440 --> 00:13:31.000
<v Speaker 3>this your sphere is because not only does it have

246
00:13:31.080 --> 00:13:33.639
<v Speaker 3>to be really high security, but it also has to

247
00:13:33.639 --> 00:13:38.480
<v Speaker 3>be high availability because the code is literally saving people's lives.

248
00:13:40.279 --> 00:13:40.519
<v Speaker 1>Yep.

249
00:13:40.799 --> 00:13:44.879
<v Speaker 4>All right, So we talked about some stuff that's coming

250
00:13:44.919 --> 00:13:50.720
<v Speaker 4>over from PRY. I actually I'm like super interested because

251
00:13:50.960 --> 00:13:54.279
<v Speaker 4>as a very heavy user of FRY basically since I

252
00:13:54.360 --> 00:13:57.320
<v Speaker 4>discovered it, like I don't know, I don't even remember,

253
00:13:57.639 --> 00:14:00.440
<v Speaker 4>because I don't remember my life before Pride to be frank, what.

254
00:14:00.440 --> 00:14:03.919
<v Speaker 3>Are the checking this ILB tool could try me.

255
00:14:04.159 --> 00:14:05.200
<v Speaker 1>Okay, all right.

256
00:14:05.679 --> 00:14:08.039
<v Speaker 4>There are there are times when I load up IRB right,

257
00:14:08.120 --> 00:14:12.080
<v Speaker 4>and it's primarily when either I'm writing like a Ruby

258
00:14:12.080 --> 00:14:14.519
<v Speaker 4>script right, so I don't have a rail thing going

259
00:14:14.559 --> 00:14:17.720
<v Speaker 4>on right, and you know, and I just want to

260
00:14:17.759 --> 00:14:22.159
<v Speaker 4>load something up really fast, or if I'm working on

261
00:14:22.240 --> 00:14:25.440
<v Speaker 4>a very large rail system that takes forever to load

262
00:14:25.639 --> 00:14:27.639
<v Speaker 4>and I just want to test out something really fast,

263
00:14:27.919 --> 00:14:30.080
<v Speaker 4>so then I just like load up IRB, require one

264
00:14:30.200 --> 00:14:32.399
<v Speaker 4>or two files and do a thing and then exit right.

265
00:14:32.919 --> 00:14:35.200
<v Speaker 4>And in both of those instances, one of the first

266
00:14:35.240 --> 00:14:38.440
<v Speaker 4>things that I often do is I type IRB and

267
00:14:38.480 --> 00:14:42.320
<v Speaker 4>then I go require pride. So I have not lived

268
00:14:42.320 --> 00:14:44.320
<v Speaker 4>without Pride for a very long time. So what are

269
00:14:44.320 --> 00:14:47.039
<v Speaker 4>some of the cool features that that will get over

270
00:14:47.120 --> 00:14:47.919
<v Speaker 4>if you know them?

271
00:14:48.320 --> 00:14:52.799
<v Speaker 2>Sure? I know a couple the I mean a lot

272
00:14:52.879 --> 00:14:55.200
<v Speaker 2>of these are like brand new, like in reels three,

273
00:14:55.639 --> 00:15:00.799
<v Speaker 2>but they there was just merged a pride like LS command,

274
00:15:01.279 --> 00:15:04.759
<v Speaker 2>so you can basically list all the methods on a

275
00:15:04.759 --> 00:15:08.840
<v Speaker 2>particular object. As an example, I imagine the next step

276
00:15:08.879 --> 00:15:12.039
<v Speaker 2>to that would be you know, the CD command to priy,

277
00:15:12.159 --> 00:15:15.639
<v Speaker 2>where you can you know, basically move into the object

278
00:15:15.879 --> 00:15:18.320
<v Speaker 2>and you can kind of already do that with IRB

279
00:15:18.720 --> 00:15:21.399
<v Speaker 2>because you can run IRB on any Ruby object and

280
00:15:21.600 --> 00:15:24.720
<v Speaker 2>enter inside of the context of it. So if you

281
00:15:24.720 --> 00:15:27.639
<v Speaker 2>make an instance of something and you i RB that instance,

282
00:15:27.799 --> 00:15:30.519
<v Speaker 2>then you're in the context of the instance, and you

283
00:15:30.559 --> 00:15:32.679
<v Speaker 2>could do the same with the class at pretty much

284
00:15:32.679 --> 00:15:34.919
<v Speaker 2>any you know object in Ruby.

285
00:15:35.120 --> 00:15:37.639
<v Speaker 3>How do you do that? How do you go inside

286
00:15:37.679 --> 00:15:38.159
<v Speaker 3>the object?

287
00:15:38.440 --> 00:15:41.159
<v Speaker 2>Sure, so when you're in there IRB console itself, you

288
00:15:41.240 --> 00:15:44.480
<v Speaker 2>just run i RB and then the object. So if

289
00:15:44.480 --> 00:15:47.519
<v Speaker 2>you did you know string new, and you just said

290
00:15:47.519 --> 00:15:50.480
<v Speaker 2>irab string new, you can enter inside the instance of

291
00:15:50.519 --> 00:15:52.440
<v Speaker 2>a string and play with all the methods like that.

292
00:15:52.840 --> 00:15:55.480
<v Speaker 2>You don't have to do the strings object name as

293
00:15:55.480 --> 00:15:58.519
<v Speaker 2>the variable and then dot whatever. You just enter the method.

294
00:15:58.840 --> 00:16:01.480
<v Speaker 2>So it's kind of a fun way to explore the

295
00:16:01.519 --> 00:16:05.399
<v Speaker 2>object and without having to you know, run a bunch

296
00:16:05.399 --> 00:16:07.879
<v Speaker 2>of chained methods, you can get you.

297
00:16:07.840 --> 00:16:10.279
<v Speaker 1>Know, how smart, e how smart I'm gonna look at

298
00:16:10.320 --> 00:16:10.919
<v Speaker 1>work tomorrow.

299
00:16:12.960 --> 00:16:14.720
<v Speaker 3>I didn't know that I did not know that.

300
00:16:14.799 --> 00:16:15.399
<v Speaker 1>I didn't either.

301
00:16:16.200 --> 00:16:20.120
<v Speaker 2>Yeah, And I mean another another cool thing which probe

302
00:16:20.240 --> 00:16:23.000
<v Speaker 2>gives that maybe you just don't know about i RB,

303
00:16:23.720 --> 00:16:28.039
<v Speaker 2>is you get a lot of context from the source

304
00:16:28.080 --> 00:16:32.000
<v Speaker 2>code just using the method method. Right, So when you

305
00:16:32.039 --> 00:16:35.919
<v Speaker 2>say you know method and then call in some the

306
00:16:36.000 --> 00:16:39.480
<v Speaker 2>name of some method, uh, it returns a special Ruby

307
00:16:39.519 --> 00:16:42.759
<v Speaker 2>object that describes what the method is, what it does,

308
00:16:42.840 --> 00:16:45.759
<v Speaker 2>the source location, and you could pull all that information

309
00:16:46.000 --> 00:16:50.759
<v Speaker 2>to open up a new you know, I use Vim

310
00:16:50.840 --> 00:16:55.960
<v Speaker 2>as my command or as my editor, so I often, well,

311
00:16:56.000 --> 00:16:58.919
<v Speaker 2>I'll have a special you know method in my I

312
00:16:59.039 --> 00:17:02.399
<v Speaker 2>R v r C that allows me to open Vim

313
00:17:02.840 --> 00:17:05.920
<v Speaker 2>you know editor with whatever the source location is for

314
00:17:06.000 --> 00:17:09.160
<v Speaker 2>the method that I'm interested in in the context of

315
00:17:09.160 --> 00:17:11.720
<v Speaker 2>an I RB session. So it ends up you know,

316
00:17:11.839 --> 00:17:15.319
<v Speaker 2>being a you can open up any editor it can be,

317
00:17:15.519 --> 00:17:17.160
<v Speaker 2>doesn't have to be them.

318
00:17:17.359 --> 00:17:20.079
<v Speaker 1>Yeah, right, but no, that makes sense that that sounds

319
00:17:20.119 --> 00:17:20.720
<v Speaker 1>really handy.

320
00:17:21.039 --> 00:17:21.240
<v Speaker 2>Yep.

321
00:17:21.599 --> 00:17:24.200
<v Speaker 4>So the only the only Yeah, one of the main

322
00:17:24.240 --> 00:17:26.680
<v Speaker 4>reasons that I like probably is actually this. But it's

323
00:17:26.720 --> 00:17:29.960
<v Speaker 4>not because you just use show desk source right, right.

324
00:17:30.480 --> 00:17:34.880
<v Speaker 4>But it's mostly because it's complicated to remember all the

325
00:17:34.880 --> 00:17:37.920
<v Speaker 4>stuff that you have to do, right to grab the

326
00:17:38.000 --> 00:17:41.039
<v Speaker 4>method as an object then call you know, source location

327
00:17:41.200 --> 00:17:41.640
<v Speaker 4>or whatever.

328
00:17:42.240 --> 00:17:42.559
<v Speaker 1>The other.

329
00:17:42.759 --> 00:17:45.000
<v Speaker 4>The other thing that's the issue here is that probably

330
00:17:45.000 --> 00:17:48.519
<v Speaker 4>actually does a reasonably good job. Now it didn't used to,

331
00:17:48.680 --> 00:17:51.440
<v Speaker 4>but it does a reasonably good job of showing me,

332
00:17:52.000 --> 00:17:54.039
<v Speaker 4>like all the dynamic stuff that goes on when I

333
00:17:54.119 --> 00:17:57.920
<v Speaker 4>like prepend eight things into which you know it's just

334
00:17:57.960 --> 00:18:00.599
<v Speaker 4>going to cause problems anyway. But you know, if I'm

335
00:18:00.640 --> 00:18:04.000
<v Speaker 4>overriding my method a million times in weird odd ways,

336
00:18:06.519 --> 00:18:09.480
<v Speaker 4>things can get weird. So yeah, I.

337
00:18:09.400 --> 00:18:12.759
<v Speaker 2>Don't know if anybody else has looked in and not

338
00:18:12.880 --> 00:18:18.799
<v Speaker 2>to plug pry again, but the there's actually a project

339
00:18:18.880 --> 00:18:23.160
<v Speaker 2>called Ruby Jarred that combines PRI with buybug and it's

340
00:18:23.200 --> 00:18:29.279
<v Speaker 2>pretty incredible. You basically can do just like you can

341
00:18:29.640 --> 00:18:32.039
<v Speaker 2>you know, binding do i RB in your source code

342
00:18:32.480 --> 00:18:35.160
<v Speaker 2>or you know PRI in your source code, you can

343
00:18:35.200 --> 00:18:37.720
<v Speaker 2>do a jarred in your source code, and when it

344
00:18:37.759 --> 00:18:41.680
<v Speaker 2>stops the execution, it has this really beautiful kind of

345
00:18:41.720 --> 00:18:45.440
<v Speaker 2>split pain debugging session where it shows you the current

346
00:18:45.480 --> 00:18:49.640
<v Speaker 2>line in context but also shows you some lower level

347
00:18:49.680 --> 00:18:54.599
<v Speaker 2>like definitions within that context, and it's it's pretty wild.

348
00:18:54.680 --> 00:18:57.839
<v Speaker 2>I definitely recommend people check that out. I've been using

349
00:18:57.839 --> 00:19:00.720
<v Speaker 2>that on a couple of projects as well, but Irby

350
00:19:00.799 --> 00:19:04.279
<v Speaker 2>is still my go to for, you know, just testing

351
00:19:04.319 --> 00:19:06.759
<v Speaker 2>out random Rube files.

352
00:19:07.279 --> 00:19:09.480
<v Speaker 4>Yeah, I'm pretty sure I saw that in a Ruby Weekly,

353
00:19:09.559 --> 00:19:11.079
<v Speaker 4>and I just a bit slow to get it around

354
00:19:11.119 --> 00:19:13.759
<v Speaker 4>to looking at it. But I like pretty things, so

355
00:19:13.880 --> 00:19:15.200
<v Speaker 4>I'm we'll be checking out.

356
00:19:15.559 --> 00:19:16.480
<v Speaker 1>Yeah that's really great.

357
00:19:16.839 --> 00:19:20.400
<v Speaker 4>All right, So some sweet any other like things that

358
00:19:20.640 --> 00:19:22.359
<v Speaker 4>are coming over so we can wrap up that part.

359
00:19:22.680 --> 00:19:22.960
<v Speaker 1>Sure.

360
00:19:23.039 --> 00:19:27.440
<v Speaker 2>Yeah, let's see from from priy itself. I'm not sure.

361
00:19:29.160 --> 00:19:32.079
<v Speaker 2>I do know that they that I RB itself has

362
00:19:32.119 --> 00:19:37.519
<v Speaker 2>introduced kind of some tracing mechanisms and measure utility to

363
00:19:37.559 --> 00:19:41.119
<v Speaker 2>make it easy to you know, trace the execution of

364
00:19:41.240 --> 00:19:44.920
<v Speaker 2>specific method calls while you're going through as well as

365
00:19:45.200 --> 00:19:48.319
<v Speaker 2>you know, processing time. So I actually do that for

366
00:19:48.480 --> 00:19:53.200
<v Speaker 2>a lot of just quick performance testing of you know,

367
00:19:54.160 --> 00:19:57.440
<v Speaker 2>will this array method look up work faster than this

368
00:19:57.480 --> 00:20:00.319
<v Speaker 2>one in this context? You know, just turn on theasuring

369
00:20:00.359 --> 00:20:03.759
<v Speaker 2>processor and just check how fast it runs.

370
00:20:03.559 --> 00:20:04.200
<v Speaker 1>With each case.

371
00:20:04.839 --> 00:20:08.279
<v Speaker 4>That's the thing that comes with Ruby three right specifically.

372
00:20:08.599 --> 00:20:10.400
<v Speaker 2>Yeah, I believe so.

373
00:20:10.400 --> 00:20:14.440
<v Speaker 3>So that's really nice interlace because it just does it

374
00:20:14.480 --> 00:20:17.440
<v Speaker 3>for you. Off you turn it on, yep, so you

375
00:20:17.480 --> 00:20:21.279
<v Speaker 3>type measure and then anything you run from your IRB

376
00:20:21.799 --> 00:20:24.359
<v Speaker 3>or whatever off that that gets measured.

377
00:20:24.720 --> 00:20:24.920
<v Speaker 1>Yeah.

378
00:20:24.920 --> 00:20:28.720
<v Speaker 2>And it's line by line measuring too, so whatever you enter,

379
00:20:29.240 --> 00:20:31.279
<v Speaker 2>every single thing will be you know, show you the

380
00:20:31.319 --> 00:20:33.359
<v Speaker 2>processing time for it, which is really nice.

381
00:20:33.839 --> 00:20:36.680
<v Speaker 4>Is that combined with the tracing stuff? So is it kinda?

382
00:20:36.759 --> 00:20:38.519
<v Speaker 4>So if I if I create, if I turn on

383
00:20:38.599 --> 00:20:41.680
<v Speaker 4>tracing right, and then it's giving me my whole back trace.

384
00:20:41.759 --> 00:20:45.319
<v Speaker 4>Am I also getting whatever we call benchmarking right for

385
00:20:45.480 --> 00:20:48.200
<v Speaker 4>each of those lines? Yep, that's pretty sweet.

386
00:20:48.400 --> 00:20:50.920
<v Speaker 1>I'm going to go into my IRB r C and

387
00:20:50.960 --> 00:20:54.279
<v Speaker 1>I'm gonna alias that to Vanity. It's called type in Vanity,

388
00:20:54.359 --> 00:20:56.359
<v Speaker 1>and then they tell me how fast all my stuff is?

389
00:20:57.759 --> 00:21:00.880
<v Speaker 1>What else is coming to Ruby three? Oh? I was

390
00:21:00.880 --> 00:21:01.359
<v Speaker 1>gonna say.

391
00:21:01.400 --> 00:21:03.480
<v Speaker 4>I saw one thing that I saw that I thought

392
00:21:03.519 --> 00:21:06.720
<v Speaker 4>was really nice in the article that they kind of

393
00:21:07.039 --> 00:21:10.799
<v Speaker 4>spawned this particular interview, was that Irby's getting colors. Now

394
00:21:11.200 --> 00:21:14.400
<v Speaker 4>I don't have to Oh yeah, there's something separate to

395
00:21:14.440 --> 00:21:15.079
<v Speaker 4>get colors.

396
00:21:15.240 --> 00:21:18.920
<v Speaker 2>That's that's actually in two point seven. So if you're

397
00:21:18.960 --> 00:21:21.279
<v Speaker 2>already on two point seven, you should have colors.

398
00:21:22.000 --> 00:21:25.000
<v Speaker 4>Nope, I'm part of the crowd skipping from two point

399
00:21:25.079 --> 00:21:33.279
<v Speaker 4>six to three. Oh there you God for that. No,

400
00:21:33.440 --> 00:21:34.960
<v Speaker 4>I believe it's turned on by default.

401
00:21:36.319 --> 00:21:38.759
<v Speaker 2>But one other thing I will note, at least with

402
00:21:38.839 --> 00:21:44.039
<v Speaker 2>Ruby three, actually it's two point seven, was the inline documentation.

403
00:21:44.640 --> 00:21:48.039
<v Speaker 2>So if you just double tab while you're on a

404
00:21:48.079 --> 00:21:51.960
<v Speaker 2>particular method name, it'll give you the documentation in the context,

405
00:21:52.480 --> 00:21:55.279
<v Speaker 2>kind of like a man page. Oh nah, and it

406
00:21:55.319 --> 00:21:57.720
<v Speaker 2>does that through our docs. So I don't know if

407
00:21:57.839 --> 00:22:01.440
<v Speaker 2>anybody else here has a GMRC that doesn't include documentation

408
00:22:02.200 --> 00:22:05.640
<v Speaker 2>when you install gems because it takes longer. I used

409
00:22:05.680 --> 00:22:11.039
<v Speaker 2>to have that dash dash dash Yeah, so I have

410
00:22:11.160 --> 00:22:14.240
<v Speaker 2>turned that back on now because it's so great to see,

411
00:22:14.400 --> 00:22:17.200
<v Speaker 2>you know, tab tab How does this method work? I

412
00:22:17.279 --> 00:22:18.400
<v Speaker 2>use that all the time now.

413
00:22:18.680 --> 00:22:21.559
<v Speaker 1>Well, yeah, because you had to use the command line

414
00:22:21.640 --> 00:22:24.920
<v Speaker 1>utility to get our docs before or open up some

415
00:22:25.000 --> 00:22:27.480
<v Speaker 1>kind of wonky web interface and it just was never

416
00:22:27.559 --> 00:22:30.319
<v Speaker 1>worth it, right, But if it's in line when I'm working,

417
00:22:30.359 --> 00:22:33.519
<v Speaker 1>that makes a lot more sense. Yep, because because really,

418
00:22:33.799 --> 00:22:37.559
<v Speaker 1>to be frank, the only good docs readers were all

419
00:22:37.599 --> 00:22:38.519
<v Speaker 1>web browsers.

420
00:22:39.359 --> 00:22:43.200
<v Speaker 4>And so whenever whenever my internet goes out, I have

421
00:22:43.279 --> 00:22:46.559
<v Speaker 4>to be like oh, and then like go re remember

422
00:22:46.680 --> 00:22:49.680
<v Speaker 4>how to get my docks working locally again, like for

423
00:22:49.720 --> 00:22:51.400
<v Speaker 4>the three hours that it's.

424
00:22:51.200 --> 00:22:54.480
<v Speaker 1>Top yep, or get it on the fifth try. Oh oh,

425
00:22:54.559 --> 00:22:59.160
<v Speaker 1>these are the right parameters. Yep. That's super cool.

426
00:22:59.440 --> 00:23:01.839
<v Speaker 2>Yeah, it's all as you know, if you use a

427
00:23:01.920 --> 00:23:07.079
<v Speaker 2>higher level like documentation app right, which has some nice

428
00:23:07.079 --> 00:23:10.000
<v Speaker 2>things as well, like if I use Dash as an example,

429
00:23:10.400 --> 00:23:12.599
<v Speaker 2>but it has some drawbacks and they have to know

430
00:23:12.640 --> 00:23:16.240
<v Speaker 2>what you're looking up, and so it's it's nice having

431
00:23:16.279 --> 00:23:19.480
<v Speaker 2>it in the direct context that you're in without having

432
00:23:19.519 --> 00:23:22.160
<v Speaker 2>to go, okay, let me go to this other app

433
00:23:22.599 --> 00:23:24.960
<v Speaker 2>you know, look up this context, this method.

434
00:23:25.400 --> 00:23:28.400
<v Speaker 4>Yeah, I stopped using Dash because I didn't like paying

435
00:23:28.440 --> 00:23:31.480
<v Speaker 4>for it. I felt like my web browser version was better.

436
00:23:31.759 --> 00:23:33.880
<v Speaker 4>It just that's this is kind of what I meant.

437
00:23:33.880 --> 00:23:36.559
<v Speaker 4>But the web browser version is weak whenever my internet

438
00:23:36.559 --> 00:23:38.200
<v Speaker 4>goes out, so right.

439
00:23:39.400 --> 00:23:41.839
<v Speaker 2>I don't pay for the DASH, I just wait for

440
00:23:41.960 --> 00:23:42.480
<v Speaker 2>it to load.

441
00:23:45.240 --> 00:23:48.720
<v Speaker 4>So you mentioned the banner thing that that kind of

442
00:23:48.759 --> 00:23:52.240
<v Speaker 4>like started you down this road where there any were

443
00:23:52.279 --> 00:23:55.799
<v Speaker 4>there as as somebody who likes my consolet to look

444
00:23:55.799 --> 00:23:59.079
<v Speaker 4>aesthetically pleasing, you know, were there any things that you

445
00:23:59.119 --> 00:24:01.160
<v Speaker 4>were just like, oh, yeah, no, Now I do this

446
00:24:01.240 --> 00:24:05.960
<v Speaker 4>all the time, customize my RB show and everything is

447
00:24:06.000 --> 00:24:08.119
<v Speaker 4>you know, pink and green or something. I don't know.

448
00:24:09.720 --> 00:24:11.519
<v Speaker 1>I have a light I shouldn't.

449
00:24:11.160 --> 00:24:14.200
<v Speaker 4>Say that sure pleasing stuff and then immediately pick those

450
00:24:14.200 --> 00:24:15.160
<v Speaker 4>two colors in contruction.

451
00:24:15.240 --> 00:24:20.839
<v Speaker 2>But I have a thing with lightning. Bolts. My you know,

452
00:24:20.960 --> 00:24:23.480
<v Speaker 2>starting prompt is a lightning bolt. It tells me I'm

453
00:24:23.519 --> 00:24:26.680
<v Speaker 2>in i RB. That's kind of nice. My, I use

454
00:24:26.759 --> 00:24:30.599
<v Speaker 2>that for the longest time. Use there's a oh mysosh

455
00:24:30.720 --> 00:24:35.240
<v Speaker 2>theme that has a cloud and when you have changes

456
00:24:35.400 --> 00:24:40.039
<v Speaker 2>in your Git repository or in whatever repository you're working with,

457
00:24:40.400 --> 00:24:42.480
<v Speaker 2>it'll show a lightning bolt to tell you that there's

458
00:24:42.599 --> 00:24:45.000
<v Speaker 2>changes made, so you know whether you're clean in a

459
00:24:45.000 --> 00:24:48.400
<v Speaker 2>clean state or not. So it's just fun, that's cool.

460
00:24:48.799 --> 00:24:52.279
<v Speaker 2>It was kind of interesting making the custom prompt because

461
00:24:52.319 --> 00:24:54.680
<v Speaker 2>I was kind of, you know, playing with it, seeing

462
00:24:54.759 --> 00:24:57.799
<v Speaker 2>what you could do. And so I had actually picked

463
00:24:57.880 --> 00:25:00.960
<v Speaker 2>up the quoting. So what when you're in different modes

464
00:25:00.960 --> 00:25:04.440
<v Speaker 2>in IRB, So example, like in a string and you

465
00:25:04.480 --> 00:25:08.519
<v Speaker 2>have a string open in line that basically has a

466
00:25:08.559 --> 00:25:12.640
<v Speaker 2>signal to IRB to style it differently, and so I,

467
00:25:12.680 --> 00:25:16.519
<v Speaker 2>you know, I wrapped it in the quote's icon, so

468
00:25:16.559 --> 00:25:20.240
<v Speaker 2>that like an emoji quotes, which was kind of interesting

469
00:25:20.559 --> 00:25:24.359
<v Speaker 2>to use on a regular basis for a while. I

470
00:25:24.400 --> 00:25:28.200
<v Speaker 2>definitely will be using some emojis in my prompt for

471
00:25:28.519 --> 00:25:29.200
<v Speaker 2>a while now.

472
00:25:30.279 --> 00:25:31.920
<v Speaker 1>Nice. I was trying to figure out to get an

473
00:25:32.039 --> 00:25:36.359
<v Speaker 1>X wing on there. That's possible real emoji, probably not.

474
00:25:36.680 --> 00:25:39.039
<v Speaker 4>I don't know. There's probably everything in the emoji space.

475
00:25:39.039 --> 00:25:39.920
<v Speaker 4>What I'm saying, you.

476
00:25:39.960 --> 00:25:41.960
<v Speaker 1>Might be able to find an emoji font that has it,

477
00:25:42.359 --> 00:25:45.519
<v Speaker 1>you know, it's like a it's a smiley emoji, excepted

478
00:25:45.680 --> 00:25:46.160
<v Speaker 1>I don't.

479
00:25:45.960 --> 00:25:48.319
<v Speaker 2>Know, there's probably a power line font out there with

480
00:25:48.400 --> 00:25:48.960
<v Speaker 2>it in there.

481
00:25:49.920 --> 00:25:54.680
<v Speaker 1>Yeah, anyway, very cool. You mentioned, yeah that you kind

482
00:25:54.680 --> 00:25:57.519
<v Speaker 1>of got into this because you you saw somebody else

483
00:25:57.559 --> 00:26:01.000
<v Speaker 1>doing some stuff with it. What's the store as far

484
00:26:01.039 --> 00:26:05.640
<v Speaker 1>as like you learning this stuff, right, Because I'm assuming

485
00:26:05.680 --> 00:26:08.480
<v Speaker 1>there's a bit of a journey there, and you know

486
00:26:08.519 --> 00:26:11.319
<v Speaker 1>it didn't just like you know, upload to your brain, right,

487
00:26:11.440 --> 00:26:13.920
<v Speaker 1>So so what was the journey there? And how did

488
00:26:14.000 --> 00:26:17.519
<v Speaker 1>this kind of get implemented over time at work and

489
00:26:17.559 --> 00:26:18.200
<v Speaker 1>things like that.

490
00:26:18.519 --> 00:26:23.119
<v Speaker 2>Sure, I had dealt with IRB customizations for a long time,

491
00:26:23.720 --> 00:26:26.559
<v Speaker 2>so I was familiar at least with the notion of

492
00:26:26.759 --> 00:26:31.559
<v Speaker 2>IRBRC and being able to kind of customize small things,

493
00:26:31.839 --> 00:26:33.839
<v Speaker 2>but I didn't know the extent at which you can

494
00:26:33.880 --> 00:26:37.079
<v Speaker 2>do it. Like probably another topic of conversation or blog

495
00:26:37.119 --> 00:26:42.160
<v Speaker 2>posts is the history itself IRB and even kind of

496
00:26:42.240 --> 00:26:46.920
<v Speaker 2>save those histories in as files so you could in

497
00:26:47.079 --> 00:26:48.680
<v Speaker 2>essence and that's kind of where I'm going to go

498
00:26:49.160 --> 00:26:53.039
<v Speaker 2>next with some of our servers is to customize the

499
00:26:53.160 --> 00:26:56.559
<v Speaker 2>IRB session per user so they all have their own history.

500
00:26:56.960 --> 00:27:00.079
<v Speaker 2>Especially when you deal with a shared server setting, you

501
00:27:00.200 --> 00:27:02.039
<v Speaker 2>run into a lot of oh, you hit up a

502
00:27:02.079 --> 00:27:05.640
<v Speaker 2>few times and you're scrolling through somebody else's history that's

503
00:27:05.799 --> 00:27:09.160
<v Speaker 2>sharing the session with you, And so that that's an

504
00:27:09.200 --> 00:27:13.559
<v Speaker 2>easy fix scoping to a particular final and so it started,

505
00:27:13.799 --> 00:27:17.880
<v Speaker 2>you know, just small realizations over time of oh, hey,

506
00:27:17.880 --> 00:27:20.279
<v Speaker 2>you can do this, you can do this, and then

507
00:27:20.319 --> 00:27:24.319
<v Speaker 2>finding the actual need was we have we have these

508
00:27:24.359 --> 00:27:27.759
<v Speaker 2>hack days at doc Simity where the whole team will

509
00:27:28.079 --> 00:27:31.440
<v Speaker 2>split up and work on anything in particular that could

510
00:27:31.480 --> 00:27:33.920
<v Speaker 2>help be useful for the team. And one of the

511
00:27:33.960 --> 00:27:37.960
<v Speaker 2>problems we had was this auditing in that our auditing

512
00:27:38.440 --> 00:27:43.519
<v Speaker 2>would be had to be explicitly, explicitly set anytime any

513
00:27:43.599 --> 00:27:47.599
<v Speaker 2>user logged into a higher B session or Rails console,

514
00:27:48.119 --> 00:27:52.000
<v Speaker 2>and so you know, sometimes it would be forgotten, the

515
00:27:52.079 --> 00:27:55.759
<v Speaker 2>auditing would gets you know, get lost, and we'd have

516
00:27:55.799 --> 00:27:59.440
<v Speaker 2>to go back and readdress those data concerns. And so

517
00:28:00.279 --> 00:28:01.920
<v Speaker 2>somebody was like, hey, it would be nice if we

518
00:28:01.960 --> 00:28:07.039
<v Speaker 2>can just automatically do this, and that basically is what

519
00:28:07.200 --> 00:28:09.640
<v Speaker 2>started me down this rabbit hole to begin with. Is

520
00:28:09.680 --> 00:28:14.799
<v Speaker 2>that possible one? And there were some prerequisites to that

521
00:28:15.319 --> 00:28:18.519
<v Speaker 2>in that, you know, how do you know what user

522
00:28:18.839 --> 00:28:22.079
<v Speaker 2>in the system is related to the user that logged

523
00:28:22.079 --> 00:28:25.640
<v Speaker 2>into the server. We happen to have some you know,

524
00:28:26.119 --> 00:28:29.839
<v Speaker 2>formalities in place that lined up those user it aims.

525
00:28:30.359 --> 00:28:33.440
<v Speaker 2>So it kind of working out really well and being

526
00:28:33.559 --> 00:28:37.279
<v Speaker 2>easier than was expected. And then so as you go

527
00:28:37.359 --> 00:28:41.440
<v Speaker 2>through and once you have a custom Rails console, it

528
00:28:41.480 --> 00:28:43.119
<v Speaker 2>makes you think, oh, well, what else can we put

529
00:28:43.119 --> 00:28:47.480
<v Speaker 2>in here? What are there you know, proximity specific customizations

530
00:28:47.519 --> 00:28:52.160
<v Speaker 2>can we inject inside the Rails console, limitations, you know,

531
00:28:52.200 --> 00:28:55.640
<v Speaker 2>how can we add restrictions things like that? And it

532
00:28:55.680 --> 00:28:58.880
<v Speaker 2>becomes very easy once you have that place, that source

533
00:28:58.880 --> 00:29:02.640
<v Speaker 2>of truth, to kind of make the customizations. And I

534
00:29:02.960 --> 00:29:06.240
<v Speaker 2>work in the terminal almost exclusively. That's kind of why

535
00:29:06.319 --> 00:29:10.079
<v Speaker 2>I Jim right, Yeah, because Bim, But more so I

536
00:29:10.119 --> 00:29:12.920
<v Speaker 2>have a very elaborate Tea Bucks setup as well that

537
00:29:12.960 --> 00:29:15.839
<v Speaker 2>I've just grown comfortable with, and so I try and

538
00:29:15.880 --> 00:29:18.000
<v Speaker 2>do as much as pot I don't like leaving the

539
00:29:18.039 --> 00:29:22.759
<v Speaker 2>console at all. Even I've been looking at a couple

540
00:29:22.759 --> 00:29:25.960
<v Speaker 2>of projects to do even code reviews from the terminal.

541
00:29:26.240 --> 00:29:29.279
<v Speaker 2>They're not quite there yet, but that would be my

542
00:29:29.519 --> 00:29:32.960
<v Speaker 2>dream to just you know, never leave. You know, I

543
00:29:33.039 --> 00:29:36.160
<v Speaker 2>used to use what was it there was a chat

544
00:29:36.240 --> 00:29:41.039
<v Speaker 2>service for a while when campfire was around that allowed

545
00:29:41.079 --> 00:29:43.079
<v Speaker 2>you to do that from the terminal as well, maybe

546
00:29:43.160 --> 00:29:45.680
<v Speaker 2>as we chat, but that would that would be my

547
00:29:45.799 --> 00:29:51.279
<v Speaker 2>ideal environment. So, you know, playing around with i RB

548
00:29:51.400 --> 00:29:53.240
<v Speaker 2>and being able to do as much as possible there,

549
00:29:53.680 --> 00:29:56.519
<v Speaker 2>you know, open up any files, you know, send things

550
00:29:56.519 --> 00:29:58.480
<v Speaker 2>to the background when I don't need to use them

551
00:29:58.720 --> 00:30:00.839
<v Speaker 2>kind of thing. It's just a very nice workflow.

552
00:30:01.240 --> 00:30:01.960
<v Speaker 1>So gotcha.

553
00:30:02.440 --> 00:30:05.720
<v Speaker 2>That's that's kind of my foray into the i RB

554
00:30:05.880 --> 00:30:08.640
<v Speaker 2>space was you know, what is possible? What can you

555
00:30:08.680 --> 00:30:11.759
<v Speaker 2>do with it? And how can you make things easier

556
00:30:11.799 --> 00:30:12.440
<v Speaker 2>to develop?

557
00:30:12.559 --> 00:30:12.759
<v Speaker 1>Right?

558
00:30:13.720 --> 00:30:15.839
<v Speaker 3>Can I ask you about the Ripper?

559
00:30:16.079 --> 00:30:16.400
<v Speaker 2>Sure?

560
00:30:17.839 --> 00:30:22.720
<v Speaker 3>So this is from the Hidden Chems Ruby article the

561
00:30:22.720 --> 00:30:27.599
<v Speaker 3>the Ripper. It says it's a lexical analyzer and you

562
00:30:27.720 --> 00:30:30.000
<v Speaker 3>run a you run the ripping command or a head world.

563
00:30:30.039 --> 00:30:32.720
<v Speaker 3>You get loads of stuff out. How did you how

564
00:30:32.759 --> 00:30:36.559
<v Speaker 3>did you get into using that? And what what are

565
00:30:36.559 --> 00:30:40.240
<v Speaker 3>you using that for? Because that to me looks incredibly

566
00:30:40.480 --> 00:30:41.720
<v Speaker 3>technical and obscure.

567
00:30:42.440 --> 00:30:47.240
<v Speaker 2>So mostly it's for analyzing memory usage. So with the

568
00:30:47.279 --> 00:30:50.799
<v Speaker 2>instruction sequence compiler, you can then use it to see

569
00:30:51.279 --> 00:30:54.599
<v Speaker 2>how Ruby is, you know, making those instructions on the

570
00:30:54.599 --> 00:30:57.839
<v Speaker 2>low level and kind of it's it's a helpful way

571
00:30:57.880 --> 00:31:05.240
<v Speaker 2>to debug how it's compiling those instructions. And sometimes you

572
00:31:05.279 --> 00:31:09.000
<v Speaker 2>can when you're debugging a particular memory issue, you can

573
00:31:09.079 --> 00:31:14.440
<v Speaker 2>elaborate on that using the lexical analyzer to see how

574
00:31:14.480 --> 00:31:16.960
<v Speaker 2>it's constructing it on the back end.

575
00:31:17.119 --> 00:31:20.160
<v Speaker 3>Got it. So if you maybe if you're cooling in

576
00:31:20.240 --> 00:31:24.440
<v Speaker 3>some external library that's memories going missing, that kind of situation.

577
00:31:24.319 --> 00:31:29.119
<v Speaker 2>Yeah, something like that. It's mostly useful for really cross

578
00:31:29.119 --> 00:31:33.200
<v Speaker 2>compiling what do they call it transpiling. I haven't used

579
00:31:33.240 --> 00:31:35.880
<v Speaker 2>it for that, but I know what is it opal

580
00:31:36.599 --> 00:31:38.920
<v Speaker 2>or Ruby Opal. There was some kind of project where

581
00:31:39.559 --> 00:31:43.000
<v Speaker 2>they're translating the Ruby code to JavaScript as an example.

582
00:31:43.480 --> 00:31:49.119
<v Speaker 2>So that's primarily the value of ripper is it's ast

583
00:31:49.400 --> 00:31:52.880
<v Speaker 2>kind of generalization. So I don't know if anyone's familiar

584
00:31:52.920 --> 00:31:55.880
<v Speaker 2>with tree sitter, which is what GitHub uses as their

585
00:31:56.359 --> 00:32:00.160
<v Speaker 2>code hinting. So anytime you've you know, been it on

586
00:32:00.240 --> 00:32:03.119
<v Speaker 2>GitHub in a code review and you've you know, hovered

587
00:32:03.119 --> 00:32:05.160
<v Speaker 2>over a method name and it shows, hey, this is

588
00:32:05.200 --> 00:32:09.119
<v Speaker 2>defined in this file. Uh, they actually use an AST

589
00:32:09.920 --> 00:32:13.160
<v Speaker 2>called tree sitter that they've made with Rust. It's pretty

590
00:32:13.160 --> 00:32:13.880
<v Speaker 2>wild stuff.

591
00:32:14.640 --> 00:32:15.400
<v Speaker 1>It is pretty cool.

592
00:32:15.519 --> 00:32:18.960
<v Speaker 4>It doesn't catch all the all the dynamically named stuff

593
00:32:19.119 --> 00:32:23.079
<v Speaker 4>or the dynamic calls mostly, but yeah, no, unfortunately, I

594
00:32:23.119 --> 00:32:27.720
<v Speaker 4>mean that's Ruby rails specific, mostly all those after commit things.

595
00:32:27.920 --> 00:32:28.279
<v Speaker 3>You're right.

596
00:32:28.799 --> 00:32:30.920
<v Speaker 4>One of the things that I noticed in here was

597
00:32:31.039 --> 00:32:34.400
<v Speaker 4>the switch from read line to reline. So does that

598
00:32:34.440 --> 00:32:39.160
<v Speaker 4>mean that we're dropping the red line dependency? Like I guess.

599
00:32:39.200 --> 00:32:39.559
<v Speaker 1>I tried.

600
00:32:39.680 --> 00:32:41.200
<v Speaker 4>I tried to look that up and I couldn't find

601
00:32:41.240 --> 00:32:42.960
<v Speaker 4>an answer. Real fest, I don't happen to you know,

602
00:32:43.000 --> 00:32:43.319
<v Speaker 4>if you.

603
00:32:43.839 --> 00:32:47.880
<v Speaker 2>I don't know. Unfortunately, I haven't joined the Ruby forums

604
00:32:47.920 --> 00:32:50.759
<v Speaker 2>themselves yet. I imagine that will come soon when I

605
00:32:50.759 --> 00:32:52.759
<v Speaker 2>want to add a feature to i RB or something

606
00:32:52.839 --> 00:32:55.559
<v Speaker 2>like that. But so I don't know what they have

607
00:32:55.640 --> 00:32:59.240
<v Speaker 2>plans for it at this moment, from just the master

608
00:33:00.000 --> 00:33:03.640
<v Speaker 2>branch of the repository or have they moved a main branch.

609
00:33:03.839 --> 00:33:07.440
<v Speaker 2>I'm not sure, but they haven't removed it still there,

610
00:33:07.720 --> 00:33:10.519
<v Speaker 2>so they at least have it backwards compatible. But yeah,

611
00:33:10.519 --> 00:33:13.319
<v Speaker 2>that I mean that the re line's really cool because

612
00:33:13.599 --> 00:33:16.680
<v Speaker 2>mostly for the multi line support so if you paste

613
00:33:16.720 --> 00:33:20.200
<v Speaker 2>it in i don't know, fifteen twenty lines of Ruby code,

614
00:33:20.519 --> 00:33:23.480
<v Speaker 2>you can actually just scroll up and edit it right

615
00:33:23.559 --> 00:33:26.759
<v Speaker 2>in place. You don't have to go and you know,

616
00:33:26.880 --> 00:33:32.240
<v Speaker 2>line by line, edit and hit up again. It's really

617
00:33:32.359 --> 00:33:33.079
<v Speaker 2>nice to work with.

618
00:33:33.480 --> 00:33:36.480
<v Speaker 4>Does it increase my buffer for pasting? Now that you're

619
00:33:36.519 --> 00:33:41.480
<v Speaker 4>talking about pasting in here, I can't answer that one.

620
00:33:41.519 --> 00:33:43.839
<v Speaker 4>I haven't played with that. I've always had a problem

621
00:33:43.839 --> 00:33:46.680
<v Speaker 4>with that when I'm like writing long scripts or something.

622
00:33:48.799 --> 00:33:52.599
<v Speaker 1>Cool. So I'm kind of curious now that you die.

623
00:33:54.079 --> 00:33:56.400
<v Speaker 1>It's so funny because talking through this sm sitting here

624
00:33:56.400 --> 00:33:58.400
<v Speaker 1>going man, I really kind of just took this for

625
00:33:58.480 --> 00:34:03.039
<v Speaker 1>granted that it just worked, right. But yeah, now that

626
00:34:03.079 --> 00:34:04.920
<v Speaker 1>you're yeah, go ahead.

627
00:34:04.839 --> 00:34:08.280
<v Speaker 2>I was going to say that there was a few

628
00:34:08.400 --> 00:34:11.000
<v Speaker 2>years back where I was looking at somebody had tasted

629
00:34:11.440 --> 00:34:14.679
<v Speaker 2>just the lib directory of Ruby's repo, and there's a

630
00:34:14.719 --> 00:34:17.719
<v Speaker 2>ton of Ruby files in there, And at first you know,

631
00:34:17.800 --> 00:34:21.199
<v Speaker 2>it's just like delegate class or something like that, some

632
00:34:21.239 --> 00:34:24.719
<v Speaker 2>simple ones that I could recognize, and then you realize, well,

633
00:34:24.760 --> 00:34:26.639
<v Speaker 2>there's a bunch of other gems in here that are

634
00:34:26.800 --> 00:34:29.599
<v Speaker 2>I guess this is the core library, right, that's what's included,

635
00:34:30.119 --> 00:34:34.840
<v Speaker 2>and That's kind of what got me to i ORB eventually,

636
00:34:34.920 --> 00:34:37.480
<v Speaker 2>is that you know, there are all these cool things

637
00:34:37.480 --> 00:34:40.119
<v Speaker 2>included in Ruby, and I imagine the same with rails

638
00:34:40.239 --> 00:34:42.719
<v Speaker 2>right where there's just way too many features for you

639
00:34:42.800 --> 00:34:43.559
<v Speaker 2>to know all of them.

640
00:34:43.719 --> 00:34:43.880
<v Speaker 3>Right.

641
00:34:44.320 --> 00:34:46.440
<v Speaker 2>What if you just spend a day and poke around,

642
00:34:46.920 --> 00:34:50.039
<v Speaker 2>you're like really surprising how much stuff is in there.

643
00:34:50.360 --> 00:34:52.360
<v Speaker 2>And I'm kind of hoping to turn this into kind

644
00:34:52.360 --> 00:34:56.280
<v Speaker 2>of a more longer form series on what's included in

645
00:34:56.639 --> 00:35:00.400
<v Speaker 2>Ruby's you know, core library, because there is just so much,

646
00:35:00.960 --> 00:35:03.239
<v Speaker 2>Like like you were saying, you know, you don't even

647
00:35:03.320 --> 00:35:05.519
<v Speaker 2>know you take it for granted that all this stuff

648
00:35:05.559 --> 00:35:07.760
<v Speaker 2>is there. You just open up an IRB session and

649
00:35:07.800 --> 00:35:10.679
<v Speaker 2>do what you're trying to do in the moment and

650
00:35:10.760 --> 00:35:13.440
<v Speaker 2>don't realize kind of what's all available to you.

651
00:35:13.800 --> 00:35:17.280
<v Speaker 1>Yeah. So I guess what I'm kind of aiming at

652
00:35:17.360 --> 00:35:21.000
<v Speaker 1>next is you've done all this work to understand IRB,

653
00:35:21.280 --> 00:35:24.679
<v Speaker 1>understand how it works, you know, dive into the feature set.

654
00:35:25.239 --> 00:35:26.800
<v Speaker 1>What do you wish it had that it doesn't.

655
00:35:27.039 --> 00:35:29.360
<v Speaker 2>That's a good question. I guess I wish it had

656
00:35:29.400 --> 00:35:34.079
<v Speaker 2>more native integrations, like like, as an example, you know,

657
00:35:34.119 --> 00:35:37.239
<v Speaker 2>being able to use vs code or something like that,

658
00:35:37.800 --> 00:35:41.840
<v Speaker 2>and you know, hooking up i RB to the editor

659
00:35:43.079 --> 00:35:46.280
<v Speaker 2>so you can evaluate. You know, various things live from

660
00:35:46.280 --> 00:35:49.519
<v Speaker 2>within the editor, which I know are kind of external

661
00:35:49.559 --> 00:35:52.079
<v Speaker 2>to the Ruby source itself. But it would be nice

662
00:35:52.079 --> 00:35:55.400
<v Speaker 2>to have kind of some more native things, even like

663
00:35:55.440 --> 00:36:00.159
<v Speaker 2>a mechanism that would make it easier to make more

664
00:36:00.199 --> 00:36:03.920
<v Speaker 2>extensions to IRB, like say, for example, this Jarred project,

665
00:36:04.239 --> 00:36:06.239
<v Speaker 2>which I know is built on something that's kind of

666
00:36:06.400 --> 00:36:09.800
<v Speaker 2>a competitor to i RB, but they're basically they have

667
00:36:09.880 --> 00:36:12.159
<v Speaker 2>a ton of modules that make it easy to do

668
00:36:12.760 --> 00:36:15.519
<v Speaker 2>you know, X y Z. It would be nice if

669
00:36:15.559 --> 00:36:19.280
<v Speaker 2>there were support from the you know, Ruby Core team

670
00:36:19.519 --> 00:36:24.599
<v Speaker 2>or or something like that that could help expose what's

671
00:36:24.599 --> 00:36:28.360
<v Speaker 2>available and make it easier to extend and say, hey,

672
00:36:28.639 --> 00:36:30.719
<v Speaker 2>this is how you do it kind of thing.

673
00:36:31.079 --> 00:36:33.480
<v Speaker 4>Right, It kind of sounds like IRB is giving you

674
00:36:33.519 --> 00:36:35.000
<v Speaker 4>a lot of what you want already.

675
00:36:35.159 --> 00:36:40.000
<v Speaker 2>I know it's hard to holes. Yeah, I mean they

676
00:36:40.000 --> 00:36:42.599
<v Speaker 2>already add extra features that I wouldn't have thought about.

677
00:36:42.679 --> 00:36:46.800
<v Speaker 1>So yeah, all right, Well, anything else you all want

678
00:36:46.800 --> 00:36:49.280
<v Speaker 1>to dive into here before we do picks? All right, Well,

679
00:36:49.360 --> 00:36:52.519
<v Speaker 1>let's let's go ahead and shout out about some cool stuff. John,

680
00:36:52.599 --> 00:36:54.960
<v Speaker 1>do you want to start us off with picks. Yeah,

681
00:36:55.000 --> 00:36:55.639
<v Speaker 1>I will. So.

682
00:36:56.519 --> 00:37:00.960
<v Speaker 4>I I just recently replaced my grill. My grill of

683
00:37:01.599 --> 00:37:05.400
<v Speaker 4>over a decade. It just I replaced the grades a

684
00:37:05.400 --> 00:37:07.039
<v Speaker 4>few times. And why I've tried to keep that thing

685
00:37:07.079 --> 00:37:10.239
<v Speaker 4>alive because I had it was one of those like

686
00:37:10.320 --> 00:37:14.400
<v Speaker 4>double sided and one half was gas, one half was charcoal.

687
00:37:14.480 --> 00:37:17.159
<v Speaker 4>And I was very happy that I got it. And

688
00:37:17.199 --> 00:37:20.760
<v Speaker 4>I got it for like two hundred bucks, and so,

689
00:37:21.000 --> 00:37:22.760
<v Speaker 4>you know, I got it like a decade ago, and

690
00:37:22.800 --> 00:37:25.679
<v Speaker 4>I'm like, oh sweet, I'm ready to spend two hundred

691
00:37:25.679 --> 00:37:29.719
<v Speaker 4>dollars on a grill, and like, like two hundred dollars

692
00:37:29.760 --> 00:37:31.840
<v Speaker 4>will buy you like a little dinky thing that sits

693
00:37:31.840 --> 00:37:34.079
<v Speaker 4>on the ground, and you know, I have to crouch

694
00:37:34.159 --> 00:37:36.119
<v Speaker 4>down and use it. So I was like, oh, so

695
00:37:36.159 --> 00:37:39.119
<v Speaker 4>I had to reevaluate a lot, and I went around

696
00:37:39.159 --> 00:37:42.760
<v Speaker 4>and dug around, and event I was just pretty angry

697
00:37:42.840 --> 00:37:44.679
<v Speaker 4>that everything that I wanted to buy was like six

698
00:37:44.760 --> 00:37:48.119
<v Speaker 4>hundred bucks. But I eventually like found something that was

699
00:37:48.159 --> 00:37:50.960
<v Speaker 4>pretty good, and I've been using it for like two

700
00:37:51.000 --> 00:37:54.440
<v Speaker 4>months now, so I've been pretty pleased with it.

701
00:37:54.639 --> 00:37:55.599
<v Speaker 1>I had to give up.

702
00:37:55.480 --> 00:37:58.360
<v Speaker 4>Having one side charco on one side gas in order

703
00:37:58.400 --> 00:38:01.880
<v Speaker 4>to get a good gas grill because apparently they just

704
00:38:02.400 --> 00:38:04.400
<v Speaker 4>they just don't put those two together unless you're willing

705
00:38:04.440 --> 00:38:07.639
<v Speaker 4>to spend you know, a small fortune on it. But yeah,

706
00:38:07.679 --> 00:38:09.599
<v Speaker 4>so I found like this nice gas grill that gave

707
00:38:09.639 --> 00:38:13.079
<v Speaker 4>me like six burners and like didn't completely make break

708
00:38:13.079 --> 00:38:15.400
<v Speaker 4>the bank at three hundred and fifty bucks, so I

709
00:38:15.440 --> 00:38:17.519
<v Speaker 4>was pretty pleased with it. I'll put a like link

710
00:38:17.599 --> 00:38:20.199
<v Speaker 4>to it or whatever. But it also wasn't a deal

711
00:38:20.320 --> 00:38:22.960
<v Speaker 4>because like there was a different grill that I really

712
00:38:23.000 --> 00:38:26.159
<v Speaker 4>wanted that was at like the four hundred dollars price point,

713
00:38:26.280 --> 00:38:28.599
<v Speaker 4>only like my wife was like, well, you need to

714
00:38:28.920 --> 00:38:30.840
<v Speaker 4>need to think over it for another night, and I

715
00:38:30.880 --> 00:38:32.320
<v Speaker 4>was like, but I have been thinking about it for

716
00:38:32.360 --> 00:38:36.119
<v Speaker 4>like a month now, and this anyway, whatever, the deal

717
00:38:36.199 --> 00:38:38.480
<v Speaker 4>was gone by the next day, so this one is

718
00:38:38.519 --> 00:38:40.559
<v Speaker 4>stuck around for a while. So out about that price, pink,

719
00:38:40.639 --> 00:38:42.880
<v Speaker 4>So that seems like this is probably its natural price monk.

720
00:38:43.079 --> 00:38:45.840
<v Speaker 4>So yeah, anyway, got a sweet grill and it works

721
00:38:45.880 --> 00:38:50.159
<v Speaker 4>pretty swimmingly for what it is. So and now I

722
00:38:50.199 --> 00:38:52.000
<v Speaker 4>just have to work on convincing my wife to let

723
00:38:52.039 --> 00:38:55.360
<v Speaker 4>me buy a separate charcoal burner so that I can

724
00:38:55.360 --> 00:38:58.880
<v Speaker 4>do charcoal stuff when I have like more time or something.

725
00:38:59.000 --> 00:39:02.119
<v Speaker 4>So right, so I like that, that's that's my pick

726
00:39:02.159 --> 00:39:04.840
<v Speaker 4>for this week or whatever been able. That's been very

727
00:39:04.840 --> 00:39:08.760
<v Speaker 4>helpful because I my wife does not like Mexican food,

728
00:39:09.239 --> 00:39:11.519
<v Speaker 4>and the number of things that I can cook that

729
00:39:11.599 --> 00:39:14.000
<v Speaker 4>are not on a grill are pretty much all Mexican

730
00:39:14.000 --> 00:39:17.280
<v Speaker 4>food because that's that's how I grew up eating, so

731
00:39:17.559 --> 00:39:19.679
<v Speaker 4>that's what I know to make. So yeah, my wife

732
00:39:19.760 --> 00:39:22.360
<v Speaker 4>very much appreciates that I can grill some stuff since

733
00:39:22.639 --> 00:39:24.760
<v Speaker 4>we are dealing with baby things.

734
00:39:25.239 --> 00:39:27.239
<v Speaker 1>Nice, All right, Luke, what are your picks?

735
00:39:27.639 --> 00:39:31.360
<v Speaker 3>Well, I'm gonna pick my magic, haven't I? The mind

736
00:39:31.440 --> 00:39:35.679
<v Speaker 3>mac Magic gem is definitely my pick week. What a

737
00:39:35.719 --> 00:39:37.679
<v Speaker 3>marvelous gem it is, and.

738
00:39:38.119 --> 00:39:40.480
<v Speaker 1>Not only version three point five or lower.

739
00:39:41.199 --> 00:39:45.000
<v Speaker 3>You know, you know how we were talking about JavaScript

740
00:39:45.440 --> 00:39:49.239
<v Speaker 3>features kind of coming into to really free, Well now

741
00:39:49.280 --> 00:39:52.920
<v Speaker 3>we've got kind of MPM features coming into the gem

742
00:39:52.960 --> 00:39:58.760
<v Speaker 3>ec system. GYM system. Really we're really really taking our

743
00:39:58.840 --> 00:40:02.199
<v Speaker 3>lead from Java script at the moment. So I've linked

744
00:40:02.199 --> 00:40:06.719
<v Speaker 3>to an issue on the GitHub where some developers are

745
00:40:06.760 --> 00:40:11.960
<v Speaker 3>saying that because this license changes to GPL, then everyone

746
00:40:11.960 --> 00:40:15.480
<v Speaker 3>has to release all their source code. This really isn't true.

747
00:40:15.880 --> 00:40:19.000
<v Speaker 3>This is this idea of a viral license was introduced

748
00:40:19.000 --> 00:40:21.920
<v Speaker 3>by Microsoft in the early two thousands, and if you know,

749
00:40:22.400 --> 00:40:24.960
<v Speaker 3>you can go with Peter and look it up. And

750
00:40:25.039 --> 00:40:27.880
<v Speaker 3>it's kind of a smur used against the free source

751
00:40:28.280 --> 00:40:32.079
<v Speaker 3>free software movement that that there is this kind of

752
00:40:32.239 --> 00:40:34.920
<v Speaker 3>nasty license that if you include it in your code,

753
00:40:35.079 --> 00:40:37.400
<v Speaker 3>then you suddenly have to release all your source CODs

754
00:40:37.400 --> 00:40:40.440
<v Speaker 3>and your business is over. There is a license called

755
00:40:40.440 --> 00:40:44.480
<v Speaker 3>the age EPL which has some restrictions on software as

756
00:40:44.480 --> 00:40:47.800
<v Speaker 3>the service systems, but there is no There is no

757
00:40:48.280 --> 00:40:52.440
<v Speaker 3>strange magic license that you introduce that suddenly makes you

758
00:40:52.519 --> 00:40:56.920
<v Speaker 3>do things. And people miss the point with free software

759
00:40:56.960 --> 00:40:59.559
<v Speaker 3>a lot. They seem to kind of confuse it. The

760
00:40:59.599 --> 00:41:01.719
<v Speaker 3>whole point of free software is that you have freedom,

761
00:41:01.719 --> 00:41:04.159
<v Speaker 3>and if someone's making you release your source code when

762
00:41:04.199 --> 00:41:07.800
<v Speaker 3>you don't want to, that's not really freedom. So people

763
00:41:07.800 --> 00:41:10.360
<v Speaker 3>need to calm down on the On the GPL side

764
00:41:10.360 --> 00:41:12.239
<v Speaker 3>of things, the GPL is a great thing. It's built

765
00:41:12.280 --> 00:41:18.320
<v Speaker 3>the computing infrastructure we have today. The MIT license is

766
00:41:18.360 --> 00:41:22.079
<v Speaker 3>not so great, and I'm not such a big fan,

767
00:41:23.000 --> 00:41:26.159
<v Speaker 3>but if you don't believe me, look into it for yourself.

768
00:41:26.800 --> 00:41:29.320
<v Speaker 3>Sore Ago, my pick of the week, my magic. Thank

769
00:41:29.400 --> 00:41:31.760
<v Speaker 3>you for keeping Ruby interesting.

770
00:41:32.639 --> 00:41:34.800
<v Speaker 1>Yeah, and so I'm going to pile on there because

771
00:41:34.800 --> 00:41:38.599
<v Speaker 1>I was going to pick similar and essentially there's an

772
00:41:38.639 --> 00:41:42.920
<v Speaker 1>issue in the RAILS repo. I think it was introduced yesterday,

773
00:41:42.960 --> 00:41:46.840
<v Speaker 1>the issue, and so yeah, my magic used a list

774
00:41:46.880 --> 00:41:51.280
<v Speaker 1>of mind types that was GPR licensed in the GEM

775
00:41:51.639 --> 00:41:56.679
<v Speaker 1>and so because of that, Yeah, the whole thread is

776
00:41:56.760 --> 00:42:00.880
<v Speaker 1>essentially a discussion over this idea of viral licenses and

777
00:42:01.360 --> 00:42:04.559
<v Speaker 1>you know how it does or doesn't ruin software, which

778
00:42:04.639 --> 00:42:08.159
<v Speaker 1>I found to be mostly not helpful. Ultimately, there's going

779
00:42:08.239 --> 00:42:11.519
<v Speaker 1>to be you know, they're going to talk to somebody's

780
00:42:11.519 --> 00:42:13.440
<v Speaker 1>going to talk to some lawyers. They're going to figure

781
00:42:13.440 --> 00:42:15.159
<v Speaker 1>out what they're supposed to do, and then they're going

782
00:42:15.239 --> 00:42:18.840
<v Speaker 1>to fix it so that if you're using RAILS you

783
00:42:18.840 --> 00:42:21.360
<v Speaker 1>don't have to worry about it. But in the meantime, yeah,

784
00:42:21.480 --> 00:42:23.760
<v Speaker 1>just be aware that this is a conversation that's going on.

785
00:42:24.000 --> 00:42:26.039
<v Speaker 1>I'm going to see if I can find somebody who

786
00:42:26.360 --> 00:42:28.039
<v Speaker 1>is an expert on this stuff so we can do

787
00:42:28.039 --> 00:42:31.199
<v Speaker 1>an episode on it. Right because I'm not an attorney,

788
00:42:31.480 --> 00:42:33.559
<v Speaker 1>I don't know how all this stuff works. I don't

789
00:42:33.599 --> 00:42:37.000
<v Speaker 1>know what the implications are. But in the meantime, yeah,

790
00:42:37.000 --> 00:42:39.960
<v Speaker 1>it's something to watch for sure. So we'll put a

791
00:42:40.000 --> 00:42:44.800
<v Speaker 1>link to the issue in the show notes and yeah,

792
00:42:44.960 --> 00:42:47.599
<v Speaker 1>let everybody kind of follow up on that. But they

793
00:42:47.599 --> 00:42:52.400
<v Speaker 1>did actually close commentary on the issue because after the

794
00:42:52.440 --> 00:42:55.880
<v Speaker 1>first probably twenty or thirty comments, Yeah, it just kind

795
00:42:55.880 --> 00:42:58.679
<v Speaker 1>of evolved into people arguing over what it meant as

796
00:42:58.719 --> 00:43:01.199
<v Speaker 1>far as this is good or this is not good.

797
00:43:01.320 --> 00:43:04.800
<v Speaker 1>And ultimately, I think what we need to just see

798
00:43:04.920 --> 00:43:08.320
<v Speaker 1>is what are the implications for the RAILS community at large,

799
00:43:08.800 --> 00:43:11.519
<v Speaker 1>and you know, how do we continue to be able

800
00:43:11.559 --> 00:43:14.559
<v Speaker 1>to write softwaware the way we write software because a

801
00:43:14.559 --> 00:43:17.639
<v Speaker 1>lot of these conversations about kind of the social structure

802
00:43:17.840 --> 00:43:22.119
<v Speaker 1>of software and the legal structure of software are things

803
00:43:22.119 --> 00:43:23.719
<v Speaker 1>that we don't really want to think about. We just

804
00:43:23.760 --> 00:43:27.480
<v Speaker 1>want to think about writing code and enjoying in enjoying technology.

805
00:43:27.559 --> 00:43:30.719
<v Speaker 1>So anyway, yeah, we'll get somebody on who can tell

806
00:43:30.760 --> 00:43:33.840
<v Speaker 1>us what we have to care about. So yeah, so

807
00:43:33.880 --> 00:43:37.559
<v Speaker 1>that's one pick. I was looking back through my Amazon

808
00:43:37.639 --> 00:43:39.679
<v Speaker 1>history for some ideas on other things. I could pick

809
00:43:39.920 --> 00:43:41.719
<v Speaker 1>one thing that I've really been enjoying lately. I have

810
00:43:41.760 --> 00:43:45.000
<v Speaker 1>a soda stream, which is a carbonator you can make

811
00:43:45.039 --> 00:43:47.800
<v Speaker 1>your own soda. They also sell mixes and then I

812
00:43:47.960 --> 00:43:51.719
<v Speaker 1>just order drink mixes in general off of Amazon, so

813
00:43:51.760 --> 00:43:54.519
<v Speaker 1>they have like different fruit flavors and stuff like that.

814
00:43:54.880 --> 00:43:57.639
<v Speaker 1>I don't drink alcohol, so it's kind of funny because

815
00:43:57.679 --> 00:43:59.800
<v Speaker 1>I get this stuff that people add to their alcoholic

816
00:44:00.079 --> 00:44:02.480
<v Speaker 1>it's the just or the flavors, you know, and we

817
00:44:02.599 --> 00:44:06.599
<v Speaker 1>just carbonate that. So anyway, but I'm really liking it.

818
00:44:07.159 --> 00:44:09.719
<v Speaker 1>They have an energy drink flavor, and a cola flavor,

819
00:44:09.760 --> 00:44:13.039
<v Speaker 1>and a root beer flavor, and a they they don't

820
00:44:13.039 --> 00:44:15.079
<v Speaker 1>have a cream soda flavor, but you can find one

821
00:44:15.159 --> 00:44:17.960
<v Speaker 1>on there that is. I get the sugar Field of

822
00:44:18.000 --> 00:44:21.599
<v Speaker 1>flavors because I'm diabetic, so I'm gonna pick that. I've

823
00:44:21.599 --> 00:44:24.719
<v Speaker 1>really really been liking having that, and so that's something

824
00:44:24.719 --> 00:44:28.119
<v Speaker 1>I'm picking. And then for the dev Heroes Accelerator. One

825
00:44:28.119 --> 00:44:31.320
<v Speaker 1>thing that's really been working out nicely for me lately

826
00:44:32.360 --> 00:44:35.880
<v Speaker 1>that I've been using to get people in and then

827
00:44:36.000 --> 00:44:39.639
<v Speaker 1>get them the content they need. I've been using Teachable,

828
00:44:39.760 --> 00:44:42.639
<v Speaker 1>and I'm really liking Teachable. It's a terrific platform for

829
00:44:42.800 --> 00:44:45.280
<v Speaker 1>just putting the videos up and giving people what they

830
00:44:45.320 --> 00:44:49.000
<v Speaker 1>need there. And so I've been putting videos up on Hey,

831
00:44:49.360 --> 00:44:51.840
<v Speaker 1>you know, during a coaching call it's a group coaching call.

832
00:44:52.159 --> 00:44:55.880
<v Speaker 1>Don't always have time to dive into everything that everybody needs.

833
00:44:56.639 --> 00:44:58.639
<v Speaker 1>But afterward I can do a video on it, right,

834
00:44:58.679 --> 00:45:02.159
<v Speaker 1>and then everybody has it. And so I've got some

835
00:45:02.280 --> 00:45:05.039
<v Speaker 1>videos going up there, which is awesome. Probably going to

836
00:45:05.039 --> 00:45:07.119
<v Speaker 1>turn it into a course at some point. People can

837
00:45:07.199 --> 00:45:09.760
<v Speaker 1>just buy one off, right, and then if you want

838
00:45:09.840 --> 00:45:13.360
<v Speaker 1>the you know, the direct coaching teaching, you know, you

839
00:45:13.400 --> 00:45:15.679
<v Speaker 1>can go for it. But yeah, I'm really digging that.

840
00:45:15.679 --> 00:45:17.280
<v Speaker 1>If you want to apply, you can go to dev

841
00:45:17.320 --> 00:45:21.159
<v Speaker 1>influencers dot com slash apply and get that. I'm also

842
00:45:21.199 --> 00:45:24.800
<v Speaker 1>starting a podcast for dev influencers, So if you're thinking, hey,

843
00:45:24.880 --> 00:45:26.639
<v Speaker 1>I'm not sure how to grow my career from here,

844
00:45:27.119 --> 00:45:28.880
<v Speaker 1>We're going to be talking about how to grow it

845
00:45:28.920 --> 00:45:33.039
<v Speaker 1>by building an audience, making connections through something like a podcast,

846
00:45:33.159 --> 00:45:36.679
<v Speaker 1>in fact, specifically through a podcast. And I'm also going

847
00:45:36.760 --> 00:45:39.679
<v Speaker 1>to be interviewing other people who have built audiences and

848
00:45:39.760 --> 00:45:42.920
<v Speaker 1>influence in the dev space and talking to them about

849
00:45:42.920 --> 00:45:46.800
<v Speaker 1>how they did it, and yeah, just giving you ideas

850
00:45:46.800 --> 00:45:49.280
<v Speaker 1>about how that can be done, right, Because some people

851
00:45:49.280 --> 00:45:52.519
<v Speaker 1>what happens is they they kind of become senior devs.

852
00:45:52.880 --> 00:45:55.480
<v Speaker 1>They realize that, hey, the job I have now looks

853
00:45:55.480 --> 00:45:56.960
<v Speaker 1>a whole lot like the job I'm going to have

854
00:45:57.000 --> 00:45:59.800
<v Speaker 1>in a few years, not really what I want long

855
00:45:59.840 --> 00:46:02.719
<v Speaker 1>term for my career. You know, I want to keep learning,

856
00:46:02.760 --> 00:46:04.880
<v Speaker 1>I want to keep growing, you know, I want to

857
00:46:04.920 --> 00:46:07.480
<v Speaker 1>get paid more five years down the line kind of thing.

858
00:46:07.880 --> 00:46:10.159
<v Speaker 1>And so how do I do that? They don't really

859
00:46:10.159 --> 00:46:12.400
<v Speaker 1>want to go to the architecture out, they don't really

860
00:46:12.440 --> 00:46:14.480
<v Speaker 1>want to go to the management route, and so where

861
00:46:14.480 --> 00:46:17.119
<v Speaker 1>do we go? So you can go the influencer route, right,

862
00:46:17.480 --> 00:46:19.000
<v Speaker 1>And it's a lot of fun because you get to

863
00:46:19.000 --> 00:46:21.119
<v Speaker 1>meet people, you get to explore areas you don't get

864
00:46:21.159 --> 00:46:23.719
<v Speaker 1>to explore other ways, and you still get to code.

865
00:46:23.800 --> 00:46:25.880
<v Speaker 1>And so that's that's kind of what we're doing there.

866
00:46:25.920 --> 00:46:30.079
<v Speaker 1>So anyway, long pitch, but ultimately I'm doing teachable and

867
00:46:30.119 --> 00:46:32.960
<v Speaker 1>I'm really enjoying Teachable. And then for the cart to

868
00:46:33.000 --> 00:46:35.599
<v Speaker 1>sign people up. I've used all kinds of stuff, all

869
00:46:35.679 --> 00:46:38.440
<v Speaker 1>kinds of membership software. I hate them all. I hate

870
00:46:38.480 --> 00:46:40.960
<v Speaker 1>the shopping cart and Teachable by the way, it sucks.

871
00:46:41.320 --> 00:46:44.440
<v Speaker 1>But I've been using Thrive Cart for all that stuff

872
00:46:44.480 --> 00:46:47.360
<v Speaker 1>and I really like it. It is terrific. It has

873
00:46:47.360 --> 00:46:50.960
<v Speaker 1>an affiliate system that actually works, which is awesome. And

874
00:46:51.039 --> 00:46:52.880
<v Speaker 1>so if you're going to be selling stuff online, I

875
00:46:52.960 --> 00:46:56.239
<v Speaker 1>highly recommend thrive Card. So those are my picks, Valentino,

876
00:46:56.519 --> 00:46:57.199
<v Speaker 1>what are your picks?

877
00:46:57.760 --> 00:47:02.000
<v Speaker 2>Sure? The first one I definitely recommend any developer out

878
00:47:02.000 --> 00:47:05.840
<v Speaker 2>there is called get reflow. It's a tool I actually

879
00:47:05.880 --> 00:47:09.320
<v Speaker 2>build a long time ago now that helps automate your

880
00:47:09.639 --> 00:47:13.880
<v Speaker 2>get workflow, so it creates pull requests automatically for you.

881
00:47:14.199 --> 00:47:18.000
<v Speaker 2>It makes sure to close out all your branches when

882
00:47:18.000 --> 00:47:21.639
<v Speaker 2>you've merged down to your main branch. It does a

883
00:47:21.679 --> 00:47:24.199
<v Speaker 2>lot of things that just save a lot of time

884
00:47:24.320 --> 00:47:26.400
<v Speaker 2>when you do over and over again. So I highly

885
00:47:26.440 --> 00:47:30.800
<v Speaker 2>recommend check that out. Another pick I have is for

886
00:47:31.280 --> 00:47:36.519
<v Speaker 2>an app called bitbar. It's if you're using the mac os.

887
00:47:36.920 --> 00:47:41.159
<v Speaker 2>It's a nice little kind of menu bar generator, so

888
00:47:41.199 --> 00:47:45.320
<v Speaker 2>you can run scripts and show icons and various things

889
00:47:45.360 --> 00:47:48.519
<v Speaker 2>on a periodic timer, which is kind of nice. I

890
00:47:48.599 --> 00:47:52.400
<v Speaker 2>use it as an example to see how many doctor

891
00:47:52.440 --> 00:47:55.840
<v Speaker 2>containers I have up and how much CPU it's consuming,

892
00:47:56.280 --> 00:48:02.280
<v Speaker 2>because Doctor is painful at that and a let's see,

893
00:48:03.159 --> 00:48:08.280
<v Speaker 2>I had one one that just escaped me. Oh yes, Twilio.

894
00:48:09.079 --> 00:48:13.039
<v Speaker 2>I Twilio is incredible. I used it not too long

895
00:48:13.320 --> 00:48:17.920
<v Speaker 2>to and not not to shout out to Python. But

896
00:48:18.079 --> 00:48:24.679
<v Speaker 2>I used it to automatically orchestrate a AWS server for

897
00:48:24.800 --> 00:48:28.559
<v Speaker 2>my kids to play Minecraft with their neighbors. So all

898
00:48:28.559 --> 00:48:31.639
<v Speaker 2>I had to do was send a some commands to

899
00:48:32.320 --> 00:48:37.039
<v Speaker 2>a specific Twilio number and it would start firing off

900
00:48:37.079 --> 00:48:41.599
<v Speaker 2>commands on AWS, which was really cool. So that was

901
00:48:42.079 --> 00:48:46.400
<v Speaker 2>kind of impressive how seamlessly that worked. And their their

902
00:48:46.440 --> 00:48:52.199
<v Speaker 2>documentation is really well, really well worded and mapped out nice.

903
00:48:52.400 --> 00:48:55.639
<v Speaker 1>So I now I have to ask my kids love

904
00:48:55.880 --> 00:49:00.199
<v Speaker 1>playing Minecraft and they want to be able to play

905
00:49:00.239 --> 00:49:03.880
<v Speaker 1>with their cousins, but we do not let them play

906
00:49:04.159 --> 00:49:06.519
<v Speaker 1>on public servers on the internet because I do not

907
00:49:06.599 --> 00:49:09.480
<v Speaker 1>trust who's going to be on public servers on the internet.

908
00:49:09.719 --> 00:49:11.599
<v Speaker 1>So how do I set up a private server that

909
00:49:11.639 --> 00:49:14.199
<v Speaker 1>their cousins can get on or you know things like that.

910
00:49:14.559 --> 00:49:16.440
<v Speaker 4>I just put the link in the show notes that

911
00:49:16.480 --> 00:49:19.239
<v Speaker 4>we can add. Is that what you're talking about, Valencino?

912
00:49:19.559 --> 00:49:23.000
<v Speaker 2>Yep, that's the one. So awesome. Yeah, it's it was

913
00:49:23.119 --> 00:49:25.719
<v Speaker 2>a little painstaking to get set up and configured it.

914
00:49:26.119 --> 00:49:28.039
<v Speaker 2>I kind of hoped at some point to find some

915
00:49:28.159 --> 00:49:32.480
<v Speaker 2>time to automate this so other people could just spin

916
00:49:32.559 --> 00:49:36.880
<v Speaker 2>up their own AWS server that you can whitelist IP

917
00:49:37.000 --> 00:49:41.639
<v Speaker 2>addresses on the fly using Twilio app, so maybe I

918
00:49:41.719 --> 00:49:45.360
<v Speaker 2>get to it otherwise you can, you know, go through

919
00:49:46.039 --> 00:49:49.239
<v Speaker 2>the setup I went through to get it all configured

920
00:49:49.280 --> 00:49:50.679
<v Speaker 2>on your own AWS account.

921
00:49:51.079 --> 00:49:51.800
<v Speaker 1>Looks good to me.

922
00:49:52.119 --> 00:49:52.679
<v Speaker 3>It was.

923
00:49:52.800 --> 00:49:55.760
<v Speaker 2>It was really fun playing with land to server and

924
00:49:55.800 --> 00:49:59.039
<v Speaker 2>things like that to kind of just spin up you know,

925
00:49:59.119 --> 00:50:02.760
<v Speaker 2>EC two instance is on the fly, and my goal

926
00:50:02.960 --> 00:50:05.639
<v Speaker 2>was to just drive the price down as much as

927
00:50:05.679 --> 00:50:09.039
<v Speaker 2>possible per minute, which is where I got to a

928
00:50:09.079 --> 00:50:14.199
<v Speaker 2>nice comfortable spot with spot instances. So hopefully I can

929
00:50:14.239 --> 00:50:16.400
<v Speaker 2>get back to it to make it easier for other

930
00:50:16.440 --> 00:50:18.880
<v Speaker 2>people to kind of do the same thing. But right now,

931
00:50:18.920 --> 00:50:23.119
<v Speaker 2>it's just a series of Lamba scripts that just make

932
00:50:23.159 --> 00:50:24.559
<v Speaker 2>it easier to spin up stuff.

933
00:50:24.880 --> 00:50:26.760
<v Speaker 1>And how much does it cost you to actually run this?

934
00:50:27.639 --> 00:50:31.960
<v Speaker 2>My monthly bill is maybe three to five dollars a month.

935
00:50:32.679 --> 00:50:35.840
<v Speaker 2>Oh okay, I feel like, yeah, on the average it's

936
00:50:35.840 --> 00:50:42.320
<v Speaker 2>around three, so, I mean they use it regularly, so

937
00:50:42.480 --> 00:50:46.679
<v Speaker 2>it's definitely been the cheapest I've found, just not time wise.

938
00:50:48.039 --> 00:50:52.000
<v Speaker 1>No, I like it because yeah, my I mean, especially

939
00:50:52.039 --> 00:50:54.639
<v Speaker 1>with my kids, most of my brothers and sisters live

940
00:50:54.639 --> 00:50:57.400
<v Speaker 1>pretty close to here. But even then, you know, they're

941
00:50:57.400 --> 00:51:01.840
<v Speaker 1>connecting from their houses. But my my wife's family in particular,

942
00:51:02.000 --> 00:51:05.199
<v Speaker 1>she has a brother in Oklahoma, a brother in Texas,

943
00:51:05.480 --> 00:51:08.280
<v Speaker 1>a sister that lives an hour and a half away, right,

944
00:51:09.000 --> 00:51:13.159
<v Speaker 1>and so yeah, it's just it's not ideal, but yeah,

945
00:51:13.159 --> 00:51:15.360
<v Speaker 1>they'd still like to be able to connect and you know,

946
00:51:15.400 --> 00:51:18.079
<v Speaker 1>go play in the same world. So yeah, it's beretten.

947
00:51:18.119 --> 00:51:22.239
<v Speaker 2>Great. So what I what I ultimately did is made

948
00:51:22.280 --> 00:51:25.679
<v Speaker 2>a way for just some environment variables. As you know,

949
00:51:25.760 --> 00:51:30.519
<v Speaker 2>the allowed admins to white list ips, which basically just

950
00:51:30.519 --> 00:51:33.519
<v Speaker 2>become the parents right right, So then any parent that

951
00:51:33.639 --> 00:51:35.239
<v Speaker 2>wants to be able to get their kid to join

952
00:51:35.360 --> 00:51:38.239
<v Speaker 2>or you know, to stop their kid from playing or

953
00:51:38.239 --> 00:51:41.519
<v Speaker 2>anything like that, they could just text this number and say, hey,

954
00:51:41.800 --> 00:51:44.760
<v Speaker 2>like you know, remove this white list at IP for now,

955
00:51:45.880 --> 00:51:47.519
<v Speaker 2>and then it cuts them out of the server.

956
00:51:47.719 --> 00:51:50.519
<v Speaker 1>Right, No, that makes sense.

957
00:51:50.800 --> 00:51:54.360
<v Speaker 2>Yeah, so it's been really helpful, you know, just to

958
00:51:54.400 --> 00:51:56.920
<v Speaker 2>help I mean it's hard because like you said, like,

959
00:51:57.239 --> 00:51:59.880
<v Speaker 2>how do you trust any one of these services out

960
00:52:00.039 --> 00:52:03.239
<v Speaker 2>side of Minecraft's you know, realms or whatever it is.

961
00:52:04.280 --> 00:52:06.800
<v Speaker 2>And you know that that is great too, but then

962
00:52:06.960 --> 00:52:09.079
<v Speaker 2>like any of their friends have to be in the

963
00:52:09.199 --> 00:52:12.159
<v Speaker 2>realms also, and it becomes this thing of okay, well

964
00:52:12.199 --> 00:52:13.800
<v Speaker 2>who's paying for what?

965
00:52:14.199 --> 00:52:17.360
<v Speaker 1>Right? And then yeah, the other question I have then

966
00:52:17.519 --> 00:52:21.639
<v Speaker 1>is it just it keeps your EACY two stacks. So

967
00:52:21.679 --> 00:52:24.360
<v Speaker 1>you shut down the EC two instance, but it still

968
00:52:24.400 --> 00:52:28.519
<v Speaker 1>saves all the data because it keeps an I have

969
00:52:28.639 --> 00:52:29.880
<v Speaker 1>all that backed up to S three.

970
00:52:30.719 --> 00:52:31.760
<v Speaker 2>Right is how that works?

971
00:52:31.840 --> 00:52:34.199
<v Speaker 1>So then you know, so when they turn it back on,

972
00:52:34.360 --> 00:52:38.519
<v Speaker 1>all their stuff still there. Yep, okay, because yeah, they

973
00:52:38.679 --> 00:52:42.480
<v Speaker 1>like to build towers and castles and they'd be devastated

974
00:52:42.519 --> 00:52:43.400
<v Speaker 1>if it disappeared.

975
00:52:43.480 --> 00:52:46.440
<v Speaker 5>So, oh, I know this is the sound of Chuck's

976
00:52:46.440 --> 00:52:51.280
<v Speaker 5>weekend disappearing. That's right, I have I have three things

977
00:52:51.320 --> 00:52:55.639
<v Speaker 5>to do this weekend. Now I have four, but I'll

978
00:52:55.719 --> 00:52:56.199
<v Speaker 5>tell you what.

979
00:52:56.800 --> 00:52:58.760
<v Speaker 1>The three things I have to do this weekend make

980
00:52:58.880 --> 00:53:01.880
<v Speaker 1>me the hero with my wife life, which pays off, right,

981
00:53:02.400 --> 00:53:04.440
<v Speaker 1>and then the fourth one makes me to hear with

982
00:53:04.480 --> 00:53:07.719
<v Speaker 1>my kids. And if I get it done this weekend,

983
00:53:08.000 --> 00:53:12.920
<v Speaker 1>I get it done a week early for spring break. Boom.

984
00:53:13.000 --> 00:53:15.480
<v Speaker 2>Well, I'll tell you what. My Minecraft service are not

985
00:53:15.519 --> 00:53:18.679
<v Speaker 2>that hard to get configured and spin out, so at

986
00:53:18.760 --> 00:53:19.679
<v Speaker 2>least there's that for you.

987
00:53:20.400 --> 00:53:24.440
<v Speaker 1>Yeah, my kids keep asking me to add what they're

988
00:53:24.519 --> 00:53:27.519
<v Speaker 1>the extensions. I can't remember mods to the server or

989
00:53:27.559 --> 00:53:30.519
<v Speaker 1>to our set up at home right on the Xbox.

990
00:53:30.559 --> 00:53:33.360
<v Speaker 1>And so that'd be nice too to be able to

991
00:53:33.400 --> 00:53:34.840
<v Speaker 1>just Yeah.

992
00:53:34.599 --> 00:53:38.159
<v Speaker 4>It's all about reducing that management time, right, Like sure,

993
00:53:38.199 --> 00:53:40.400
<v Speaker 4>getting it set up the first time is fine. The

994
00:53:40.440 --> 00:53:43.000
<v Speaker 4>issue is like when you're going in there for the

995
00:53:43.000 --> 00:53:46.880
<v Speaker 4>twentieth time because you know Minecraft is updated and your

996
00:53:46.960 --> 00:53:50.039
<v Speaker 4>kids want this cool new mod and you're like trying

997
00:53:50.079 --> 00:53:52.880
<v Speaker 4>to decide what dependencies are going to be an issue

998
00:53:53.000 --> 00:53:56.119
<v Speaker 4>or hut, and you have to remember because the last

999
00:53:56.159 --> 00:53:59.000
<v Speaker 4>time you logged in was six months ago, and now

1000
00:53:59.039 --> 00:54:01.800
<v Speaker 4>you have to like go a million things and your

1001
00:54:01.920 --> 00:54:04.400
<v Speaker 4>entire Saturday is gone before you finally finish with the

1002
00:54:04.480 --> 00:54:04.880
<v Speaker 4>darn thing.

1003
00:54:05.960 --> 00:54:06.400
<v Speaker 1>Yeah.

1004
00:54:06.880 --> 00:54:10.280
<v Speaker 2>Yeah, Luckily I haven't hit that wall yet. My kids

1005
00:54:10.280 --> 00:54:12.519
<v Speaker 2>aren't as demanding with the mods.

1006
00:54:13.000 --> 00:54:15.559
<v Speaker 1>Well I'll tell you too though, like giving my wife

1007
00:54:16.320 --> 00:54:19.039
<v Speaker 1>you know, well, I'll just take away Minecraft and all

1008
00:54:19.079 --> 00:54:22.119
<v Speaker 1>chance to do his text a number to do it. Yeah,

1009
00:54:22.199 --> 00:54:28.840
<v Speaker 1>it's pretty huge boom.

1010
00:54:26.760 --> 00:54:29.880
<v Speaker 4>About delegating the administration of it to someone else.

1011
00:54:30.079 --> 00:54:34.639
<v Speaker 1>Yes, it's the power. Yeah, all right, good deal. Well

1012
00:54:34.840 --> 00:54:37.400
<v Speaker 1>I've asked you enough questions about that. Thanks for coming, Valentino.

1013
00:54:37.440 --> 00:54:38.079
<v Speaker 1>This was awesome.

1014
00:54:38.239 --> 00:54:40.960
<v Speaker 2>Yeah, absolutely, I've had a blast. Thanks for having me on.

1015
00:54:41.519 --> 00:54:43.360
<v Speaker 1>All right, If people want to find you online, I'm

1016
00:54:43.360 --> 00:54:45.679
<v Speaker 1>assuming you're like on Twitter and get hub and stuff.

1017
00:54:46.280 --> 00:54:50.039
<v Speaker 2>Yeah, I'm on Twitter thch code name V. The code

1018
00:54:50.079 --> 00:54:53.840
<v Speaker 2>name V. Find me on GitHub at code name V.

1019
00:54:54.800 --> 00:54:58.800
<v Speaker 2>I have a blog where I post about my experiments

1020
00:54:58.840 --> 00:55:02.000
<v Speaker 2>with embedded systems than Ruby. That's that's at least been

1021
00:55:02.000 --> 00:55:05.199
<v Speaker 2>what I've been writing about currently. And that's a blog

1022
00:55:05.239 --> 00:55:07.880
<v Speaker 2>dot cod named dot com, so that's where you can

1023
00:55:07.920 --> 00:55:08.239
<v Speaker 2>find me.

1024
00:55:08.800 --> 00:55:12.400
<v Speaker 1>Awesome, and yeah, my kids lives just got better because

1025
00:55:12.440 --> 00:55:14.840
<v Speaker 1>of Twilio powered Minecraft. There you go.

1026
00:55:15.639 --> 00:55:19.280
<v Speaker 2>You're welcome, all right. Honestly, let me know how that goes,

1027
00:55:19.280 --> 00:55:22.119
<v Speaker 2>because I've been the only one that's used it so far.

1028
00:55:23.000 --> 00:55:25.599
<v Speaker 1>We'll do. Yeah, you're gonna get you're gonna get an

1029
00:55:25.639 --> 00:55:27.760
<v Speaker 1>email and it's gonna be like this was so great.

1030
00:55:28.960 --> 00:55:32.079
<v Speaker 1>All right, Thanks again and until next time, folks, Max

1031
00:55:32.079 --> 00:55:32.280
<v Speaker 1>out
