WEBVTT

1
00:00:00.120 --> 00:00:04.320
Hey, welcome back to the Ruby
Dev Summit. Uh. We are asking

2
00:00:04.519 --> 00:00:08.759
experts in Ruby and Ruby on rails
about what the future of Ruby looks like.

3
00:00:09.640 --> 00:00:16.039
I am talking to Stephen Markheim.
Stephen is something something boss of engineering

4
00:00:16.079 --> 00:00:19.920
at test dot io, and you
know, he's been doing a lot of

5
00:00:19.920 --> 00:00:25.359
work on the sequel Light Ruby integration
and and some of that with rails as

6
00:00:25.399 --> 00:00:30.000
well. And yeah, so I
thought you might have kind of a fascinating

7
00:00:30.039 --> 00:00:34.880
take, Stephen on what the future
of Ruby is. We don't have to

8
00:00:34.920 --> 00:00:37.920
stay in the lane of sequel Light, obviously, we can talk about,

9
00:00:38.240 --> 00:00:41.439
you know, where the community is
going, where you see the technology going

10
00:00:41.479 --> 00:00:45.799
as a whole, you know,
and and then yeah, eventually we'll probably

11
00:00:45.840 --> 00:00:52.119
talk about database stuff. But yeah, what what when people talk about what

12
00:00:52.200 --> 00:00:57.119
the future of Ruby is, what
what are you thinking? Yeah? I

13
00:00:57.159 --> 00:01:03.760
think that Ruby is experiencing a bit
of a resurgence the last maybe year and

14
00:01:03.799 --> 00:01:15.319
a half, as the larger web
development community is starting to realize the value

15
00:01:15.480 --> 00:01:23.879
and the benefits of simplicity, whether
that's simplicity in the form of deployment architectures,

16
00:01:23.879 --> 00:01:30.840
monolists versus micro services, whether that
is simplicity in the form of how

17
00:01:30.920 --> 00:01:38.319
your web application is architected, do
you use all of the new React features

18
00:01:38.359 --> 00:01:42.319
and find your way into the next
JASA you can have React server components,

19
00:01:44.239 --> 00:01:51.480
or do you start to explore the
possibilities of like, okay, can hypermedia

20
00:01:51.519 --> 00:02:00.159
actually provide rich experiences? And you
know, I think for for Ruby,

21
00:02:00.239 --> 00:02:09.240
we have such a long history in
the world of web development that we've experienced

22
00:02:09.319 --> 00:02:15.759
a lot of the temptations, a
lot of the cycles of hype and technologies,

23
00:02:16.919 --> 00:02:24.159
and there's always been a strong core
of pragmatism in the Ruby community,

24
00:02:24.159 --> 00:02:32.599
which I think has helped protect us
somewhat from the hype driven volatility that I

25
00:02:32.639 --> 00:02:43.560
think is more common in the JavaScript
and front end focused portion of web development.

26
00:02:45.159 --> 00:02:49.719
But I think that as I look
into the future, like for Ruby,

27
00:02:51.159 --> 00:03:00.159
I see an opportunity for us to
become more active and engaged and connected

28
00:03:00.199 --> 00:03:08.120
with the larger web development conversations and
trends, as there is this growing sort

29
00:03:08.199 --> 00:03:17.759
of union in the natural pragmatism of
the Ruby community and the desire to find

30
00:03:19.120 --> 00:03:23.280
that one perfect best tool that seems
to be driving so much of the larger

31
00:03:23.280 --> 00:03:29.759
web development community. Right, I
kind of want to back up a little

32
00:03:29.759 --> 00:03:36.199
bit and just kind of talk about
some of these ideas here, so and

33
00:03:36.199 --> 00:03:38.479
I should have been writing them down
because there were like three of them that

34
00:03:38.599 --> 00:03:42.879
I wanted to hit. But one
of the things that you mentioned was just

35
00:03:42.960 --> 00:03:49.000
kind of the I guess some of
the simplicity and kind of the natural flow

36
00:03:49.039 --> 00:03:51.400
of the language and things like that
is something that I'm kind of pulling from

37
00:03:51.400 --> 00:04:00.439
what you're saying. And I'm curious
as to how much you see I mean,

38
00:04:00.479 --> 00:04:03.280
are we pulling people back from some
of these other communities, or are

39
00:04:03.280 --> 00:04:09.479
we attracting newer people because of the
way that Ruby works, or you know,

40
00:04:09.520 --> 00:04:12.639
because you mentioned we're kind of seeing
this resurgence, and so I'm curious

41
00:04:12.639 --> 00:04:15.240
where you're seeing it. Is it
newer people, is it experienced people,

42
00:04:15.360 --> 00:04:18.759
is it across the spectrum? Yeah, I think it's a mix. I

43
00:04:19.519 --> 00:04:25.959
had the opportunity to go to I
think four conferences last year, and is

44
00:04:26.680 --> 00:04:29.879
regularly the case, there's you know, the question at the start of the

45
00:04:29.879 --> 00:04:32.240
conference, I raise your hand.
If this is your first Ruby conference,

46
00:04:32.319 --> 00:04:34.759
raise your hand, If this is
your first tech conference, raise your hand

47
00:04:34.759 --> 00:04:42.639
if you're a new web developer.
And there were a lot more hands than

48
00:04:42.680 --> 00:04:46.839
I expected, even in some of
the smaller conferences like the percentage of you

49
00:04:46.839 --> 00:04:53.639
know, maybe some of the range
of ten to twenty percent, like new

50
00:04:54.079 --> 00:05:01.480
developers, new rubyists. So I
do think that there is still an influx

51
00:05:01.639 --> 00:05:05.800
of people that are new to development, new to web development, who are

