Valentino_Stoll:
Hey everybody, welcome back to another episode of the Ruby Rogues Podcast. I'm your host today, Valentino Stoll. I'm joined today by Pavel Dabrowski. Did I say that right?
Paweł_Dąbrowski
Yes, exactly. Hello everyone, it's great to be here. Thank you for having me today.
Valentino_Stoll:
So Pebble, why don't you tell us a little bit about yourself and what brought you on to the show today?
Paweł_Dąbrowski
Yeah, sure. So as you said, my name is Paweł. I'm the Ruby developer. I'm currently working as a CTO at Iron in Company. We create there a lot of software. Ruby is in our DNA, but we also create code in other technologies like Python, Golang, JavaScript and things like that. And I'm here today because I wrote an article about the import maps feature in the Rails 7. I also created the tool called Arrays Formation and I often write articles about Ruby and related stuff so you can find me somewhere in the internet explaining things about Ruby. So that's the main reason why I'm here today.
Valentino_Stoll:
Awesome. I kind of do want to touch on import maps. I know before the show we had talked about a few other things, but
Paweł_Dąbrowski
Yeah,
Valentino_Stoll:
that does
Paweł_Dąbrowski
that's right.
Valentino_Stoll:
sound like a lot of fun. So before we do though, I want to talk about this competition of yours. What is the name of it?
Paweł_Dąbrowski
Well, the name is Mortal Coding. It's related with Mortal Kombat because it was created around the retro games that was the main theme. And the main prize was the Nintendo Switch. So it was for
Valentino_Stoll:
Nice.
Paweł_Dąbrowski
the game lovers and for the Ruby lovers. So basically it was a contest for Ruby developers. The qualification phase was about the answering questions were qualified for the quarter final. And in quarter final, semi-final, we have practical challenges where two developers fight each other with the code. They write the code to solve the challenges and the code was tested against the RSpec tests. So it was like a CI thing. And the final was streamed live on the Facebook. where we saw the code in a live mode and it was you know really fun seeing two developers challenging themselves you know writing the code live to just you know to win and yeah it was also fun to build this platform because we started it with Raze 7 and we built it with the Raze Turbo so yeah it was really fun to create something like that
Valentino_Stoll:
That's really interesting, the live portion of that, especially. How does that work? Do you get to see what they're typing and working
Paweł_Dąbrowski
Yes.
Valentino_Stoll:
on and a video of them, or is it just kind
Paweł_Dąbrowski
No,
Valentino_Stoll:
of like
Paweł_Dąbrowski
no, without
Valentino_Stoll:
what they're
Paweł_Dąbrowski
the
Valentino_Stoll:
working
Paweł_Dąbrowski
video,
Valentino_Stoll:
on?
Paweł_Dąbrowski
we didn't want to stress them totally,
Valentino_Stoll:
Sure.
Paweł_Dąbrowski
right?
Valentino_Stoll:
Haha.
Paweł_Dąbrowski
So, so we saw the input in the real time, what they are typing into, you know, code editor and each
Valentino_Stoll:
Oh, that's
Paweł_Dąbrowski
time
Valentino_Stoll:
so
Paweł_Dąbrowski
they
Valentino_Stoll:
cool.
Paweł_Dąbrowski
press submit, we saw that, you know, the feedback from the system, how many test scenarios they code pass. And if someone submitted the solution that pass every tests, then we were moving automatically to next, you know, task.
Valentino_Stoll:
That's really cool. So there are a lot of like code challenge, you know, sites out there, not necessarily with the live feature. That is really cool. What kind of got you into creating this competition?
Paweł_Dąbrowski
I started with a course platform where the developers were learning things by writing the code. So I had to build something like this kind of CI stuff that validates the code against the tests. And then my company came with the idea of mortal coding. And I was like, I had the code to handle this. Let's do this. And the final was really stressing because everything was trimmed in a life. doing all the streaming of data. So it's now better to test it. We can do a big things with that. So definitely Rails 7 is a great tool.
Valentino_Stoll:
That's really cool. So how does, I guess, how does it all work? How does the editor work? Like what is hooked into it in order to get that kind of feedback during the competition?
Paweł_Dąbrowski
You know, I think it's quite simple because you have this text input. And as you type, we handle the event of typing, you know, and we stream this output on the dashboard. And the dashboard is the source of streaming. So everyone is seeing what am I seeing on the screen. And yeah, it's working like that. It's pretty simple, but there was a lot of tests, you know, to ensure that it's working correctly in every browser, we wanted to avoid the case where there is nothing on the screen and suddenly the whole solution appears and the challenge is over because someone submitted the right code.
Valentino_Stoll:
Right?
Paweł_Dąbrowski
We wanted to see in real time how they are thinking about the code, what kind of approach they are trying to apply. It was really interesting.
Valentino_Stoll:
school and how many people were competing.
Paweł_Dąbrowski
I think over 100 for sure. I think close to 200 people. And
Valentino_Stoll:
Wow,
Paweł_Dąbrowski
it was
Valentino_Stoll:
that's awesome.
Paweł_Dąbrowski
only about Poland. So, you know, Ruby is not that popular in Poland. So it was a great freedom.
Valentino_Stoll:
I mean, a few hundred people is a competition for sure. And we were talking about this before the show. It reminds me a lot of the old Rails Rumble, which for those that aren't familiar since apparently it hasn't operated in over seven years, but it used to be a competition where you get 24 to 48 hours, I forget which, to build a Rails app and you can't have anything started beforehand is kind of just to see what you can make with Rails in a short amount of time. It was always really cool. They had like a panel and social aspect where you can go in and vote for your favorites at the end of it. I had to be runnable at the end. So obviously there wasn't much testing going on, right? Since
Paweł_Dąbrowski
Yeah.
Valentino_Stoll:
you wanna just see more results than anything. But there were some really cool projects that came out of it that, you know, now that it's been fizzled out along. I kind of missed, you know, it'll be fun to see I saw Chris Oliver from Jumpstart Rails, you know, trying to revamp
Paweł_Dąbrowski
Yeah.
Valentino_Stoll:
that. So it'll be interesting to see how that comes about. But I would love to see like some live functionality like you have, where, you know, it gets that more like competitive advantage. That's really cool.
Paweł_Dąbrowski
Yeah, but I think it's 24 hours is not enough for me to build something like that.
Valentino_Stoll:
Hahaha
Paweł_Dąbrowski
But it, you know, it's all about fast prototyping. So it will be a great challenge for sure.
Valentino_Stoll:
So what are your next steps with it? Like outside of taking it outside of Poland, are you looking to expand feature wise more on it or more of just like coverage?
Paweł_Dąbrowski
Uh, we plan to do the English version so everyone can participate in the, the contest and of course I need to, you know, find out the new challenges. I cannot use the same challenges. So that's also something we need to think about, but for sure we want to go, uh, with a broader audience because we received very good feedback about that. It was really fun to do this. And. It was also a great experience for me. I learned a lot of things. I had to build the whole qualification phase with around 30 questions, starting from junior level to the expert level. So yeah, it was fun. And the most difficult question was about the garbage collector. It was the question regarding the color that the garbage collector uses to mark some cells in the memory. It was silly question, but you can Google it so it was not impossible to answer correctly
Valentino_Stoll:
I'll have to check that out after this.
Paweł_Dąbrowski
Yeah
Valentino_Stoll:
Uh... So you are quite busy in the Ruby community.
Paweł_Dąbrowski
Yes, yes.
Valentino_Stoll:
You have quite a lot of publications out there now, which I love. I'm actually an avid reader of yours, so thank you for the continuous posts. I love to see the content.
Paweł_Dąbrowski
Uh.
Valentino_Stoll:
For those that don't know, Pavel writes quite a lot. It used to be long live Ruby, right?
Paweł_Dąbrowski
Yes, now it's more personal thing.
Valentino_Stoll:
Now it's more personal.
Paweł_Dąbrowski
Yeah.
Valentino_Stoll:
So what was the transition away from that? I'm just curious. Why move away from Long Live Ruby and into the more personal space?
Paweł_Dąbrowski
Well, to be honest, I started with the personal blog, and then I came with the idea to create Long Life Ruby because I wanted to involve more authors on the blog, but I eventually end up with only one guest author with a great article, but I decided to move back to the personal blog because I wanted to touch more topics around programming. But with the name Long Life Ruby, things about Ruby only so I was kind of limited but you know with this transition I think nothing changed yet I'm still writing about Ruby and I think I will be doing this for like few next years because I still have fun doing it I had some little break from writing but now I'm back I did some guest articles and I think I missed that much so so I just came back to the publishing
Valentino_Stoll:
Awesome.
Paweł_Dąbrowski
process
Valentino_Stoll:
Yeah, I mean, among many of it are kind of your CSV related things. And you do have your ebook, right, that you just opened up. It used to be paid, right? Yeah.
Paweł_Dąbrowski
Yeah, that's correct.
Valentino_Stoll:
What was the name of it again? The CSV.
Paweł_Dąbrowski
It was named Mastering CSV in Ruby. So it's just introduction to parsing CSV with the Ruby because behind every CSV file there is a long story with the coding and all that stuff. And I started with the paid version, it was a year ago. And now I decided to release it for free because I'm preparing another book. So I thought it will be great. idea to do this and it's funny because it came out that I can earn more by having it for free than I was selling it for money. So, yeah, it's very interesting for me.
Valentino_Stoll:
That's really funny.
Paweł_Dąbrowski
I'm not a marketing guy so maybe I did something wrong in the past.
Valentino_Stoll:
So you heard that out there folks, freemium does work.
Paweł_Dąbrowski
Yeah, I heard it many times but I didn't believe it until now.
Valentino_Stoll:
Maybe it doesn't always work, but in this case, it's very interesting that it did for you. That's
Paweł_Dąbrowski
Yeah.
Valentino_Stoll:
awesome though. It's on my to-do list here to read that, go through. I've used CSV so much in the past decade or so that I've been in Ruby and I learn something new every time I do CSV.
Paweł_Dąbrowski
Yeah, that's right.
Valentino_Stoll:
There's just so much, right?
Paweł_Dąbrowski
Yeah, and I thought I put everything I know into this book and I received emails with the new topics about the CSV that I didn't cover yet. It's crazy, you know, it's
Valentino_Stoll:
That's
Paweł_Dąbrowski
simple
Valentino_Stoll:
so funny.
Paweł_Dąbrowski
format, but it's a long story about it.
Valentino_Stoll:
That's awesome. So are there more books in your horizon? Is there something that you're planning to write next?
Paweł_Dąbrowski
Yeah, I have plenty, you know topics I have that kind of doc in the Google Drive where I have like 200 Ideas for articles, but I never have time to write those So I just need to focus on one and then you know Go for it You know marketing is also important. So I try to write more on my newsletter so
Valentino_Stoll:
So I'm curious what your process is like for writing. You have a, so you have a Google Drive that just has a ton of ideas in it, and
Paweł_Dąbrowski
it.
Valentino_Stoll:
you just scroll through it and you say, okay, I'm gonna pick this one and start working on it. What's your process like?
Paweł_Dąbrowski
Usually I just collect all the ideas on the doc. I'm not judging them, you know, I can have better and worse ideas. But when it came with me for a long time, like a few weeks, then I feel that this is the right topic to write about. Then I usually start with the research, you know, I collect around 10 or 20 articles about the topic that I would like to write about. I learn new things that I don't know. with the kind of outline about what I want to write. And then I just, you know, go point by point and write the article. So this is my writing routine, I can say. With the book is similar, right? We have chapters, we can name articles, for example. So that's the process. The interesting part is that I hate doing eBooks from the technical side. I mean, you know, forming those PDF files and things like that.
Valentino_Stoll:
Getting the
Paweł_Dąbrowski
So,
Valentino_Stoll:
examples ready.
Paweł_Dąbrowski
yeah, so I created a library that transfer markdown into PDF book with, you know, all the table of contents of the formatting of code snippets and, and things like that. So it's finally become a pleasure. Not, I know things I hate. So it's great.
Valentino_Stoll:
I gotcha. So of all of the features of CSV, which is your least favorite?
Paweł_Dąbrowski
Oh, I think encoding is something that I not fully understand, even after 12 years of doing it. So there is always something pop up when I parse the file, especially when it comes in a different language. Yeah, so this is the thing I had the most. The size is not a problem right now. You can handle it gently, but with the encoding, you are never fully prepared for that.
Valentino_Stoll:
coding always bites you.
Paweł_Dąbrowski
Yeah, that's correct.
Valentino_Stoll:
All right, so I wanna get into your import maps article because import maps are the latest craze. Rail seven is the latest craze. I don't know how they work necessarily fully. Thankfully we have your article now to reference, but I would love to dive in and kind of get your first take on it on import maps in rail seven. What you like most about it, what you despise about it. And then we can get into kind of how it works.
Paweł_Dąbrowski
Okay, so I think I like it because it reminds me the old days where you can start a race application and add the JavaScript easily. You don't have to use any web packer and things like that. You just attach the code, you can use it on your website. The things that I hate the most about import maps, well, I don't think I have something like that, that the JavaScript code is pulled from CDN. It's fine when you are you know fast prototyping but what if this CDN is down? Your application won't work. So I always advise to download the assets you know locally and do not use this feature of pulling JavaScript directly from the from the CDN.
Valentino_Stoll:
I see. I had seen that reference, right? From what is it? DHH's latest video of, oh, hey, you don't even need to download it. You could just
Paweł_Dąbrowski
Yeah,
Valentino_Stoll:
CDN it.
Paweł_Dąbrowski
it's fun in a local environment, but it can get tricky in the production because right now it's based on the JavaScript package management tool and the owner of this makes it free, right? He has
Valentino_Stoll:
I see.
Paweł_Dąbrowski
some sponsors, right? But he can decide that he want to shut down this and then we have a problem.
Valentino_Stoll:
So what do you use for, or let's backtrack. Is a CDN easy to get set up with import maps? And what do you prefer to use in that case?
Paweł_Dąbrowski
Well, with the import maps, you can pin the library. So it means that you can pull it from the to the Rails application. So I always prefer to use the download flag. It works the same as the standard version, but it downloads the files to the directory inside the Rails instead of pulling it from the URL. I think it's even faster in terms of loading the page. So maybe this, you know, is great if you build MVP or something like that or if you participate in race rumble and you really don't care if the app is you know up after a few weeks after the contest so i think that's the option for this
Valentino_Stoll:
Well, what about what about hosting them on Cloudflare or something like that? Have you done anything like that with import maps?
Paweł_Dąbrowski
No, not yet. To be honest, I did a dive jump into the source of the import maps, but I was using the ordinary way, so just pulling the assets into the vendor directory and hosted on my server. But that's the interesting aspect of this. And I saw some pull requests on the repository recently behavior a little bit.
Valentino_Stoll:
So before we dig in too much, can you clarify just what import maps is and how you get started using it?
Paweł_Dąbrowski
Yeah, sure. So I think it came by the default in the Rails 7 as an external gem called import maps and basically is a replacement for a webpacker. So if you want to pull jQuery into your project, all you need to do is to type the command import maps pin jQuery and it will automatically attach the jQuery in your application so you can start writing the jQuery code inside You don't care about any bundling or something like that. You just pin the specific version and you use it. So I would say that import maps is a great tool for anyone that hates web packer and stuff like that. Yeah, you can use the CDN. The default CDN is the JavaScript package management, but you can also use something like, you know, deliver or anything like that. I think you can even hook up something on your own.
Valentino_Stoll:
Gotcha. So this is kind of like the replacement for sprockets in a way.
Paweł_Dąbrowski
Yes, and when you create new Raves 7 application, I don't think you need Node. It just, you know, bootstrap immediately. And in Raves 6, we have that step with the Webpacker and Node, which took some time to start. And if you have too old Node version, it will crash. So this is definitely improvement and helps you to start faster.
Valentino_Stoll:
So I did notice one thing that I'm not sure about with import maps is it doesn't bundle any of the assets, right? It uses them individually
Paweł_Dąbrowski
Yeah, that's...
Valentino_Stoll:
in the map.
Paweł_Dąbrowski
Yes, there is no bundling or extra tooling. You just receive the source, which is minified, and you can use it straight away. You can even create import map per page, because you may want to load some, you know, libraries on this page, but the other page you don't want them, so you have a full flexibility.
Valentino_Stoll:
Oh, that's pretty cool. So how does that work? You kind of just reference it ahead of time in the map, or is that something that's done at the controller level?
Paweł_Dąbrowski
Well, it simply works like a helper in the layout. So it requests the source. And if the library will detect that you are using it in the source code, it will load it. So even if you will define the import map for the library, but don't use it, it won't be loaded. So it won't slow down your application. And as we know with the Webpacker, we can load a bunch of node modules, don't use it and still have a lot of space taken about those libraries.
Valentino_Stoll:
Right.
Paweł_Dąbrowski
This is another cool thing.
Valentino_Stoll:
Yeah, I mean, Webpacker has its nice advanced features.
Paweł_Dąbrowski
Yeah.
Valentino_Stoll:
And I understand why it was a good initial thing to make it easier to build like, you know, front end first applications as I call them.
Paweł_Dąbrowski
Yeah, and to be honest, import maps is just a wrapper for the import maps feature. Just like Webpacker was just a wrapper for the webpack. It's just, you know, Rave's wrapper to provide you with some commands and Rave's way of configuring things. So it's, I would say it's quite simple under the hood, but it's still interesting to see the source code.
Valentino_Stoll:
Is there anything that stood out to you from the source code that you were like, Oh, that's kind of neat.
Paweł_Dąbrowski
To be honest, not really.
Valentino_Stoll:
In a way that makes me feel better. Right? Like, you know, boring code is often the simplest code, right?
Paweł_Dąbrowski
Yeah, I saw there a nice way of handling errors. So when you don't need to alter the standard error class you can just define it differently without inheritance. So it was something I learned there. And then I saw with the Rails source that is a default way of handling errors in the Rails source. So I do the same now in every app that I create. So this is something I learned from the source code of impromaps.
Valentino_Stoll:
That's really cool. So I mean, this kind of segues into what I'm really excited to talk about, which is your new kind of Rails app generator.
Paweł_Dąbrowski
Yeah, we can say that.
Valentino_Stoll:
Because you kind of like import maps is one of the features kind of built baked into the generator, right? Where it just comes. I know Rails comes with it automatically, but you
Paweł_Dąbrowski
Yeah.
Valentino_Stoll:
know, your was a formation, right? Rails formation.
Paweł_Dąbrowski
Yes, that's right.
Valentino_Stoll:
This
Paweł_Dąbrowski
So
Valentino_Stoll:
is so cool.
Paweł_Dąbrowski
it's more like a tool for bootstrapping.
Valentino_Stoll:
Okay.
Paweł_Dąbrowski
I didn't want to create no code tool where you fill the form and create the race application because I don't think it makes sense. People enjoy creating race application and write Ruby code, but I found it really frustrating and boring to bootstrap race application. I usually start with the estimation or a plan for application begins when you have to generate all those models, define factories, create test data. So it was really boring and I came with idea of automating this. So I created trace formation where you can basically get your schema for let's say resources. You can type everything, select what validation you would like to have and it will generate all that stuff the test data with the Fakr gem. So you basically start with the application that it's shipped with the test data that you can use to write more fancy features. There is also mode for the API architecture where you can define that the authentication is handled with the AP key. So you don't have to think about this part. It's generated from the beginning so you can use it. to create something that will give you, you know, the sense of having the code created as it should be. So I spent a lot of time digging into documentation to find the right way of writing things, you know, so people don't have to think about it.
Valentino_Stoll:
That's awesome. Yeah, I mean, this is a topic that I'm really interested in because it seems, it's so funny, like there is a way to make a Rails template, right? And reuse it with the
Paweł_Dąbrowski
Yeah.
Valentino_Stoll:
generators, right? And that's very well built. There's a lot of infrastructure there and available. But every time people end up with some kind of solution like this, they end up building something like you have with Rails formation, right? an interface to define everything upfront and configure it how they want in a visual format and then have the application get generated kind of as a byproduct of that, right?
Paweł_Dąbrowski
Yeah, I think when you build, for example, RACE application with GraphQL, even if you do this 100 times, I think you will look up in the internet how to configure GraphQL with RACE.
Valentino_Stoll:
Yeah.
Paweł_Dąbrowski
So my goal was to automate this. So you can just take a checkbox, I want to include GraphQL and it will happen automatically. So
Valentino_Stoll:
Oh,
Paweł_Dąbrowski
you
Valentino_Stoll:
that's
Paweł_Dąbrowski
don't have
Valentino_Stoll:
awesome.
Paweł_Dąbrowski
to waste time. And I think you can even use it with your client. You can ask him, application and he will tell you I want to have articles. Okay, so what kind of fields do you want there? What kind of validation? And you just configure as he is telling you. And then you just click Bootstrap. You use the gem and it will create the skeleton for a race application ready for the development.
Valentino_Stoll:
That's awesome. So the biggest question here is how do you handle upgrades? Or is that kind of just, you know, oh, if you use the tool, it gets upgraded as you use it.
Paweł_Dąbrowski
Yeah, this is one of the two deal breakers because the one is the upgrade process. Let's say that the Rails 8 kicks in, so I have a lot of stuff to update in the tool. And the
Valentino_Stoll:
Great.
Paweł_Dąbrowski
second thing is that most of the clients would like to have the standalone version. So then they don't share this data with the Rails formation. They have everything locally like GitLab instance or something like that. So there are two things that I didn't figure it out yet.
Valentino_Stoll:
We gotcha.
Paweł_Dąbrowski
So
Valentino_Stoll:
Thanks for watching!
Paweł_Dąbrowski
I'm a little bit afraid of handling the upgrade process because there is a
Valentino_Stoll:
Ha!
Paweł_Dąbrowski
lot of things to upgrade, a lot of things to test. You know, you can add the Ruby gems, so I need to also test those Ruby gems. They are not breaking anything. So.
Valentino_Stoll:
I mean, I'd like to think that as a Rails app generator tool, an upgrade is kind of like the last feature to introduce.
Paweł_Dąbrowski
Yeah.
Valentino_Stoll:
Cause you should be creating a new app every time, right?
Paweł_Dąbrowski
Yeah, right, it's only designed to create new app, not updating anything. Once you create
Valentino_Stoll:
Ha!
Paweł_Dąbrowski
it, just leave it. Ha ha.
Valentino_Stoll:
But it does it does make me wonder right like this is such a common thing You know That seems to be missing right from rails generator rails generate new I know that there are a lot of new features coming. There's an interactive mode Maybe planned on the horizon if
Paweł_Dąbrowski
Thanks for watching!
Valentino_Stoll:
right. I know there's a ton of comments in There's a ton of comments in the PR for
Paweł_Dąbrowski
Yeah.
Valentino_Stoll:
one of those, right? But it seems like we keep coming back to this in Rails for like, hey, we want a better way to generate Rails apps. And it seems like a tool like Rails Formation would be ideal to have as part of the Rails feature set, right?
Paweł_Dąbrowski
Yeah
Valentino_Stoll:
Hey, I want to configure this Rails app, check a few boxes and then start that way.
Paweł_Dąbrowski
I think it makes sense visually as a web application, but imagine having it as a command line where you have like 1 million option to pass to the command order to create. So I don't think it will work, you know, with the race since the beginning. But
Valentino_Stoll:
That's
Paweł_Dąbrowski
to
Valentino_Stoll:
true.
Paweł_Dąbrowski
be honest, I took all this code for generating templates from the race source. So I'm using the same approach. It just, you know, more rich format of doing this. And I really found a lot of ways generate custom code using Rails comments. You know, it's not a comment because there's a lot of option to pass and I won't remember them all. Not sure if anyone will remember them. So it was fun digging into documentation and finding these things after, you know, 12 years of using Rails. It's always the aha moment. Okay, so it's working like that. I didn't know.
Valentino_Stoll:
I'm very curious about this. So what are some of these things that you found in the documentation as you went along?
Paweł_Dąbrowski
Well, one of those things was the APK authentication when you are using the API version of Rails. So I can, you know, the conclusion that you have to use like password digest instead of saving the password in the database. So this is one of the things I learned during the discovery process. But to be honest, it's like a topic for another article. noted all the things. It's so much, you know, happened right now that I wasn't able to remember all the stuff I go through. So it's hard to memorize
Valentino_Stoll:
I will say,
Paweł_Dąbrowski
all this.
Valentino_Stoll:
every time I open up those Rails guides, I read something and I'm like, oh, that's in here? Ha ha ha ha ha
Paweł_Dąbrowski
Yeah,
Valentino_Stoll:
ha
Paweł_Dąbrowski
exactly.
Valentino_Stoll:
ha.
Paweł_Dąbrowski
That's true.
Valentino_Stoll:
Right, like even and I know it's been around a while, right? But like, you know, text editing and be able to like action text. You know, I forget that's there when I haven't used it in a long time. Right. Like there are these like huge feature sets of reels even that I'm like, I'll have the rails guides open and be like, what is this whole thing? I'm like, oh, yeah.
Paweł_Dąbrowski
Yeah, I think part of the articles about Rails is just, the content from the Rails guides is served in a better way or a different way, but it's still there.
Valentino_Stoll:
Right.
Paweł_Dąbrowski
Most of the information is still in the Rails guides. So that's amazing.
Valentino_Stoll:
It's so funny, it would almost be great to have, that's what I feel like is missing from Rails documentation at least, is what can you do with Rails? Because you could do so much stuff,
Paweł_Dąbrowski
Yeah.
Valentino_Stoll:
and I don't even know how you would search for something like that. If you wanted to see all the features available to you so you don't go rewrite something, I don't even know if there's a good way to do that.
Paweł_Dąbrowski
Yeah, yeah, it would be nice to have some, you know, base of ideas or things you can achieve with Rails
Valentino_Stoll:
Right.
Paweł_Dąbrowski
or even videos how to create a, I don't know, Twitter clone in 10 minutes. Something
Valentino_Stoll:
Right.
Paweł_Dąbrowski
like that will be available within, you know, version 7.
Valentino_Stoll:
Yeah, like almost like a Ruby toolbox, right? But Rails and specifically Rails core, right? Like,
Paweł_Dąbrowski
Yeah,
Valentino_Stoll:
what, all
Paweł_Dąbrowski
that's right.
Valentino_Stoll:
right, I want to, I want to import, you know, CSVs. Like, is there anything Rails has that I can do that? Right? Like, no, but Ruby has it. I think it link
Paweł_Dąbrowski
Yeah.
Valentino_Stoll:
out to the, right?
Paweł_Dąbrowski
You know, there is a lot of things for the CSV, but the standard library is the best one, in my opinion.
Valentino_Stoll:
I love digging into standard libraries.
Paweł_Dąbrowski
Yeah, it's a really source of excellent code and excellent solutions. There is a page where the default Ruby gems are listed and it's really surprising how many things from the Starlight Lumber is extracted to the Ruby gem and you can see the source and understand it.
Valentino_Stoll:
Yeah, honestly, that's, I applaud the Ruby core team because I know that's been a painful process for them to kind of extract out all of those embedded gems into their own source code and link them in, right? But yeah, there are just so many in there that are part of the core gems now. And it seems like they keep adding them, right?
Paweł_Dąbrowski
Yeah, that's correct. Amazing
Valentino_Stoll:
I'm
Paweł_Dąbrowski
work.
Valentino_Stoll:
kind of excited for 3.2. with all the new source code augmentation stuff, where you can discover that dead-end gem is now part of it. I saw.
Paweł_Dąbrowski
Yeah, that's right, that's right.
Valentino_Stoll:
So you can find all those missing do's that you were supposed to have in your blocks, right? I did that today and it was painful. I wish I had something that could signal me.
Paweł_Dąbrowski
You know, a lot of happening is right now in the race community and the Ruby community. So it's a great thing that the Ruby is still alive. It's not a dead, it's still alive for sure.
Valentino_Stoll:
So talking to that, what are you most excited for for what's coming out? And let's say Ruby.
Paweł_Dąbrowski
the thing that I'm most excited about about the Ruby? Well, to be honest, there is a lot of things. I mean, for me, the most excited thing is that we are constantly moving forward. Even though there is a JavaScript on a hype train, we are still doing our thing, still creating new features, Rails is moving forward to compete with the Python and PHP. However, I'm not sure if the PHP is still competitor with the Laravel thing but for me the most amazing thing is how the community is growing. You know there is a post-pandemic time so we are back to the conferences and things like that. For me this is the most amazing thing. Without those people we wouldn't be able to move forward.
Valentino_Stoll:
Yeah, for sure. I mean, it has it has grown so much. You know, thanks for all the sponsors out there, right, that have just dumped a ton into investing into Ruby.
Paweł_Dąbrowski
Yeah, Shopify, I think, just pumped up a lot of money to
Valentino_Stoll:
Yeah.
Paweł_Dąbrowski
the community. So yeah, I'm really grateful for that.
Valentino_Stoll:
So what about Rails? What's on the horizon for Rails that has you excited to use?
Paweł_Dąbrowski
I really like this race turbo thing, so I think it will get some upgrades. For me it's working great as it is, but I think it will get some updates to improve even more the creation of single page application. And I think this is the thing I'm really excited about because I'm not a fan of the separated front end. I really like the race monoid, so I'm looking forward to that.
Valentino_Stoll:
Yeah, there it I mean, there's just so much. It's hard to keep track of all the new features.
Paweł_Dąbrowski
Yeah, yeah, that's right.
Valentino_Stoll:
I feel like I go through and read the reread the upgrade docs, you know, weekly just to see if I've missed anything that's made it in.
Paweł_Dąbrowski
You know, the fun begins when there is a release candidate and we can test out the new features.
Valentino_Stoll:
Yeah, for sure. I think everybody looks forward to that. See, just see what breaks.
Paweł_Dąbrowski
Early, you know, early upgrades and things like that. And then GitHub tells you that they are running on the newest version of race and how is that possible even without breaking things.
Valentino_Stoll:
I keep seeing all these articles on dual booting rails and I keep meaning to try it out. And...
Paweł_Dąbrowski
Yeah, this is the one of the things that I also want to try.
Valentino_Stoll:
right?
Paweł_Dąbrowski
Yeah, I'm a fan of the standard way of upgrading, but you know, it might work as well.
Valentino_Stoll:
One of these days I'll figure out how to hook up the CD or CD to use the next rails, right? And tell me what's broken.
Paweł_Dąbrowski
Yeah, that's right.
Valentino_Stoll:
All right, well, is there anything else you want to talk about today, Pavel?
Paweł_Dąbrowski
Oh, I think we cover all the topics. So it was a nice conversation.
Valentino_Stoll:
Yeah, we got through a lot. Honestly, I'm looking forward to digging through a lot of your latest content. I have a list of, you know, a feed of Ruby people that I constantly check in on and, you know, I'm behind on a lot of stuff.
Paweł_Dąbrowski
Yeah, same here, same here.
Valentino_Stoll:
Yeah.
Paweł_Dąbrowski
I get the second list of articles that I should write and the articles that I should read. It's growing all the time.
Valentino_Stoll:
But for you guys listening out there, check out Pavel's content. He's got a lot of great articles out there on Rails, on Ruby, now just on life developing. You know, I'm looking forward to more of your content for sure, Pavel.
Paweł_Dąbrowski
Yeah, I definitely will create something in the future. And of course, add more features to Rails Formation just to be prepared for Rails 8 when it comes final.
Valentino_Stoll:
Awesome. Yeah, I'm excited to hear about how, you know, your competition takes hold. I want to check that out for sure. So let's get into picks. At the end of every show we go through and just pick, it can be anything, software, non-software, anything that you wanna share with the audience.
Paweł_Dąbrowski
Okay, so I can start.
Valentino_Stoll:
Yeah, go ahead.
Paweł_Dąbrowski
So I think I will definitely share the Heroku announcement that came out today, that there will be no free Dino instances. So I think this is something that we should take into account. I have like
Valentino_Stoll:
Oh, this is
Paweł_Dąbrowski
multiple
Valentino_Stoll:
so painful
Paweł_Dąbrowski
free
Valentino_Stoll:
for
Paweł_Dąbrowski
Dinos.
Valentino_Stoll:
me.
Paweł_Dąbrowski
Yeah. All the staging applications are free and I think it's worth sharing this so we can prepare when the time comes.
Valentino_Stoll:
So where should everybody move to?
Paweł_Dąbrowski
Well, I would like to say that we should stay on the Heroku. They are doing a great job. So let's just prepare for the bigger expense, I would say.
Valentino_Stoll:
I will say I do have some paid dinos on Heroku and it is just, you know, there's nothing more satisfying than just get push Heroku master,
Paweł_Dąbrowski
Yeah,
Valentino_Stoll:
right? Or
Paweł_Dąbrowski
it's
Valentino_Stoll:
main
Paweł_Dąbrowski
super
Valentino_Stoll:
or
Paweł_Dąbrowski
simple.
Valentino_Stoll:
it's so it's just so painless. It's what I want. You know,
Paweł_Dąbrowski
It's,
Valentino_Stoll:
at
Paweł_Dąbrowski
yeah.
Valentino_Stoll:
this point in my career, if I'm not paying for it, you know, shame on me, right?
Paweł_Dąbrowski
Yeah. Okay, so what's your pick? I think you are mute.
Valentino_Stoll:
So I saw Sidekicks coming out with a new abstraction called Capsules, which I think is really cool. It lets you kind of configure different queues to be processed with different concurrencies and different, you know, environment variables and things like that. Really cool. It's kind of funny. concerned of the size of this new introduction
Paweł_Dąbrowski
Hehehehe
Valentino_Stoll:
of the quantity of changes but I'm kind of excited.
Paweł_Dąbrowski
Yeah.
Valentino_Stoll:
Unfortunately there are like you know some internal changes that may not be backwards compatible that was you know kind of forced to make this happen but you know I'm kind of excited for it. I think it's a long time coming to get sidekick to be you know concurrent friendly and with excited to try this out and get it working within the sidekick realm.
Paweł_Dąbrowski
Yeah, sidekick is definitely great, so Mike did a great job as always. I'm really a fan of this solution.
Valentino_Stoll:
And, um, aside from that, I, the only other, uh, pick I have it is, uh, I got my hot tub hooked up recently and, uh, I had it at an old residence and I moved and it was sitting in my garage for so long. Uh, and I finally painstakingly got it moved back to where I wanted it. And I had to like augment my electric panel. And I finally, after like a full year, thing resolved and I'm looking forward to it. So my pick is hot tubs. I highly recommend them if you if you can.
Paweł_Dąbrowski
Yeah.
Valentino_Stoll:
It's just just so relaxing and yeah, hot tubs.
Paweł_Dąbrowski
yeah that's the great thing definitely
Valentino_Stoll:
All right, well, if people wanna reach you out on the web or wherever, how can they get in touch with you?
Paweł_Dąbrowski
Well, they can reach via my blog, it's paveldabrowski.com or they can visit Reddit and they will probably see my articles there. So this is the shortest way of doing this.
Valentino_Stoll:
Awesome. Well, it was great to talk to you, Pavel, and I hope to see more from you. And until next time, folks, this is Valentino. Peace out.