00:00:20.320
tour of Rails Land. Get on board this bus.
00:00:26.480
Make sure you have your Chrono passports ready. We are traveling back in time to the early 2000s and you're going to need
00:00:32.320
this. I'm your tour guide, Joel Kenville. I've been doing this tour for over a decade
00:00:38.960
and I hope you have a good time. All right, everybody on board. Let's go
00:00:44.079
to the past. So, Rails is a really magical place, a place where people have
00:00:49.840
built together, have created community, uh have created something that's really magical. And in Railsand there are a lot
00:00:56.960
of buildings and Wait, what's that? Oh, the exit. What? What about the exit?
00:01:03.760
Oh, that was our exit. Oh, no. Oops. I think I just missed our exit to
00:01:10.640
Rails land. I'm sorry. I was so excited to tell you about it that I wasn't paying attention.
00:01:16.560
Um, I've got a little bit of bad news for you. On this particular time travel road, um, our next exit isn't going to
00:01:24.720
be until the 1600s. So, we've got to do a little bit of a
00:01:30.640
detour. I do apologize, but I am excited about Rails Land. On the flip side, the 1600s are kind of
00:01:37.439
an interesting period as well. Uh, sometimes I run tours back there. Uh, so I can share a few fun facts while we're
00:01:42.960
doing there. Don't worry, I'll turn the bus around. We'll make it to Rails Land.
00:01:48.479
Uh, something that's happening in the early 1600s. We've got uh some early scientists. Um, or at least that's what
00:01:55.680
we would call them. they would probably use the term something closer to natural philosophers. Science isn't really a
00:02:02.960
thing yet. Uh so when these three and others are doing some of their work,
00:02:09.119
they don't have any scientific journals to publish in. Instead, what they're doing is they share their ideas and
00:02:17.040
their experiments by writing letters. Some of these are uh letters directly to
00:02:22.400
each other. Some of them more open letters that get circulated. And that's how ideas spread.
00:02:30.000
Now these three in particular uh and uh another group around them describe that
00:02:35.200
sort of community that they have created for each other as an invisible college. It's not a real university but it's a
00:02:42.400
network of these early scientists writing to each other. And this invisible college will
00:02:47.680
eventually evolve into the British Royal Society which is one of the most prestigious scientific institutions uh
00:02:54.959
in the modern day. But this is not just a British phenomenon. uh we see this throughout
00:03:01.040
Europe that uh early scientists uh mathematicians, philosophers are writing
00:03:06.560
to each other to share their ideas and so much so that in the modern day
00:03:12.400
historians refer to this period as the Republic of Letters.
00:03:18.159
All right, we've got to our turnaround. Um sorry for the delay here and we're going to head to Rails Land.
00:03:26.159
So, as I was saying, the Republic of Letters was a time period where uh there
00:03:31.280
was a lot of exchange of ideas, but it was all this very informal just sharing
00:03:36.560
through writing. And you know, now that I think of it, that's not all that different than how the community of
00:03:44.400
Railsland was built. Um, there are lots of influential blog posts and talks. If
00:03:51.920
you were at the keynote this morning, you heard a lot about some wonderful keynotes that built up Rails Land. Uh,
00:03:57.120
and on this tour, what I want to do is I want to showcase a few of my favorite blog posts. Blog posts that were
00:04:04.000
influential on our community. So, jumping forward to the early 2000s,
00:04:11.439
here we are. Welcome to Rails Land. So, we're going to start here at the
00:04:18.320
Railsand Museum. Um, and we're going to get off this bus. This is a walking tour. And I think we've already had
00:04:24.560
enough issues with this bus. Clearly, I should not be driving.
00:04:29.840
So, the Rails Land Museum houses a lot of uh cultural artifacts that are important to uh the community of Rails.
00:04:38.320
Normally, I start the tour by taking you through the museum and showing you some of those artifacts. Uh because of our
00:04:44.160
little detour through the 1600s, we're going to skip that. But if you're ever back in town, I do recommend going in.
00:04:50.320
Uh it's worth the price of admission. So come with me. We're going to walk through town and we're going to head to
00:04:57.360
the central square. This is Pattern Plaza. We're going to
00:05:02.800
start on the north side. Now Pattern Plaza is a very central part of Railsland. It's the area where uh the
00:05:10.800
community gets together to debate structure, to debate patterns, to think about how we're going to build
00:05:16.880
applications that are easy to read, easy to modify, and easy to build on.
00:05:24.479
And our first uh building that we're going to look at is a 2006 construction
00:05:30.320
uh by Jamus Buck, Fat Model, Skinny Controller. This is a little bit of an older building that you can see. And
00:05:37.440
just to set the stage a little bit, uh give you some context.
00:05:42.560
This is a time where Rails has just come out. It's been 3 years. And the common way to do development
00:05:49.280
still is to write a single giant file of PHP and FTP it up directly to a server,
00:05:55.120
potentially via tools like FileZilla. Anybody remember FileZilla? Yeah, good
00:06:01.680
times. Or maybe not so good times. Um, this is the year that a very young
00:06:07.680
Joel is first getting his hands dirty with web development and it's also a time where people are
00:06:14.080
starting to build more serious applications. But a big question is coming up for the community and that is
00:06:22.720
as applications grow where should your logic go? And Rails
00:06:28.319
already kind of has an answer to that because of MVC, but the the boundaries are blurry.
00:06:36.319
So the big idea of Jameus's article is that all the logic or all the interesting logic should go into your
00:06:41.840
model layer. So Jamus suggests that it should not go into the view. Sort of like old school
00:06:47.440
PHP where it's effectively just one giant ERB file with everything from SQL
00:06:52.479
queries down. And that was pretty well accepted. But more controversially, it
00:06:57.840
should also not be in the controller. The controller should be a very thin layer that handles HTTP and makes
00:07:04.160
connections to the model. And instead, all the interesting logic,
00:07:09.199
the things that make your application your application probably need to live in the model layer.
00:07:15.840
And this was really impactful. It opened a conversation around where logic should go. And it opened the conversation. and
00:07:22.319
it did not open and close because that's a conversation that continues through the history of Rails land up to the
00:07:27.440
present day. It emphasized the model layers where things should go uh brought
00:07:32.960
in some terms that people still use that I've heard people throw around this conference even today and it helped
00:07:38.720
refine what MVC means in the context of Rails.
00:07:45.120
So, pull out your Chrono Passports. We'll add our first stamp there. Uh, and then I'd like you to look at another
00:07:51.599
building next door. This one's from 2008, uh, by Joe Ferris, Waiting for a Factory
00:07:58.400
Girl. The Rails community's always been big about testing. Uh, and the default way
00:08:04.800
to test in Rails is a system called fixtures. So with fixtures, uh, what you do is you
00:08:11.440
set up your data up front and then the entire test suite has access to it. So
00:08:16.960
you might have a user named Alice who's an administrator and maybe a user named
00:08:22.400
Bob who uh has been problematic and is now banned from the app and then your test could run assertions.
00:08:30.800
Now part of the frustration that Joe is feeling is uh the presence of mystery guests in tests and a mystery guest is
00:08:38.560
something in your test that just sort of comes from the global context that you can't tell just by looking at the test.
00:08:44.880
So you might see an assertion that says Bob does not have access to do these things and you're asking yourself who is
00:08:51.120
Bob and why does Bob not have access? Uh
00:08:56.160
and you'd have to just know the story of the fixtures to know oh that's the person who is banned.
00:09:02.800
And so Joe pitches a different idea. The idea that tests are more readable when setup is inline.
00:09:10.560
And Joe doesn't just pitch an idea. He also says, "Hey, I wrote a library to
00:09:16.000
make this style of testing easier. It's a library that most of you are
00:09:21.680
probably at least a little bit familiar with. Uh Joe introduces it as factory girl. Uh today we know it as factorybot
00:09:29.200
and it's probably in most of you all's gem files today.
00:09:36.000
And this has now become the sort of default community approach to testing, writing tests with setup that is local.
00:09:44.399
Now, this was only the beginning of a whole lot of debates about how do we want to handle test setup? If you're
00:09:50.080
using RSpec, um, is pulling setup out into a let or a before block still count
00:09:55.279
as local or is that adding mystery guests? What about shared context and examples?
00:10:02.160
And in more modern times, we've seen a bit of a return to the idea of fixtures because fixtures are faster and we all
00:10:09.120
want a faster test suite. So, we're reexamining some of the trade-offs and saying, is more speed worth the
00:10:15.760
readability costs. Or maybe there's some clever ways to square the circle. That conversation is still ongoing. You can
00:10:22.240
see there's a little bit of construction happening on the building right there.
00:10:27.760
I want to give a big shout out to the ThoughtBot blog which is where this article is published. Uh THBOT's blog
00:10:33.120
has been going on for two decades. There are thousands of articles on Rails and
00:10:38.320
web development articles that have really shaped our community. Uh and so big shout out to Thoughtbot for the ways
00:10:45.040
that they've invested and shared in building Railstown.
00:10:50.560
All right, let's put our stamp in our Chrono Passport and move on to the next one.
00:10:57.440
So, this is one where I was planning this tour and I was asking around what should be the stops on this tour,
00:11:03.920
everybody told me this is the one you've got to have. This was an incredibly
00:11:08.959
influential article. And you can tell by the title that's already connecting back to that first one uh by Jamus Buck.
00:11:17.680
And so, in a world where people have been moving all of their logic to the model layer, we're now encountering
00:11:24.000
another problem. models have gotten huge, sometimes thousands of lines and
00:11:30.959
hundreds of methods in the public interface.
00:11:37.040
And so Brian here introduces a big idea and that's that your model layer doesn't
00:11:42.079
have to be all active record objects. There are patterns beyond active record.
00:11:47.760
And if you're hearing that and you're wait active record pattern uh yes Rails
00:11:52.880
did not invent the idea of active record. If you were at Caleb's talk earlier today you would have heard a little bit more about the origin of that
00:11:59.839
but it is a pattern that Rails uh chose to implement but your model layer can be more than that. Now we don't have time
00:12:07.200
to look at all seven patterns today but I do want to showcase a few. Uh one here is a value object uh which
00:12:14.800
is commonly taking a primitive that has a lot of methods that operate on it and pulling it out of your model into its
00:12:20.880
own dedicated object. Um and value objects are not necessarily a thing that you have to build yourself.
00:12:27.760
There are some that are just built into Ruby and Rails itself. They're also form objects. Uh there's a
00:12:35.200
variety of uses for these, but one that Brian highlights is the ability to have something that behaves like a single
00:12:40.720
active record object, but is a layer over one or more uh writes to the
00:12:46.079
database. And finally, uh there's the service object where you sort of take some
00:12:52.240
logic, pull it out, just wrap it in a class, and expose it via a single method.
00:12:57.360
This one has a lot of caveats on it. Um here are the ones that Brian lists. uh the idea that your action has to be
00:13:04.000
complex, that it reaches across multiple models, that it's not a core concern of
00:13:09.519
any underlying model, and that there might be multiple ways of doing that action. Keep this in mind because this is
00:13:16.240
something that's going to come up later. But this article was talked about everywhere.
00:13:22.639
And these patterns were not just a thing back in 2012. They're patterns that we see in our apps still today.
00:13:30.160
It catalyzed a lot of conversations around the use of patterns in Rails apps. Uh exploring other things that
00:13:37.120
object-oriented development could offer us. Uh some ideas from domain driven design and even some like a little bit
00:13:44.560
more out there architectures like hexagonal rails that build on top of Rails.
00:13:50.639
So let's add our stamp to our Chrono Passports. Uh make sure we're all together and I'm going to take us to a
00:13:57.040
different part of town now. So join me. We're going to walk across down this street behind this building
00:14:04.959
to philosophy row. So unlike uh pattern plaza that's very
00:14:11.680
practical and thinking about how code should be structured, philosophy row takes a little bit more of a step back
00:14:17.920
and thinks through how should we think about code? How should we think about doing things on the web?
00:14:25.440
And our first stop here is a 2012 construction uh rail macas by DHH.
00:14:32.880
And this is a world where JavaScript is now becoming much more mainstream. It's fast. We've got jQuery now. Front-end
00:14:39.279
frameworks are starting to get started. And Rails has made some bold choices.
00:14:44.720
It's made a bet on coffecript. It's made jQuery its uh default library. And it
00:14:51.440
uses a thing called the asset pipeline. And some people aren't too happy about that. And there's a lot of push back and
00:14:57.279
suggestions that maybe we should be able to swap out different pieces or change a lot of the architecture altogether.
00:15:04.880
And DHH argues that a framework that has its own vision of the web is stronger.
00:15:11.519
It's something that can actually push a positive vision of where the web should be instead of just being reactive.
00:15:19.360
And this is sort of the context that the article's written. But the community has sort of taken this and interpreted it in
00:15:25.199
a slightly different direction. Um so the big idea here uh as often the
00:15:30.639
community interprets it is that using Rails defaults tends to give you be better results because it is an opinion
00:15:37.279
native frameworks if you stay close to where the framework wants you um you're going to have a better time
00:15:45.199
and the term has sort of entered the vocabulary. People don't tend to say vanilla rails, they'll say rails. And in
00:15:52.959
fact, there was a talk earlier this morning that had that in the title. Omic acron
00:16:03.440
passport. Uh, and there's one more I want to show you here in philosophy row, and that is 2016's the wrong abstraction
00:16:10.639
by Sandy Mets. Now remember when I mentioned that there was a lot of excitement around OO ideas
00:16:18.320
and patterns uh following the seven articles or the seven patterns article.
00:16:23.519
Uh so this is the context in which this is happening and people are exploring a lot of things trying a lot of
00:16:28.800
abstractions and Sandy had given a talk uh a few years earlier at Railscon titled all the
00:16:35.680
little things exploring a lot of these OO ideas. Now, as a side note, Sandy is one of the
00:16:42.000
best Rails speakers I've ever seen. Um, for those of you who are newer to the community, I really recommend go back,
00:16:48.000
find one of those videos, and watch it. Um, it might be life-changing.
00:16:54.480
But Sandy wants to take some ideas from that talk and turn them into a blog post. And there's one phrase that she
00:17:01.199
comes back to, the idea that duplication is cheaper than the wrong abstraction.
00:17:07.520
And this is a phrase that really connects with the community. The idea that sometimes it's better to sit with
00:17:13.199
the discomfort of duplicated code or maybe messy code and not abstract immediately and to wait until you can
00:17:20.319
find the right abstraction. And this is a phrase that 10 years later
00:17:26.959
we still hear in the community. I'm sure many of you may have even heard uh this
00:17:32.320
someone mention it on a pull request or maybe you're pairing and somebody says that to you. Maybe you never knew where
00:17:38.400
that phrase came from. You're like, "Wow, my senior developer is so full of wisdom. Has these great phrases." Uh
00:17:44.000
thank you Sandy for that. The real community is a community that I
00:17:49.840
think balances idealism and pragmatic concerns. We're a community that really
00:17:54.960
values productivity. And I think that this article embodies that.
00:18:01.919
All right, let's put a stamp in our Chrono Passport. Uh 2016 is a little bit later than all the other ones, so let's
00:18:07.440
put it on the the other page. I like sorting them by chronological order.
00:18:13.919
All right, now we're going to move to a slightly different part of town. Um this is Ops Alley,
00:18:21.200
and you'll notice it's a little bit more industrial. is uh maybe a little bit less polish on it. And this is a part of
00:18:27.840
town where people focus less on writing the code and more about shipping it to
00:18:33.520
production. And our first building I want to point out right here um maybe doesn't look
00:18:40.720
like much but you can see there's a lot that it's holding up. There's a lot building on top of it is the 2011 12
00:18:46.559
factor app by Adam Wiggins. So this is coming at a time where the
00:18:52.000
cloud is becoming more mainstream. Uh but many do custom setups on their own hardware still. We're still deploying on
00:18:58.000
our own boxes. And this article came out of work at Heroku. And I say article, but it's a
00:19:05.840
little bit more of a manifesto. You might even call it a micro site.
00:19:11.120
And there are 12 ideas of factors that make your app easier to deploy. And
00:19:16.640
again, we don't have time to look at all 12, but I want to highlight a few right here.
00:19:21.760
The idea of having par between development and production. The idea of
00:19:26.880
having explicit dependencies. And the example that the article gives is declaring which gems you depend on in
00:19:34.640
a gem file. Some of you might be looking at me being like, isn't that the only way? Why wouldn't you deploy without a
00:19:40.640
gem file? If you have your own server just SSH into a box, you can ask your
00:19:46.480
admin to gem install a bunch of stuff so that when you deploy your app, gems are already there and you just assume that
00:19:51.840
they're there. Now, if you want to deploy to a different box, your code's going to
00:19:56.880
crash. And so that's one of the reasons that uh 12actor uh suggests doing that
00:20:02.559
because now your code is much more portable uh from one box to another.
00:20:08.400
Similarly, the idea of environment-based coding. Uh if you see people who want to
00:20:13.440
put their configuration in environment variables, uh this is where it comes from. And again, the idea is that you
00:20:19.360
can deploy the same code to multiple different environments, production, staging, maybe a demo, maybe a QA, uh
00:20:28.000
and they can all be a little bit different while still all be running the same code.
00:20:35.200
I was trying to extract one big idea out of the 12 factors. And the best I could come up with was the idea that apps
00:20:40.880
should be environment independent. That idea that you can go to any of those different boxes and deploy the same code
00:20:46.320
and it should work. It should be easy.
00:20:51.520
Now, if the seven patterns is probably the most impactful article that most people have heard of, think this one is
00:20:58.080
the flip side. This might be the most impactful article that you've never heard of, but I guarantee you that your
00:21:03.679
deployment setup is built on ideas from that article. So, if there's one article to go back and read, this might be the
00:21:09.520
one. Also, this is an article from 2011. So,
00:21:14.799
we're going to put that stamp way back on the left side of our Chrono Passport.
00:21:20.960
All right, next one here in Ops Alley. This one here is uh a little bit of a
00:21:26.640
surprise maybe to some of you. This is a lessernown article and I picked it sort of standin for a certain movement within
00:21:33.679
the community. the idea that we can get more performance out of our apps, not
00:21:38.720
necessarily just by writing code, but by changing how we configure things, how we configure our servers.
00:21:46.240
And the big idea from this article from Nate Burkipek is that we can tune and
00:21:51.280
threads to get more performance out of our servers. If you've ever had conversations with
00:21:57.120
colleagues about what is the optimal amount of connections to have in your active record pool, how many concurrent
00:22:03.360
workers should we have to manage our queue? How many should we be focusing on threads or processes for our web server?
00:22:10.799
Uh these are all ideas that come out of this movement um and that are partly addressed by this article by Nate and a
00:22:17.200
lot of other work that Nate and others have done. So it's a 2017 article. We'll add that.
00:22:23.200
This is a little bit after Sandy's. So, we'll stamp that in our Chrono Passport and then move to a different part of
00:22:28.640
town. And I'm going to take you back to Pattern Plaza because that's my happy
00:22:35.760
place. I I love these things. Uh but now we're going to be on the south side, which is uh a little bit more modern.
00:22:46.720
And the first building I want to point out is a 2015 construction uh monoliths first by Martin Fowler.
00:22:53.679
This is a world where microservices are starting to become popular particularly after Netflix shared that they had a lot
00:23:00.720
of success with that pattern and so everybody wanted on
00:23:06.240
and the big idea from Martin's article is that monolith should be your default starting architecture. Not that
00:23:12.799
microservices are bad or that you can't do them in Ruby or that you shouldn't do them in Ruby, but they shouldn't be where you start. If you don't know your
00:23:19.840
needs, a monolith is probably what you want. And this is something that becomes
00:23:25.919
really compelling to the community. People accept this as best practice. And even today when people talk about
00:23:31.679
architecture in the Rails community, you'll often hear the suggestion, start with a monolith. You can break it up later if you need to. There's a cost to
00:23:38.559
running microservices. and don't pay that cost if you don't need to.
00:23:45.200
Now, something that's really interesting if you read the article, because I've seen it quoted a lot, is that Martin has
00:23:50.320
a very questioning tone. He lays out the argument in a way that's really convincing that then says, "This is the
00:23:56.559
argument I've heard. I'm still on the fence about it. I need more information before I make a recommendation one way
00:24:02.000
or another." But it's convincing enough that everybody quotes this article anyway.
00:24:08.320
All right, 2015. So, I'm going to put that in the top uh right of our Chrono Passport and we're going to move on.
00:24:16.640
Still in Pattern Plaza. Um this one is 2023, so much more modern. The wear of
00:24:22.480
service object in Rails by Jason Sweat. So, remember how I mentioned that uh in
00:24:28.559
the seven patterns, the service object was a sort of easy way to extract logic out. Um, and what has happened over the
00:24:35.679
decades since then is that it has become the pattern.
00:24:41.840
It's so easy to do because you don't have to think really about boundaries. You don't have to think about modeling. You can just take arbitrary chunks of
00:24:48.400
code, pull them into a method, put them in an object, and be done with it. And it is now sort of the way that everybody
00:24:55.120
handles extractions. And Jason argues that by doing that
00:25:01.440
service objects give up a lot of the power of object-oriented programming. Not that necessarily service objects are
00:25:08.559
bad, but that they shouldn't be our main uh solution when it comes to things.
00:25:13.919
There are other patterns. There are other solutions that we can use that will give us more value. But it also
00:25:19.919
means we have to take the time to think about things like boundaries and modeling. Uh, so it's a little bit more
00:25:25.120
upfront work than you'd get from a service object.
00:25:30.640
All right, let's stamp that in our passport. And for the last one, I'm going to take you to a neighborhood
00:25:36.880
that's a little bit different. Some of you might even feel slightly uncomfortable.
00:25:44.080
We're going to cross the river. We're going to JavaScript Junction.
00:25:50.320
This is a very colorful neighborhood. It's got a lot of character, a lot of individuality. Every building does
00:25:56.480
things a little bit differently. That's a great place to be. It's very eclectic.
00:26:05.440
And the one I want to highlight here is a 2024 construction by Radon Skoric. Should you use hotwire or a front-end
00:26:12.240
framework? And Radon has this thesis that applications on the front end are
00:26:18.559
solving sort of one of two main problems. If your biggest problem you're trying to
00:26:23.840
solve is shared state between the server and the front end suggests that hotwire
00:26:29.360
is the best solution. On the other hand, if the biggest problem that your app is trying to solve
00:26:35.679
is visual interactions, then a front-end framework like react might be a better fix.
00:26:42.000
What about something that falls in between? Roden is uh partial to hotwire
00:26:49.600
and kind of has this big idea that HTML over the wire is often the best balance between interactivity and effort. Again,
00:26:57.760
it's a very pragmatic take focused on productivity. And this has kind of been the story of
00:27:04.559
JavaScript on Rails for a long time. If any of you remember
00:27:09.600
unobtrusive JavaScript from the early 2010s, a lot of the same ideas just repackaged in uh a nicer framework with
00:27:17.840
Hotwire. So, let's put our stamp in there. Uh
00:27:23.039
congratulations, you've filled out your Chrono Passport.
00:27:28.159
So, the sun is setting. Uh I'm going to walk you all to the train station. Uh you're all taking the train home because
00:27:33.360
I don't think you trust me to drive you in a bus back to 2025.
00:27:40.720
While we're here at the train station though, um just want to think back on 10
00:27:45.760
big ideas from the Rails community that we've seen today on the tour. Hopefully you had fun. So the big ideas were that
00:27:52.880
most logic goes in the model layer. Tests are more readable when setup is in line. There are patterns beyond active
00:27:59.440
record. Using Rails defaults gives you the best results. Duplication is cheaper than the
00:28:06.240
wrong abstraction. Apps should be environment independent. Tuning processes or threads can yield
00:28:12.399
better performance. Monoliths should be your default starting architecture.
00:28:18.159
Service objects give up some of the benefits of the OO paradigm. And finally, HTML over the wire is the best
00:28:25.039
balance between interactivity and effort.
00:28:30.240
So looking at all those big ideas, is there a theme that we see over and over? maybe some sort of unified big idea from
00:28:36.720
the last 20 years of the Rails community. And as I was trying to synthesize this,
00:28:42.320
what came to mind is what's basically a modern Rails marketing slogan.
00:28:47.840
Rails is a oneperson framework. Not that Rails is made just for solo developers,
00:28:54.399
but its focus on both idealism to try to make things better, but also a very
00:29:00.000
pragmatic focus on productivity makes it a framework where you can be productive
00:29:05.039
as a solo developer. It's one where you don't need a team in order to be productive.
00:29:11.679
Also, while going through all of these, I just appreciate that the Rails community is really thoughtful and
00:29:16.880
funloving. I love you all. You're building a wonderful place in Railsand.
00:29:25.039
Now, you'll notice that there's a lot more buildings, right? I had to pick 10 for the tour. Um, I couldn't show you
00:29:30.399
all of them. So, if you have a favorite blog post, uh, please do come talk to me
00:29:35.520
afterwards. I'd love to hear about your favorite blog post, how it was impactful maybe for you or for your little corner
00:29:41.039
of the Rails community. And finally, as the sun is setting over Rails, I would like to point out that
00:29:48.640
there's still construction happening over here. The story of Railsand is not finished, and you can still be a part of
00:29:54.960
it. You can be part of building the next buildings in Railsand.
00:30:00.720
So, I would um I would encourage you get into blogging, share your ideas, uh
00:30:07.279
write. You'll be part of a tradition not just of Rails Land, but a tradition that goes all the way back to the 1600s to
00:30:14.559
the Republic of Letters. I've been your tour guide, Joel Kenville. Uh, thank you for attending
00:30:21.279
this tour. I'm a principal developer at THBOT and also a blog author on the THBOT blog. I co-host the Bike Shed
00:30:27.840
podcast at bikeshed.fm and you can find me online on X at Joelken.
00:30:35.279
Here's a list of all of the blog posts that I mentioned. Uh, I'll leave this up if you want to take a photo. And thank
00:30:41.440
you for coming.