52
00:05:05.800 --> 00:05:13.759
finding Ruby and finding it interesting and
attractive. I've also seen a lot of

53
00:05:13.959 --> 00:05:16.279
people who and again I think this
is one of the benefits of Ruby,

54
00:05:16.319 --> 00:05:20.560
like being around for thirty years,
who have worked with Ruby at some point

55
00:05:20.600 --> 00:05:26.439
in their past, and then the
course of maybe the last five to ten

56
00:05:26.519 --> 00:05:35.040
years, their jobs had them focusing
more in some aspect of working in JavaScript,

57
00:05:35.120 --> 00:05:42.480
and then in the last maybe three
years to one year have started doing

58
00:05:42.519 --> 00:05:46.319
more work in Ruby. So I
think that there are two sort of like

59
00:05:46.399 --> 00:05:54.240
mainstreams. One are these new Rubias
who are coming into the industry finding the

60
00:05:54.319 --> 00:05:58.680
language, finding the community, finding
the tools, finding the ecosystem attractive and

61
00:05:58.759 --> 00:06:04.800
interesting. And then there's also long
term web developers who might have spent the

62
00:06:04.879 --> 00:06:09.839
last decade primarily working in JavaScript but
are now finding themselves coming back to Ruby

63
00:06:10.279 --> 00:06:13.920
and right a combination of those two
things I think is bringing a lot of

64
00:06:14.519 --> 00:06:18.720
energy back into the community and into
the ecosystem. Yeah, I think there's

65
00:06:18.759 --> 00:06:24.120
a lot to that. I mean, some of it is just kind of

66
00:06:24.120 --> 00:06:27.720
the I don't even know how to
explain it, but kind of the simple

67
00:06:27.879 --> 00:06:32.160
intuitive nature of the language, and
some of that is, Yeah, a

68
00:06:32.160 --> 00:06:35.360
lot of the tools. I think
you said it was a pragmatic approach to

69
00:06:35.480 --> 00:06:40.839
things that we have in Ruby,
where yeah, a lot of these problems

70
00:06:40.839 --> 00:06:44.920
get solved, and they get solved
in an elegant way. That and it's

71
00:06:44.959 --> 00:06:49.040
not just elegance because elegance. It's
elegant because it's easy. It's you know,

72
00:06:49.120 --> 00:06:53.639
I can kind of grab it and
get my hands on it and figure

73
00:06:53.680 --> 00:06:57.279
it out and understand what's going on
there. And if I don't want to

74
00:06:57.319 --> 00:06:59.920
go too deep on it, I
can still kind of into it my way

75
00:07:00.040 --> 00:07:06.439
into using it. Yeah, I
think that's an important addition to the framing

76
00:07:06.480 --> 00:07:15.120
of Like the simplicity of Ruby is
that it's not a simplicity that puts a

77
00:07:15.160 --> 00:07:23.879
ceiling on power or flexibility. It's
a simplicity around intuition and understandability and readability

78
00:07:24.360 --> 00:07:31.879
that makes it I think really attractive
for spanning that sort of like gap from

79
00:07:32.279 --> 00:07:36.439
like having one person doing work and
then starting to bring on your second and

80
00:07:36.480 --> 00:07:44.040
third person into the team and having
to deal with the communication overhead, like

81
00:07:44.199 --> 00:07:47.000
what are we doing? How are
we trying to get this computer to do

82
00:07:47.079 --> 00:07:57.000
precisely what we want, consistently and
repeatably. And it's there where the sort

83
00:07:57.040 --> 00:08:01.959
of natural characteristics of Ruby, I
think, really and its simplicity is in

84
00:08:01.439 --> 00:08:09.319
its ability to express ideas with great
clarity that I think really makes it attractive

85
00:08:09.160 --> 00:08:15.639
even today, like twenty thirty years
later, there's still a really vibrant community

86
00:08:15.639 --> 00:08:22.720
there because when you need to do
something right, like you want to write

87
00:08:22.759 --> 00:08:28.680
code not for its mathematical purity,
but for achieving some valuable goal. I

88
00:08:28.720 --> 00:08:37.480
think that there are really very few
languages that have the same clarity of intention

89
00:08:37.080 --> 00:08:43.840
in the code itself as compared to
Ruby, and it continues to draw people

90
00:08:43.879 --> 00:08:50.519
to it all these years later.
So I want to ask kind of along

91
00:08:50.559 --> 00:08:56.000
these same lines. I'm assuming you're
using Ruby and or rails at test dot.

92
00:08:56.000 --> 00:09:03.360
Iowe, and when we got on
the call, you mentioned that,

93
00:09:03.759 --> 00:09:05.279
Hey, you know, I can
get on and I can do these summits

94
00:09:05.279 --> 00:09:11.759
and things because I have a well
functioning team that you know, everything kind

95
00:09:11.799 --> 00:09:15.879
of works smoothly. And I'm wondering, I mean, some of that's going

96
00:09:15.960 --> 00:09:18.480
to be down to you know,
management process and things like that. But

97
00:09:18.840 --> 00:09:24.440
how much do you attribute that to
the language? Yeah, well I attribute

98
00:09:24.440 --> 00:09:31.519
a lot to the language, especially
in our context where we have pushed into

99
00:09:31.759 --> 00:09:35.000
a number of new product categories in
the last four years. You know.

100
00:09:35.039 --> 00:09:39.320
So for the longest time, we
were a fairly standard SaaS startup, where

101
00:09:39.559 --> 00:09:43.320
the company's name is test Io,
the web domain is test dot io,

102
00:09:43.679 --> 00:09:48.840
the product is the test Io platform. There was a very clear one to

103
00:09:48.559 --> 00:09:58.519
one mapping. But with success and
time you naturally grow and expand, and

