All Episodes

April 1, 2025 35 mins

What happens when a seasoned Rails developer with 17 years of experience decides to document their journey learning Hotwire? Radan Skorić joins us to discuss his ebook "Master Hotwire" and the fascinating parallels between writing and coding.

Unlike most tutorials that start from ground zero, Radan's approach assumes you already know Rails—because that was his experience when learning Hotwire. "When I was picking up Hotwire, I had tons of Rails experience. I've just not done Hotwire," he explains. This focus allows his readers to skip the basics and dive deeper into what makes Hotwire powerful.

We explore the meticulous process behind creating technical content, from researching pain points on forums to managing a beta reader program. Radan shares a powerful insight about feedback: "With positive feedback I feel good. With negative feedback I can actually go and improve it." This mindset led him to completely restructure portions of his book based on reader experiences.

The conversation takes unexpected turns as Radan reveals how he overcame writer's block by applying software development principles to his writing process. Just as he might write tests to overcome coder's block, he found success by allowing himself to write "crap words" initially, knowing he would refactor later—a technique that mirrors how many of us approach code.

Perhaps most compelling is Radan's observation about Hotwire's place in the ecosystem: it allows backend-focused developers to "stop lying" about being full-stack by providing a framework they can realistically master without diving deep into JavaScript frameworks like React. It's a refreshing perspective that reframes how we think about the full-stack developer identity.

Check out masterhotwire.com and use coupon code "CodingCoders" for 20% off the book, and join the growing community of Rails developers embracing Hotwire!

Send us some love.

Honeybadger
Honeybadger delivers best-in-class error tracking, intelligent logging, and Just Enough APM™.

Judoscale
Autoscaling that actually works. Take control of your cloud hosting.

Disclaimer: This post contains affiliate links. If you make a purchase, I may receive a commission at no extra cost to you.

Support the show

Listen
Watch
Mark as Played
Transcript

Episode Transcript

Available transcripts are automatically generated. Complete accuracy is not guaranteed.
Speaker 1 (00:01):
Hello everyone and welcome to another episode of
Code and the Coding Coders whoCode it.
I'm your host, drew Bragg, andI'm joined today by Radan Skoric
.
Radan, for anyone who isunfamiliar with you, would you
please do a quick introduction?
Thank you.

Speaker 2 (00:13):
I would be guessing that actually most of your
listeners are unfamiliar with mebecause I've been programming
professionally for 17 years, butI've only recently started
putting stuff out on theinternet in a more focused
effort.
I've had a website for a whilebut it was like almost nothing
there, just like my CV.

(00:33):
But a year and a half ago Istarted actively writing on the
website and recently I publishedan ebook called Master Hotwire
which, surprise, surprise, it'sabout Hotwire.
And for anyone wondering whyanother Hotwire resource, I
actually have a little bit of adifferent take than I think most

(00:55):
of the tutorials.
I decided to focus onexperienced Rails developers who
just haven't picked up Hotwireyet, because that was me.
When I was picking up Hotwire, Ihad like tons of Rails
experience.
I've just picked up Hotwire yetBecause that was me.
When I was picking up Hotwire,I had tons of Rails experience.
I've just not done Hotwire.
And that focus allows me tokind of be more to the point,
right, I don't have to spendtime going around explaining a

(01:17):
bunch of stuff.
I can explain it a little bitmore focused and then I can also
, with the time I save, I canalso go deeper on certain topics
.

Speaker 1 (01:25):
Yeah, that makes a lot of sense.
I mean, when you're doing abeginner Hotwire course, the
beginner might also be beginningwith Rails.
So there's a lot in Rails tocover.
Maybe a little bit less ifyou're Hotwire focused, but
certainly being able to skip andjust run with the assumption
that this person knows Rails andhas Rails core concepts down

(01:46):
Definitely could see that,allowing you to go deeper into
the actual topic of Hotwire,which itself is pretty broad.
There's a lot to Hotwire, butI'm sure we're going to get into
all of that because the waythis is going to work for anyone
who's new to the show.
So I'm going to ask Radin threequestions.
I'm going to ask him what he'sworking on I think we know what
we're going to talk about there.

(02:06):
I'm going to ask him what kindof blockers he has If he doesn't
have a current blocker, it canbe a recent blocker he had and
how he went about solving it.
And then the last thing, myfavorite question to wrap up
what is or discovered or builtor wrote?
Maybe it doesn't have to becoding related, but it could be.
So now that that's out of theway, let's get going.

