Hey, welcome back to the Ruby Dev Summit. Uh. We are asking
experts in Ruby and Ruby on rails about what the future of Ruby looks like.
I am talking to Stephen Markheim. Stephen is something something boss of engineering
at test dot io, and you know, he's been doing a lot of
work on the sequel Light Ruby integration and and some of that with rails as
well. And yeah, so I thought you might have kind of a fascinating
take, Stephen on what the future of Ruby is. We don't have to
stay in the lane of sequel Light, obviously, we can talk about,
you know, where the community is going, where you see the technology going
as a whole, you know, and and then yeah, eventually we'll probably
talk about database stuff. But yeah, what what when people talk about what
the future of Ruby is, what what are you thinking? Yeah? I
think that Ruby is experiencing a bit of a resurgence the last maybe year and
a half, as the larger web development community is starting to realize the value
and the benefits of simplicity, whether that's simplicity in the form of deployment architectures,
monolists versus micro services, whether that is simplicity in the form of how
your web application is architected, do you use all of the new React features
and find your way into the next JASA you can have React server components,
or do you start to explore the possibilities of like, okay, can hypermedia
actually provide rich experiences? And you know, I think for for Ruby,
we have such a long history in the world of web development that we've experienced
a lot of the temptations, a lot of the cycles of hype and technologies,
and there's always been a strong core of pragmatism in the Ruby community,
which I think has helped protect us somewhat from the hype driven volatility that I
think is more common in the JavaScript and front end focused portion of web development.
But I think that as I look into the future, like for Ruby,
I see an opportunity for us to become more active and engaged and connected
with the larger web development conversations and trends, as there is this growing sort
of union in the natural pragmatism of the Ruby community and the desire to find
that one perfect best tool that seems to be driving so much of the larger
web development community. Right, I kind of want to back up a little
bit and just kind of talk about some of these ideas here, so and
I should have been writing them down because there were like three of them that
I wanted to hit. But one of the things that you mentioned was just
kind of the I guess some of the simplicity and kind of the natural flow
of the language and things like that is something that I'm kind of pulling from
what you're saying. And I'm curious as to how much you see I mean,
are we pulling people back from some of these other communities, or are
we attracting newer people because of the way that Ruby works, or you know,
because you mentioned we're kind of seeing this resurgence, and so I'm curious
where you're seeing it. Is it newer people, is it experienced people,
is it across the spectrum? Yeah, I think it's a mix. I
had the opportunity to go to I think four conferences last year, and is
regularly the case, there's you know, the question at the start of the
conference, I raise your hand. If this is your first Ruby conference,
raise your hand, If this is your first tech conference, raise your hand
if you're a new web developer. And there were a lot more hands than
I expected, even in some of the smaller conferences like the percentage of you
know, maybe some of the range of ten to twenty percent, like new
developers, new rubyists. So I do think that there is still an influx
of people that are new to development, new to web development, who are
finding Ruby and finding it interesting and attractive. I've also seen a lot of
people who and again I think this is one of the benefits of Ruby,
like being around for thirty years, who have worked with Ruby at some point
in their past, and then the course of maybe the last five to ten
years, their jobs had them focusing more in some aspect of working in JavaScript,
and then in the last maybe three years to one year have started doing
more work in Ruby. So I think that there are two sort of like
mainstreams. One are these new Rubias who are coming into the industry finding the
language, finding the community, finding the tools, finding the ecosystem attractive and
interesting. And then there's also long term web developers who might have spent the
last decade primarily working in JavaScript but are now finding themselves coming back to Ruby
and right a combination of those two things I think is bringing a lot of
energy back into the community and into the ecosystem. Yeah, I think there's
a lot to that. I mean, some of it is just kind of
the I don't even know how to explain it, but kind of the simple
intuitive nature of the language, and some of that is, Yeah, a
lot of the tools. I think you said it was a pragmatic approach to
things that we have in Ruby, where yeah, a lot of these problems
get solved, and they get solved in an elegant way. That and it's
not just elegance because elegance. It's elegant because it's easy. It's you know,
I can kind of grab it and get my hands on it and figure
it out and understand what's going on there. And if I don't want to
go too deep on it, I can still kind of into it my way
into using it. Yeah, I think that's an important addition to the framing
of Like the simplicity of Ruby is that it's not a simplicity that puts a
ceiling on power or flexibility. It's a simplicity around intuition and understandability and readability
that makes it I think really attractive for spanning that sort of like gap from
like having one person doing work and then starting to bring on your second and
third person into the team and having to deal with the communication overhead, like
what are we doing? How are we trying to get this computer to do
precisely what we want, consistently and repeatably. And it's there where the sort
of natural characteristics of Ruby, I think, really and its simplicity is in
its ability to express ideas with great clarity that I think really makes it attractive
even today, like twenty thirty years later, there's still a really vibrant community
there because when you need to do something right, like you want to write
code not for its mathematical purity, but for achieving some valuable goal. I
think that there are really very few languages that have the same clarity of intention
in the code itself as compared to Ruby, and it continues to draw people
to it all these years later. So I want to ask kind of along
these same lines. I'm assuming you're using Ruby and or rails at test dot.
Iowe, and when we got on the call, you mentioned that,
Hey, you know, I can get on and I can do these summits
and things because I have a well functioning team that you know, everything kind
of works smoothly. And I'm wondering, I mean, some of that's going
to be down to you know, management process and things like that. But
how much do you attribute that to the language? Yeah, well I attribute
a lot to the language, especially in our context where we have pushed into
a number of new product categories in the last four years. You know.
So for the longest time, we were a fairly standard SaaS startup, where
the company's name is test Io, the web domain is test dot io,
the product is the test Io platform. There was a very clear one to
one mapping. But with success and time you naturally grow and expand, and
especially recently, we have been expanding into a number of different areas, and
in each of those cases, that has been expanding with like completely new codebase.
So we now have a department that is building large new features as well
as maintaining ten revenue generating products that are their own separate repositories. And if
you include every single kind of developer you know, native developers, QA developers,
designers, what have you, we're still under fifty people and so much
of what is allowing us to have that kind of breadth of responsibility while not
like exploding the size of people and lines of communication and that kind of managerial
overhead is directly because Ruby and rails as a combination really do allow small groups
of people to do large, meaningful amounts of work when you know how to
wheel those rights as well. Yeah, that makes sense. I guess the
other question that I have, and I don't know how good a feel any
of us really have for this, but it seems like back in its heyday,
ruby and rails in particular, we're kind of the go to option for
SaaS companies to start their products in right, And you know, some of
the bigger ones out there, like Twitter, you know, started out as
rails projects and then as they evolved, maybe they pulled in other technologies to
do different aspects of the work that needed to be done. And so what
I'm wondering is do you feel like that's part of the resurgence or renaissance And
how many startups are you seeing that are adopting rails as opposed to next js
or something like that. Yeah, I should go and find it. I
was just reading a tweet earlier today literally was asking people and sort of building
a list of companies that were founded within the last two years that are using
rubyond rails at the the heart of their company, and the list was large
and was growing. I think that there is, and I think it's related
to this, like the trends, the larger trends in web application development that
you know for a long time. My sense, mostly from the outside looking
in, is that a meaningful portion of like a quiet wearing the social capital
to demonstrate like we are real and serious company with real and serious engineering intentions
was to show we're doing advanced cool stuff with JavaScript, right, and now
the trend to show that you're real and serious as a startup is to say,
look at how thoughtful and pragmatic we are being and how we are deploying
our resources and spending our money right. And in that environment, Ruby and
Rails as a combination are seeing a noticeable comeback. One of my personal favorite
tools and companies Planet Scale right, which is a newer company that has a
lot of open brand exposure, and you know, it's like doing the we
are a serious startup in the developer experienced space that's a rubyond rails back end
that is doing very complex, important, difficult work. And I mean I
don't recall at the top of my head how old they are, but they're
not. You know, one of these twenty year old companies that well,
of course they're using Rails, because what else was the option twenty years ago?
So I do think that there is a real comeback, if we want
to call it that, not that it went away in like a numerical sense,
but in a sort of larger vibe sense. I do think that Ruby
and Rails are seeing a resurgence. So I guess, you know, with
all the things that we're talking about here, we kind of talked about where
things are at now and some of the momentum heading into the future, But
where do we end up at then with Ruby and Rails. Yeah, Well,
I mean one of the vectors I'm most personally interested in is continuing to
make Rails the world's objectively best web framework for individual developers. And I think
that there is a real like Obviously, that has been a part of Rails
from its beginnings, But if we're being honest, the other definitional part of
Rails from its foundations has been that it is a framework extracted from real businesses.
And now there are two decades into its existence, the major businesses that
employ most of the core team for Rails are massive enterprises, and so a
lot of what is being extracted, naturally are features that are incredibly valuable and
useful for massive enterprises, right, And you're talking like base camp and Shopify
and some of those, right and getthub. Yeah, I think that those
three probably employ at least eighty percent of the Rails core team, right.
And it is my belief that it is the combination of these two characteristics that
makes Rails so powerful and so special that on the one hand, it is
being pushed and tempting to be an amazing web framework for companies doing the kinds
of work at the kind of scale as Shopify and get hub, but it
is also trying to allow an individual who is working a nine to five job
and wants to try to get into web development or wants to try to start
their own business two actually do that to like leverage their time in such a
way that they can create something of value. And I think that the future
for that aspect of Rails and that aspect of Ruby is particularly bright, especially
in comparison with the rest of the web development like landscape. It's hard for
these things to be objective, but I feel like, you know, if
you just add an individual like mid career developer sit down with next JS and
with Rails and said, you know, you have twelve hours. We would
see pretty quickly which of those was a more productive technology stack. Yeah,
that makes sense, and just speaking to that kind of single developer. I
don't know if you were at Rails World, but David talked a bit about
that. Oh, we should have met up anyway, but David talked a
bit about that right where it was he kind of had that vision as a
being the framework that one person could reasonably build a product in without you know,
obscene amounts of effort and have something that that functions well. And then
he also tweeted recently and I don't have the tweet right in front of me,
but he was talking about Rails eight and how Rails eight's going to start
incorporating some of these features from the web, and so I'm assuming there's going
to be some aspect of JavaScript browser programming that's going to have to happen for
some of that, but just looking at all of those options and going all
right, we're going to add all these things in so that you can build
a fully functional application in Rails that has all of those features. And that
gets me excited. But then, you know, coming back to some of
the other things that you're talking about with just having one person be able to
do things and do them well, you know, Ruby continues to expand,
and you know, the number of gems that we have and things like that,
as well as the performance characteristics of Ruby continue to get better. And
so yeah, I just I see a really really bright future for both.
And I've also seen that a lot of people tend to come in for the
benefits they get from Rails and then continue on into benefits in Ruby. Right,
so it's like, oh, well, I'm writing all of this Rails
code, and now I just need something quick and dirty or quick and not
dirty. I guess that'll do a job. And so they just write a
little Ruby script that does the thing and realize how simple it is there too,
And so anyway, it's really interesting to see how the ecosystem continues to
grow. I kind of want to transition a little bit into your work with
seql light. So I think for a long time most people have been pretty
bullish on postg resql. Right. Occasionally you'll hear people say, oh,
we're using my SQL or Maria dB. But yeah, lately I think I
heard an interview from somebody from Planet Scale talking about the power that they have
in a sequel light setup, and so I'm just curious, Yeah, what's
your work there look like and where do you see that going? Yeah,
well, maybe it makes sense to start with how I found myself even experimenting
using sequal light, because indeed it wasn't a again, a theoretically driven thing,
it was a very pragmatic driven decision where one of my roles in the
company is to be effectively half of the research and development department, and that
requires me to make sure that I am building applications that are on the one
hand, incredibly simple and quick for me to create, and also on the
other hand, very straightforward for me to debut, because I'll a bug report
will come in, I'll have thirty minutes between calls, and what I need
to be the case is that I can read the report, figure out what's
going on, fix it, deploy it inside of that thirty minute window between
calls. And I had built a couple of applications with postgress, deployed them
to Haroku and things that way. I just had experiences where but report comes
in and I am trying to debug it, and the amount of indirection and
lack of control that I had made it difficult for me to do that quickly.
Like I mean again, really quickly. Right, I have these thirty
minute windows, and I had a project come up, like, hey,
we need to spend this up really quickly. We don't have a lot of
time. We want to see if there's an opportunity here in the market.
And I had been researching and playing around with hatchbox. It's like, okay,
I'm just going to use hatchbox, and I want to I want to
make this the absolute simplest quote unquote stupidest possible way I can. So I
left all of the defaults and squelight was the default database when you run reils
new and I just put it up on the server and the first I don't
know, half a dozen bug reports that I got the experience of whether it
was being able to really quickly like check this date of the database and like,
okay, you know, this feels very natural and very similar to postgress,
but then like I'm not quite sure, like what is happening here,
and just like literally scping the file down to my laptop and then running my
local instance of the application, but with the production database and being able to
step through the states and find oh, okay, here's the weird thing.
It just was a really experience. So the next project came in, I
built on top of seaqlide, and within a few months I had two or
three of these small research and development applications that were running right life, and
I just naturally started to bump into some rough edges and there were enough positives
in the developer experience that I wanted to sand down those rough edges instead of
just switch over to postcriss. And that led me to just digging in to
figure out, like, what are these problems, why are they happening?
How can I make them go away? And as I was beginning that work,
I came across the light stack project by Mohammed a Ali Oldmo on Twitter
at GitHub, and it was like an actual light bulb, lightning flash moment
for me. Where I had been working with sequlite and working with sqlight on
rails, but I had just simply never considered the possibility that you know,
it could back all of the io components of rails. And as soon as
I saw that project and I saw the vision, it like just immediately snapped
into place in my mind. It's like, right, like that is that
is the ultimate high leverage single developer stack, right like right, it's all
on one machine. You completely can understand what's happening. You have. If
you can master rails and you can master Sequelite, then you can leverage those
tools. You can leverage your mastery, you can keep the amount of information
and moving hearts that you need to have in your head to jump into a
debugging session and figure out what was going on, all like incredibly low and
it just yeah, it inspired me, and so that pushed me deeper into
the rabbit hole. And now I guess six months later, there is a
lot of improvements that haven't made, a lot of improvements that are being made,
and there is I think a growing an emerging group of solo developers who
are seeing that similar vision of wanting to have a small number of quote unquote
boring technologies that they can leverage to get really outsized returns on their time and
their effort, and recognizing that Sequelight offers a relative the unique kind of leverage
for web development, and when tuned well and used well, many of the
like standard somewhat myths that are stated as like, well, you can't obviously
run sqlight of production because you know the handful of things that are regularly said
like actually you can work around and resolve or actually just like make disappear.
Right, So that has been the journey. Very cool. So so where
does that go from here? Right? It sounds like for the most part,
yeah, you can run sql light in production now, so where where
where? Yeah? Where do we go in the future on this? Yeah,
Well, there are a few strands that are still open right now,
like literally open pull requests. One of the major ones is improving concurrency support.
So one of the biggest differences between sequal light and client server database engines
like postcress or my sequel is that you have a single database level right block,
so only one connection is only ever going to be writingtabase at a time.
And this is a common one of the common statements like you can't obviously
run sequlite and production because you can only do one right at the time.
You have linear rights that can never scale. This makes no sense, you
should never even start now. That statement fails to account for a number of
pieces of nuance. One of the most important ones is that like when you
completely remove any form of network latency right and you're able to bring queries down
from milliseconds to microseconds, you know you can linear They stack hundreds of right
queries in the same amount of time it took you to do one right query.
It changes the math there, but there is still pain when it comes
to like rails is default connection pool, having multiple connections to the database and
dealing with getting all of your different rights to autonomously line up right and not
hit deadlocks or busy errors. So there are a couple of pool requests open
on rails. There's one pull request open on the c pl I three Ruby
gem. Two. Actually, the one on the CQL I three Ruby gem
just got merged, but the gem hasn't been a new version of the gem
has been released right to address this problem, like to just get the pieces
in place where the systems will naturally line up queue up your rights. And
then the other main direction is just continuing to build out and grow the ecosystem
of tools, the information, the guides to make it clear like, Okay,
you have this kind of problem. There's you know, at this point
a decade plus of content around here's how you do this kind of thing with
post crist This is how you do this kind of thing with my sequel as
you start to get into more advanced use cases and there's not as much of
that, especially for web developers, for web applications when it comes to squel.
So just trying to explore some of these more advanced use cases and write
down you know how to how to leverage the unique benefits and also limitations of
sqlight to accomplish more complicated needs. So at the end of the day,
then is this becomes more you know, I guess where more of these issues
are solved. Do you see an uptick in sql light usage with Ruby and
what does that mean for the community and the technology at large? Yeah,
well, I mean I'm I'm already seeing an uptick, and it's it's cool
to see more and more people having a similar thought process as I did.
Right, Like, I really want to max my leverage on my time and
on my effort. But as for what this might mean for the future,
one of my hopes and beliefs is that this can help meaningfully lower the barrier
to entry for new developers. I think that one of the the areas where
the JavaScript world had The advantage for a long time was how easy they at
least made it seem to get started to go from I have an idea and
I don't know, I don't feel like I'm a web developer. I don't
feel like I'm a developer, but I want to create something. And there
was a lot of content and a lot of you know, like this push
for sassifying everything, making everything a service, everything an API. Right,
so it's just you just write these thirty lines of JavaScript and you just you
know, pay for these fifteen different SaaS services, and now you've got a
web application. I think it really helped drive the massive amount of new develop
helpers who were starting with offic scripts in their first language. But in the
last couple of years, as React has got more and more complicated, bigger
and bigger, more of a framework and less of a library, there's an
opportunity I think for Ruby to take that advantage back. And one of the
worries I have is that we might miss that opportunity because so many of the
really experienced developers in Ruby are very comfortable with larger, more quote unquote enterprise
grade deployment architectures. Right. It's like, well, if I'm going to
do a web application, I'm going to do it well. Obviously, I
need to make sure I have a multi region, high availability postcress cluster that
is sharded and using replicas correctly. And I want to have my REDA servers,
but I need to make sure I have different REDA servers with different configurations
for the different expiration policies. So I'll have my cluster of three REDA servers,
and then I'm going to make sure I put a load balancer in front.
And like all of a sudden, you have a network topology that has
like eight machines. And it's not to say that that's like wrong or bad,
but it is complicated, right, And if the first time you're trying
to get an application, a web application onto the Internet, you have to
understand what a load balancer is, how to wire it up and connect it,
and how to run three different instances of a rails application, and how
just it cascades the complexity and so really driving for a future and where it
is possible to build a rails application and get it onto the internet, like
make it real where you don't need the funds that are required to get the
fifteen SaaS services in the JavaScript world, and you don't need the you know,
minor graduate degree in network topologies to follow the all of the guides for
Rails. But you can get a four dollars a month Hetzner server and you
can take your repository and effectively like FTP it up to that server and get
it running right, Like that's actually possible at that level of simplicity, I
think offers Ruby and offers Rails the opportunity to start winning back some of the
new developer pipeline React sort of makes their way into their their second decade and
they're more enterprising stage of their life cycle. So that's that's one of my
major sort of goals here is to really aggressively push that barrier to entry for
like what it takes to get an application off of your laptop and onto the
internet, right to make it really attractive for people to get that first big
win, because I think that that's like, that's where you are hooked,
you know, when it's like, look, mom, go to this URL.
You can see the thing I created. Like that is magical. And
if we can make that as quick, straightforward, clear understandable as possible,
I think people will naturally make their way into the Ruby and rails communities as
they're starting their careers. Yep, makes sense. Is there anything else it
is coming in the future Ruby that you want to point out that you're excited
about. Well, one thing that has come and is continuing to evolve that
that I am really excited about is the new prism parser and ecosystem of tools
that are coming around that. Yeah. We're talking to Kevin Newton in a
few weeks, so yeah, awesome. I think that's that's he's doing really
valuable and amazing work for the future of Ruby. Like when I think about
some of the things, like some of the more advanced uses of Ruby that
just they just feel amazing to do, Like metaprogramming is one of them.
Right, It's an incredibly sharp knife, but like when you wield it correctly,
it's like it's very very hard to replicate the power that is available to
you. Yeah, but there's always been that sort of ceiling because there was
this natural barrier to the amount of introspection that Ruby had about itself, the
amount of information that you could do. And I remember distinctly, however many
years ago, this was five, six years ago, maybe more. But
there was this moment where code mods in the JavaScript community were really sexy and
people were talking a lot about them. And I'm here working in this repository
that has rebocomp and it's great and it's useful. Like the difference between being
able to take in an AST, transform it, and output a new version
of that AST versus what is effectively a bunch of regular expressions is the difference
between night and day. I mean, it's a massive difference. And I
think that as we continue to standardize the parts of Ruby, as we as
we build out the ecosystem of tools to take advantage of having that level of
introspection into the language and into the code that is written in that language,
we are going to open up like completely new vistas of possibilities with what we
can do with Ruby. And I honestly can only barely begin to imagine all
of the possibilities. But I think that there's going to be some really innovative
and exciting stuff that comes out in the next few years now that this foundation
has been laid, So that really excites me. It's very amorphous, because
I'm not even sure I have enough of an imagination to see all of the
possibilities, but I am really confident that we're going to see really really powerful,
cool things come out of that project. So that's that's one that I'm
particularly inspired and excited by. Very cool. Yeah, I'm I'm excited for
it too. I'm looking forward to getting into it with Kevin and just seeing
what is coming along there. I guess the last question is if people want
to connect with you, you know, they have more questions about sequel Light
or anything. You know, what are the best places to connect? Yeah,
so best place to connect is on Twitter. I am at practled mind.
I if you want more sort of guides and longer ride ups on like
how to solve specific problems or get specific features out of sequel Light in a
Rails application or in the Ruby ecosystem, I write on fractedmind, dot get
Hubbo, and I really am very genuinely interested in helping as many people find
valuable, pragmatic, useful use cases for SQL in their applications. So really
genuinely like reach out on Twitter. I've had a lot of people reach out
and we've been able to build interesting features to do interesting things or just help
them get over that one hump to get to the next stage and what they're
trying to do, and I'm always down to help out, so feel free
to DM me or just tweet at me, and I look forward to chatting
with anyone and everyone. All right, sounds good, We'll go ahead and
wrap up. Thanks for coming and jumping on and until next time, folks,
max out.