104
00:09:58.840 --> 00:10:05.639
especially recently, we have been expanding
into a number of different areas, and

105
00:10:05.720 --> 00:10:09.879
in each of those cases, that
has been expanding with like completely new codebase.

106
00:10:13.120 --> 00:10:18.679
So we now have a department that
is building large new features as well

107
00:10:18.679 --> 00:10:31.840
as maintaining ten revenue generating products that
are their own separate repositories. And if

108
00:10:31.879 --> 00:10:39.320
you include every single kind of developer
you know, native developers, QA developers,

109
00:10:39.759 --> 00:10:46.759
designers, what have you, we're
still under fifty people and so much

110
00:10:46.919 --> 00:10:54.799
of what is allowing us to have
that kind of breadth of responsibility while not

111
00:10:56.159 --> 00:11:03.600
like exploding the size of people and
lines of communication and that kind of managerial

112
00:11:03.639 --> 00:11:13.840
overhead is directly because Ruby and rails
as a combination really do allow small groups

113
00:11:13.879 --> 00:11:16.759
of people to do large, meaningful
amounts of work when you know how to

114
00:11:16.759 --> 00:11:24.240
wheel those rights as well. Yeah, that makes sense. I guess the

115
00:11:24.279 --> 00:11:26.440
other question that I have, and
I don't know how good a feel any

116
00:11:26.480 --> 00:11:31.080
of us really have for this,
but it seems like back in its heyday,

117
00:11:31.919 --> 00:11:37.759
ruby and rails in particular, we're
kind of the go to option for

118
00:11:37.039 --> 00:11:41.080
SaaS companies to start their products in
right, And you know, some of

119
00:11:41.120 --> 00:11:45.759
the bigger ones out there, like
Twitter, you know, started out as

120
00:11:45.799 --> 00:11:48.720
rails projects and then as they evolved, maybe they pulled in other technologies to

121
00:11:48.759 --> 00:11:52.919
do different aspects of the work that
needed to be done. And so what

122
00:11:54.000 --> 00:11:58.480
I'm wondering is do you feel like
that's part of the resurgence or renaissance And

123
00:11:58.519 --> 00:12:03.799
how many startups are you seeing that
are adopting rails as opposed to next js

124
00:12:03.960 --> 00:12:09.639
or something like that. Yeah,
I should go and find it. I

125
00:12:09.639 --> 00:12:20.840
was just reading a tweet earlier today
literally was asking people and sort of building

126
00:12:20.840 --> 00:12:26.559
a list of companies that were founded
within the last two years that are using

127
00:12:26.639 --> 00:12:37.240
rubyond rails at the the heart of
their company, and the list was large

128
00:12:37.279 --> 00:12:41.320
and was growing. I think that
there is, and I think it's related

129
00:12:41.360 --> 00:12:46.840
to this, like the trends,
the larger trends in web application development that

130
00:12:48.559 --> 00:12:52.679
you know for a long time.
My sense, mostly from the outside looking

131
00:12:52.720 --> 00:13:01.679
in, is that a meaningful portion
of like a quiet wearing the social capital

132
00:13:01.799 --> 00:13:07.159
to demonstrate like we are real and
serious company with real and serious engineering intentions

133
00:13:07.879 --> 00:13:18.960
was to show we're doing advanced cool
stuff with JavaScript, right, and now

134
00:13:18.720 --> 00:13:24.960
the trend to show that you're real
and serious as a startup is to say,

135
00:13:26.080 --> 00:13:30.399
look at how thoughtful and pragmatic we
are being and how we are deploying

136
00:13:30.399 --> 00:13:35.960
our resources and spending our money right. And in that environment, Ruby and

137
00:13:35.080 --> 00:13:46.240
Rails as a combination are seeing a
noticeable comeback. One of my personal favorite

138
00:13:46.279 --> 00:13:52.240
tools and companies Planet Scale right,
which is a newer company that has a

139
00:13:52.240 --> 00:13:58.519
lot of open brand exposure, and
you know, it's like doing the we

140
00:13:58.759 --> 00:14:09.159
are a serious startup in the developer
experienced space that's a rubyond rails back end

141
00:14:09.360 --> 00:14:20.600
that is doing very complex, important, difficult work. And I mean I

142
00:14:20.600 --> 00:14:22.720
don't recall at the top of my
head how old they are, but they're

143
00:14:22.759 --> 00:14:26.679
not. You know, one of
these twenty year old companies that well,

144
00:14:26.720 --> 00:14:28.919
of course they're using Rails, because
what else was the option twenty years ago?

145
00:14:31.120 --> 00:14:35.240
So I do think that there is
a real comeback, if we want

146
00:14:35.240 --> 00:14:39.240
to call it that, not that
it went away in like a numerical sense,

147
00:14:39.279 --> 00:14:46.120
but in a sort of larger vibe
sense. I do think that Ruby

148
00:14:46.159 --> 00:14:52.360
and Rails are seeing a resurgence.
So I guess, you know, with

149
00:14:52.399 --> 00:14:54.879
all the things that we're talking about
here, we kind of talked about where

150
00:14:54.879 --> 00:14:58.960
things are at now and some of
the momentum heading into the future, But

151
00:14:58.600 --> 00:15:05.240
where do we end up at then
with Ruby and Rails. Yeah, Well,

152
00:15:05.279 --> 00:15:13.559
I mean one of the vectors I'm
most personally interested in is continuing to

153
00:15:13.639 --> 00:15:24.320
make Rails the world's objectively best web
framework for individual developers. And I think

154
00:15:24.360 --> 00:15:31.360
that there is a real like Obviously, that has been a part of Rails

155
00:15:33.320 --> 00:15:41.600
from its beginnings, But if we're
being honest, the other definitional part of