(02:28):
Reden, what are you working on?

Speaker 2 (02:30):
I'm working on the book.
So actually I'm consulting fora company halalbookingcom, it's
not a secret.
I'm consulting for the companyand I'm migrating their front
end actually to Hotwire.
I have an arrangement where I'mfour days with them and then
Friday is kind of like the bookday.
So I published the book.
I split it into three parts andpart one, which is getting up

(02:56):
to speed on all the web parts ofthe Hotwire.
That's completely done, sothat's in the hands of a bunch
of readers already and that'savailable on the book's website,
masterhotwirecom.
But I still have the rest ofthe book to write right,
especially now that I havepeople who gave me money for the
book.
Now I really need to finish it.

Speaker 1 (03:12):
Stakes are a little higher now that there's money
involved.
Yeah, now.

Speaker 2 (03:15):
I actually really need to finish it, but I'm also
enjoying it and I'm moving thatforward, mainly on Fridays and
then here and there when I getthe time.
So the part that I'm currentlyfocusing on is the KotLine
native part, which is the secondpart of the book, and then
third part.
I kind of plan to cover a sortof range of topics that are a
little bit more advanced.
So part one gets you to thepoint where you can launch a

(03:39):
website.
Then part two is intended toget you to the point where you
have a working KotLine nativeapp, and then part three is
intended to get you to a pointwhere you have a working KotLy
native app.
And then part three is a fewother topics that you like to
run into when you actually havesomething running and you need
to go a bit more deeper with it.

Speaker 1 (03:52):
I guess that's kind of the nice thing about doing it
as an e-book.
If it was a print book, you'dhave to be done before anyone
could buy it.
With an e-book, you can be likehey, if you like what you've
read so far, there's more coming.
Do you solicit feedback frompeople of like, hey, what do you
think the book is missing sofar, or is there anything that I
can expand on to make thesections that are already

(04:15):
written even better?

Speaker 2 (04:16):
Well, first of all, initially, before I even wrote
anything, I spent a fair amountof time going over forums,
mainly Reddit, but also Falkwildforums, some Slack groups.
I mean I'm kind of taking notes, structured notes, on what
people are struggling with,where they are stuck, what are
problems, taking that intoaccount, and then before I

(04:37):
published, I ran a battery thegroup.
I used a bettering tool forthat.
When I put it out and I didn'tknow cause I didn't put anything
out there.
I was like if I get a fewpeople interested, that would be
great, and I had like on mylist I had like 150 people
subscribed then and about 20something of them were
interested and in the end, 10 ofthem gave me very detailed

(04:59):
feedback, the ones that wentthrough the whole thing, which
was really good.
That's a good signal Like theydidn't give up and also they
gave me very detailed feedback.
A few of them were alsopersonal friends, so that was
really unfiltered feedback.

Speaker 1 (05:15):
They were just like very blunt.

Speaker 2 (05:17):
People who don't know me personally.
They also gave great feedback,but I could see that they're
kind of trying to sugarcoat it.
Sure, the friends, yeah, havethe kind of like honest
relationships.
They were just like you know.

Speaker 1 (05:28):
That's good, though.
That's good to have friends whowill give you straight feedback
.

Speaker 2 (05:32):
Yeah, that is excellent.
That is really really good Forthe better readers.
When I bring them there's likea short intro blurb that they
see.
And I emphasize I said positivefeedback, you know it makes me
feel good.
But actually negative feedbackis infinitely more actionable.
Like with positive feedback Ifeel good.
With negative feedback I canactually go and improve it.

(05:52):
So for part one I time-trackedmyself and drafting and editing
put together, I spent like 38hours initially, but then I also
spent like 19 hours justaddressing beta feedback spread
over multiple cycles, and I madesure that I get in there.
I get a sort of mix of people.
I had a few people who areactually already experienced

(06:13):
with Hotwire, then I had somepeople who are very experienced
with Rails but they have noHotwire experience at all.
And then I had even a fewpeople who are sort of earlier
in their software in generalsoftware development journey.
They're sort of a bit earlierand maybe dabbled with Hotwire.
So kind of like in between thetwo groups and that helped me a