156
00:15:41.679 --> 00:15:46.000
Rails from its foundations has been that
it is a framework extracted from real businesses.

157
00:15:46.879 --> 00:15:52.440
And now there are two decades into
its existence, the major businesses that

158
00:15:52.919 --> 00:16:00.639
employ most of the core team for
Rails are massive enterprises, and so a

159
00:16:00.679 --> 00:16:07.120
lot of what is being extracted,
naturally are features that are incredibly valuable and

160
00:16:07.200 --> 00:16:15.039
useful for massive enterprises, right,
And you're talking like base camp and Shopify

161
00:16:15.200 --> 00:16:17.799
and some of those, right and
getthub. Yeah, I think that those

162
00:16:17.840 --> 00:16:22.960
three probably employ at least eighty percent
of the Rails core team, right.

163
00:16:25.000 --> 00:16:36.000
And it is my belief that it
is the combination of these two characteristics that

164
00:16:36.039 --> 00:16:38.759
makes Rails so powerful and so special
that on the one hand, it is

165
00:16:40.279 --> 00:16:48.080
being pushed and tempting to be an
amazing web framework for companies doing the kinds

166
00:16:48.080 --> 00:16:52.240
of work at the kind of scale
as Shopify and get hub, but it

167
00:16:52.320 --> 00:17:00.159
is also trying to allow an individual
who is working a nine to five job

168
00:17:00.600 --> 00:17:06.319
and wants to try to get into
web development or wants to try to start

169
00:17:06.359 --> 00:17:14.319
their own business two actually do that
to like leverage their time in such a

170
00:17:14.319 --> 00:17:22.119
way that they can create something of
value. And I think that the future

171
00:17:22.920 --> 00:17:30.839
for that aspect of Rails and that
aspect of Ruby is particularly bright, especially

172
00:17:30.880 --> 00:17:37.000
in comparison with the rest of the
web development like landscape. It's hard for

173
00:17:37.000 --> 00:17:40.440
these things to be objective, but
I feel like, you know, if

174
00:17:40.480 --> 00:17:52.839
you just add an individual like mid
career developer sit down with next JS and

175
00:17:52.880 --> 00:17:59.000
with Rails and said, you know, you have twelve hours. We would

176
00:17:59.000 --> 00:18:04.440
see pretty quickly which of those was
a more productive technology stack. Yeah,

177
00:18:04.480 --> 00:18:11.720
that makes sense, and just speaking
to that kind of single developer. I

178
00:18:11.720 --> 00:18:15.440
don't know if you were at Rails
World, but David talked a bit about

179
00:18:15.440 --> 00:18:21.720
that. Oh, we should have
met up anyway, but David talked a

180
00:18:21.720 --> 00:18:23.519
bit about that right where it was
he kind of had that vision as a

181
00:18:23.680 --> 00:18:30.839
being the framework that one person could
reasonably build a product in without you know,

182
00:18:30.920 --> 00:18:37.160
obscene amounts of effort and have something
that that functions well. And then

183
00:18:37.279 --> 00:18:41.480
he also tweeted recently and I don't
have the tweet right in front of me,

184
00:18:41.519 --> 00:18:45.079
but he was talking about Rails eight
and how Rails eight's going to start

185
00:18:45.079 --> 00:18:48.480
incorporating some of these features from the
web, and so I'm assuming there's going

186
00:18:48.519 --> 00:18:53.599
to be some aspect of JavaScript browser
programming that's going to have to happen for

187
00:18:53.640 --> 00:18:57.839
some of that, but just looking
at all of those options and going all

188
00:18:57.920 --> 00:19:00.599
right, we're going to add all
these things in so that you can build

189
00:19:00.680 --> 00:19:07.839
a fully functional application in Rails that
has all of those features. And that

190
00:19:07.880 --> 00:19:11.599
gets me excited. But then,
you know, coming back to some of

191
00:19:11.599 --> 00:19:15.799
the other things that you're talking about
with just having one person be able to

192
00:19:15.839 --> 00:19:19.880
do things and do them well,
you know, Ruby continues to expand,

193
00:19:21.000 --> 00:19:22.880
and you know, the number of
gems that we have and things like that,

194
00:19:23.680 --> 00:19:27.559
as well as the performance characteristics of
Ruby continue to get better. And

195
00:19:27.640 --> 00:19:32.960
so yeah, I just I see
a really really bright future for both.

196
00:19:33.720 --> 00:19:37.759
And I've also seen that a lot
of people tend to come in for the

197
00:19:37.799 --> 00:19:42.960
benefits they get from Rails and then
continue on into benefits in Ruby. Right,

198
00:19:44.039 --> 00:19:45.839
so it's like, oh, well, I'm writing all of this Rails

199
00:19:45.880 --> 00:19:49.319
code, and now I just need
something quick and dirty or quick and not

200
00:19:49.400 --> 00:19:53.319
dirty. I guess that'll do a
job. And so they just write a

201
00:19:53.319 --> 00:19:57.759
little Ruby script that does the thing
and realize how simple it is there too,

202
00:19:57.799 --> 00:20:03.480
And so anyway, it's really interesting
to see how the ecosystem continues to

203
00:20:03.519 --> 00:20:07.720
grow. I kind of want to
transition a little bit into your work with

204
00:20:07.759 --> 00:20:14.920
seql light. So I think for
a long time most people have been pretty

205
00:20:14.920 --> 00:20:18.400
bullish on postg resql. Right.
Occasionally you'll hear people say, oh,

206
00:20:18.400 --> 00:20:23.799
we're using my SQL or Maria dB. But yeah, lately I think I

207
00:20:23.839 --> 00:20:29.640
heard an interview from somebody from Planet
Scale talking about the power that they have

208
00:20:30.680 --> 00:20:34.920
in a sequel light setup, and
so I'm just curious, Yeah, what's

209
00:20:34.920 --> 00:20:40.839
your work there look like and where
do you see that going? Yeah,

210
00:20:40.880 --> 00:20:48.200
well, maybe it makes sense to
start with how I found myself even experimenting

211
00:20:48.720 --> 00:20:56.519
using sequal light, because indeed it
wasn't a again, a theoretically driven thing,

212
00:20:56.559 --> 00:21:06.799
it was a very pragmatic driven decision
where one of my roles in the

213
00:21:06.839 --> 00:21:18.039
company is to be effectively half of
the research and development department, and that

214
00:21:18.759 --> 00:21:26.799
requires me to make sure that I
am building applications that are on the one

215
00:21:26.839 --> 00:21:33.839
hand, incredibly simple and quick for
me to create, and also on the

216
00:21:33.880 --> 00:21:40.720
other hand, very straightforward for me
to debut, because I'll a bug report

217
00:21:40.720 --> 00:21:45.319
will come in, I'll have thirty
minutes between calls, and what I need

218
00:21:45.359 --> 00:21:48.319
to be the case is that I
can read the report, figure out what's

219
00:21:48.359 --> 00:21:52.720
going on, fix it, deploy
it inside of that thirty minute window between

220
00:21:52.720 --> 00:22:02.200
calls. And I had built a
couple of applications with postgress, deployed them

221
00:22:02.240 --> 00:22:11.640
to Haroku and things that way.
I just had experiences where but report comes

222
00:22:11.680 --> 00:22:19.519
in and I am trying to debug
it, and the amount of indirection and

223
00:22:21.759 --> 00:22:26.240
lack of control that I had made
it difficult for me to do that quickly.

224
00:22:26.880 --> 00:22:29.440
Like I mean again, really quickly. Right, I have these thirty

225
00:22:29.480 --> 00:22:36.880
minute windows, and I had a
project come up, like, hey,

226
00:22:36.880 --> 00:22:38.000
we need to spend this up really
quickly. We don't have a lot of

227
00:22:38.000 --> 00:22:41.880
time. We want to see if
there's an opportunity here in the market.

228
00:22:44.039 --> 00:22:51.319
And I had been researching and playing
around with hatchbox. It's like, okay,

229
00:22:51.359 --> 00:22:52.799
I'm just going to use hatchbox,
and I want to I want to

230
00:22:52.799 --> 00:23:00.720
make this the absolute simplest quote unquote
stupidest possible way I can. So I

231
00:23:00.839 --> 00:23:04.920
left all of the defaults and squelight
was the default database when you run reils

232
00:23:04.960 --> 00:23:11.319
new and I just put it up
on the server and the first I don't

233
00:23:11.319 --> 00:23:18.960
know, half a dozen bug reports
that I got the experience of whether it

234
00:23:19.160 --> 00:23:32.359
was being able to really quickly like
check this date of the database and like,

235
00:23:32.400 --> 00:23:36.319
okay, you know, this feels
very natural and very similar to postgress,

236
00:23:36.839 --> 00:23:41.279
but then like I'm not quite sure, like what is happening here,

237
00:23:41.880 --> 00:23:48.039
and just like literally scping the file
down to my laptop and then running my

238
00:23:48.759 --> 00:23:52.720
local instance of the application, but
with the production database and being able to

239
00:23:52.759 --> 00:23:57.839
step through the states and find oh, okay, here's the weird thing.

240
00:23:59.119 --> 00:24:03.920
It just was a really experience.
So the next project came in, I

241
00:24:03.960 --> 00:24:08.519
built on top of seaqlide, and
within a few months I had two or

242
00:24:08.519 --> 00:24:14.880
three of these small research and development
applications that were running right life, and

243
00:24:15.000 --> 00:24:23.559
I just naturally started to bump into
some rough edges and there were enough positives

244
00:24:23.599 --> 00:24:30.039
in the developer experience that I wanted
to sand down those rough edges instead of

245
00:24:30.200 --> 00:24:36.880
just switch over to postcriss. And
that led me to just digging in to

246
00:24:36.920 --> 00:24:40.039
figure out, like, what are
these problems, why are they happening?

247
00:24:40.559 --> 00:24:47.160
How can I make them go away? And as I was beginning that work,

248
00:24:47.240 --> 00:24:53.680
I came across the light stack project
by Mohammed a Ali Oldmo on Twitter

249
00:24:53.680 --> 00:25:03.680
at GitHub, and it was like
an actual light bulb, lightning flash moment

250
00:25:03.720 --> 00:25:07.279
for me. Where I had been
working with sequlite and working with sqlight on

251
00:25:07.359 --> 00:25:17.559
rails, but I had just simply
never considered the possibility that you know,

252
00:25:18.359 --> 00:25:25.480
it could back all of the io
components of rails. And as soon as

253
00:25:25.519 --> 00:25:29.880
I saw that project and I saw
the vision, it like just immediately snapped

254
00:25:30.160 --> 00:25:33.680
into place in my mind. It's
like, right, like that is that

255
00:25:33.839 --> 00:25:41.680
is the ultimate high leverage single developer
stack, right like right, it's all

256
00:25:41.759 --> 00:25:45.400
on one machine. You completely can
understand what's happening. You have. If

257
00:25:45.440 --> 00:25:52.160
you can master rails and you can
master Sequelite, then you can leverage those

258
00:25:52.200 --> 00:25:59.519
tools. You can leverage your mastery, you can keep the amount of information

259
00:25:59.559 --> 00:26:03.319
and moving hearts that you need to
have in your head to jump into a