(06:34):
lot.
I ended up not only fixing likesmall things, but I ended up
rewriting sort of chapters, soin the book.

Speaker 1 (06:41):
I guess not even in the book, but form a.
Coming up with the idea likeI'm going to do an ebook because
you go a significant amount ofyour career not putting anything
out there.
Some people hit the groundrunning.
Nowadays I feel like they, evenin boot camps, are encouraging
you to have a blog and buildstuff out of the gate and put
stuff out in the open and buildin public.

(07:02):
But you've been doing this fora pretty darn long time where
that wasn't as commonplace, andnow it sounds like you kind of
was like I want to put stuff outthere.
So how did you come up withlike I'm going to do an ebook?
Because I chose podcasting.
I tried blogging.
I'm not a good writer, I'mbarely a good speaker, but I'm
good enough that I can move aconversation along and that's

(07:25):
how I got into podcasting.
It's like that's mycontribution to the community.
Is I'm going to do a podcast.
What made you think ebook?
Like that's what I want to doan ebook on Hotwire.

Speaker 2 (07:36):
Let's break it out.
Let's first say an ebook,because that was a decision that
came before the Hotwire part,so I haven't been writing
publicly.
Ever since I've been workingprofessionally, I've been doing
a lot of writing.
I've often been the guy whocleans up the documentation,
makes it easier.
For a long time I've been verydetailed in my git commit
messages because far too manytimes I try to figure out a code

(08:00):
, I do git blame and it's liketests.
That's the commit.
I am guilty.
Figure out a code, I do getblame and it's like tests.
That's the commit, or like orthe commit.
I am guilty commit messages islike works.
Now I'm like what, what?
What was it before?
What happened?
Try one.

Speaker 1 (08:16):
Try number two.
Let's see if this works.
Try number five.

Speaker 2 (08:21):
And then I would do like a commit message where I
had people come to me and say,like I don't have the patience
to do what you did, but I'mhappy that you did it.
Because my commit message wouldbe like oh, we had this issue,
it was identified by a customerhere and then we looked at this
and this and then, because thisother stakeholder asked for this
, it's because we did this andnow the fix is this one line.

(08:43):
So, like, the Gitco message islike and I enjoy doing that,
communicating and trying to makeit as clear as possible and I
put a lot of value on that.
So I've done a lot of writingand writing internally,
non-public, inside the companiesand the teams where I worked on
.
So when I sat down I wanted towrite the blog.
It was very nerve wrackingputting it out there because I'm

(09:06):
like oh, it's going to bejudged, but in the end, like,
especially in Ruby community,that's why I like being here.
People are nice in general.
Like people are nice.
So it all went well.
It was unfounded fear, but Idid enjoy the process of writing
and getting better at it.
So naturally I was like I'mgoing to do an ebook.
It's also it's easier to fixright.
I'm new to the game.

(09:32):
If I did a video course andthen I have better testers and
they point something out, I haveto go and rerecord the video.
Like, at least I need to haveto rerecord the significant
segment.
I can't just alter a sentence,I can't rerecord one sentence or
the video isn't just not goingto look good.
So from that perspective ane-book is a very good starting
point.
And also I've seen quite a fewother people do good work with

(09:53):
that, for example, nate Berkopec.
I went through his speed shopand there's an e-book but
there's also a video course andalso him in-person coaching.
But he started with the e-bookand then later that recorded
over that the key part.
So I think it's kind of easierIn the future.
I do have some ambitions tostart doing some video content

(10:14):
when I have the time to try myhand at that.
But I think if I ever do end updoing a video course, it's
going to be an ebook first andthen it's going to end up being
something that goes on yeah, acompanion to the ebook.

Speaker 1 (10:26):
That makes sense.
It makes a lot of sense.
So how did you decide I want todo it on Hotwire?
Was it just because Hotwire isthe new hotness?

Speaker 2 (10:49):
no-transcript.
I wanted to use it with as manypeople and then looking for the
intersection of that and whatpeople are interested in and I
was putting stuff out there andactually initially I really
wanted to do something.
I wanted to do an ebook ondebugging Ruby, and then I put

(11:09):
out a few things on the blogaround debugging and a very
small number of people liked ita lot, but in general it didn't
get much attention.
And I put out a few stuff onthe hotwire and it got like a
ton of attention.
It got a lot more attention.
Actually, one of the halalbooking company I'm currently