260
00:26:03.359 --> 00:26:07.799
debugging session and figure out what was
going on, all like incredibly low and

261
00:26:07.839 --> 00:26:14.599
it just yeah, it inspired me, and so that pushed me deeper into

262
00:26:14.599 --> 00:26:23.119
the rabbit hole. And now I
guess six months later, there is a

263
00:26:23.119 --> 00:26:27.319
lot of improvements that haven't made,
a lot of improvements that are being made,

264
00:26:29.279 --> 00:26:36.000
and there is I think a growing
an emerging group of solo developers who

265
00:26:36.119 --> 00:26:42.519
are seeing that similar vision of wanting
to have a small number of quote unquote

266
00:26:42.519 --> 00:26:52.920
boring technologies that they can leverage to
get really outsized returns on their time and

267
00:26:52.960 --> 00:27:02.240
their effort, and recognizing that Sequelight
offers a relative the unique kind of leverage

268
00:27:02.319 --> 00:27:11.519
for web development, and when tuned
well and used well, many of the

269
00:27:11.599 --> 00:27:18.079
like standard somewhat myths that are stated
as like, well, you can't obviously

270
00:27:18.160 --> 00:27:25.359
run sqlight of production because you know
the handful of things that are regularly said

271
00:27:25.559 --> 00:27:30.200
like actually you can work around and
resolve or actually just like make disappear.

272
00:27:32.160 --> 00:27:36.599
Right, So that has been the
journey. Very cool. So so where

273
00:27:36.640 --> 00:27:40.839
does that go from here? Right? It sounds like for the most part,

274
00:27:41.240 --> 00:27:45.759
yeah, you can run sql light
in production now, so where where

275
00:27:45.759 --> 00:27:48.759
where? Yeah? Where do we
go in the future on this? Yeah,

276
00:27:48.799 --> 00:27:57.559
Well, there are a few strands
that are still open right now,

277
00:27:57.759 --> 00:28:04.720
like literally open pull requests. One
of the major ones is improving concurrency support.

278
00:28:06.000 --> 00:28:14.240
So one of the biggest differences between
sequal light and client server database engines

279
00:28:14.279 --> 00:28:21.599
like postcress or my sequel is that
you have a single database level right block,

280
00:28:22.279 --> 00:28:26.400
so only one connection is only ever
going to be writingtabase at a time.

281
00:28:26.240 --> 00:28:30.880
And this is a common one of
the common statements like you can't obviously

282
00:28:30.920 --> 00:28:34.000
run sequlite and production because you can
only do one right at the time.

283
00:28:34.039 --> 00:28:37.960
You have linear rights that can never
scale. This makes no sense, you

284
00:28:37.960 --> 00:28:47.680
should never even start now. That
statement fails to account for a number of

285
00:28:47.720 --> 00:28:49.240
pieces of nuance. One of the
most important ones is that like when you

286
00:28:49.680 --> 00:28:56.079
completely remove any form of network latency
right and you're able to bring queries down

287
00:28:56.119 --> 00:29:00.799
from milliseconds to microseconds, you know
you can linear They stack hundreds of right

288
00:29:00.880 --> 00:29:03.359
queries in the same amount of time
it took you to do one right query.

289
00:29:03.559 --> 00:29:15.160
It changes the math there, but
there is still pain when it comes

290
00:29:15.160 --> 00:29:22.200
to like rails is default connection pool, having multiple connections to the database and

291
00:29:22.400 --> 00:29:32.839
dealing with getting all of your different
rights to autonomously line up right and not

292
00:29:33.079 --> 00:29:41.200
hit deadlocks or busy errors. So
there are a couple of pool requests open

293
00:29:41.240 --> 00:29:45.200
on rails. There's one pull request
open on the c pl I three Ruby

294
00:29:45.279 --> 00:29:48.559
gem. Two. Actually, the
one on the CQL I three Ruby gem

295
00:29:48.680 --> 00:29:52.079
just got merged, but the gem
hasn't been a new version of the gem

296
00:29:52.079 --> 00:29:56.559
has been released right to address this
problem, like to just get the pieces

297
00:29:56.559 --> 00:30:06.000
in place where the systems will naturally
line up queue up your rights. And

298
00:30:06.039 --> 00:30:15.279
then the other main direction is just
continuing to build out and grow the ecosystem

299
00:30:15.319 --> 00:30:23.799
of tools, the information, the
guides to make it clear like, Okay,

300
00:30:23.839 --> 00:30:26.920
you have this kind of problem.
There's you know, at this point

301
00:30:27.000 --> 00:30:30.960
a decade plus of content around here's
how you do this kind of thing with

302
00:30:32.039 --> 00:30:34.440
post crist This is how you do
this kind of thing with my sequel as

303
00:30:34.480 --> 00:30:41.000
you start to get into more advanced
use cases and there's not as much of

304
00:30:41.039 --> 00:30:45.920
that, especially for web developers,
for web applications when it comes to squel.

305
00:30:48.319 --> 00:30:55.079
So just trying to explore some of
these more advanced use cases and write

306
00:30:55.079 --> 00:31:00.920
down you know how to how to
leverage the unique benefits and also limitations of

307
00:31:00.920 --> 00:31:07.359
sqlight to accomplish more complicated needs.
So at the end of the day,

308
00:31:07.400 --> 00:31:14.079
then is this becomes more you know, I guess where more of these issues

309
00:31:14.880 --> 00:31:21.319
are solved. Do you see an
uptick in sql light usage with Ruby and

310
00:31:21.799 --> 00:31:26.680
what does that mean for the community
and the technology at large? Yeah,

311
00:31:27.240 --> 00:31:34.559
well, I mean I'm I'm already
seeing an uptick, and it's it's cool

312
00:31:34.559 --> 00:31:41.559
to see more and more people having
a similar thought process as I did.

313
00:31:41.599 --> 00:31:45.519
Right, Like, I really want
to max my leverage on my time and

314
00:31:45.519 --> 00:31:52.599
on my effort. But as for
what this might mean for the future,

315
00:31:56.799 --> 00:32:04.359
one of my hopes and beliefs is
that this can help meaningfully lower the barrier

316
00:32:04.400 --> 00:32:14.240
to entry for new developers. I
think that one of the the areas where

317
00:32:15.079 --> 00:32:21.599
the JavaScript world had The advantage for
a long time was how easy they at

318
00:32:21.720 --> 00:32:24.920
least made it seem to get started
to go from I have an idea and

319
00:32:24.960 --> 00:32:28.880
I don't know, I don't feel
like I'm a web developer. I don't

320
00:32:28.920 --> 00:32:32.480
feel like I'm a developer, but
I want to create something. And there

321
00:32:32.640 --> 00:32:37.559
was a lot of content and a
lot of you know, like this push

322
00:32:37.640 --> 00:32:42.119
for sassifying everything, making everything a
service, everything an API. Right,

323
00:32:42.720 --> 00:32:46.759
so it's just you just write these
thirty lines of JavaScript and you just you

324
00:32:46.759 --> 00:32:51.200
know, pay for these fifteen different
SaaS services, and now you've got a

325
00:32:51.200 --> 00:32:59.960
web application. I think it really
helped drive the massive amount of new develop

326
00:33:00.000 --> 00:33:05.200
helpers who were starting with offic scripts
in their first language. But in the

327
00:33:05.240 --> 00:33:08.960
last couple of years, as React
has got more and more complicated, bigger

328
00:33:08.960 --> 00:33:15.480
and bigger, more of a framework
and less of a library, there's an

329
00:33:15.519 --> 00:33:22.720
opportunity I think for Ruby to take
that advantage back. And one of the

330
00:33:22.759 --> 00:33:29.839
worries I have is that we might
miss that opportunity because so many of the

331
00:33:30.279 --> 00:33:38.599
really experienced developers in Ruby are very
comfortable with larger, more quote unquote enterprise

332
00:33:38.640 --> 00:33:42.880
grade deployment architectures. Right. It's
like, well, if I'm going to

333
00:33:42.920 --> 00:33:45.480
do a web application, I'm going
to do it well. Obviously, I

334
00:33:45.559 --> 00:33:52.960
need to make sure I have a
multi region, high availability postcress cluster that

335
00:33:53.240 --> 00:34:00.119
is sharded and using replicas correctly.
And I want to have my REDA servers,

336
00:34:00.680 --> 00:34:06.039
but I need to make sure I
have different REDA servers with different configurations

337
00:34:06.039 --> 00:34:12.000
for the different expiration policies. So
I'll have my cluster of three REDA servers,

338
00:34:12.000 --> 00:34:14.719
and then I'm going to make sure
I put a load balancer in front.

339
00:34:14.800 --> 00:34:20.239
And like all of a sudden,
you have a network topology that has

340
00:34:20.280 --> 00:34:25.920
like eight machines. And it's not
to say that that's like wrong or bad,

341
00:34:27.400 --> 00:34:31.159
but it is complicated, right,
And if the first time you're trying

342
00:34:31.199 --> 00:34:35.920
to get an application, a web
application onto the Internet, you have to

343
00:34:36.440 --> 00:34:42.280
understand what a load balancer is,
how to wire it up and connect it,

344
00:34:42.320 --> 00:34:45.360
and how to run three different instances
of a rails application, and how

345
00:34:46.119 --> 00:34:53.519
just it cascades the complexity and so
really driving for a future and where it

346
00:34:53.639 --> 00:35:00.079
is possible to build a rails application
and get it onto the internet, like

347
00:35:00.159 --> 00:35:07.960
make it real where you don't need
the funds that are required to get the

348
00:35:07.000 --> 00:35:13.480
fifteen SaaS services in the JavaScript world, and you don't need the you know,

349
00:35:13.760 --> 00:35:20.079
minor graduate degree in network topologies to
follow the all of the guides for

350
00:35:21.360 --> 00:35:28.079
Rails. But you can get a
four dollars a month Hetzner server and you

351
00:35:28.119 --> 00:35:32.000
can take your repository and effectively like
FTP it up to that server and get

352
00:35:32.000 --> 00:35:37.679
it running right, Like that's actually
possible at that level of simplicity, I

353
00:35:37.719 --> 00:35:46.239
think offers Ruby and offers Rails the
opportunity to start winning back some of the

354
00:35:46.280 --> 00:35:59.559
new developer pipeline React sort of makes
their way into their their second decade and

355
00:35:59.559 --> 00:36:07.920
they're more enterprising stage of their life
cycle. So that's that's one of my

356
00:36:08.000 --> 00:36:14.800
major sort of goals here is to
really aggressively push that barrier to entry for

357
00:36:14.880 --> 00:36:17.599
like what it takes to get an
application off of your laptop and onto the

358
00:36:17.639 --> 00:36:25.639
internet, right to make it really
attractive for people to get that first big

359
00:36:25.679 --> 00:36:29.719
win, because I think that that's
like, that's where you are hooked,

360
00:36:30.199 --> 00:36:32.159
you know, when it's like,
look, mom, go to this URL.

361
00:36:34.239 --> 00:36:38.920
You can see the thing I created. Like that is magical. And

362
00:36:38.960 --> 00:36:45.800
if we can make that as quick, straightforward, clear understandable as possible,

363
00:36:45.440 --> 00:36:52.480
I think people will naturally make their
way into the Ruby and rails communities as