(11:31):
working with they actually readone of my blog posts where I go
into deep on how morphing worksand I just released how morphing
works on Turbo and theybasically reached out and said,
oh, we need somebody to help uswith the Turbo migration.

Speaker 1 (11:47):
That's a cool way to get a job.
I wrote a blog post on a thingand a company reached out and
said you sound smart, Pleasecome work for us.

Speaker 2 (11:54):
There was a lot of interest and I started digging
into it more and I liked theconcept even more.
So it all kind of came togetherto saying, okay, well, maybe
I'll come back to this debuggingthing again in the future from
a different angle, but now thisis both interesting and I see a
lot of interest in it.
Right, because I'm putting innow.

(12:14):
At the moment I'm somethinglike 150, 160 hours into working
on the book in general, so it'sprobably going to be 200 and a
bit.
If I'm going to put 200something hours into something,
I would like you know that Ihave a reasonable idea that it's
going to be useful to areasonable number of people.

Speaker 1 (12:35):
One thing, and maybe it's because the notion of
writing a blog post, let alonean entire ebook, terrifies me
because I'm not a good writer.
But like, what kind of blockersdo you run into in writing an
ebook, your first ebook on atopic that you have a decent
command of, but you still have alot to learn?

(12:55):
What things have you learnedthat you wish you could go back
and tell day one self hey, don'tdo this or do more of this.
What kind of things really cameout of writing the ebook that
you were surprised to learn?

Speaker 2 (13:10):
I would say probably the expected blockers, like the
writer's block.
You've got a coder's block.
There are multiple things to doto break the coder's block.
There are multiple things to doto write the coder's block.
Like for me, quite often if Iget a coder block, I will go and
I will write the tests.
Right, I will go and I willstart writing the unit tests.
I'm like, well, let me justwrite down what I want this to
do.
And then usually when I havethe test and it's read, I'm like

(13:31):
, oh okay, well, now I know whatto do and there's a bunch of
other techniques.
So with here it's the blank page.
It's just that with a blog it'smuch smaller, so I can kind of
just go okay, a good techniquethat's not invented by me but I
use is imagine just that ifyou're answering a question
where somebody has a problemyou've maybe seen it somewhere

(13:53):
Think about if it's yourcolleague that came to your desk
and like, hey, drew, I've gotthis problem, what do I do with
it?
You would explain it to them.
You wouldn't just stare at themsilently until they walk away.

Speaker 1 (14:06):
I don't know, maybe you would.
There might be a long pausewhile my brain worked, but yeah,
so you write that down.

Speaker 2 (14:13):
First you write that down and then you look at it and
then you kind of work with it,you shape it into what it is.
And later, when I was stuck atsome point I was trying to write
and it was not going, at somepoint I just decided, okay, I'm
going to put the number of wordsfor them and I'm going to allow
myself for them to be reallycrap words, because I know that

(14:35):
I'm going to go back and I'mgoing to rework it.
And I started doing that.
At some point I realized thisis not actually that different
from coding, because quite oftenI'm going to hack away and I'm
going to put code that I'mcomfortable with, because I know
that I'm going to go back, I'mgoing to rework it before I
actually committed an openrequest.
So I started doing that.
With the writing, I'm just I'mgoing to today, I'm going to do

(14:58):
this topic and I'm going to cramout 2000 words and I'm just not
going to care about the quality, and that unlocked it.
So I was just spitting outwords going forward and that
unlocked it so much for me.
Like I started moving very,very fast and then I went back.
When you go to edit.
It was actually much, mucheasier, because I'm not now

(15:18):
standing at a blank page.
I'm looking at a bunch of textthat I'm like I don't like this,
this is bad, let me rework it.
And that's how I drove throughthe block.
So I wish I kind of made thatconnection in the beginning,
because I wasted a few good daysthat I didn't put out much, I
was just just mostly staring atthe screen and going in circles.

Speaker 1 (15:40):
I feel like that's how a lot of us code just get
the code working.
Then you can go back, refactorit, make it pretty code, make it
a little bit more cleaner, andthen you might go back again and
make it fast.
But the step one of getting itout being the hardest part, just
get it out.
It doesn't matter if it's goodor not.

Speaker 2 (15:59):
And there's a lot of analogies with writing.
That's why I really like you.
Yeah, get it out, refactor it.
You're refactoring the text.

Speaker 1 (16:05):
Yeah, I guess I have a question that might sound a
little odd, but I'm going to askit anyway.
English is not your firstlanguage.
No language, no, croatian is.
I'm Croatian, so it's achallenge for me to write
anything Like half the time Ineed to write anything, I'm
going to probably use like adictation software so that I can
talk and it will write it forme, because, whatever it is, I

(16:28):
don't know why, but whether it'shandwriting or typing, just
long form writing is not my jam,but I already think in the
language that I'm also writingin, and I assume that you're and
this is an assumption, so tellme if I'm wrong but like you
probably think in your nativelanguage and then translate it
to English and then you canwrite it down in English.

(16:51):
No, I've used English longenough, okay.

Speaker 2 (16:55):
So I started learning English in school.
It's standard as the firstlanguage in Croatian schools.
So I was 11 years old.
I started learning English inschool, just regularly, and I've
been exposed to English.
Like it's hard for nativeEnglish speakers and I have
quite a few friends for nativeEnglish speakers.
All the rest of us who aretaking English as our second

(17:19):
language, we have the benefit ofbeing exposed to a ton of
English content.
If you were to, for example,sit down, I have a friend who
lives in Zagreb, who's fromSeattle originally.
He's American.
He came here for a short amountof time and then, as things go,
met a girl, so he's still hereyears later.
That'll get you stuck fast fora short amount of time.
And then, as things go, met agirl, so he's still here years
later.
That'll get you stuck fast,yeah, and so he's learning.

(17:40):
He can speak Croatian at thevery sort of basic level.
It took him a while, but thething is, even for him here
living in Croatia it's quitehard.
But for you in US you wouldhave to actively seek out
especially Croatian, but anyother language you would have to
actively go out and seek out.
I've been exposed to it a lotbecause, like a lot of the

(18:01):
movies that we get in Croatiaare because Croatia is such a
small market there's only 4million of us Our movies are not
dubbed.
We have subtitles.
Only the kids' movies aredubbed.
You can't get kids into thetheater.
They have to read.
They can't read.
So even in theaters and cinemasI'm looking at movies.
When I go to theater they're inEnglish.
I just get subtitles.

(18:22):
So I'm exposed to them a lot.
And then also in high school Igot a scholarship and I did two
years of high school in Londonand there actually, it's where
at some point I realized Istarted thinking in English when
I'm speaking English.
So I stopped translating andit's much, much easier.

Speaker 1 (18:39):
I was going to say yeah, I mean, that was something
that I was thinking about.
As you're talking about this.
I was like, dang, this dude hasto like think about something,
then translate it into Englishwhich English is just such a
weird language to begin with andthen get to write it down Like
you've got a whole extra step.
I'm challenged with writing and, but turns out no, turns out
you're rocking and rolling.

Speaker 2 (19:00):
When I'm talking to creation developers, we don't
use terms in creation.
We use English technical wordswith just the creation in
between.
It's like a blend Because allof the professional terms are in
English.
If we try to explain aprogramming concept purely in
creation, it would be harder forus.

Speaker 1 (19:19):
Okay, well, my assumption blown out of the
water.
That's why you don't makeassumptions and make it an ass
out of yourself.
So is there any otherinteresting blockers that you
ran into writing the ebook thatyou sort of weren't expecting to
hit and were fun?

Speaker 2 (19:32):
One of the things is the ebook has a code along
project.
As you go through, youimplement a very simple condom
board with Hotwire and I justkind of pull a thread through
where I introduce concept andthen you get to code it.
And I keep it very simplebecause I want it to be just

(19:53):
enough so that you can kind oftry the concept and then move on
to keep the pace.
But also I want to keep thecode very simple, very clean,
and I did it so that you couldfollow along.
It's all in commit.
So there's a repository.
The repository is actuallycompletely public.
It's on my GitHub.
As you go along, I keep therepository very clean and I was

(20:16):
like okay, well, I'm good withGit.
If there's an issue thatbattery gets fined, I'm going to
alter the history so thatwhoever comes and looks at it
looks as if I knew exactly what.

Speaker 1 (20:27):
I was getting from first commit.

Speaker 2 (20:29):
So it really follows the bug and it's really hard.
I've rebased that repositorylike 50, 60 times now Because
when a new version of Rails,like a minor version of Rails,
comes out, I want to have that.
But I can't just go gem, updateand then do another commit.