364
00:36:52.480 --> 00:37:00.519
they're starting their careers. Yep,
makes sense. Is there anything else it

365
00:37:00.559 --> 00:37:05.440
is coming in the future Ruby that
you want to point out that you're excited

366
00:37:05.440 --> 00:37:13.119
about. Well, one thing that
has come and is continuing to evolve that

367
00:37:13.360 --> 00:37:21.119
that I am really excited about is
the new prism parser and ecosystem of tools

368
00:37:21.159 --> 00:37:24.639
that are coming around that. Yeah. We're talking to Kevin Newton in a

369
00:37:24.719 --> 00:37:30.840
few weeks, so yeah, awesome. I think that's that's he's doing really

370
00:37:31.079 --> 00:37:37.599
valuable and amazing work for the future
of Ruby. Like when I think about

371
00:37:37.920 --> 00:37:44.360
some of the things, like some
of the more advanced uses of Ruby that

372
00:37:45.400 --> 00:37:52.440
just they just feel amazing to do, Like metaprogramming is one of them.

373
00:37:52.480 --> 00:37:55.880
Right, It's an incredibly sharp knife, but like when you wield it correctly,

374
00:37:57.039 --> 00:38:00.079
it's like it's very very hard to
replicate the power that is available to

375
00:38:00.119 --> 00:38:07.679
you. Yeah, but there's always
been that sort of ceiling because there was

376
00:38:08.239 --> 00:38:14.480
this natural barrier to the amount of
introspection that Ruby had about itself, the

377
00:38:14.519 --> 00:38:22.159
amount of information that you could do. And I remember distinctly, however many

378
00:38:22.239 --> 00:38:27.000
years ago, this was five,
six years ago, maybe more. But

379
00:38:27.440 --> 00:38:32.800
there was this moment where code mods
in the JavaScript community were really sexy and

380
00:38:32.840 --> 00:38:39.320
people were talking a lot about them. And I'm here working in this repository

381
00:38:39.320 --> 00:38:45.599
that has rebocomp and it's great and
it's useful. Like the difference between being

382
00:38:45.679 --> 00:38:50.199
able to take in an AST,
transform it, and output a new version

383
00:38:50.199 --> 00:38:55.280
of that AST versus what is effectively
a bunch of regular expressions is the difference

384
00:38:55.320 --> 00:39:00.840
between night and day. I mean, it's a massive difference. And I

385
00:39:00.840 --> 00:39:07.800
think that as we continue to standardize
the parts of Ruby, as we as

386
00:39:07.840 --> 00:39:13.960
we build out the ecosystem of tools
to take advantage of having that level of

387
00:39:14.840 --> 00:39:20.519
introspection into the language and into the
code that is written in that language,

388
00:39:20.760 --> 00:39:24.800
we are going to open up like
completely new vistas of possibilities with what we

389
00:39:24.840 --> 00:39:32.559
can do with Ruby. And I
honestly can only barely begin to imagine all

390
00:39:32.599 --> 00:39:38.000
of the possibilities. But I think
that there's going to be some really innovative

391
00:39:38.039 --> 00:39:42.719
and exciting stuff that comes out in
the next few years now that this foundation

392
00:39:42.840 --> 00:39:46.360
has been laid, So that really
excites me. It's very amorphous, because

393
00:39:46.559 --> 00:39:52.519
I'm not even sure I have enough
of an imagination to see all of the

394
00:39:52.559 --> 00:39:58.079
possibilities, but I am really confident
that we're going to see really really powerful,

395
00:39:58.159 --> 00:40:02.239
cool things come out of that project. So that's that's one that I'm

396
00:40:02.280 --> 00:40:09.320
particularly inspired and excited by. Very
cool. Yeah, I'm I'm excited for

397
00:40:09.400 --> 00:40:13.400
it too. I'm looking forward to
getting into it with Kevin and just seeing

398
00:40:13.400 --> 00:40:20.480
what is coming along there. I
guess the last question is if people want

399
00:40:20.519 --> 00:40:22.400
to connect with you, you know, they have more questions about sequel Light

400
00:40:22.519 --> 00:40:27.920
or anything. You know, what
are the best places to connect? Yeah,

401
00:40:27.960 --> 00:40:31.719
so best place to connect is on
Twitter. I am at practled mind.

402
00:40:34.239 --> 00:40:38.880
I if you want more sort of
guides and longer ride ups on like

403
00:40:38.960 --> 00:40:45.960
how to solve specific problems or get
specific features out of sequel Light in a

404
00:40:46.039 --> 00:40:52.239
Rails application or in the Ruby ecosystem, I write on fractedmind, dot get

405
00:40:52.320 --> 00:41:04.480
Hubbo, and I really am very
genuinely interested in helping as many people find

406
00:41:05.719 --> 00:41:12.480
valuable, pragmatic, useful use cases
for SQL in their applications. So really

407
00:41:12.519 --> 00:41:15.360
genuinely like reach out on Twitter.
I've had a lot of people reach out

408
00:41:15.400 --> 00:41:22.559
and we've been able to build interesting
features to do interesting things or just help

409
00:41:22.599 --> 00:41:27.199
them get over that one hump to
get to the next stage and what they're

410
00:41:27.199 --> 00:41:32.159
trying to do, and I'm always
down to help out, so feel free

411
00:41:32.280 --> 00:41:40.679
to DM me or just tweet at
me, and I look forward to chatting

412
00:41:40.719 --> 00:41:45.880
with anyone and everyone. All right, sounds good, We'll go ahead and

413
00:41:45.920 --> 00:41:50.800
wrap up. Thanks for coming and
jumping on and until next time, folks,

414
00:41:50.840 --> 00:41:51.320
max out.