(20:49):
It has to be the first commit.
So I always rewind therepository, I update and then I
rebase it.
And then I realize when I therepository, I update and then I
rebase it and then I realized Ineed to run when I do specs.
I actually can't just run specs,I have to run specs on every
commit for the specs for thatiteration of the commit.
So I ended up having a scriptwhere it will rewind and then it

(21:10):
will go commit by commit andrerun the test and so on.
So that was kind of moreinvolved than I expected and it
reminded me I try to keep theGit history clean but while
sometimes I make like in reallife I make a pragmatic choice,
I'm like, okay, well, I justwant to be that this is the
cleanest Git history I've everdone, because I need it for the

(21:31):
book.

Speaker 1 (21:31):
A clean Git history is nice to have, but like the
real world, hits so fast.

Speaker 2 (22:59):
Yes, and it's a very simple repository.
I need that for the book.
I need the readers Because asyou go through the book I put in
references to specific commitswhere I'm like, oh, if you want
to take off from this chapter,check out this commit, and then
it's going to put you exactly inthe spot where the code is to
follow this specific chapter.
Because I also want people tobe able to go on like, oh, let

(23:21):
me try this, what about this?
And they can go on a tangentand then they can just get to
the next chapter, they get thisGit command and they can reset
and continue following the book.
That's one thing.
Another thing that kind ofsurprised me, which is not about
sort of around the book, is I'mwriting it in Markdown and I'm
following sort of the GitMarkdown flavor and I thought,

(23:45):
well, surely I'm just going toget something off the shelf and
I'm just going to compile itinto PDF and HTML.
And the answer is no, nevermind.
I was like, surely there's anopen source project and I guess
it's just it's way too niche fora useful open source.
And then I went around and askedsome people who have books and
I researched and it turns outthat actually it's mostly either

(24:07):
you with a publisher and theyhave a proprietary system that
they have some team that'siterating on and that just plugs
into their whole framework andgoes into print as well, or
people have rolled their own.
So, because I'm decided to beself-published for various
reasons, I'm rolling my own.
So for PDF I've got basically aRuby script that does cram down

(24:27):
and I'll use some CLI tools forconverting mermaid diagrams and
so on, and I also got I don'thave a website yet, I have a
prototype, but I've realizedthat it's actually more useful
for people that I finish thenext block of content than to
get the same content in websiteform.
So my plan is finish this now,the FOT180 part, start beta

(24:48):
reading, hopefully in the nextfew weeks, and then, while I'm
waiting for beta reader feedback, here's the time to prepare the
website version.

Speaker 1 (24:54):
Yeah, that's definitely one of those things
that I would have expected thereto already be.
A project out there likemarkdown to PDF.
Can't be that?
I mean it doesn't sound thatniche, but I guess it is.

Speaker 2 (25:06):
So there is, but then it doesn't do everything I want
.
So I've got a few little things.
I have got highlight boxes inGit Markdown style.
I've got highlight things andI've also got code snippets that
I need to format.
And then I also wanted to dothis custom.
So I've got this reference tothe repository, I've got tags on
the repository, but I want tomake sure that I didn't do typos

(25:28):
.
So I want to have a step whereit takes and then it verifies it
against the repository whereit's generating the PDF, and I
couldn't get all of thattogether, working or like okay,
I want to this style a littlebit differently, and also for
the web.
For example, basecamp put outWritebook.
I think we've all seen it.
For example, it's really,really nice.

(25:48):
It has code snippets.
It doesn't have mermaiddiagrams.
I have mermaid diagrams.
Like I said, a lot of toolsdidn't have mermaid diagrams.
So I could modify Writebook,but it's not actually open
source, it's just source access.
Write book, but it's notactually open source, it's just
source access.
So if I do it, it's something Ican't put down.
I can't open source that.
So I decided I'm going to putthe website myself.

(26:09):
I mean, it's literally just astatic website with an
application in front, so it'snot that complex.

Speaker 1 (26:15):
So you went from being a ebook author to an ebook
author and a project maintainer.
Yes for myself.

Speaker 2 (26:21):
Yeah, if it turns out nice, maybe I open source it
and then somebody else can lookat it to realize that it's not
quite what they need and then godo their own thing.

Speaker 1 (26:30):
That's a cool tangent to get to go off on.
It's like I'm writing a book,so I'm going to go build a thing
, because we all like buildingthings I had to stop myself.

Speaker 2 (26:38):
I was like, no, I have to go and write a book
Priorities.
I was like, oh yeah, I could do.
And then this generator if Ireflect on it, I'm like, no,
it's generating the PDF.
No, it works Stop touching itit works, it works, it works.
It's generating the PDF.
Go do something else Like Ihave to actively stop myself.

Speaker 1 (26:59):
I can see that Yep, been there, done that, although
I feel like maybe we justspoiled a little bit or took
away one of the answers, becausenow you have to find a
different answer of what issomething cool, new or
interesting that you've recentlylearned or discovered or built,
but it can't be the thing youjust talked about.

Speaker 2 (27:16):
Okay.
So I do actually have a thingvery recently.
I'll rewind a little bit.
So in Turbo 8, the biggestthing that landed was morphing.
It's very cool, but it's stillgot rough edges.
You have to be kind of likepeople are running into issues
and so on, and it's all abouthow it morphs the page, because

(27:36):
sometimes you lose the state andthat can be very painful.
At the heart of it is theidiomorph algorithm that
rearranges your page to matchthe next, and it's limited by
what the browsers can do.
Specifically, you can't move anode without it losing
JavaScript state, or youcouldn't until very, very

(27:59):
recently, because in Chrome1.3.3, elementmovebefore landed.
It's part of the standard, butChrome is the first one to
implement it and what it doesit's like insert before.
So insert before is you get aDOM node and you can insert it.
Parentinsertbefore you caninsert it before an existing

(28:21):
node.
Movebefore you can give it anode that is somewhere on the
page and you tell it to move itbefore a different node and the
browser will move it with all ofthe state intact, which means
that if, for example, you've gota playing YouTube video and you
move it, it's not going to skipa beat, it's going to continue
playing and Ideomorph actuallyalready has support for that.

(28:44):
They added it three months ago.
They started adding it inanticipation of this being added
in the browsers.
So if the browser has movedbefore, they'll use that and if
it doesn't, it's going to fallback to insert before and it
fixes automatically for youwithout doing anything.
If a browser has moved before.
It means that, for example, ifyou had a list of YouTube videos

(29:05):
and they're all playing and youstart rearranging them, then
somebody who's looking at thislist in another browser and it
also has the videos playing asthe refresh goes through, it
gets broadcasted by Turbo andthe refresh is caught and Turbo
does the page morph.
The videos will rearrange theorder but they will continue
playing.

(29:26):
Nothing will be lost.
A YouTube video is just like.
Why would you have a bunch ofvideos playing?
It's the most visual example.
But it starts to come into playbecause you might have an
interactive.
Imagine if you have aninteractive list and you're
interacting, you've got a bunchof stimulus controllers attached
to that and you've got somestate in them and you're

(29:46):
interacting with it and somebodymakes a change, a morph comes
in.
You don't lose the state Rightnow with turbo and morphing.
If you want to avoid losing thestate, you have to do like some
gymnastics you have to eithermake it the element permanent,
or you have to listen for themorph event and then prevent it
and do something yourself.

(30:07):
Once this has wide enoughsupport and I'm guessing after
Chromium added it, it's going tobe in a bunch of browsers,
because a bunch of browsers arejust Chromium.
But after that, once Firefoxand Safari added it, then we're
going to have a pretty widesupport for morphing being
significantly less troublesomeAlthough I think Safari might
take a hot minute to do it,since Safari is the new IE.

Speaker 1 (30:30):
When it comes to like , hey, can we use this
everywhere, not in Safari, sorry, no, yeah, that's the issue.

Speaker 2 (30:36):
But we can look forward to it.
It's coming down the line.
I'm really excited becausecurrently like with, for example
, with hollowbookingcom it's avery large and legacy website
and I actually had to disableTurboDrive completely for now.
I'm getting a ton of value justfrom TurboFrames, TurboStreams
and Stimulus, but I will be ableto get TurboDrive enabled.

(30:59):
I don't know when I would beable to enable morphing on it.
It's really cool when you startfrom scratch with it.
It's very hard to retract whenyou add it and I think this will
be a big step towards where itstarts to get significantly much
easier to add it to otherthings, because it's not going
to trash your JavaScript stateas much around once this is

(31:21):
widely not adopted.
So, yeah, I think that's prettycool and, yeah, I'm kind of
excited by it.
I think it's very valuable forHotwire.

Speaker 1 (31:30):
That is a good.
What is something cool, new orinteresting that you've recently
learned or discovered?
I like that one.
Is there anything else that youwant to talk about before we
wrap the show up?

Speaker 2 (31:41):
There's one thing I wanted to comment just kind of
generally, one angle of why Ilike Hotwire that I recently
thought about.
I label myself as a full-stackdeveloper and a lot of Ruby and
Razor developers do that, but ifwe're really being honest with
ourselves, in 95% of the casesfull-stack means backend and I

(32:01):
know some from that.

Speaker 1 (32:02):
I'm a backend and I can center a div.

Speaker 2 (32:05):
Yeah, something like I said I can do a little bit of
JavaScript right, I can do justenough to do a stimulus
controller.
I don't remember last time whenI met somebody who's like, oh,
they're super heavy front-end.
But then I also know a littlebit of back-end, and when you
step aside what full stack meansto the client, the thing
they're really interested aboutis, well, can you ship this
feature on your own?

(32:25):
That's what I really care about.
And Hotwire allows us to stoplying, because actually you need
that little amount of front-endthat it's very feasible.
I can't master React, but I canmaster Hotwire, while still
being primarily backend focused.

Speaker 1 (32:45):
Hotwire makes us stop lying about our frontend.
Yeah, hotwire the solution tolying about being a full stack
engineer.
Yes, that's something I likeand yeah.

Speaker 2 (32:56):
So for anyone interested, the book is on
masterhotwirecom, my blog.
You can find it on radendev.
That's R-A-D-A-N.
Don't be alarmed, it's going toredirect you to a different
domain.
It's going to redirect you toranscouragecom.
I have to migrate my domainbecause I had that domain for a
long time and recently, whenI've been finally on conferences

(33:19):
after a long time, I realizedthat when I say Radon's courage,
people have no idea Sure.
So I had to spell it and justRadon.
Usually they can get it mucheasier.
Radoncom was taken.
Apparently it's some CADsoftware.
So I took Radondev.
I'm apparently the world's mostpowerful metal sheet CAD

(33:39):
software.
It's called Radon.
I didn't know until I went tocheck if I can buy the domain.
I was like I really wanted it.
I was like, oh, the domain istaken, let me see if I can maybe
negotiate with that.
I'm like, no, that's no way.
So yeah, it's radondev.
And for anyone going, I put acode If you use the coupon

(34:00):
Coding Coders, you're going toget 20% off.
That's just a little gift tothe listeners, and thank you for
enduring my rambling on thispodcast.

Speaker 1 (34:10):
Yeah, no, I appreciate the code.
Hopefully folks will use it andgrab the ebook and give you
lots of great feedback, bothpositive and negative, in the
form of constructive feedback.

Speaker 2 (34:21):
Yes, please.
Negative feedback is moreuseful.
I like the positive butnegative feedback.
Actually I can act on, soplease don't hold back.

Speaker 1 (34:29):
Actionable feedback is the best kind Cool man.
Well, I really appreciate youcoming on taking time out of
your day to chat with us allabout Hotwire and all that, and
as the book is closer tocompletion and you learn a whole
bunch more about writing anebook, we'll have you back on to
talk about all the new blockersand new things that you

(34:49):
discovered in wrapping up anebook.

Speaker 2 (34:50):
Awesome.
Thank you so much for having me, and I would be super happy to
be back and listeners.

Speaker 1 (34:56):
we'll talk to you in the next one.
Bye.
Advertise With Us

Popular Podcasts

Stuff You Should Know
Dateline NBC

Dateline NBC

Current and classic episodes, featuring compelling true-crime mysteries, powerful documentaries and in-depth investigations. Follow now to get the latest episodes of Dateline NBC completely free, or subscribe to Dateline Premium for ad-free listening and exclusive bonus content: DatelinePremium.com

iHeartRadio 24/7 News: The Latest

iHeartRadio 24/7 News: The Latest

The latest news in 4 minutes updated every hour, every day.

Music, radio and podcasts, all free. Listen online or download the iHeart App.

Connect

© 2026 iHeartMedia, Inc.

  • Help
  • Privacy Policy
  • Terms of Use
  • AdChoicesAd Choices